vendor: 7,806 bytes, lines 1-10
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Auth-D7GZKq7X.js","assets/label--tnD4pjg.js","assets/eye-off-DNM8AM-E.js","assets/ResetPassword-V_uk8l8N.js","assets/AdminLogin-BsfFLSqH.js","assets/card-DTQVPU97.js","assets/AdminLayout-CL2RoDRE.js","assets/message-circle-D33wQSco.js","assets/bot-BJNvdIwS.js","assets/AdminDashboard-D4s6D-Nw.js","assets/select-CNpOZwnZ.js","assets/index-BdQq_4o_.js","assets/badge-Cpd-8HxK.js","assets/AdminBookings-CakB5Tz8.js","assets/alert-dialog-Ch5-74qd.js","assets/format-BNqEDbeN.js","assets/TablePagination-Cl4E4vlh.js","assets/download-D6yxZerY.js","assets/AdminCustomers-8HiLbhUw.js","assets/pencil-BFL_pWo_.js","assets/AdminPayments-C0XhFZw0.js","assets/AdminAssinaturas-BT_PUjU3.js","assets/refresh-cw-CD2FjEhk.js","assets/AdminPricing-BxEGlmdS.js","assets/tabs-BQ8VhpUK.js","assets/save-BrOyRopU.js","assets/AdminSpots-DLhObtEO.js","assets/AdminUsers-BEsMR4Qk.js","assets/checkbox-ByAF0kkI.js","assets/AdminWhatsApp-BHuj1-wh.js","assets/settings-2-BOYOyyl5.js","assets/AdminBandi-BdSGkY0i.js","assets/AdminEmailPreview-DsmVPH7U.js","assets/AdminCoupons-CvbmxWbE.js","assets/AdminModifications-CCydaCox.js","assets/AdminCancellations-CDgduc2I.js","assets/refresh-ccw-B3ZBuFOd.js","assets/AdminReviews-CELuGKbJ.js","assets/AdminViajantes-DlvmljyI.js","assets/MinhasReservas-Ca6eSpzZ.js","assets/AlterarReserva-oXt2voDp.js"])))=>i.map(i=>d[i]); 2var DD=Object.defineProperty;var Uw=e=>{throw TypeError(e)};var ID=(e,t,a)=>t in e?DD(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var _r=(e,t,a)=>ID(e,typeof t!="symbol"?t+"":t,a),w0=(e,t,a)=>t.has(e)||Uw("Cannot "+a);var M=(e,t,a)=>(w0(e,t,"read from private field"),a?a.call(e):t.get(e)),De=(e,t,a)=>t.has(e)?Uw("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,a),xe=(e,t,a,o)=>(w0(e,t,"write to private field"),o?o.call(e,a):t.set(e,a),a),Qe=(e,t,a)=>(w0(e,t,"access private method"),a);var Lm=(e,t,a,o)=>({set _(r){xe(e,t,r,a)},get _(){return M(e,t,o)}});function MD(e,t){for(var a=0;a<t.length;a++){const o=t[a];if(typeof o!="string"&&!Array.isArray(o)){for(const r in o)if(r!=="default"&&!(r in e)){const n=Object.getOwnPropertyDescriptor(o,r);n&&Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:()=>o[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const i of n.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function a(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function o(r){if(r.ep)return;r.ep=!0;const n=a(r);fetch(r.href,n)}})();var Dh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function tl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var VA={exports:{}},og={},FA={exports:{}},He={};/** 3 * @license React 4 * react.production.min.js 5 * 6 * Copyright (c) Facebook, Inc. and its affiliates. 7 * 8 * This source code is licensed under the MIT license found in the 9 * LICENSE file in the root directory of this source tree. 10 */var hm=Symbol.for("react.element"),LD=Symbol.for("react.portal"),BD=Symbol.for("react.fragment"),VD=Symbol.for("react.strict_mode"),FD=Symbol.for("react.profiler"),UD=Symbol.for("react.provider"),GD=Symbol.for("react.context"),zD=Symbol.for("react.forward_ref"),HD=Symbol.for("react.suspense"),KD=Symbol.for("react.memo"),QD=Symbol.for("react.lazy"),Gw=Symbol.iterator;function WD(e){return e===null||typeof e!="object"?null:(e=Gw&&e[Gw]||e["@@iterator"],typeof e=="function"?e:null)}var UA={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},GA=Object.assign,zA={};function Qc(e,t,a){this.props=e,this.context=t,this.refs=zA,this.updater=a||UA}Qc.prototype.isReactComponent={};Qc.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Qc.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function HA(){}HA.prototype=Qc.prototype;function S2(e,t,a){this.props=e,this.context=t,this.refs=zA,this.updater=a||UA}var R2=S2.prototype=new HA;R2.constructor=S2;GA(R2,Qc.prototype);R2.isPureReactComponent=!0;var zw=Array.isArray,KA=Object.prototype.hasOwnProperty,j2={current:null},QA={key:!0,ref:!0,__self:!0,__source:!0};function WA(e,t,a){var o,r={},n=null,i=null;if(t!=null)for(o in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(n=""+t.key),t)KA.call(t,o)&&!QA.hasOwnProperty(o)&&(r[o]=t[o]);var l=arguments.length-2;if(l===1)r.children=a;else if(1<l){for(var c=Array(l),d=0;d<l;d++)c[d]=arguments[d+2];r.children=c}if(e&&e.defaultProps)for(o in l=e.defaultProps,l)r[o]===void 0&&(r[o]=l[o]);return{$$typeof:hm,type:e,key:n,ref:i,props:r,_owner:j2.current}}function JD(e,t){return{$$typeof:hm,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function N2(e){return typeof e=="object"&&e!==null&&e.$$typeof===hm}function XD(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(a){return t[a]})}var Hw=/\/+/g;function C0(e,t){return typeof e=="object"&&e!==null&&e.key!=null?XD(""+e.key):t.toString(36)}function Gp(e,t,a,o,r){var n=typeof e;(n==="undefined"||n==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(n){case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case hm:case LD:i=!0}}if(i)return i=e,r=r(i),e=o===""?"."+C0(i,0):o,zw(r)?(a="",e!=null&&(a=e.replace(Hw,"$&/")+"/"),Gp(r,t,a,"",function(d){return d})):r!=null&&(N2(r)&&(r=JD(r,a+(!r.key||i&&i.key===r.key?"":(""+r.key).replace(Hw,"$&/")+"/")+e)),t.push(r)),1;if(i=0,o=o===""?".":o+":",zw(e))for(var l=0;l<e.length;l++){n=e[l];var c=o+C0(n,l);i+=Gp(n,t,a,c,r)}else if(c=WD(e),typeof c=="function")for(e=c.call(e),l=0;!(n=e.next()).done;)n=n.value,c=o+C0(n,l++),i+=Gp(n,t,a,c,r);else if(n==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return i}function Bm(e,t,a){if(e==null)return e;var o=[],r=0;return Gp(e,o,"","",function(n){return t.call(a,n,r++)}),o}function YD(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(a){(e._status===0||e._status===-1)&&(e._status=1,e._result=a)},function(a){(e._status===0||e._status===-1)&&(e._status=2,e._result=a)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var Fa={current:null},zp={transition:null},ZD={ReactCurrentDispatcher:Fa,ReactCurrentBatchConfig:zp,ReactCurrentOwner:j2};function JA(){throw Error("act(...) is not supported in production builds of React.")}He.Children={map:Bm,forEach:function(e,t,a){Bm(e,function(){t.apply(this,arguments)},a)},count:function(e){var t=0;return Bm(e,function(){t++}),t},toArray:function(e){return Bm(e,function(t){return t})||[]},only:function(e){if(!N2(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};He.Component=Qc;He.Fragment=BD;He.Profiler=FD;He.PureComponent=S2;He.StrictMode=VD;He.Suspense=HD;
vendor: 3,259 bytes, lines 10-18
10He.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ZD;He.act=JA;He.cloneElement=function(e,t,a){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=GA({},e.props),r=e.key,n=e.ref,i=e._owner;if(t!=null){if(t.ref!==void 0&&(n=t.ref,i=j2.current),t.key!==void 0&&(r=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)KA.call(t,c)&&!QA.hasOwnProperty(c)&&(o[c]=t[c]===void 0&&l!==void 0?l[c]:t[c])}var c=arguments.length-2;if(c===1)o.children=a;else if(1<c){l=Array(c);for(var d=0;d<c;d++)l[d]=arguments[d+2];o.children=l}return{$$typeof:hm,type:e.type,key:r,ref:n,props:o,_owner:i}};He.createContext=function(e){return e={$$typeof:GD,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:UD,_context:e},e.Consumer=e};He.createElement=WA;He.createFactory=function(e){var t=WA.bind(null,e);return t.type=e,t};He.createRef=function(){return{current:null}};He.forwardRef=function(e){return{$$typeof:zD,render:e}};He.isValidElement=N2;He.lazy=function(e){return{$$typeof:QD,_payload:{_status:-1,_result:e},_init:YD}};He.memo=function(e,t){return{$$typeof:KD,type:e,compare:t===void 0?null:t}};He.startTransition=function(e){var t=zp.transition;zp.transition={};try{e()}finally{zp.transition=t}};He.unstable_act=JA;He.useCallback=function(e,t){return Fa.current.useCallback(e,t)};He.useContext=function(e){return Fa.current.useContext(e)};He.useDebugValue=function(){};He.useDeferredValue=function(e){return Fa.current.useDeferredValue(e)};He.useEffect=function(e,t){return Fa.current.useEffect(e,t)};He.useId=function(){return Fa.current.useId()};He.useImperativeHandle=function(e,t,a){return Fa.current.useImperativeHandle(e,t,a)};He.useInsertionEffect=function(e,t){return Fa.current.useInsertionEffect(e,t)};He.useLayoutEffect=function(e,t){return Fa.current.useLayoutEffect(e,t)};He.useMemo=function(e,t){return Fa.current.useMemo(e,t)};He.useReducer=function(e,t,a){return Fa.current.useReducer(e,t,a)};He.useRef=function(e){return Fa.current.useRef(e)};He.useState=function(e){return Fa.current.useState(e)};He.useSyncExternalStore=function(e,t,a){return Fa.current.useSyncExternalStore(e,t,a)};He.useTransition=function(){return Fa.current.useTransition()};He.version="18.3.1";FA.exports=He;var x=FA.exports;const Q=tl(x),XA=MD({__proto__:null,default:Q},[x]);/** 11 * @license React 12 * react-jsx-runtime.production.min.js 13 * 14 * Copyright (c) Facebook, Inc. and its affiliates. 15 * 16 * This source code is licensed under the MIT license found in the 17 * LICENSE file in the root directory of this source tree. 18 */var e9=x,t9=Symbol.for("react.element"),a9=Symbol.for("react.fragment"),o9=Object.prototype.hasOwnProperty,r9=e9.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n9={key:!0,ref:!0,__self:!0,__source:!0};function YA(e,t,a){var o,r={},n=null,i=null;a!==void 0&&(n=""+a),t.key!==void 0&&(n=""+t.key),t.ref!==void 0&&(i=t.ref);for(o in t)o9.call(t,o)&&!n9.hasOwnProperty(o)&&(r[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps,t)r[o]===void 0&&(r[o]=t[o]);return{$$typeof:t9,type:e,key:n,ref:i,props:r,_owner:r9.current}}og.Fragment=a9;og.jsx=YA;og.jsxs=YA;
vendor: 4,394 bytes, lines 18-33
18VA.exports=og;var s=VA.exports,ZA={exports:{}},Ro={},eE={exports:{}},tE={};/** 19 * @license React 20 * scheduler.production.min.js 21 * 22 * Copyright (c) Facebook, Inc. and its affiliates. 23 * 24 * This source code is licensed under the MIT license found in the 25 * LICENSE file in the root directory of this source tree. 26 */(function(e){function t(L,I){var j=L.length;L.push(I);e:for(;0<j;){var H=j-1>>>1,W=L[H];if(0<r(W,I))L[H]=I,L[j]=W,j=H;else break e}}function a(L){return L.length===0?null:L[0]}function o(L){if(L.length===0)return null;var I=L[0],j=L.pop();if(j!==I){L[0]=j;e:for(var H=0,W=L.length,_=W>>>1;H<_;){var B=2*(H+1)-1,Y=L[B],ae=B+1,ie=L[ae];if(0>r(Y,j))ae<W&&0>r(ie,Y)?(L[H]=ie,L[ae]=j,H=ae):(L[H]=Y,L[B]=j,H=B);else if(ae<W&&0>r(ie,j))L[H]=ie,L[ae]=j,H=ae;else break e}}return I}function r(L,I){var j=L.sortIndex-I.sortIndex;return j!==0?j:L.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var n=performance;e.unstable_now=function(){return n.now()}}else{var i=Date,l=i.now();e.unstable_now=function(){return i.now()-l}}var c=[],d=[],u=1,m=null,h=3,p=!1,f=!1,g=!1,b=typeof setTimeout=="function"?setTimeout:null,v=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function k(L){for(var I=a(d);I!==null;){if(I.callback===null)o(d);else if(I.startTime<=L)o(d),I.sortIndex=I.expirationTime,t(c,I);else break;I=a(d)}}function w(L){if(g=!1,k(L),!f)if(a(c)!==null)f=!0,F(R);else{var I=a(d);I!==null&&U(w,I.startTime-L)}}function R(L,I){f=!1,g&&(g=!1,v(N),N=-1),p=!0;var j=h;try{for(k(I),m=a(c);m!==null&&(!(m.expirationTime>I)||L&&!$());){var H=m.callback;if(typeof H=="function"){m.callback=null,h=m.priorityLevel;var W=H(m.expirationTime<=I);I=e.unstable_now(),typeof W=="function"?m.callback=W:m===a(c)&&o(c),k(I)}else o(c);m=a(c)}if(m!==null)var _=!0;else{var B=a(d);B!==null&&U(w,B.startTime-I),_=!1}return _}finally{m=null,h=j,p=!1}}var C=!1,P=null,N=-1,E=5,A=-1;function $(){return!(e.unstable_now()-A<E)}function O(){if(P!==null){var L=e.unstable_now();A=L;var I=!0;try{I=P(!0,L)}finally{I?V():(C=!1,P=null)}}else C=!1}var V;if(typeof y=="function")V=function(){y(O)};else if(typeof MessageChannel<"u"){var T=new MessageChannel,D=T.port2;T.port1.onmessage=O,V=function(){D.postMessage(null)}}else V=function(){b(O,0)};function F(L){P=L,C||(C=!0,V())}function U(L,I){N=b(function(){L(e.unstable_now())},I)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(L){L.callback=null},e.unstable_continueExecution=function(){f||p||(f=!0,F(R))},e.unstable_forceFrameRate=function(L){0>L||125<L?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):E=0<L?Math.floor(1e3/L):5},e.unstable_getCurrentPriorityLevel=function(){return h},e.unstable_getFirstCallbackNode=function(){return a(c)},e.unstable_next=function(L){switch(h){case 1:case 2:case 3:var I=3;break;default:I=h}var j=h;h=I;try{return L()}finally{h=j}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(L,I){switch(L){case 1:case 2:case 3:case 4:case 5:break;default:L=3}var j=h;h=L;try{return I()}finally{h=j}},e.unstable_scheduleCallback=function(L,I,j){var H=e.unstable_now();switch(typeof j=="object"&&j!==null?(j=j.delay,j=typeof j=="number"&&0<j?H+j:H):j=H,L){case 1:var W=-1;break;case 2:W=250;break;case 5:W=1073741823;break;case 4:W=1e4;break;default:W=5e3}return W=j+W,L={id:u++,callback:I,priorityLevel:L,startTime:j,expirationTime:W,sortIndex:-1},j>H?(L.sortIndex=j,t(d,L),a(c)===null&&L===a(d)&&(g?(v(N),N=-1):g=!0,U(w,j-H))):(L.sortIndex=W,t(c,L),f||p||(f=!0,F(R))),L},e.unstable_shouldYield=$,e.unstable_wrapCallback=function(L){var I=h;return function(){var j=h;h=I;try{return L.apply(this,arguments)}finally{h=j}}}})(tE);eE.exports=tE;var s9=eE.exports;/** 27 * @license React 28 * react-dom.production.min.js 29 * 30 * Copyright (c) Facebook, Inc. and its affiliates. 31 * 32 * This source code is licensed under the MIT license found in the 33 * LICENSE file in the root directory of this source tree.
34 */var i9=x,Po=s9;function ee(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,a=1;a<arguments.length;a++)t+="&args[]="+encodeURIComponent(arguments[a]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var aE=new Set,vu={};function al(e,t){Cc(e,t),Cc(e+"Capture",t)}function Cc(e,t){for(vu[e]=t,e=0;e<t.length;e++)aE.add(t[e])}var An=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),$x=Object.prototype.hasOwnProperty,l9=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Kw={},Qw={};function c9(e){return $x.call(Qw,e)?!0:$x.call(Kw,e)?!1:l9.test(e)?Qw[e]=!0:(Kw[e]=!0,!1)}function d9(e,t,a,o){if(a!==null&&a.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:a!==null?!a.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function u9(e,t,a,o){if(t===null||typeof t>"u"||d9(e,t,a,o))return!0;if(o)return!1;if(a!==null)switch(a.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ua(e,t,a,o,r,n,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=r,this.mustUseProperty=a,this.propertyName=e,this.type=t,this.sanitizeURL=n,this.removeEmptyString=i}var ka={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ka[e]=new Ua(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ka[t]=new Ua(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ka[e]=new Ua(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ka[e]=new Ua(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ka[e]=new Ua(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ka[e]=new Ua(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ka[e]=new Ua(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ka[e]=new Ua(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ka[e]=new Ua(e,5,!1,e.toLowerCase(),null,!1,!1)});var A2=/[\-:]([a-z])/g;function E2(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(A2,E2);ka[t]=new Ua(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(A2,E2);ka[t]=new Ua(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(A2,E2);ka[t]=new Ua(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ka[e]=new Ua(e,1,!1,e.toLowerCase(),null,!1,!1)});ka.xlinkHref=new Ua("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ka[e]=new Ua(e,1,!1,e.toLowerCase(),null,!0,!0)});function _2(e,t,a,o){var r=ka.hasOwnProperty(t)?ka[t]:null;(r!==null?r.type!==0:o||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(u9(t,a,r,o)&&(a=null),o||r===null?c9(t)&&(a===null?e.removeAttribute(t):e.setAttribute(t,""+a)):r.mustUseProperty?e[r.propertyName]=a===null?r.type===3?!1:"":a:(t=r.attributeName,o=r.attributeNamespace,a===null?e.removeAttribute(t):(r=r.type,a=r===3||r===4&&a===!0?"":""+a,o?e.setAttributeNS(o,t,a):e.setAttribute(t,a))))}
vendor: 5,027 bytes, lines 34-38
34var Mn=i9.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Vm=Symbol.for("react.element"),El=Symbol.for("react.portal"),_l=Symbol.for("react.fragment"),T2=Symbol.for("react.strict_mode"),Ox=Symbol.for("react.profiler"),oE=Symbol.for("react.provider"),rE=Symbol.for("react.context"),$2=Symbol.for("react.forward_ref"),qx=Symbol.for("react.suspense"),Dx=Symbol.for("react.suspense_list"),O2=Symbol.for("react.memo"),es=Symbol.for("react.lazy"),nE=Symbol.for("react.offscreen"),Ww=Symbol.iterator;function md(e){return e===null||typeof e!="object"?null:(e=Ww&&e[Ww]||e["@@iterator"],typeof e=="function"?e:null)}var Lt=Object.assign,P0;function Od(e){if(P0===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);P0=t&&t[1]||""}return` 35`+P0+e}var S0=!1;function R0(e,t){if(!e||S0)return"";S0=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(d){var o=d}Reflect.construct(e,[],t)}else{try{t.call()}catch(d){o=d}e.call(t.prototype)}else{try{throw Error()}catch(d){o=d}e()}}catch(d){if(d&&o&&typeof d.stack=="string"){for(var r=d.stack.split(` 36`),n=o.stack.split(` 37`),i=r.length-1,l=n.length-1;1<=i&&0<=l&&r[i]!==n[l];)l--;for(;1<=i&&0<=l;i--,l--)if(r[i]!==n[l]){if(i!==1||l!==1)do if(i--,l--,0>l||r[i]!==n[l]){var c=` 38`+r[i].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=i&&0<=l);break}}}finally{S0=!1,Error.prepareStackTrace=a}return(e=e?e.displayName||e.name:"")?Od(e):""}function m9(e){switch(e.tag){case 5:return Od(e.type);case 16:return Od("Lazy");case 13:return Od("Suspense");case 19:return Od("SuspenseList");case 0:case 2:case 15:return e=R0(e.type,!1),e;case 11:return e=R0(e.type.render,!1),e;case 1:return e=R0(e.type,!0),e;default:return""}}function Ix(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case _l:return"Fragment";case El:return"Portal";case Ox:return"Profiler";case T2:return"StrictMode";case qx:return"Suspense";case Dx:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case rE:return(e.displayName||"Context")+".Consumer";case oE:return(e._context.displayName||"Context")+".Provider";case $2:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case O2:return t=e.displayName||null,t!==null?t:Ix(e.type)||"Memo";case es:t=e._payload,e=e._init;try{return Ix(e(t))}catch{}}return null}function p9(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ix(t);case 8:return t===T2?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function $s(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function sE(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function h9(e){var t=sE(e)?"checked":"value",a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var r=a.get,n=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(i){o=""+i,n.call(this,i)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return o},setValue:function(i){o=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Fm(e){e._valueTracker||(e._valueTracker=h9(e))}function iE(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var a=t.getValue(),o="";return e&&(o=sE(e)?e.checked?"true":"false":e.value),e=o,e!==a?(t.setValue(e),!0):!1}function Ih(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mx(e,t){var a=t.checked;return Lt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:a??e._wrapperState.initialChecked})}function Jw(e,t){var a=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;a=$s(t.value!=null?t.value:a),e._wrapperState={initialChecked:o,initialValue:a,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}
vendor: 4,658 bytes, line 38
38function lE(e,t){t=t.checked,t!=null&&_2(e,"checked",t,!1)}function Lx(e,t){lE(e,t);var a=$s(t.value),o=t.type;if(a!=null)o==="number"?(a===0&&e.value===""||e.value!=a)&&(e.value=""+a):e.value!==""+a&&(e.value=""+a);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Bx(e,t.type,a):t.hasOwnProperty("defaultValue")&&Bx(e,t.type,$s(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Xw(e,t,a){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,a||t===e.value||(e.value=t),e.defaultValue=t}a=e.name,a!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,a!==""&&(e.name=a)}function Bx(e,t,a){(t!=="number"||Ih(e.ownerDocument)!==e)&&(a==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+a&&(e.defaultValue=""+a))}var qd=Array.isArray;function Hl(e,t,a,o){if(e=e.options,t){t={};for(var r=0;r<a.length;r++)t["$"+a[r]]=!0;for(a=0;a<e.length;a++)r=t.hasOwnProperty("$"+e[a].value),e[a].selected!==r&&(e[a].selected=r),r&&o&&(e[a].defaultSelected=!0)}else{for(a=""+$s(a),t=null,r=0;r<e.length;r++){if(e[r].value===a){e[r].selected=!0,o&&(e[r].defaultSelected=!0);return}t!==null||e[r].disabled||(t=e[r])}t!==null&&(t.selected=!0)}}function Vx(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(ee(91));return Lt({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Yw(e,t){var a=t.value;if(a==null){if(a=t.children,t=t.defaultValue,a!=null){if(t!=null)throw Error(ee(92));if(qd(a)){if(1<a.length)throw Error(ee(93));a=a[0]}t=a}t==null&&(t=""),a=t}e._wrapperState={initialValue:$s(a)}}function cE(e,t){var a=$s(t.value),o=$s(t.defaultValue);a!=null&&(a=""+a,a!==e.value&&(e.value=a),t.defaultValue==null&&e.defaultValue!==a&&(e.defaultValue=a)),o!=null&&(e.defaultValue=""+o)}function Zw(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function dE(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Fx(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?dE(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Um,uE=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,a,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,a,o,r)})}:e}(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(Um=Um||document.createElement("div"),Um.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Um.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function xu(e,t){if(t){var a=e.firstChild;if(a&&a===e.lastChild&&a.nodeType===3){a.nodeValue=t;return}}e.textContent=t}var Wd={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},f9=["Webkit","ms","Moz","O"];Object.keys(Wd).forEach(function(e){f9.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Wd[t]=Wd[e]})});function mE(e,t,a){return t==null||typeof t=="boolean"||t===""?"":a||typeof t!="number"||t===0||Wd.hasOwnProperty(e)&&Wd[e]?(""+t).trim():t+"px"}function pE(e,t){e=e.style;for(var a in t)if(t.hasOwnProperty(a)){var o=a.indexOf("--")===0,r=mE(a,t[a],o);a==="float"&&(a="cssFloat"),o?e.setProperty(a,r):e[a]=r}}var g9=Lt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ux(e,t){if(t){if(g9[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ee(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ee(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(ee(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ee(62))}}function Gx(e,t){if(e.indexOf("-")===-1)return typeof t.is=="str
38ing";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var zx=null;function q2(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Hx=null,Kl=null,Ql=null;function eC(e){if(e=vm(e)){if(typeof Hx!="function")throw Error(ee(280));var t=e.stateNode;t&&(t=lg(t),Hx(e.stateNode,e.type,t))}}function hE(e){Kl?Ql?Ql.push(e):Ql=[e]:Kl=e}function fE(){if(Kl){var e=Kl,t=Ql;if(Ql=Kl=null,eC(e),t)for(e=0;e<t.length;e++)eC(t[e])}}function gE(e,t){return e(t)}function vE(){}var j0=!1;function xE(e,t,a){if(j0)return e(t,a);j0=!0;try{return gE(e,t,a)}finally{j0=!1,(Kl!==null||Ql!==null)&&(vE(),fE())}}function bu(e,t){var a=e.stateNode;if(a===null)return null;var o=lg(a);if(o===null)return null;a=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(o=!o.disabled)||(e=e.type,o=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!o;break e;default:e=!1}if(e)return null;if(a&&typeof a!="function")throw Error(ee(231,t,typeof a));return a}var Kx=!1;if(An)try{var pd={};Object.defineProperty(pd,"passive",{get:function(){Kx=!0}}),window.addEventListener("test",pd,pd),window.removeEventListener("test",pd,pd)}catch{Kx=!1}function v9(e,t,a,o,r,n,i,l,c){var d=Array.prototype.slice.call(arguments,3);try{t.apply(a,d)}catch(u){this.onError(u)}}var Jd=!1,Mh=null,Lh=!1,Qx=null,x9={onError:function(e){Jd=!0,Mh=e}};function b9(e,t,a,o,r,n,i,l,c){Jd=!1,Mh=null,v9.apply(x9,arguments)}function y9(e,t,a,o,r,n,i,l,c){if(b9.apply(this,arguments),Jd){if(Jd){var d=Mh;Jd=!1,Mh=null}else throw Error(ee(198));Lh||(Lh=!0,Qx=d)}}function ol(e){var t=e,a=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(a=t.return),e=t.return;while(e)}return t.tag===3?a:null}function bE(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function tC(e){if(ol(e)!==e)throw Error(ee(188))}function k9(e){var t=e.alternate;if(!t){if(t=ol(e),t===null)throw Error(ee(188));return t!==e?null:e}for(var a=e,o=t;;){var r=a.return;if(r===null)break;var n=r.alternate;if(n===null){if(o=r.return,o!==null){a=o;continue}break}if(r.child===n.child){for(n=r.child;n;){if(n===a)return tC(r),e;if(n===o)return tC(r),t;n=n.sibling}throw Error(ee(188))}if(a.return!==o.return)a=r,o=n;else{for(var i=!1,l=r.child;l;){if(l===a){i=!0,a=r,o=n;break}if(l===o){i=!0,o=r,a=n;break}l=l.sibling}if(!i){for(l=n.child;l;){if(l===a){i=!0,a=n,o=r;break}if(l===o){i=!0,o=n,a=r;break}l=l.sibling}if(!i)throw Error(ee(189))}}if(a.alternate!==o)throw Error(ee(190))}if(a.tag!==3)throw Error(ee(188));return a.stateNode.current===a?e:t}function yE(e){return e=k9(e),e!==null?kE(e):null}function kE(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=kE(e);if(t!==null)return t;e=e.sibling}return null}var wE=Po.unstable_scheduleCallback,aC=Po.unstable_cancelCallback,w9=Po.unstable_shouldYield,C9=Po.unstable_requestPaint,Jt=Po.unstable_now,P9=Po.unstable_getCurrentPriorityLevel,D2=Po.unstable_ImmediatePriority,CE=Po.unstable_UserBlockingPriority,Bh=Po.unstable_NormalPriority,S9=Po.unstable_LowPriority,PE=Po.unstable_IdlePriority,rg=null,Hr=null;function R9(e){if(Hr&&typeof Hr.onCommitFiberRoot=="function")try{Hr.onCommitFiberRoot(rg,e,void 0,(e.current.flags&128)===128)}catch{}}var br=Math.clz32?Math.clz32:A9,j9=Math.log,N9=Math.LN2;function A9(e){return e>>>=0,e===0?32:31-(j9(e)/N9|0)|0}var Gm=64,zm=4194304;function Dd(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Vh(e,t){var a=e.pendingLanes;if(a===0)return 0;var o=0,r=e.suspendedLanes,n=e.pingedLanes,i=a&268435455;if(i!==0){var l=i&~r;l!==0?o=Dd(l):(n&=i,n!==0&&(o=Dd(n)))}else i=a&~r,i!==0?o=Dd(i):n!==0&&(o=Dd(n));if(o===0)return 0;if(t!==0&&t!==o&&!(t&r)&&(r=o&-o,n=t&-t,r>=n||r===16&&(n&4194240)!==0))return t;if(o&4&&(o|=a&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0<t;)a=31-br(t),r=1<<a,o|=e[a],t&=~r;return o}function E9(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function _9(e,t){for(var a=e.suspendedLanes,o=e.pingedLanes,r=e.expirationTimes,n=e.pendingLanes;0<n;){var i=31-br(n),l=1<<i,c=r[i];c===-1?(!(l&a)||l&o)&&(r[i]=E9(l,t)):c<=t&&(e.expiredLanes|=l),n&=~l}}function Wx(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function SE(){var e=Gm;return Gm<<=1,!(Gm&4194240)&&(Gm=64),e}function N0(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function fm(e,t,a){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-br(t),e[t]=a}function T9(e,t){var a=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var o=e.eventTimes;for(e=e.expirationTimes;0<a;){var r=31-br(a),n=1<<r;t[r]=0,o[r]=-1,e[r]=-1,a&=~n}}function I2(e,t){var a=e.entangledLanes|=t;for(e=e.entanglements;a;){var o=31-br(a),r=1<<o;r&t|e[o]&t&&(e[o]|=t),a&=~r}}var ut=0;function RE(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var jE,M2,NE,AE,EE,Jx=!1,Hm=[],ks=null,ws=null,Cs=null,yu=new Map,ku=new Map,rs=[],$9="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function oC(e,t){switch(e){case"focusin":case"focusout":ks=null;break;case"dragenter":case"dragleave":ws=null;break;case"mouseover":case"mouseout":Cs=null;break;case"pointerover":case"pointerout":yu.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ku.delete(t.pointerId)}}function hd(e,t,a,o,r,n){return e===null||e.nativeEvent!==n?(e={blockedOn:t,domEventName:a,eventSystemFlags:o,nativeEvent:n,targetContainers:[r]},t!==null&&(t=vm(t),t!==null&&M2(t)),e):(e.eventSystemFlags|=o,t=e.targetContainers,r!==null&&t.indexOf(r)===-1&&t.push(r),e)}function O9(e,t,a,o,r){switch(t){case"focusin":return ks=hd(ks,e,t,a,o,r),!0;case"dragenter":return ws=hd(ws,e,t,a,o,r),!0;case"mouseover":return Cs=hd(Cs,e,t,a,o,r),!0;case"pointerover":var n=r.pointerId;return yu.set(n,hd(yu.get(n)||null,e,t,a,o,r)),!0;case"gotpointercapture":return n=r.pointerId,ku.set(n,hd(ku.get(n)||null,e,t,a,o,r)),!0}return!1}function _E(e){var t=hi(e.target);if(t!==null){var a=ol(t);if(a!==null){if(t=a.tag,t===13){if(t=bE(a),t!==null){e.blockedOn=t,EE(e.priority,function(){NE(a)});return}}else if(t===3&&a.stateNode.current.memoizedState.isDehydrated){e.blockedOn=a.tag===3?a.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Hp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var a=Xx(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(a===null){a=e.nativeEvent;var o=new a.constructor(a.type,a);zx=o,a.target.dispatchEvent(o),zx=null}else return t=vm(a),t!==null&&M2(t),e.blockedOn=a,!1;t.shift()}return!0}function rC(e,t,a){Hp(e)&&a.delete(t)}function q9(){Jx=!1,ks!==null&&Hp(ks)&&(ks=null),ws!==null&&Hp(ws)&&(ws=null),Cs!==null&&Hp(Cs)&&(Cs=null),yu.forEach(rC),ku.forEach(rC)}function fd(e,t){e.blockedOn===t&&(e.blockedOn=null,Jx||(Jx=!0,Po.unstable_scheduleCallback(Po.unstable_NormalPriority,q9)))}function wu(e){function t(r){return fd(r,e)}if(0<Hm.length){fd(Hm[0],e);for(var a=1;a<Hm.length;a++){var o=Hm[a];o.blockedOn===e&&(o.blockedOn=null)}}for(ks!==null&&fd(ks,e),ws!==null&&fd(ws,e),Cs!==null&&fd(Cs,e),yu.forEach(t),ku.forEach(t),a=0;a<rs.length;a++)o=rs[a],o.blockedOn===e&&(o.blockedOn=null);for(;0<rs.length&&(a=rs[0],a.blockedOn===null);)_E(a),a.blockedOn===null&&rs.shift()}var Wl=Mn.ReactCurrentBatchConfig,Fh=!0;function D9(e,t,a,o){var r=ut,n=Wl.transition;Wl.transition=null;try{ut=1,L2(e,t,a,o)}finally{ut=r,Wl.transition=n}}function I9(e,t,a,o){var r=ut,n=Wl.transition;Wl.transition=null;try{ut=4,L2(e,t,a,o)}finally{ut=r,Wl.transition=n}}function L2(e,t,a,o){if(Fh){var r=Xx(e,t,a,o);if(r===null)M0(e,t,o,Uh,a),oC(e,o);else if(O9(r,e,t,a,o))o.stopPropagation();else if(oC(e,o),t&4&&-1<$9.indexOf(e)){for(;r!==null;){var n=vm(r);if(n!==null&&jE(n),n=Xx(e,t,a,o),n===null&&M0(e,t,o,Uh,a),n===r)break;r=n}r!==null&&o.stopPropagation()}else M0(e,t,o,null,a)}}var Uh=null;function Xx(e,t,a,o){if(Uh=null,e=q2(o),e=hi(e),e!==null)if(t=ol(e),t===null)e=null;else if(a=t.tag,a===13){if(e=bE(t),e!==null)return e;e=null}else if(a===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Uh=e,null}
vendor: 10,401 bytes, line 38
38function TE(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(P9()){case D2:return 1;case CE:return 4;case Bh:case S9:return 16;case PE:return 536870912;default:return 16}default:return 16}}var vs=null,B2=null,Kp=null;function $E(){if(Kp)return Kp;var e,t=B2,a=t.length,o,r="value"in vs?vs.value:vs.textContent,n=r.length;for(e=0;e<a&&t[e]===r[e];e++);var i=a-e;for(o=1;o<=i&&t[a-o]===r[n-o];o++);return Kp=r.slice(e,1<o?1-o:void 0)}function Qp(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Km(){return!0}function nC(){return!1}function jo(e){function t(a,o,r,n,i){this._reactName=a,this._targetInst=r,this.type=o,this.nativeEvent=n,this.target=i,this.currentTarget=null;for(var l in e)e.hasOwnProperty(l)&&(a=e[l],this[l]=a?a(n):n[l]);return this.isDefaultPrevented=(n.defaultPrevented!=null?n.defaultPrevented:n.returnValue===!1)?Km:nC,this.isPropagationStopped=nC,this}return Lt(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():typeof a.returnValue!="unknown"&&(a.returnValue=!1),this.isDefaultPrevented=Km)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():typeof a.cancelBubble!="unknown"&&(a.cancelBubble=!0),this.isPropagationStopped=Km)},persist:function(){},isPersistent:Km}),t}var Wc={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},V2=jo(Wc),gm=Lt({},Wc,{view:0,detail:0}),M9=jo(gm),A0,E0,gd,ng=Lt({},gm,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:F2,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==gd&&(gd&&e.type==="mousemove"?(A0=e.screenX-gd.screenX,E0=e.screenY-gd.screenY):E0=A0=0,gd=e),A0)},movementY:function(e){return"movementY"in e?e.movementY:E0}}),sC=jo(ng),L9=Lt({},ng,{dataTransfer:0}),B9=jo(L9),V9=Lt({},gm,{relatedTarget:0}),_0=jo(V9),F9=Lt({},Wc,{animationName:0,elapsedTime:0,pseudoElement:0}),U9=jo(F9),G9=Lt({},Wc,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),z9=jo(G9),H9=Lt({},Wc,{data:0}),iC=jo(H9),K9={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Q9={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},W9={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function J9(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=W9[e])?!!t[e]:!1}function F2(){return J9}var X9=Lt({},gm,{key:function(e){if(e.key){var t=K9[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Qp(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Q9[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:F2,charCode:function(e){return e.type==="keypress"?Qp(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Qp(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Y9=jo(X9),Z9=Lt({},ng,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),lC=jo(Z9),e7=Lt({},gm,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:F2}),t7=jo(e7),a7=Lt({},Wc,{propertyName:0,elapsedTime:0,pseudoElement:0}),o7=jo(a7),r7=Lt({},ng,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),n7=jo(r7),s7=[9,13,27,32],U2=An&&"CompositionEvent"in window,Xd=null;An&&"documentMode"in document&&(Xd=document.documentMode);var i7=An&&"TextEvent"in window&&!Xd,OE=An&&(!U2||Xd&&8<Xd&&11>=Xd),cC=" ",dC=!1;function qE(e,t){switch(e){case"keyup":return s7.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function DE(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Tl=!1;function l7(e,t){switch(e){case"compositionend":return DE(t);case"keypress":return t.which!==32?null:(dC=!0,cC);case"textInput":return e=t.data,e===cC&&dC?null:e;default:return null}}function c7(e,t){if(Tl)return e==="compositionend"||!U2&&qE(e,t)?(e=$E(),Kp=B2=vs=null,Tl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return OE&&t.locale!=="ko"?null:t.data;default:return null}}var d7={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function uC(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!d7[e.type]:t==="textarea"}function IE(e,t,a,o){hE(o),t=Gh(t,"onChange"),0<t.length&&(a=new V2("onChange","change",null,a,o),e.push({event:a,listeners:t}))}var Yd=null,Cu=null;function u7(e){QE(e,0)}function sg(e){var t=ql(e);if(iE(t))return e}function m7(e,t){if(e==="change")return t}var ME=!1;if(An){var T0;if(An){var $0="oninput"in document;if(!$0){var mC=document.createElement("div");mC.setAttribute("oninput","return;"),$0=typeof mC.oninput=="function"}T0=$0}else T0=!1;ME=T0&&(!document.documentMode||9<document.documentMode)}function pC(){Yd&&(Yd.detachEvent("onpropertychange",LE),Cu=Yd=null)}function LE(e){if(e.propertyName==="value"&&sg(Cu)){var t=[];IE(t,Cu,e,q2(e)),xE(u7,t)}}function p7(e,t,a){e==="focusin"?(pC(),Yd=t,Cu=a,Yd.attachEvent("onpropertychange",LE)):e==="focusout"&&pC()}function h7(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return sg(Cu)}function f7(e,t){if(e==="click")return sg(t)}function g7(e,t){if(e==="input"||e==="change")return sg(t)}function v7(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Sr=typeof Object.is=="function"?Object.is:v7;function Pu(e,t){if(Sr(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;for(o=0;o<a.length;o++){var r=a[o];if(!$x.call(t,r)||!Sr(e[r],t[r]))return!1}return!0}function hC(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fC(e,t){var a=hC(e);e=0;for(var o;a;){if(a.nodeType===3){if(o=e+a.textContent.length,e<=t&&o>=t)return{node:a,offset:t-e};e=o}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=hC(a)}}function BE(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?BE(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function VE(){for(var e=window,t=Ih();t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=Ih(e.document)}return t}function G2(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function x7(e){var t=VE(),a=e.focusedElem,o=e.selectionRange;if(t!==a&&a&&a.ownerDocument&&BE(a.ownerDocument.documentElement,a)){if(o!==null&&G2(a)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in a)a.selectionStart=t,a.selectionEnd=Math.min(e,a.value.length);else if(e=(t=a.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var r=a.textContent.length,n=Math.min(o.start,r);o=o.end===void 0?n:Math.min(o.end,r),!e.extend&&n>o&&(r=o,o=n,n=r),r=fC(a,n);var i=fC(a,o);r&&i&&(e.rangeCount!==1||e.anchorNode!==r.node||e.anchorOffset!==r.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(r.node,r.offset),e.removeAllRanges(),n>o?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=a;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof a.focus=="function"&&a.focus(),a=0;a<t.length;a++)e=t[a],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var b7=An&&"documentMode"in document&&11>=document.documentMode,$l=null,Yx=null,Zd=null,Zx=!1;function gC(e,t,a){var o=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Zx||$l==null||$l!==Ih(o)||(o=$l,"selectionStart"in o&&G2(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focu
vendor: 4,501 bytes, line 38
38sNode:o.focusNode,focusOffset:o.focusOffset}),Zd&&Pu(Zd,o)||(Zd=o,o=Gh(Yx,"onSelect"),0<o.length&&(t=new V2("onSelect","select",null,t,a),e.push({event:t,listeners:o}),t.target=$l)))}function Qm(e,t){var a={};return a[e.toLowerCase()]=t.toLowerCase(),a["Webkit"+e]="webkit"+t,a["Moz"+e]="moz"+t,a}var Ol={animationend:Qm("Animation","AnimationEnd"),animationiteration:Qm("Animation","AnimationIteration"),animationstart:Qm("Animation","AnimationStart"),transitionend:Qm("Transition","TransitionEnd")},O0={},FE={};An&&(FE=document.createElement("div").style,"AnimationEvent"in window||(delete Ol.animationend.animation,delete Ol.animationiteration.animation,delete Ol.animationstart.animation),"TransitionEvent"in window||delete Ol.transitionend.transition);function ig(e){if(O0[e])return O0[e];if(!Ol[e])return e;var t=Ol[e],a;for(a in t)if(t.hasOwnProperty(a)&&a in FE)return O0[e]=t[a];return e}var UE=ig("animationend"),GE=ig("animationiteration"),zE=ig("animationstart"),HE=ig("transitionend"),KE=new Map,vC="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Gs(e,t){KE.set(e,t),al(t,[e])}for(var q0=0;q0<vC.length;q0++){var D0=vC[q0],y7=D0.toLowerCase(),k7=D0[0].toUpperCase()+D0.slice(1);Gs(y7,"on"+k7)}Gs(UE,"onAnimationEnd");Gs(GE,"onAnimationIteration");Gs(zE,"onAnimationStart");Gs("dblclick","onDoubleClick");Gs("focusin","onFocus");Gs("focusout","onBlur");Gs(HE,"onTransitionEnd");Cc("onMouseEnter",["mouseout","mouseover"]);Cc("onMouseLeave",["mouseout","mouseover"]);Cc("onPointerEnter",["pointerout","pointerover"]);Cc("onPointerLeave",["pointerout","pointerover"]);al("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));al("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));al("onBeforeInput",["compositionend","keypress","textInput","paste"]);al("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));al("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));al("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Id="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),w7=new Set("cancel close invalid load scroll toggle".split(" ").concat(Id));function xC(e,t,a){var o=e.type||"unknown-event";e.currentTarget=a,y9(o,t,void 0,e),e.currentTarget=null}function QE(e,t){t=(t&4)!==0;for(var a=0;a<e.length;a++){var o=e[a],r=o.event;o=o.listeners;e:{var n=void 0;if(t)for(var i=o.length-1;0<=i;i--){var l=o[i],c=l.instance,d=l.currentTarget;if(l=l.listener,c!==n&&r.isPropagationStopped())break e;xC(r,l,d),n=c}else for(i=0;i<o.length;i++){if(l=o[i],c=l.instance,d=l.currentTarget,l=l.listener,c!==n&&r.isPropagationStopped())break e;xC(r,l,d),n=c}}}if(Lh)throw e=Qx,Lh=!1,Qx=null,e}function jt(e,t){var a=t[rb];a===void 0&&(a=t[rb]=new Set);var o=e+"__bubble";a.has(o)||(WE(t,e,2,!1),a.add(o))}function I0(e,t,a){var o=0;t&&(o|=4),WE(a,e,o,t)}var Wm="_reactListening"+Math.random().toString(36).slice(2);function Su(e){if(!e[Wm]){e[Wm]=!0,aE.forEach(function(a){a!=="selectionchange"&&(w7.has(a)||I0(a,!1,e),I0(a,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Wm]||(t[Wm]=!0,I0("selectionchange",!1,t))}}function WE(e,t,a,o){switch(TE(t)){case 1:var r=D9;break;case 4:r=I9;break;default:r=L2}a=r.bind(null,t,a,e),r=void 0,!Kx||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(r=!0),o?r!==void 0?e.addEventListener(t,a,{capture:!0,passive:r}):e.addEventListener(t,a,!0):r!==void 0?e.addEventListener(t,a,{passive:r}):e.addEventListener(t,a,!1)}function M0(e,t,a,o,r){var n=o;if(!(t&1)&&!(t&2)&&o!==null)e:for(;;){if(o===null)return;var i=o.tag;if(i===3||i===4){var l=o.stateNode.containerInfo;
vendor: 2,527 bytes, line 38
38if(l===r||l.nodeType===8&&l.parentNode===r)break;if(i===4)for(i=o.return;i!==null;){var c=i.tag;if((c===3||c===4)&&(c=i.stateNode.containerInfo,c===r||c.nodeType===8&&c.parentNode===r))return;i=i.return}for(;l!==null;){if(i=hi(l),i===null)return;if(c=i.tag,c===5||c===6){o=n=i;continue e}l=l.parentNode}}o=o.return}xE(function(){var d=n,u=q2(a),m=[];e:{var h=KE.get(e);if(h!==void 0){var p=V2,f=e;switch(e){case"keypress":if(Qp(a)===0)break e;case"keydown":case"keyup":p=Y9;break;case"focusin":f="focus",p=_0;break;case"focusout":f="blur",p=_0;break;case"beforeblur":case"afterblur":p=_0;break;case"click":if(a.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":p=sC;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":p=B9;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":p=t7;break;case UE:case GE:case zE:p=U9;break;case HE:p=o7;break;case"scroll":p=M9;break;case"wheel":p=n7;break;case"copy":case"cut":case"paste":p=z9;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":p=lC}var g=(t&4)!==0,b=!g&&e==="scroll",v=g?h!==null?h+"Capture":null:h;g=[];for(var y=d,k;y!==null;){k=y;var w=k.stateNode;if(k.tag===5&&w!==null&&(k=w,v!==null&&(w=bu(y,v),w!=null&&g.push(Ru(y,w,k)))),b)break;y=y.return}0<g.length&&(h=new p(h,f,null,a,u),m.push({event:h,listeners:g}))}}if(!(t&7)){e:{if(h=e==="mouseover"||e==="pointerover",p=e==="mouseout"||e==="pointerout",h&&a!==zx&&(f=a.relatedTarget||a.fromElement)&&(hi(f)||f[En]))break e;if((p||h)&&(h=u.window===u?u:(h=u.ownerDocument)?h.defaultView||h.parentWindow:window,p?(f=a.relatedTarget||a.toElement,p=d,f=f?hi(f):null,f!==null&&(b=ol(f),f!==b||f.tag!==5&&f.tag!==6)&&(f=null)):(p=null,f=d),p!==f)){if(g=sC,w="onMouseLeave",v="onMouseEnter",y="mouse",(e==="pointerout"||e==="pointerover")&&(g=lC,w="onPointerLeave",v="onPointerEnter",y="pointer"),b=p==null?h:ql(p),k=f==null?h:ql(f),h=new g(w,y+"leave",p,a,u),h.target=b,h.relatedTarget=k,w=null,hi(u)===d&&(g=new g(v,y+"enter",f,a,u),g.target=k,g.relatedTarget=b,w=g),b=w,p&&f)t:{for(g=p,v=f,y=0,k=g;k;k=ul(k))y++;for(k=0,w=v;w;w=ul(w))k++;for(;0<y-k;)g=ul(g),y--;for(;0<k-y;)v=ul(v),k--;for(;y--;){if(g===v||v!==null&&g===v.alternate)break t;g=ul(g),v=ul(v)}g=null}else g=null;p!==null&&bC(m,h,p,g,!1),f!==null&&b!==null&&bC(m,b,f,g,!0)}}
vendor: 5,760 bytes, lines 38-39
38e:{if(h=d?ql(d):window,p=h.nodeName&&h.nodeName.toLowerCase(),p==="select"||p==="input"&&h.type==="file")var R=m7;else if(uC(h))if(ME)R=g7;else{R=h7;var C=p7}else(p=h.nodeName)&&p.toLowerCase()==="input"&&(h.type==="checkbox"||h.type==="radio")&&(R=f7);if(R&&(R=R(e,d))){IE(m,R,a,u);break e}C&&C(e,h,d),e==="focusout"&&(C=h._wrapperState)&&C.controlled&&h.type==="number"&&Bx(h,"number",h.value)}switch(C=d?ql(d):window,e){case"focusin":(uC(C)||C.contentEditable==="true")&&($l=C,Yx=d,Zd=null);break;case"focusout":Zd=Yx=$l=null;break;case"mousedown":Zx=!0;break;case"contextmenu":case"mouseup":case"dragend":Zx=!1,gC(m,a,u);break;case"selectionchange":if(b7)break;case"keydown":case"keyup":gC(m,a,u)}var P;if(U2)e:{switch(e){case"compositionstart":var N="onCompositionStart";break e;case"compositionend":N="onCompositionEnd";break e;case"compositionupdate":N="onCompositionUpdate";break e}N=void 0}else Tl?qE(e,a)&&(N="onCompositionEnd"):e==="keydown"&&a.keyCode===229&&(N="onCompositionStart");N&&(OE&&a.locale!=="ko"&&(Tl||N!=="onCompositionStart"?N==="onCompositionEnd"&&Tl&&(P=$E()):(vs=u,B2="value"in vs?vs.value:vs.textContent,Tl=!0)),C=Gh(d,N),0<C.length&&(N=new iC(N,e,null,a,u),m.push({event:N,listeners:C}),P?N.data=P:(P=DE(a),P!==null&&(N.data=P)))),(P=i7?l7(e,a):c7(e,a))&&(d=Gh(d,"onBeforeInput"),0<d.length&&(u=new iC("onBeforeInput","beforeinput",null,a,u),m.push({event:u,listeners:d}),u.data=P))}QE(m,t)})}function Ru(e,t,a){return{instance:e,listener:t,currentTarget:a}}function Gh(e,t){for(var a=t+"Capture",o=[];e!==null;){var r=e,n=r.stateNode;r.tag===5&&n!==null&&(r=n,n=bu(e,a),n!=null&&o.unshift(Ru(e,n,r)),n=bu(e,t),n!=null&&o.push(Ru(e,n,r))),e=e.return}return o}function ul(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function bC(e,t,a,o,r){for(var n=t._reactName,i=[];a!==null&&a!==o;){var l=a,c=l.alternate,d=l.stateNode;if(c!==null&&c===o)break;l.tag===5&&d!==null&&(l=d,r?(c=bu(a,n),c!=null&&i.unshift(Ru(a,c,l))):r||(c=bu(a,n),c!=null&&i.push(Ru(a,c,l)))),a=a.return}i.length!==0&&e.push({event:t,listeners:i})}var C7=/\r\n?/g,P7=/\u0000|\uFFFD/g;function yC(e){return(typeof e=="string"?e:""+e).replace(C7,` 39`).replace(P7,"")}function Jm(e,t,a){if(t=yC(t),yC(e)!==t&&a)throw Error(ee(425))}function zh(){}var eb=null,tb=null;function ab(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var ob=typeof setTimeout=="function"?setTimeout:void 0,S7=typeof clearTimeout=="function"?clearTimeout:void 0,kC=typeof Promise=="function"?Promise:void 0,R7=typeof queueMicrotask=="function"?queueMicrotask:typeof kC<"u"?function(e){return kC.resolve(null).then(e).catch(j7)}:ob;function j7(e){setTimeout(function(){throw e})}function L0(e,t){var a=t,o=0;do{var r=a.nextSibling;if(e.removeChild(a),r&&r.nodeType===8)if(a=r.data,a==="/$"){if(o===0){e.removeChild(r),wu(t);return}o--}else a!=="$"&&a!=="$?"&&a!=="$!"||o++;a=r}while(a);wu(t)}function Ps(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function wC(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var a=e.data;if(a==="$"||a==="$!"||a==="$?"){if(t===0)return e;t--}else a==="/$"&&t++}e=e.previousSibling}return null}var Jc=Math.random().toString(36).slice(2),Gr="__reactFiber$"+Jc,ju="__reactProps$"+Jc,En="__reactContainer$"+Jc,rb="__reactEvents$"+Jc,N7="__reactListeners$"+Jc,A7="__reactHandles$"+Jc;function hi(e){var t=e[Gr];if(t)return t;for(var a=e.parentNode;a;){if(t=a[En]||a[Gr]){if(a=t.alternate,t.child!==null||a!==null&&a.child!==null)for(e=wC(e);e!==null;){if(a=e[Gr])return a;e=wC(e)}return t}e=a,a=e.parentNode}return null}function vm(e){return e=e[Gr]||e[En],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function ql(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(ee(33))}function lg(e){return e[ju]||null}var nb=[],Dl=-1;function zs(e){return{current:e}}function Nt(e){0>Dl||(e.current=nb[Dl],nb[Dl]=null,Dl--)}function St(e,t){Dl++,nb[Dl]=e.current,e.current=t}var Os={},_a=zs(Os),oo=zs(!1),Mi=Os;function Pc(e,t){var a=e.type.contextTypes;if(!a)return Os;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var r={},n;for(n in a)r[n]=t[n];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=r),r}function ro(e){return e=e.childContextTypes,e!=null}function Hh(){Nt(oo),Nt(_a)}function CC(e,t,a){if(_a.current!==Os)throw Error(ee(168));St(_a,t),St(oo,a)}function JE(e,t,a){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return a;o=o.getChildContext();for(var r in o)if(!(r in t))throw Error(ee(108,p9(e)||"Unknown",r));return Lt({},a,o)}function Kh(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Os,Mi=_a.current,St(_a,e),St(oo,oo.current),!0}function PC(e,t,a){var o=e.stateNode;if(!o)throw Error(ee(169));a?(e=JE(e,t,Mi),o.__reactInternalMemoizedMergedChildContext=e,Nt(oo),Nt(_a),St(_a,e)):Nt(oo),St(oo,a)}var wn=null,cg=!1,B0=!1;function XE(e){wn===null?wn=[e]:wn.push(e)}function E7(e){cg=!0,XE(e)}function Hs(){if(!B0&&wn!==null){B0=!0;var e=0,t=ut;try{var a=wn;for(ut=1;e<a.length;e++){var o=a[e];do o=o(!0);while(o!==null)}wn=null,cg=!1}catch(r){throw wn!==null&&(wn=wn.slice(e+1)),wE(D2,Hs),r}finally{ut=t,B0=!1}}return null}var Il=[],Ml=0,Qh=null,Wh=0,Mo=[],Lo=0,Li=null,Sn=1,Rn="";function si(e,t){Il[Ml++]=Wh,Il[Ml++]=Qh,Qh=e,Wh=t}function YE(e,t,a){Mo[Lo++]=Sn,Mo[Lo++]=Rn,Mo[Lo++]=Li,Li=e;var o=Sn;e=Rn;
vendor: 16,884 bytes, line 39
39var r=32-br(o)-1;o&=~(1<<r),a+=1;var n=32-br(t)+r;if(30<n){var i=r-r%5;n=(o&(1<<i)-1).toString(32),o>>=i,r-=i,Sn=1<<32-br(t)+r|a<<r|o,Rn=n+e}else Sn=1<<n|a<<r|o,Rn=e}function z2(e){e.return!==null&&(si(e,1),YE(e,1,0))}function H2(e){for(;e===Qh;)Qh=Il[--Ml],Il[Ml]=null,Wh=Il[--Ml],Il[Ml]=null;for(;e===Li;)Li=Mo[--Lo],Mo[Lo]=null,Rn=Mo[--Lo],Mo[Lo]=null,Sn=Mo[--Lo],Mo[Lo]=null}var yo=null,bo=null,Et=!1,hr=null;function ZE(e,t){var a=Fo(5,null,null,0);a.elementType="DELETED",a.stateNode=t,a.return=e,t=e.deletions,t===null?(e.deletions=[a],e.flags|=16):t.push(a)}function SC(e,t){switch(e.tag){case 5:var a=e.type;return t=t.nodeType!==1||a.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,yo=e,bo=Ps(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,yo=e,bo=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(a=Li!==null?{id:Sn,overflow:Rn}:null,e.memoizedState={dehydrated:t,treeContext:a,retryLane:1073741824},a=Fo(18,null,null,0),a.stateNode=t,a.return=e,e.child=a,yo=e,bo=null,!0):!1;default:return!1}}function sb(e){return(e.mode&1)!==0&&(e.flags&128)===0}function ib(e){if(Et){var t=bo;if(t){var a=t;if(!SC(e,t)){if(sb(e))throw Error(ee(418));t=Ps(a.nextSibling);var o=yo;t&&SC(e,t)?ZE(o,a):(e.flags=e.flags&-4097|2,Et=!1,yo=e)}}else{if(sb(e))throw Error(ee(418));e.flags=e.flags&-4097|2,Et=!1,yo=e}}}function RC(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;yo=e}function Xm(e){if(e!==yo)return!1;if(!Et)return RC(e),Et=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!ab(e.type,e.memoizedProps)),t&&(t=bo)){if(sb(e))throw e_(),Error(ee(418));for(;t;)ZE(e,t),t=Ps(t.nextSibling)}if(RC(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(ee(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var a=e.data;if(a==="/$"){if(t===0){bo=Ps(e.nextSibling);break e}t--}else a!=="$"&&a!=="$!"&&a!=="$?"||t++}e=e.nextSibling}bo=null}}else bo=yo?Ps(e.stateNode.nextSibling):null;return!0}function e_(){for(var e=bo;e;)e=Ps(e.nextSibling)}function Sc(){bo=yo=null,Et=!1}function K2(e){hr===null?hr=[e]:hr.push(e)}var _7=Mn.ReactCurrentBatchConfig;function vd(e,t,a){if(e=a.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(a._owner){if(a=a._owner,a){if(a.tag!==1)throw Error(ee(309));var o=a.stateNode}if(!o)throw Error(ee(147,e));var r=o,n=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===n?t.ref:(t=function(i){var l=r.refs;i===null?delete l[n]:l[n]=i},t._stringRef=n,t)}if(typeof e!="string")throw Error(ee(284));if(!a._owner)throw Error(ee(290,e))}return e}function Ym(e,t){throw e=Object.prototype.toString.call(t),Error(ee(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function jC(e){var t=e._init;return t(e._payload)}function t_(e){function t(v,y){if(e){var k=v.deletions;k===null?(v.deletions=[y],v.flags|=16):k.push(y)}}function a(v,y){if(!e)return null;for(;y!==null;)t(v,y),y=y.sibling;return null}function o(v,y){for(v=new Map;y!==null;)y.key!==null?v.set(y.key,y):v.set(y.index,y),y=y.sibling;return v}function r(v,y){return v=Ns(v,y),v.index=0,v.sibling=null,v}function n(v,y,k){return v.index=k,e?(k=v.alternate,k!==null?(k=k.index,k<y?(v.flags|=2,y):k):(v.flags|=2,y)):(v.flags|=1048576,y)}function i(v){return e&&v.alternate===null&&(v.flags|=2),v}function l(v,y,k,w){return y===null||y.tag!==6?(y=K0(k,v.mode,w),y.return=v,y):(y=r(y,k),y.return=v,y)}function c(v,y,k,w){var R=k.type;return R===_l?u(v,y,k.props.children,w,k.key):y!==null&&(y.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===es&&jC(R)===y.type)?(w=r(y,k.props),w.ref=vd(v,y,k),w.return=v,w):(w=th(k.type,k.key,k.props,null,v.mode,w),w.ref=vd(v,y,k),w.return=v,w)}function d(v,y,k,w){return y===null||y.tag!==4||y.stateNode.containerInfo!==k.containerInfo||y.stateNode.implementation!==k.implementation?(y=Q0(k,v.mode,w),y.return=v,y):(y=r(y,k.children||[]),y.return=v,y)}function u(v,y,k,w,R){return y===null||y.tag!==7?(y=$i(k,v.mode,w,R),y.return=v,y):(y=r(y,k),y.return=v,y)}function m(v,y,k){if(typeof y=="string"&&y!==""||typeof y=="number")return y=K0(""+y,v.mode,k),y.return=v,y;if(typeof y=="object"&&y!==null){switch(y.$$typeof){case Vm:return k=th(y.type,y.key,y.props,null,v.mode,k),k.ref=vd(v,null,y),k.return=v,k;case El:return y=Q0(y,v.mode,k),y.return=v,y;case es:var w=y._init;return m(v,w(y._payload),k)}if(qd(y)||md(y))return y=$i(y,v.mode,k,null),y.return=v,y;Ym(v,y)}return null}function h(v,y,k,w){var R=y!==null?y.key:null;if(typeof k=="string"&&k!==""||typeof k=="number")return R!==null?null:l(v,y,""+k,w);if(typeof k=="object"&&k!==null){switch(k.$$typeof){case Vm:return k.key===R?c(v,y,k,w):null;case El:return k.key===R?d(v,y,k,w):null;case es:return R=k._init,h(v,y,R(k._payload),w)}if(qd(k)||md(k))return R!==null?null:u(v,y,k,w,null);Ym(v,k)}return null}function p(v,y,k,w,R){if(typeof w=="string"&&w!==""||typeof w=="number")return v=v.get(k)||null,l(y,v,""+w,R);if(typeof w=="object"&&w!==null){switch(w.$$typeof){case Vm:return v=v.get(w.key===null?k:w.key)||null,c(y,v,w,R);case El:return v=v.get(w.key===null?k:w.key)||null,d(y,v,w,R);case es:var C=w._init;return p(v,y,k,C(w._payload),R)}if(qd(w)||md(w))return v=v.get(k)||null,u(y,v,w,R,null);Ym(y,w)}return null}function f(v,y,k,w){for(var R=null,C=null,P=y,N=y=0,E=null;P!==null&&N<k.length;N++){P.index>N?(E=P,P=null):E=P.sibling;var A=h(v,P,k[N],w);if(A===null){P===null&&(P=E);break}e&&P&&A.alternate===null&&t(v,P),y=n(A,y,N),C===null?R=A:C.sibling=A,C=A,P=E}if(N===k.length)return a(v,P),Et&&si(v,N),R;if(P===null){for(;N<k.length;N++)P=m(v,k[N],w),P!==null&&(y=n(P,y,N),C===null?R=P:C.sibling=P,C=P);return Et&&si(v,N),R}for(P=o(v,P);N<k.length;N++)E=p(P,v,N,k[N],w),E!==null&&(e&&E.alternate!==null&&P.delete(E.key===null?N:E.key),y=n(E,y,N),C===null?R=E:C.sibling=E,C=E);return e&&P.forEach(function($){return t(v,$)}),Et&&si(v,N),R}function g(v,y,k,w){var R=md(k);if(typeof R!="function")throw Error(ee(150));if(k=R.call(k),k==null)throw Error(ee(151));for(var C=R=null,P=y,N=y=0,E=null,A=k.next();P!==null&&!A.done;N++,A=k.next()){P.index>N?(E=P,P=null):E=P.sibling;var $=h(v,P,A.value,w);if($===null){P===null&&(P=E);break}e&&P&&$.alternate===null&&t(v,P),y=n($,y,N),C===null?R=$:C.sibling=$,C=$,P=E}if(A.done)return a(v,P),Et&&si(v,N),R;if(P===null){for(;!A.done;N++,A=k.next())A=m(v,A.value,w),A!==null&&(y=n(A,y,N),C===null?R=A:C.sibling=A,C=A);return Et&&si(v,N),R}for(P=o(v,P);!A.done;N++,A=k.next())A=p(P,v,N,A.value,w),A!==null&&(e&&A.alternate!==null&&P.delete(A.key===null?N:A.key),y=n(A,y,N),C===null?R=A:C.sibling=A,C=A);return e&&P.forEach(function(O){return t(v,O)}),Et&&si(v,N),R}function b(v,y,k,w){if(typeof k=="object"&&k!==null&&k.type===_l&&k.key===null&&(k=k.props.children),typeof k=="object"&&k!==null){switch(k.$$typeof){case Vm:e:{for(var R=k.key,C=y;C!==null;){if(C.key===R){if(R=k.type,R===_l){if(C.tag===7){a(v,C.sibling),y=r(C,k.props.children),y.return=v,v=y;break e}}else if(C.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===es&&jC(R)===C.type){a(v,C.sibling),y=r(C,k.props),y.ref=vd(v,C,k),y.return=v,v=y;break e}a(v,C);break}else t(v,C);C=C.sibling}k.type===_l?(y=$i(k.props.children,v.mode,w,k.key),y.return=v,v=y):(w=th(k.type,k.key,k.props,null,v.mode,w),w.ref=vd(v,y,k),w.return=v,v=w)}return i(v);case El:e:{for(C=k.key;y!==null;){if(y.key===C)if(y.tag===4&&y.stateNode.containerInfo===k.containerInfo&&y.stateNode.implementation===k.implementation){a(v,y.sibling),y=r(y,k.children||[]),y.return=v,v=y;break e}else{a(v,y);break}else t(v,y);y=y.sibling}y=Q0(k,v.mode,w),y.return=v,v=y}return i(v);case es:return C=k._init,b(v,y,C(k._payload),w)}if(qd(k))return f(v,y,k,w);if(md(k))return g(v,y,k,w);Ym(v,k)}return typeof k=="string"&&k!==""||typeof k=="number"?(k=""+k,y!==null&&y.tag===6?(a(v,y.sibling),y=r(y,k),y.return=v,v=y):(a(v,y),y=K0(k,v.mode,w),y.return=v,v=y),i(v)):a(v,y)}return b}var Rc=t_(!0),a_=t_(!1),Jh=zs(null),Xh=null,Ll=null,Q2=null;function W2(){Q2=Ll=Xh=null}function J2(e){var t=Jh.current;Nt(Jh),e._currentValue=t}function lb(e,t,a){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===a)break;e=e.return}}function Jl(e,t){Xh=e,Q2=Ll=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(eo=!0),e.firstContext=null)}function Ho(e){var t=e._currentValue;if(Q2!==e)if(e={context:e,memoizedValue:t,next:null},Ll===null){if(Xh===null)throw Error(ee(308));Ll=e,Xh.dependencies={lanes:0,firstContext:e}}else Ll=Ll.next=e;return t}var fi=null;function X2(e){fi===null?fi=[e]:fi.push(e)}function o_(e,t,a,o){var r=t.interleaved;return r===null?(a.next=a,X2(t)):(a.next=r.next,r.next=a),t.interleaved=a,_n(e,o)}function _n(e,t){e.lanes|=t;var a=e.alternate;for(a!==null&&(a.lanes|=t),a=e,e=e.return;e!==null;)e.childLanes|=t,a=e.alternate,a!==null&&(a.childLanes|=t),a=e,e=e.return;return a.tag===3?a.stateNode:null}var ts=!1;function Y2(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function r_(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function jn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ss(e,t,a){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,tt&2){var r=o.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),o.pending=t,_n(e,a)}return r=o.interleaved,r===null?(t.next=t,X2(o)):(t.next=r.next,r.next=t),o.interleaved=t,_n(e,a)}function Wp(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,a|=o,t.lanes=a,I2(e,a)}}function NC(e,t){var a=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,a===o)){var r=null,n=null;if(a=a.firstBaseUpdate,a!==null){do{var i={eventTime:a.eventTime,lane:a.lane,tag:a.tag,payload:a.payload,callback:a.callback,next:null};n===null?r=n=i:n=n.next=i,a=a.next}while(a!==null);n===null?r=n=t:n=n.next=t}else r=n=t;a={baseState:o.baseState,firstBaseUpdate:r,lastBaseUpdate:n,shared:o.shared,effects:o.effects},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}function Yh(e,t,a,o){var r=e.updateQueue;ts=!1;var n=r.firstBaseUpdate,i=r.lastBaseUpdate,l=r.shared.pending;if(l!==null){r.shared.pending=null;var c=l,d=c.next;c.next=null,i===null?n=d:i.next=d,i=c;var u=e.alternate;u!==null&&(u=u.updateQueue,l=u.lastBaseUpdate,l!==i&&(l===null?u.firstBaseUpdate=d:l.next=d,u.lastBaseUpdate=c))}if(n!==null){var m=r.baseState;i=0,u=d=c=null,l=n;do{var h=l.lane,p=l.eventTime;if((o&h)===h){u!==null&&(u=u.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var f=e,g=l;switch(h=t,p=a,g.tag){case 1:if(f=g.payload,typeof f=="function"){m=f.call(p,m,h);break e}m=f;break e;case 3:f.flags=f.flags&-65537|128;case 0:if(f=g.payload,h=typeof f=="function"?f.call(p,m,h):f,h==null)break e;m=Lt({},m,h);break e;case 2:ts=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,h=r.effects,h===null?r.effects=[l]:h.push(l))}else p={eventTime:p,lane:h,tag:l.tag,payload:l.payload,callback:l.callback,next:null},u===null?(d=u=p,c=m):u=u.next=p,i|=h;if(l=l.next,l===null){if(l=r.shared.pending,l===null)break;h=l,l=h.next,h.next=null,r.lastBaseUpdate=h,r.shared.pending=null}}while(!0);if(u===null&&(c=m),r.baseState=c,r.firstBaseUpdate=d,r.lastBaseUpdate=u,t=r.shared.interleaved,t!==null){r=t;do i|=r.lane,r=r.next;while(r!==t)}else n===null&&(r.shared.lanes=0);Vi|=i,e.lanes=i,e.memoizedState=m}}function AC(e,t,a){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var o=e[t],r=o.callback;if(r!==null){if(o.callback=null,o=a,typeof r!="function")throw Error(ee(191,r));r.call(o)}}}var xm={},Kr=zs(xm),Nu=zs(xm),Au=zs(xm);function gi(e){if(e===xm)throw Error(ee(174));return e}function Z2(e,t){switch(St(Au,t),St(Nu,e),St(Kr,xm),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Fx(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Fx(t,e)}Nt(Kr),St(Kr,t)}function jc(){Nt(Kr),Nt(Nu),Nt(Au)}function n_(e){gi(Au.current);var t=gi(Kr.current),a=Fx(t,e.type);t!==a&&(St(Nu,e),St(Kr,a))}function e1(e){Nu.current===e&&(Nt(Kr),Nt(Nu))}var Dt=zs(0);function Zh(e){for(var t=e;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||a.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var V0=[];function t1(){for(var e=0;e<V0.length;e++)V0[e]._workInProgressVersionPrimary=null;V0.length=0}var Jp=Mn.ReactCurrentDispatcher,F0=Mn.ReactCurrentBatchConfig,Bi=0,Mt=null,sa=null,da=null,ef=!1,eu=!1,Eu=0,T7=0;function wa(){throw Error(ee(321))}function a1(e,t){if(t===null)return!1;for(var a=0;a<t.length&&a<e.length;a++)if(!Sr(e[a],t[a]))return!1;return!0}function o1(e,t,a,o,r,n){if(Bi=n,Mt=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Jp.current=e===null||e.memoizedState===null?D7:I7,e=a(o,r),eu){n=0;do{if(eu=!1,Eu=0,25<=n)throw Error(ee(301));n+=1,da=sa=null,t.updateQueue=null,Jp.current=M7,e=a(o,r)}while(eu)}if(Jp.current=tf,t=sa!==null&&sa.next!==null,Bi=0,da=sa=Mt=null,ef=!1,t)throw Error(ee(300));return e}function r1(){var e=Eu!==0;return Eu=0,e}function $r(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return da===null?Mt.memoizedState=da=e:da=da.next=e,da}function Ko(){if(sa===null){var e=Mt.alternate;e=e!==null?e.memoizedState:null}else e=sa.next;var t=da===null?Mt.memoizedState:da.next;if(t!==null)da=t,sa=e;else{if(e===null)throw Error(ee(310));sa=e,e={memoizedState:sa.memoizedState,baseState:sa.baseState,baseQueue:sa.baseQueue,queue:sa.queue,next:null},da===null?Mt.memoizedState=da=e:da=da.next=e}return da}function _u(e,t){return typeof t=="function"?t(e):t}function U0(e){var t=Ko(),a=t.queue;if(a===null)throw Error(ee(311));a.lastRenderedReducer=e;var o=sa,r=o.baseQueue,n=a.pending;if(n!==null){if(r!==null){var i=r.next;r.next=n.next,n.next=i}o.baseQueue=r=n,a.pending=null}if(r!==null){n=r.next,o=o.baseState;var l=i=null,c=null,d=n;do{var u=d.lane;if((Bi&u)===u)c!==null&&(c=c.next={lane:0,action:d.action,hasEagerState:d.hasEagerState,eagerState:d.eagerState,next:null}),o=d.hasEagerState?d.eagerState:e(o,d.action);else{var m={lane:u,action:d.action,hasEagerState:d.hasEagerState,eagerState:d.eagerState,next:null};c===null?(l=c=m,i=o):c=c.next=m,Mt.lanes|=u,Vi|=u}d=d.next}while(d!==null&&d!==n);c===null?i=o:c.next=l,Sr(o,t.memoizedState)||(eo=!0),t.memoizedState=o,t.baseState=i,t.baseQueue=c,a.lastRenderedState=o}if(e=a.interleaved,e!==null){r=e;do n=r.lane,Mt.lanes|=n,Vi|=n,r=r.next;while(r!==e)}else r===null&&(a.lanes=0);return[t.memoizedState,a.dispatch]}function G0(e){var t=Ko(),a=t.queue;if(a===null)throw Error(ee(311));a.lastRenderedReducer=e;var o=a.dispatch,r=a.pending,n=t.memoizedState;if(r!==null){a.pending=null;var i=r=r.next;do n=e(n,i.action),i=i.next;while(i!==r);Sr(n,t.memoizedState)||(eo=!0),t.memoizedState=n,t.baseQueue===null&&(t.baseState=n),a.lastRenderedState=n}return[n,o]}function s_(){}function i_(e,t){var a=Mt,o=Ko(),r=t(),n=!Sr(o.memoizedState,r);if(n&&(o.memoizedState=r,eo=!0),o=o.queue,n1(d_.bind(null,a,o,e),[e]),o.getSnapshot!==t||n||da!==null&&da.memoizedState.tag&1){if(a.flags|=2048,Tu(9,c_.bind(null,a,o,r,t),void 0,null),ua===null)throw Error(ee(349));Bi&30||l_(a,t,r)}return r}function l_(e,t,a){e.flags|=16384,e={getSnapshot:t,value:a},t=Mt.updateQueue,t===null?(t={lastEffect:null,stores:null},Mt.updateQueue=t,t.stores=[e]):(a=t.stores,a===null?t.stores=[e]:a.push(e))}function c_(e,t,a,o){t.value=a,t.getSnapshot=o,u_(t)&&m_(e)}function d_(e,t,a){return a(function(){u_(t)&&m_(e)})}function u_(e){var t=e.getSnapshot;e=e.value;try{var a=t();return!Sr(e,a)}catch{return!0}}function m_(e){var t=_n(e,1);t!==null&&yr(t,e,1,-1)}function EC(e){var t=$r();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:_u,lastRenderedState:e},t.queue=e,e=e.dispatch=q7.bind(null,Mt,e),[t.memoizedState,e]}function Tu(e,t,a,o){return e={tag:e,create:t,destroy:a,deps:o,next:null},t=Mt.updateQueue,t===null?(t={lastEffect:null,stores:null},Mt.updateQueue=t,t.lastEffect=e.next=e):(a=t.lastEffect,a===null?t.lastEffect=e.next=e:(o=a.next,a.next=e,e.next=o,t.lastEffect=e)),e}function p_(){return Ko().memoizedState}function Xp(e,t,a,o){var r=$r();
vendor: 4,624 bytes, line 39
39Mt.flags|=e,r.memoizedState=Tu(1|t,a,void 0,o===void 0?null:o)}function dg(e,t,a,o){var r=Ko();o=o===void 0?null:o;var n=void 0;if(sa!==null){var i=sa.memoizedState;if(n=i.destroy,o!==null&&a1(o,i.deps)){r.memoizedState=Tu(t,a,n,o);return}}Mt.flags|=e,r.memoizedState=Tu(1|t,a,n,o)}function _C(e,t){return Xp(8390656,8,e,t)}function n1(e,t){return dg(2048,8,e,t)}function h_(e,t){return dg(4,2,e,t)}function f_(e,t){return dg(4,4,e,t)}function g_(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function v_(e,t,a){return a=a!=null?a.concat([e]):null,dg(4,4,g_.bind(null,t,e),a)}function s1(){}function x_(e,t){var a=Ko();t=t===void 0?null:t;var o=a.memoizedState;return o!==null&&t!==null&&a1(t,o[1])?o[0]:(a.memoizedState=[e,t],e)}function b_(e,t){var a=Ko();t=t===void 0?null:t;var o=a.memoizedState;return o!==null&&t!==null&&a1(t,o[1])?o[0]:(e=e(),a.memoizedState=[e,t],e)}function y_(e,t,a){return Bi&21?(Sr(a,t)||(a=SE(),Mt.lanes|=a,Vi|=a,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,eo=!0),e.memoizedState=a)}function $7(e,t){var a=ut;ut=a!==0&&4>a?a:4,e(!0);var o=F0.transition;F0.transition={};try{e(!1),t()}finally{ut=a,F0.transition=o}}function k_(){return Ko().memoizedState}function O7(e,t,a){var o=js(e);if(a={lane:o,action:a,hasEagerState:!1,eagerState:null,next:null},w_(e))C_(t,a);else if(a=o_(e,t,a,o),a!==null){var r=Va();yr(a,e,o,r),P_(a,t,o)}}function q7(e,t,a){var o=js(e),r={lane:o,action:a,hasEagerState:!1,eagerState:null,next:null};if(w_(e))C_(t,r);else{var n=e.alternate;if(e.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var i=t.lastRenderedState,l=n(i,a);if(r.hasEagerState=!0,r.eagerState=l,Sr(l,i)){var c=t.interleaved;c===null?(r.next=r,X2(t)):(r.next=c.next,c.next=r),t.interleaved=r;return}}catch{}finally{}a=o_(e,t,r,o),a!==null&&(r=Va(),yr(a,e,o,r),P_(a,t,o))}}function w_(e){var t=e.alternate;return e===Mt||t!==null&&t===Mt}function C_(e,t){eu=ef=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function P_(e,t,a){if(a&4194240){var o=t.lanes;o&=e.pendingLanes,a|=o,t.lanes=a,I2(e,a)}}var tf={readContext:Ho,useCallback:wa,useContext:wa,useEffect:wa,useImperativeHandle:wa,useInsertionEffect:wa,useLayoutEffect:wa,useMemo:wa,useReducer:wa,useRef:wa,useState:wa,useDebugValue:wa,useDeferredValue:wa,useTransition:wa,useMutableSource:wa,useSyncExternalStore:wa,useId:wa,unstable_isNewReconciler:!1},D7={readContext:Ho,useCallback:function(e,t){return $r().memoizedState=[e,t===void 0?null:t],e},useContext:Ho,useEffect:_C,useImperativeHandle:function(e,t,a){return a=a!=null?a.concat([e]):null,Xp(4194308,4,g_.bind(null,t,e),a)},useLayoutEffect:function(e,t){return Xp(4194308,4,e,t)},useInsertionEffect:function(e,t){return Xp(4,2,e,t)},useMemo:function(e,t){var a=$r();return t=t===void 0?null:t,e=e(),a.memoizedState=[e,t],e},useReducer:function(e,t,a){var o=$r();return t=a!==void 0?a(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=O7.bind(null,Mt,e),[o.memoizedState,e]},useRef:function(e){var t=$r();return e={current:e},t.memoizedState=e},useState:EC,useDebugValue:s1,useDeferredValue:function(e){return $r().memoizedState=e},useTransition:function(){var e=EC(!1),t=e[0];return e=$7.bind(null,e[1]),$r().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,a){var o=Mt,r=$r();if(Et){if(a===void 0)throw Error(ee(407));a=a()}else{if(a=t(),ua===null)throw Error(ee(349));Bi&30||l_(o,t,a)}r.memoizedState=a;var n={value:a,getSnapshot:t};return r.queue=n,_C(d_.bind(null,o,n,e),[e]),o.flags|=2048,Tu(9,c_.bind(null,o,n,a,t),void 0,null),a},useId:function(){var e=$r(),t=ua.identifierPrefix;if(Et){var a=Rn,o=Sn;a=(o&~(1<<32-br(o)-1)).toString(32)+a,t=":"+t+"R"+a,a=Eu++,0<a&&(t+="H"+a.toString(32)),t+=":"}else a=T7++,t=":"+t+"r"+a.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},I7={readContext:Ho,useCallback:x_,useContext:Ho,useEffect:n1,useImperativeHandle:v_,useInsertionEffect:h_,useLayoutEffect:f_,useMemo:b_,useReducer:U0,useRef:p_,useState:function(){return U0(_u)},useDebugValue:s1,useDeferredValue:function(e){var t=Ko();return y_(t,sa.memoizedState,e)},useTransition:function(){var e=U0(_u)[0],t=Ko().memoizedState;return[e,t]},useMutableSource:s_,useSyncExternalStore:i_,useId:k_,unstable_isNewReconciler:!1},M7={readContext:Ho,useCallback:x_,useContext:Ho,useEffect:n1,useImperativeHandle:v_,useInsertionEffect:h_,useLayoutEffect:f_,useMemo:b_,useReducer:G0,useRef
vendor: 5,969 bytes, lines 39-41
39:p_,useState:function(){return G0(_u)},useDebugValue:s1,useDeferredValue:function(e){var t=Ko();return sa===null?t.memoizedState=e:y_(t,sa.memoizedState,e)},useTransition:function(){var e=G0(_u)[0],t=Ko().memoizedState;return[e,t]},useMutableSource:s_,useSyncExternalStore:i_,useId:k_,unstable_isNewReconciler:!1};function lr(e,t){if(e&&e.defaultProps){t=Lt({},t),e=e.defaultProps;for(var a in e)t[a]===void 0&&(t[a]=e[a]);return t}return t}function cb(e,t,a,o){t=e.memoizedState,a=a(o,t),a=a==null?t:Lt({},t,a),e.memoizedState=a,e.lanes===0&&(e.updateQueue.baseState=a)}var ug={isMounted:function(e){return(e=e._reactInternals)?ol(e)===e:!1},enqueueSetState:function(e,t,a){e=e._reactInternals;var o=Va(),r=js(e),n=jn(o,r);n.payload=t,a!=null&&(n.callback=a),t=Ss(e,n,r),t!==null&&(yr(t,e,r,o),Wp(t,e,r))},enqueueReplaceState:function(e,t,a){e=e._reactInternals;var o=Va(),r=js(e),n=jn(o,r);n.tag=1,n.payload=t,a!=null&&(n.callback=a),t=Ss(e,n,r),t!==null&&(yr(t,e,r,o),Wp(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var a=Va(),o=js(e),r=jn(a,o);r.tag=2,t!=null&&(r.callback=t),t=Ss(e,r,o),t!==null&&(yr(t,e,o,a),Wp(t,e,o))}};function TC(e,t,a,o,r,n,i){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(o,n,i):t.prototype&&t.prototype.isPureReactComponent?!Pu(a,o)||!Pu(r,n):!0}function S_(e,t,a){var o=!1,r=Os,n=t.contextType;return typeof n=="object"&&n!==null?n=Ho(n):(r=ro(t)?Mi:_a.current,o=t.contextTypes,n=(o=o!=null)?Pc(e,r):Os),t=new t(a,n),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=ug,e.stateNode=t,t._reactInternals=e,o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=n),t}function $C(e,t,a,o){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,o),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,o),t.state!==e&&ug.enqueueReplaceState(t,t.state,null)}function db(e,t,a,o){var r=e.stateNode;r.props=a,r.state=e.memoizedState,r.refs={},Y2(e);var n=t.contextType;typeof n=="object"&&n!==null?r.context=Ho(n):(n=ro(t)?Mi:_a.current,r.context=Pc(e,n)),r.state=e.memoizedState,n=t.getDerivedStateFromProps,typeof n=="function"&&(cb(e,t,n,a),r.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof r.getSnapshotBeforeUpdate=="function"||typeof r.UNSAFE_componentWillMount!="function"&&typeof r.componentWillMount!="function"||(t=r.state,typeof r.componentWillMount=="function"&&r.componentWillMount(),typeof r.UNSAFE_componentWillMount=="function"&&r.UNSAFE_componentWillMount(),t!==r.state&&ug.enqueueReplaceState(r,r.state,null),Yh(e,a,r,o),r.state=e.memoizedState),typeof r.componentDidMount=="function"&&(e.flags|=4194308)}function Nc(e,t){try{var a="",o=t;do a+=m9(o),o=o.return;while(o);var r=a}catch(n){r=` 40Error generating stack: `+n.message+` 41`+n.stack}return{value:e,source:t,stack:r,digest:null}}function z0(e,t,a){return{value:e,source:null,stack:a??null,digest:t??null}}function ub(e,t){try{console.error(t.value)}catch(a){setTimeout(function(){throw a})}}var L7=typeof WeakMap=="function"?WeakMap:Map;function R_(e,t,a){a=jn(-1,a),a.tag=3,a.payload={element:null};var o=t.value;return a.callback=function(){of||(of=!0,kb=o),ub(e,t)},a}function j_(e,t,a){a=jn(-1,a),a.tag=3;var o=e.type.getDerivedStateFromError;if(typeof o=="function"){var r=t.value;a.payload=function(){return o(r)},a.callback=function(){ub(e,t)}}var n=e.stateNode;return n!==null&&typeof n.componentDidCatch=="function"&&(a.callback=function(){ub(e,t),typeof o!="function"&&(Rs===null?Rs=new Set([this]):Rs.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),a}function OC(e,t,a){var o=e.pingCache;if(o===null){o=e.pingCache=new L7;var r=new Set;o.set(t,r)}else r=o.get(t),r===void 0&&(r=new Set,o.set(t,r));r.has(a)||(r.add(a),e=Z7.bind(null,e,t,a),t.then(e,e))}function qC(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function DC(e,t,a,o,r){return e.mode&1?(e.flags|=65536,e.lanes=r,e):(e===t?e.flags|=65536:(e.flags|=128,a.flags|=131072,a.flags&=-52805,a.tag===1&&(a.alternate===null?a.tag=17:(t=jn(-1,1),t.tag=2,Ss(a,t,1))),a.lanes|=1),e)}var B7=Mn.ReactCurrentOwner,eo=!1;function Ia(e,t,a,o){t.child=e===null?a_(t,null,a,o):Rc(t,e.child,a,o)}function IC(e,t,a,o,r){a=a.render;var n=t.ref;return Jl(t,r),o=o1(e,t,a,o,n,r),a=r1(),e!==null&&!eo?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,Tn(e,t,r)):(Et&&a&&z2(t),t.flags|=1,Ia(e,t,o,r),t.child)}function MC(e,t,a,o,r){if(e===null){var n=a.type;return typeof n=="function"&&!h1(n)&&n.defaultProps===void 0&&a.compare===null&&a.defaultProps===void 0?(t.tag=15,t.type=n,N_(e,t,n,o,r)):(e=th(a.type,null,o,t,t.mode,r),e.ref=t.ref,e.return=t,t.child=e)}if(n=e.child,!(e.lanes&r)){var i=n.memoizedProps;if(a=a.compare,a=a!==null?a:Pu,a(i,o)&&e.ref===t.ref)return Tn(e,t,r)}return t.flags|=1,e=Ns(n,o),e.ref=t.ref,e.return=t,t.child=e}function N_(e,t,a,o,r){if(e!==null){var n=e.memoizedProps;if(Pu(n,o)&&e.ref===t.ref)if(eo=!1,t.pendingProps=o=n,(e.lanes&r)!==0)e.flags&131072&&(eo=!0);else return t.lanes=e.lanes,Tn(e,t,r)}return mb(e,t,a,o,r)}function A_(e,t,a){var o=t.pendingProps,r=o.children,n=e!==null?e.memoizedState:null;if(o.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},St(Vl,ho),ho|=a;else{if(!(a&1073741824))return e=n!==null?n.baseLanes|a:a,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,St(Vl,ho),ho|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},o=n!==null?n.baseLanes:a,St(Vl,ho),ho|=o}else n!==null?(o=n.baseLanes|a,t.memoizedState=null):o=a,St(Vl,ho),ho|=o;return Ia(e,t,r,a),t.child}function E_(e,t){var a=t.ref;(e===null&&a!==null||e!==null&&e.ref!==a)&&(t.flags|=512,t.flags|=2097152)}
vendor: 2,988 bytes, line 41
41function mb(e,t,a,o,r){var n=ro(a)?Mi:_a.current;return n=Pc(t,n),Jl(t,r),a=o1(e,t,a,o,n,r),o=r1(),e!==null&&!eo?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~r,Tn(e,t,r)):(Et&&o&&z2(t),t.flags|=1,Ia(e,t,a,r),t.child)}function LC(e,t,a,o,r){if(ro(a)){var n=!0;Kh(t)}else n=!1;if(Jl(t,r),t.stateNode===null)Yp(e,t),S_(t,a,o),db(t,a,o,r),o=!0;else if(e===null){var i=t.stateNode,l=t.memoizedProps;i.props=l;var c=i.context,d=a.contextType;typeof d=="object"&&d!==null?d=Ho(d):(d=ro(a)?Mi:_a.current,d=Pc(t,d));var u=a.getDerivedStateFromProps,m=typeof u=="function"||typeof i.getSnapshotBeforeUpdate=="function";m||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(l!==o||c!==d)&&$C(t,i,o,d),ts=!1;var h=t.memoizedState;i.state=h,Yh(t,o,i,r),c=t.memoizedState,l!==o||h!==c||oo.current||ts?(typeof u=="function"&&(cb(t,a,u,o),c=t.memoizedState),(l=ts||TC(t,a,l,o,h,c,d))?(m||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=o,t.memoizedState=c),i.props=o,i.state=c,i.context=d,o=l):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),o=!1)}else{i=t.stateNode,r_(e,t),l=t.memoizedProps,d=t.type===t.elementType?l:lr(t.type,l),i.props=d,m=t.pendingProps,h=i.context,c=a.contextType,typeof c=="object"&&c!==null?c=Ho(c):(c=ro(a)?Mi:_a.current,c=Pc(t,c));var p=a.getDerivedStateFromProps;(u=typeof p=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(l!==m||h!==c)&&$C(t,i,o,c),ts=!1,h=t.memoizedState,i.state=h,Yh(t,o,i,r);var f=t.memoizedState;l!==m||h!==f||oo.current||ts?(typeof p=="function"&&(cb(t,a,p,o),f=t.memoizedState),(d=ts||TC(t,a,d,o,h,f,c)||!1)?(u||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(o,f,c),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(o,f,c)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),t.memoizedProps=o,t.memoizedState=f),i.props=o,i.state=f,i.context=c,o=d):(typeof i.componentDidUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&h===e.memoizedState||(t.flags|=1024),o=!1)}return pb(e,t,a,o,n,r)}function pb(e,t,a,o,r,n){E_(e,t);var i=(t.flags&128)!==0;
vendor: 4,834 bytes, line 41
41if(!o&&!i)return r&&PC(t,a,!1),Tn(e,t,n);o=t.stateNode,B7.current=t;var l=i&&typeof a.getDerivedStateFromError!="function"?null:o.render();return t.flags|=1,e!==null&&i?(t.child=Rc(t,e.child,null,n),t.child=Rc(t,null,l,n)):Ia(e,t,l,n),t.memoizedState=o.state,r&&PC(t,a,!0),t.child}function __(e){var t=e.stateNode;t.pendingContext?CC(e,t.pendingContext,t.pendingContext!==t.context):t.context&&CC(e,t.context,!1),Z2(e,t.containerInfo)}function BC(e,t,a,o,r){return Sc(),K2(r),t.flags|=256,Ia(e,t,a,o),t.child}var hb={dehydrated:null,treeContext:null,retryLane:0};function fb(e){return{baseLanes:e,cachePool:null,transitions:null}}function T_(e,t,a){var o=t.pendingProps,r=Dt.current,n=!1,i=(t.flags&128)!==0,l;if((l=i)||(l=e!==null&&e.memoizedState===null?!1:(r&2)!==0),l?(n=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(r|=1),St(Dt,r&1),e===null)return ib(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(i=o.children,e=o.fallback,n?(o=t.mode,n=t.child,i={mode:"hidden",children:i},!(o&1)&&n!==null?(n.childLanes=0,n.pendingProps=i):n=hg(i,o,0,null),e=$i(e,o,a,null),n.return=t,e.return=t,n.sibling=e,t.child=n,t.child.memoizedState=fb(a),t.memoizedState=hb,e):i1(t,i));if(r=e.memoizedState,r!==null&&(l=r.dehydrated,l!==null))return V7(e,t,i,o,l,r,a);if(n){n=o.fallback,i=t.mode,r=e.child,l=r.sibling;var c={mode:"hidden",children:o.children};return!(i&1)&&t.child!==r?(o=t.child,o.childLanes=0,o.pendingProps=c,t.deletions=null):(o=Ns(r,c),o.subtreeFlags=r.subtreeFlags&14680064),l!==null?n=Ns(l,n):(n=$i(n,i,a,null),n.flags|=2),n.return=t,o.return=t,o.sibling=n,t.child=o,o=n,n=t.child,i=e.child.memoizedState,i=i===null?fb(a):{baseLanes:i.baseLanes|a,cachePool:null,transitions:i.transitions},n.memoizedState=i,n.childLanes=e.childLanes&~a,t.memoizedState=hb,o}return n=e.child,e=n.sibling,o=Ns(n,{mode:"visible",children:o.children}),!(t.mode&1)&&(o.lanes=a),o.return=t,o.sibling=null,e!==null&&(a=t.deletions,a===null?(t.deletions=[e],t.flags|=16):a.push(e)),t.child=o,t.memoizedState=null,o}function i1(e,t){return t=hg({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Zm(e,t,a,o){return o!==null&&K2(o),Rc(t,e.child,null,a),e=i1(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function V7(e,t,a,o,r,n,i){if(a)return t.flags&256?(t.flags&=-257,o=z0(Error(ee(422))),Zm(e,t,i,o)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(n=o.fallback,r=t.mode,o=hg({mode:"visible",children:o.children},r,0,null),n=$i(n,r,i,null),n.flags|=2,o.return=t,n.return=t,o.sibling=n,t.child=o,t.mode&1&&Rc(t,e.child,null,i),t.child.memoizedState=fb(i),t.memoizedState=hb,n);if(!(t.mode&1))return Zm(e,t,i,null);if(r.data==="$!"){if(o=r.nextSibling&&r.nextSibling.dataset,o)var l=o.dgst;return o=l,n=Error(ee(419)),o=z0(n,o,void 0),Zm(e,t,i,o)}if(l=(i&e.childLanes)!==0,eo||l){if(o=ua,o!==null){switch(i&-i){case 4:r=2;break;case 16:r=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:r=32;break;case 536870912:r=268435456;break;default:r=0}r=r&(o.suspendedLanes|i)?0:r,r!==0&&r!==n.retryLane&&(n.retryLane=r,_n(e,r),yr(o,e,r,-1))}return p1(),o=z0(Error(ee(421))),Zm(e,t,i,o)}return r.data==="$?"?(t.flags|=128,t.child=e.child,t=eI.bind(null,e),r._reactRetry=t,null):(e=n.treeContext,bo=Ps(r.nextSibling),yo=t,Et=!0,hr=null,e!==null&&(Mo[Lo++]=Sn,Mo[Lo++]=Rn,Mo[Lo++]=Li,Sn=e.id,Rn=e.overflow,Li=t),t=i1(t,o.children),t.flags|=4096,t)}function VC(e,t,a){e.lanes|=t;var o=e.alternate;o!==null&&(o.lanes|=t),lb(e.return,t,a)}function H0(e,t,a,o,r){var n=e.memoizedState;n===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:o,tail:a,tailMode:r}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=o,n.tail=a,n.tailMode=r)}function $_(e,t,a){var o=t.pendingProps,r=o.revealOrder,n=o.tail;if(Ia(e,t,o.children,a),o=Dt.current,o&2)o=o&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&VC(e,a,t);else if(e.tag===19)VC(e,a,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}o&=1}if(St(Dt,o),!(t.mode&1))t.memoizedState=null;else switch(r){case"forwards":for(a=t.child,r=null;a!==null;)e=a.alternate,e!==null&&Zh(e)===null&&(r=a),a=a.sibling;a=r,a===null?(r=t.child,t.child=null):(r=a.sibling,a.sibling=null),H0(t,!1,r,a,n);break;case"backwards":for(a=null,r=t.child,t.child=null;r!==null;){if(e=r.alternate,e!==null&&Zh(e)===null){t.child=r;break}e=r.sibling,r.sibling=a,a=r,r=e}
vendor: 4,715 bytes, line 41
41H0(t,!0,a,null,n);break;case"together":H0(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Yp(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Tn(e,t,a){if(e!==null&&(t.dependencies=e.dependencies),Vi|=t.lanes,!(a&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(ee(153));if(t.child!==null){for(e=t.child,a=Ns(e,e.pendingProps),t.child=a,a.return=t;e.sibling!==null;)e=e.sibling,a=a.sibling=Ns(e,e.pendingProps),a.return=t;a.sibling=null}return t.child}function F7(e,t,a){switch(t.tag){case 3:__(t),Sc();break;case 5:n_(t);break;case 1:ro(t.type)&&Kh(t);break;case 4:Z2(t,t.stateNode.containerInfo);break;case 10:var o=t.type._context,r=t.memoizedProps.value;St(Jh,o._currentValue),o._currentValue=r;break;case 13:if(o=t.memoizedState,o!==null)return o.dehydrated!==null?(St(Dt,Dt.current&1),t.flags|=128,null):a&t.child.childLanes?T_(e,t,a):(St(Dt,Dt.current&1),e=Tn(e,t,a),e!==null?e.sibling:null);St(Dt,Dt.current&1);break;case 19:if(o=(a&t.childLanes)!==0,e.flags&128){if(o)return $_(e,t,a);t.flags|=128}if(r=t.memoizedState,r!==null&&(r.rendering=null,r.tail=null,r.lastEffect=null),St(Dt,Dt.current),o)break;return null;case 22:case 23:return t.lanes=0,A_(e,t,a)}return Tn(e,t,a)}var O_,gb,q_,D_;O_=function(e,t){for(var a=t.child;a!==null;){if(a.tag===5||a.tag===6)e.appendChild(a.stateNode);else if(a.tag!==4&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return;a=a.return}a.sibling.return=a.return,a=a.sibling}};gb=function(){};q_=function(e,t,a,o){var r=e.memoizedProps;if(r!==o){e=t.stateNode,gi(Kr.current);var n=null;switch(a){case"input":r=Mx(e,r),o=Mx(e,o),n=[];break;case"select":r=Lt({},r,{value:void 0}),o=Lt({},o,{value:void 0}),n=[];break;case"textarea":r=Vx(e,r),o=Vx(e,o),n=[];break;default:typeof r.onClick!="function"&&typeof o.onClick=="function"&&(e.onclick=zh)}Ux(a,o);var i;a=null;for(d in r)if(!o.hasOwnProperty(d)&&r.hasOwnProperty(d)&&r[d]!=null)if(d==="style"){var l=r[d];for(i in l)l.hasOwnProperty(i)&&(a||(a={}),a[i]="")}else d!=="dangerouslySetInnerHTML"&&d!=="children"&&d!=="suppressContentEditableWarning"&&d!=="suppressHydrationWarning"&&d!=="autoFocus"&&(vu.hasOwnProperty(d)?n||(n=[]):(n=n||[]).push(d,null));for(d in o){var c=o[d];if(l=r!=null?r[d]:void 0,o.hasOwnProperty(d)&&c!==l&&(c!=null||l!=null))if(d==="style")if(l){for(i in l)!l.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(a||(a={}),a[i]="");for(i in c)c.hasOwnProperty(i)&&l[i]!==c[i]&&(a||(a={}),a[i]=c[i])}else a||(n||(n=[]),n.push(d,a)),a=c;else d==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,l=l?l.__html:void 0,c!=null&&l!==c&&(n=n||[]).push(d,c)):d==="children"?typeof c!="string"&&typeof c!="number"||(n=n||[]).push(d,""+c):d!=="suppressContentEditableWarning"&&d!=="suppressHydrationWarning"&&(vu.hasOwnProperty(d)?(c!=null&&d==="onScroll"&&jt("scroll",e),n||l===c||(n=[])):(n=n||[]).push(d,c))}a&&(n=n||[]).push("style",a);var d=n;(t.updateQueue=d)&&(t.flags|=4)}};D_=function(e,t,a,o){a!==o&&(t.flags|=4)};function xd(e,t){if(!Et)switch(e.tailMode){case"hidden":t=e.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?e.tail=null:a.sibling=null;break;case"collapsed":a=e.tail;for(var o=null;a!==null;)a.alternate!==null&&(o=a),a=a.sibling;o===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:o.sibling=null}}function Ca(e){var t=e.alternate!==null&&e.alternate.child===e.child,a=0,o=0;if(t)for(var r=e.child;r!==null;)a|=r.lanes|r.childLanes,o|=r.subtreeFlags&14680064,o|=r.flags&14680064,r.return=e,r=r.sibling;else for(r=e.child;r!==null;)a|=r.lanes|r.childLanes,o|=r.subtreeFlags,o|=r.flags,r.return=e,r=r.sibling;return e.subtreeFlags|=o,e.childLanes=a,t}function U7(e,t,a){var o=t.pendingProps;switch(H2(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ca(t),null;case 1:return ro(t.type)&&Hh(),Ca(t),null;case 3:return o=t.stateNode,jc(),Nt(oo),Nt(_a),t1(),o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(e===null||e.child===null)&&(Xm(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,hr!==null&&(Pb(hr),hr=null))),gb(e,t),Ca(t),null;case 5:e1(t);var r=gi(Au.current);if(a=t.type,e!==null&&t.stateNode!=null)q_(e,t,a,o,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!o){if(t.stateNode===null)throw Error(ee(166));return Ca(t),null}if(e=gi(Kr.current),Xm(t)){o=t.stateNode,a=t.type;var n=t.memoizedProps;switch(o[Gr]=t,o[ju]=n,e=(t.mode&1)!==0,a){case"dialog":jt("cancel",o),jt("close",o);break;case"iframe":case"object":case"embed":jt("load",o);break;case"video":case"audio":for(r=0;
vendor: 33,118 bytes, line 41
41r<Id.length;r++)jt(Id[r],o);break;case"source":jt("error",o);break;case"img":case"image":case"link":jt("error",o),jt("load",o);break;case"details":jt("toggle",o);break;case"input":Jw(o,n),jt("invalid",o);break;case"select":o._wrapperState={wasMultiple:!!n.multiple},jt("invalid",o);break;case"textarea":Yw(o,n),jt("invalid",o)}Ux(a,n),r=null;for(var i in n)if(n.hasOwnProperty(i)){var l=n[i];i==="children"?typeof l=="string"?o.textContent!==l&&(n.suppressHydrationWarning!==!0&&Jm(o.textContent,l,e),r=["children",l]):typeof l=="number"&&o.textContent!==""+l&&(n.suppressHydrationWarning!==!0&&Jm(o.textContent,l,e),r=["children",""+l]):vu.hasOwnProperty(i)&&l!=null&&i==="onScroll"&&jt("scroll",o)}switch(a){case"input":Fm(o),Xw(o,n,!0);break;case"textarea":Fm(o),Zw(o);break;case"select":case"option":break;default:typeof n.onClick=="function"&&(o.onclick=zh)}o=r,t.updateQueue=o,o!==null&&(t.flags|=4)}else{i=r.nodeType===9?r:r.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=dE(a)),e==="http://www.w3.org/1999/xhtml"?a==="script"?(e=i.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=i.createElement(a,{is:o.is}):(e=i.createElement(a),a==="select"&&(i=e,o.multiple?i.multiple=!0:o.size&&(i.size=o.size))):e=i.createElementNS(e,a),e[Gr]=t,e[ju]=o,O_(e,t,!1,!1),t.stateNode=e;e:{switch(i=Gx(a,o),a){case"dialog":jt("cancel",e),jt("close",e),r=o;break;case"iframe":case"object":case"embed":jt("load",e),r=o;break;case"video":case"audio":for(r=0;r<Id.length;r++)jt(Id[r],e);r=o;break;case"source":jt("error",e),r=o;break;case"img":case"image":case"link":jt("error",e),jt("load",e),r=o;break;case"details":jt("toggle",e),r=o;break;case"input":Jw(e,o),r=Mx(e,o),jt("invalid",e);break;case"option":r=o;break;case"select":e._wrapperState={wasMultiple:!!o.multiple},r=Lt({},o,{value:void 0}),jt("invalid",e);break;case"textarea":Yw(e,o),r=Vx(e,o),jt("invalid",e);break;default:r=o}Ux(a,r),l=r;for(n in l)if(l.hasOwnProperty(n)){var c=l[n];n==="style"?pE(e,c):n==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,c!=null&&uE(e,c)):n==="children"?typeof c=="string"?(a!=="textarea"||c!=="")&&xu(e,c):typeof c=="number"&&xu(e,""+c):n!=="suppressContentEditableWarning"&&n!=="suppressHydrationWarning"&&n!=="autoFocus"&&(vu.hasOwnProperty(n)?c!=null&&n==="onScroll"&&jt("scroll",e):c!=null&&_2(e,n,c,i))}switch(a){case"input":Fm(e),Xw(e,o,!1);break;case"textarea":Fm(e),Zw(e);break;case"option":o.value!=null&&e.setAttribute("value",""+$s(o.value));break;case"select":e.multiple=!!o.multiple,n=o.value,n!=null?Hl(e,!!o.multiple,n,!1):o.defaultValue!=null&&Hl(e,!!o.multiple,o.defaultValue,!0);break;default:typeof r.onClick=="function"&&(e.onclick=zh)}switch(a){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break e;case"img":o=!0;break e;default:o=!1}}o&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return Ca(t),null;case 6:if(e&&t.stateNode!=null)D_(e,t,e.memoizedProps,o);else{if(typeof o!="string"&&t.stateNode===null)throw Error(ee(166));if(a=gi(Au.current),gi(Kr.current),Xm(t)){if(o=t.stateNode,a=t.memoizedProps,o[Gr]=t,(n=o.nodeValue!==a)&&(e=yo,e!==null))switch(e.tag){case 3:Jm(o.nodeValue,a,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&Jm(o.nodeValue,a,(e.mode&1)!==0)}n&&(t.flags|=4)}else o=(a.nodeType===9?a:a.ownerDocument).createTextNode(o),o[Gr]=t,t.stateNode=o}return Ca(t),null;case 13:if(Nt(Dt),o=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Et&&bo!==null&&t.mode&1&&!(t.flags&128))e_(),Sc(),t.flags|=98560,n=!1;else if(n=Xm(t),o!==null&&o.dehydrated!==null){if(e===null){if(!n)throw Error(ee(318));if(n=t.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(ee(317));n[Gr]=t}else Sc(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ca(t),n=!1}else hr!==null&&(Pb(hr),hr=null),n=!0;if(!n)return t.flags&65536?t:null}return t.flags&128?(t.lanes=a,t):(o=o!==null,o!==(e!==null&&e.memoizedState!==null)&&o&&(t.child.flags|=8192,t.mode&1&&(e===null||Dt.current&1?ia===0&&(ia=3):p1())),t.updateQueue!==null&&(t.flags|=4),Ca(t),null);case 4:return jc(),gb(e,t),e===null&&Su(t.stateNode.containerInfo),Ca(t),null;case 10:return J2(t.type._context),Ca(t),null;case 17:return ro(t.type)&&Hh(),Ca(t),null;case 19:if(Nt(Dt),n=t.memoizedState,n===null)return Ca(t),null;if(o=(t.flags&128)!==0,i=n.rendering,i===null)if(o)xd(n,!1);else{if(ia!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(i=Zh(e),i!==null){for(t.flags|=128,xd(n,!1),o=i.updateQueue,o!==null&&(t.updateQueue=o,t.flags|=4),t.subtreeFlags=0,o=a,a=t.child;a!==null;)n=a,e=o,n.flags&=14680066,i=n.alternate,i===null?(n.childLanes=0,n.lanes=e,n.child=null,n.subtreeFlags=0,n.memoizedProps=null,n.memoizedState=null,n.updateQueue=null,n.dependencies=null,n.stateNode=null):(n.childLanes=i.childLanes,n.lanes=i.lanes,n.child=i.child,n.subtreeFlags=0,n.deletions=null,n.memoizedProps=i.memoizedProps,n.memoizedState=i.memoizedState,n.updateQueue=i.updateQueue,n.type=i.type,e=i.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),a=a.sibling;return St(Dt,Dt.current&1|2),t.child}e=e.sibling}n.tail!==null&&Jt()>Ac&&(t.flags|=128,o=!0,xd(n,!1),t.lanes=4194304)}else{if(!o)if(e=Zh(i),e!==null){if(t.flags|=128,o=!0,a=e.updateQueue,a!==null&&(t.updateQueue=a,t.flags|=4),xd(n,!0),n.tail===null&&n.tailMode==="hidden"&&!i.alternate&&!Et)return Ca(t),null}else 2*Jt()-n.renderingStartTime>Ac&&a!==1073741824&&(t.flags|=128,o=!0,xd(n,!1),t.lanes=4194304);n.isBackwards?(i.sibling=t.child,t.child=i):(a=n.last,a!==null?a.sibling=i:t.child=i,n.last=i)}return n.tail!==null?(t=n.tail,n.rendering=t,n.tail=t.sibling,n.renderingStartTime=Jt(),t.sibling=null,a=Dt.current,St(Dt,o?a&1|2:a&1),t):(Ca(t),null);case 22:case 23:return m1(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&t.mode&1?ho&1073741824&&(Ca(t),t.subtreeFlags&6&&(t.flags|=8192)):Ca(t),null;case 24:return null;case 25:return null}throw Error(ee(156,t.tag))}function G7(e,t){switch(H2(t),t.tag){case 1:return ro(t.type)&&Hh(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return jc(),Nt(oo),Nt(_a),t1(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return e1(t),null;case 13:if(Nt(Dt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ee(340));Sc()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Nt(Dt),null;case 4:return jc(),null;case 10:return J2(t.type._context),null;case 22:case 23:return m1(),null;case 24:return null;default:return null}}var ep=!1,Aa=!1,z7=typeof WeakSet=="function"?WeakSet:Set,ve=null;function Bl(e,t){var a=e.ref;if(a!==null)if(typeof a=="function")try{a(null)}catch(o){Gt(e,t,o)}else a.current=null}function vb(e,t,a){try{a()}catch(o){Gt(e,t,o)}}var FC=!1;function H7(e,t){if(eb=Fh,e=VE(),G2(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var o=a.getSelection&&a.getSelection();if(o&&o.rangeCount!==0){a=o.anchorNode;var r=o.anchorOffset,n=o.focusNode;o=o.focusOffset;try{a.nodeType,n.nodeType}catch{a=null;break e}var i=0,l=-1,c=-1,d=0,u=0,m=e,h=null;t:for(;;){for(var p;m!==a||r!==0&&m.nodeType!==3||(l=i+r),m!==n||o!==0&&m.nodeType!==3||(c=i+o),m.nodeType===3&&(i+=m.nodeValue.length),(p=m.firstChild)!==null;)h=m,m=p;for(;;){if(m===e)break t;if(h===a&&++d===r&&(l=i),h===n&&++u===o&&(c=i),(p=m.nextSibling)!==null)break;m=h,h=m.parentNode}m=p}a=l===-1||c===-1?null:{start:l,end:c}}else a=null}a=a||{start:0,end:0}}else a=null;for(tb={focusedElem:e,selectionRange:a},Fh=!1,ve=t;ve!==null;)if(t=ve,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ve=e;else for(;ve!==null;){t=ve;try{var f=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(f!==null){var g=f.memoizedProps,b=f.memoizedState,v=t.stateNode,y=v.getSnapshotBeforeUpdate(t.elementType===t.type?g:lr(t.type,g),b);v.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var k=t.stateNode.containerInfo;k.nodeType===1?k.textContent="":k.nodeType===9&&k.documentElement&&k.removeChild(k.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(ee(163))}}catch(w){Gt(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,ve=e;break}ve=t.return}return f=FC,FC=!1,f}function tu(e,t,a){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var r=o=o.next;do{if((r.tag&e)===e){var n=r.destroy;r.destroy=void 0,n!==void 0&&vb(t,a,n)}r=r.next}while(r!==o)}}function mg(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var a=t=t.next;do{if((a.tag&e)===e){var o=a.create;a.destroy=o()}a=a.next}while(a!==t)}}function xb(e){var t=e.ref;if(t!==null){var a=e.stateNode;switch(e.tag){case 5:e=a;break;default:e=a}typeof t=="function"?t(e):t.current=e}}function I_(e){var t=e.alternate;t!==null&&(e.alternate=null,I_(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Gr],delete t[ju],delete t[rb],delete t[N7],delete t[A7])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function M_(e){return e.tag===5||e.tag===3||e.tag===4}function UC(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||M_(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function bb(e,t,a){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?a.nodeType===8?a.parentNode.insertBefore(e,t):a.insertBefore(e,t):(a.nodeType===8?(t=a.parentNode,t.insertBefore(e,a)):(t=a,t.appendChild(e)),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=zh));else if(o!==4&&(e=e.child,e!==null))for(bb(e,t,a),e=e.sibling;e!==null;)bb(e,t,a),e=e.sibling}function yb(e,t,a){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(yb(e,t,a),e=e.sibling;e!==null;)yb(e,t,a),e=e.sibling}var ga=null,pr=!1;function zn(e,t,a){for(a=a.child;a!==null;)L_(e,t,a),a=a.sibling}function L_(e,t,a){if(Hr&&typeof Hr.onCommitFiberUnmount=="function")try{Hr.onCommitFiberUnmount(rg,a)}catch{}switch(a.tag){case 5:Aa||Bl(a,t);case 6:var o=ga,r=pr;ga=null,zn(e,t,a),ga=o,pr=r,ga!==null&&(pr?(e=ga,a=a.stateNode,e.nodeType===8?e.parentNode.removeChild(a):e.removeChild(a)):ga.removeChild(a.stateNode));break;case 18:ga!==null&&(pr?(e=ga,a=a.stateNode,e.nodeType===8?L0(e.parentNode,a):e.nodeType===1&&L0(e,a),wu(e)):L0(ga,a.stateNode));break;case 4:o=ga,r=pr,ga=a.stateNode.containerInfo,pr=!0,zn(e,t,a),ga=o,pr=r;break;case 0:case 11:case 14:case 15:if(!Aa&&(o=a.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){r=o=o.next;do{var n=r,i=n.destroy;n=n.tag,i!==void 0&&(n&2||n&4)&&vb(a,t,i),r=r.next}while(r!==o)}zn(e,t,a);break;case 1:if(!Aa&&(Bl(a,t),o=a.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=a.memoizedProps,o.state=a.memoizedState,o.componentWillUnmount()}catch(l){Gt(a,t,l)}zn(e,t,a);break;case 21:zn(e,t,a);break;case 22:a.mode&1?(Aa=(o=Aa)||a.memoizedState!==null,zn(e,t,a),Aa=o):zn(e,t,a);break;default:zn(e,t,a)}}function GC(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var a=e.stateNode;a===null&&(a=e.stateNode=new z7),t.forEach(function(o){var r=tI.bind(null,e,o);a.has(o)||(a.add(o),o.then(r,r))})}}function tr(e,t){var a=t.deletions;if(a!==null)for(var o=0;o<a.length;o++){var r=a[o];try{var n=e,i=t,l=i;e:for(;l!==null;){switch(l.tag){case 5:ga=l.stateNode,pr=!1;break e;case 3:ga=l.stateNode.containerInfo,pr=!0;break e;case 4:ga=l.stateNode.containerInfo,pr=!0;break e}l=l.return}if(ga===null)throw Error(ee(160));L_(n,i,r),ga=null,pr=!1;var c=r.alternate;c!==null&&(c.return=null),r.return=null}catch(d){Gt(r,t,d)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)B_(t,e),t=t.sibling}function B_(e,t){var a=e.alternate,o=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(tr(t,e),Tr(e),o&4){try{tu(3,e,e.return),mg(3,e)}catch(g){Gt(e,e.return,g)}try{tu(5,e,e.return)}catch(g){Gt(e,e.return,g)}}break;case 1:tr(t,e),Tr(e),o&512&&a!==null&&Bl(a,a.return);break;case 5:if(tr(t,e),Tr(e),o&512&&a!==null&&Bl(a,a.return),e.flags&32){var r=e.stateNode;try{xu(r,"")}catch(g){Gt(e,e.return,g)}}if(o&4&&(r=e.stateNode,r!=null)){var n=e.memoizedProps,i=a!==null?a.memoizedProps:n,l=e.type,c=e.updateQueue;if(e.updateQueue=null,c!==null)try{l==="input"&&n.type==="radio"&&n.name!=null&&lE(r,n),Gx(l,i);var d=Gx(l,n);for(i=0;i<c.length;i+=2){var u=c[i],m=c[i+1];u==="style"?pE(r,m):u==="dangerouslySetInnerHTML"?uE(r,m):u==="children"?xu(r,m):_2(r,u,m,d)}switch(l){case"input":Lx(r,n);break;case"textarea":cE(r,n);break;case"select":var h=r._wrapperState.wasMultiple;r._wrapperState.wasMultiple=!!n.multiple;var p=n.value;p!=null?Hl(r,!!n.multiple,p,!1):h!==!!n.multiple&&(n.defaultValue!=null?Hl(r,!!n.multiple,n.defaultValue,!0):Hl(r,!!n.multiple,n.multiple?[]:"",!1))}r[ju]=n}catch(g){Gt(e,e.return,g)}}break;case 6:if(tr(t,e),Tr(e),o&4){if(e.stateNode===null)throw Error(ee(162));r=e.stateNode,n=e.memoizedProps;try{r.nodeValue=n}catch(g){Gt(e,e.return,g)}}break;case 3:if(tr(t,e),Tr(e),o&4&&a!==null&&a.memoizedState.isDehydrated)try{wu(t.containerInfo)}catch(g){Gt(e,e.return,g)}break;case 4:tr(t,e),Tr(e);break;case 13:tr(t,e),Tr(e),r=e.child,r.flags&8192&&(n=r.memoizedState!==null,r.stateNode.isHidden=n,!n||r.alternate!==null&&r.alternate.memoizedState!==null||(d1=Jt())),o&4&&GC(e);break;case 22:if(u=a!==null&&a.memoizedState!==null,e.mode&1?(Aa=(d=Aa)||u,tr(t,e),Aa=d):tr(t,e),Tr(e),o&8192){if(d=e.memoizedState!==null,(e.stateNode.isHidden=d)&&!u&&e.mode&1)for(ve=e,u=e.child;u!==null;){for(m=ve=u;ve!==null;){switch(h=ve,p=h.child,h.tag){case 0:case 11:case 14:case 15:tu(4,h,h.return);break;case 1:Bl(h,h.return);var f=h.stateNode;if(typeof f.componentWillUnmount=="function"){o=h,a=h.return;try{t=o,f.props=t.memoizedProps,f.state=t.memoizedState,f.componentWillUnmount()}catch(g){Gt(o,a,g)}}break;case 5:Bl(h,h.return);break;case 22:if(h.memoizedState!==null){HC(m);continue}}p!==null?(p.return=h,ve=p):HC(m)}u=u.sibling}e:for(u=null,m=e;;){if(m.tag===5){if(u===null){u=m;try{r=m.stateNode,d?(n=r.style,typeof n.setProperty=="function"?n.setProperty("display","none","important"):n.display="none"):(l=m.stateNode,c=m.memoizedProps.style,i=c!=null&&c.hasOwnProperty("display")?c.display:null,l.style.display=mE("display",i))}catch(g){Gt(e,e.return,g)}}}else if(m.tag===6){if(u===null)try{m.stateNode.nodeValue=d?"":m.memoizedProps}catch(g){Gt(e,e.return,g)}}else if((m.tag!==22&&m.tag!==23||m.memoizedState===null||m===e)&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===e)break e;for(;m.sibling===null;){if(m.return===null||m.return===e)break e;u===m&&(u=null),m=m.return}u===m&&(u=null),m.sibling.return=m.return,m=m.sibling}}break;case 19:tr(t,e),Tr(e),o&4&&GC(e);break;case 21:break;default:tr(t,e),Tr(e)}}function Tr(e){var t=e.flags;if(t&2){try{e:{for(var a=e.return;a!==null;){if(M_(a)){var o=a;break e}a=a.return}throw Error(ee(160))}switch(o.tag){case 5:var r=o.stateNode;o.flags&32&&(xu(r,""),o.flags&=-33);var n=UC(e);yb(e,n,r);break;case 3:case 4:var i=o.stateNode.containerInfo,l=UC(e);bb(e,l,i);break;default:throw Error(ee(161))}}catch(c){Gt(e,e.return,c)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function K7(e,t,a){ve=e,V_(e)}function V_(e,t,a){for(var o=(e.mode&1)!==0;ve!==null;){var r=ve,n=r.child;if(r.tag===22&&o){var i=r.memoizedState!==null||ep;if(!i){var l=r.alternate,c=l!==null&&l.memoizedState!==null||Aa;l=ep;var d=Aa;if(ep=i,(Aa=c)&&!d)for(ve=r;ve!==null;)i=ve,c=i.child,i.tag===22&&i.memoizedState!==null?KC(r):c!==null?(c.return=i,ve=c):KC(r);for(;n!==null;)ve=n,V_(n),n=n.sibling;ve=r,ep=l,Aa=d}zC(e)}else r.subtreeFlags&8772&&n!==null?(n.return=r,ve=n):zC(e)}}function zC(e){for(;ve!==null;){var t=ve;if(t.flags&8772){var a=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:Aa||mg(5,t);break;case 1:var o=t.stateNode;if(t.flags&4&&!Aa)if(a===null)o.componentDidMount();else{var r=t.elementType===t.type?a.memoizedProps:lr(t.type,a.memoizedProps);o.componentDidUpdate(r,a.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var n=t.updateQueue;n!==null&&AC(t,n,o);break;case 3:var i=t.updateQueue;if(i!==null){if(a=null,t.child!==null)switch(t.child.tag){case 5:a=t.child.stateNode;break;case 1:a=t.child.stateNode}AC(t,i,a)}break;case 5:var l=t.stateNode;if(a===null&&t.flags&4){a=l;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&a.focus();break;case"img":c.src&&(a.src=c.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var d=t.alternate;if(d!==null){var u=d.memoizedState;if(u!==null){var m=u.dehydrated;m!==null&&wu(m)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(ee(163))}Aa||t.flags&512&&xb(t)}catch(h){Gt(t,t.return,h)}}if(t===e){ve=null;break}if(a=t.sibling,a!==null){a.return=t.return,ve=a;break}ve=t.return}}function HC(e){for(;ve!==null;){var t=ve;if(t===e){ve=null;break}var a=t.sibling;if(a!==null){a.return=t.return,ve=a;break}ve=t.return}}function KC(e){for(;ve!==null;){var t=ve;try{switch(t.tag){case 0:case 11:case 15:var a=t.return;try{mg(4,t)}catch(c){Gt(t,a,c)}break;case 1:var o=t.stateNode;if(typeof o.componentDidMount=="function"){var r=t.return;try{o.componentDidMount()}catch(c){Gt(t,r,c)}}var n=t.return;try{xb(t)}catch(c){Gt(t,n,c)}break;case 5:var i=t.return;try{xb(t)}catch(c){Gt(t,i,c)}}}catch(c){Gt(t,t.return,c)}if(t===e){ve=null;break}var l=t.sibling;if(l!==null){l.return=t.return,ve=l;break}ve=t.return}}var Q7=Math.ceil,af=Mn.ReactCurrentDispatcher,l1=Mn.ReactCurrentOwner,Go=Mn.ReactCurrentBatchConfig,tt=0,ua=null,ta=null,ya=0,ho=0,Vl=zs(0),ia=0,$u=null,Vi=0,pg=0,c1=0,au=null,Xa=null,d1=0,Ac=1/0,vn=null,of=!1,kb=null,Rs=null,tp=!1,xs=null,rf=0,ou=0,wb=null,Zp=-1,eh=0;function Va(){return tt&6?Jt():Zp!==-1?Zp:Zp=Jt()}function js(e){return e.mode&1?tt&2&&ya!==0?ya&-ya:_7.transition!==null?(eh===0&&(eh=SE()),eh):(e=ut,e!==0||(e=window.event,e=e===void 0?16:TE(e.type)),e):1}function yr(e,t,a,o){if(50<ou)throw ou=0,wb=null,Error(ee(185));fm(e,a,o),(!(tt&2)||e!==ua)&&(e===ua&&(!(tt&2)&&(pg|=a),ia===4&&ns(e,ya)),no(e,o),a===1&&tt===0&&!(t.mode&1)&&(Ac=Jt()+500,cg&&Hs()))}function no(e,t){var a=e.callbackNode;_9(e,t);var o=Vh(e,e===ua?ya:0);if(o===0)a!==null&&aC(a),e.callbackNode=null,e.callbackPriority=0;else if(t=o&-o,e.callbackPriority!==t){if(a!=null&&aC(a),t===1)e.tag===0?E7(QC.bind(null,e)):XE(QC.bind(null,e)),R7(function(){!(tt&6)&&Hs()}),a=null;else{switch(RE(o)){case 1:a=D2;break;case 4:a=CE;break;case 16:a=Bh;break;case 536870912:a=PE;break;default:a=Bh}a=W_(a,F_.bind(null,e))}e.callbackPriority=t,e.callbackNode=a}}function F_(e,t){if(Zp=-1,eh=0,tt&6)throw Error(ee(327));var a=e.callbackNode;if(Xl()&&e.callbackNode!==a)return null;var o=Vh(e,e===ua?ya:0);if(o===0)return null;if(o&30||o&e.expiredLanes||t)t=nf(e,o);else{t=o;var r=tt;tt|=2;var n=G_();(ua!==e||ya!==t)&&(vn=null,Ac=Jt()+500,Ti(e,t));do try{X7();break}catch(l){U_(e,l)}while(!0);W2(),af.current=n,tt=r,ta!==null?t=0:(ua=null,ya=0,t=ia)}if(t!==0){if(t===2&&(r=Wx(e),r!==0&&(o=r,t=Cb(e,r))),t===1)throw a=$u,Ti(e,0),ns(e,o),no(e,Jt()),a;if(t===6)ns(e,o);else{if(r=e.current.alternate,!(o&30)&&!W7(r)&&(t=nf(e,o),t===2&&(n=Wx(e),n!==0&&(o=n,t=Cb(e,n))),t===1))throw a=$u,Ti(e,0),ns(e,o),no(e,Jt()),a;switch(e.finishedWork=r,e.finishedLanes=o,t){case 0:case 1:throw Error(ee(345));case 2:ii(e,Xa,vn);break;case 3:if(ns(e,o),(o&130023424)===o&&(t=d1+500-Jt(),10<t)){if(Vh(e,0)!==0)break;if(r=e.suspendedLanes,(r&o)!==o){Va(),e.pingedLanes|=e.suspendedLanes&r;break}e.timeoutHandle=ob(ii.bind(null,e,Xa,vn),t);break}ii(e,Xa,vn);break;case 4:if(ns(e,o),(o&4194240)===o)break;for(t=e.eventTimes,r=-1;0<o;){var i=31-br(o);n=1<<i,i=t[i],i>r&&(r=i),o&=~n}if(o=r,o=Jt()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Q7(o/1960))-o,10<o){e.timeoutHandle=ob(ii.bind(null,e,Xa,vn),o);break}ii(e,Xa,vn);break;case 5:ii(e,Xa,vn);break;default:throw Error(ee(329))}}}return no(e,Jt()),e.callbackNode===a?F_.bind(null,e):null}function Cb(e,t){var a=au;return e.current.memoizedState.isDehydrated&&(Ti(e,t).flags|=256),e=nf(e,t),e!==2&&(t=Xa,Xa=a,t!==null&&Pb(t)),e}function Pb(e){Xa===null?Xa=e:Xa.push.apply(Xa,e)}function W7(e){for(var t=e;;){if(t.flags&16384){var a=t.updateQueue;if(a!==null&&(a=a.stores,a!==null))for(var o=0;o<a.length;o++){var r=a[o],n=r.getSnapshot;r=r.value;try{if(!Sr(n(),r))return!1}catch{return!1}}}if(a=t.child,t.subtreeFlags&16384&&a!==null)a.return=t,t=a;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ns(e,t){for(t&=~c1,t&=~pg,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var a=31-br(t),o=1<<a;e[a]=-1,t&=~o}}function QC(e){if(tt&6)throw Error(ee(327));Xl();var t=Vh(e,0);if(!(t&1))return no(e,Jt()),null;var a=nf(e,t);if(e.tag!==0&&a===2){var o=Wx(e);o!==0&&(t=o,a=Cb(e,o))}if(a===1)throw a=$u,Ti(e,0),ns(e,t),no(e,Jt()),a;if(a===6)throw Error(ee(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,ii(e,Xa,vn),no(e,Jt()),null}function u1(e,t){var a=tt;tt|=1;try{return e(t)}finally{tt=a,tt===0&&(Ac=Jt()+500,cg&&Hs())}}function Fi(e){xs!==null&&xs.tag===0&&!(tt&6)&&Xl();var t=tt;tt|=1;var a=Go.transition,o=ut;try{if(Go.transition=null,ut=1,e)return e()}finally{ut=o,Go.transition=a,tt=t,!(tt&6)&&Hs()}}function m1(){ho=Vl.current,Nt(Vl)}function Ti(e,t){e.finishedWork=null,e.finishedLanes=0;var a=e.timeoutHandle;if(a!==-1&&(e.timeoutHandle=-1,S7(a)),ta!==null)for(a=ta.return;a!==null;){var o=a;switch(H2(o),o.tag){case 1:o=o.type.childContextTypes,o!=null&&Hh();break;case 3:jc(),Nt(oo),Nt(_a),t1();break;case 5:e1(o);break;case 4:jc();break;case 13:Nt(Dt);break;case 19:Nt(Dt);break;case 10:J2(o.type._context);break;case 22:case 23:m1()}a=a.return}if(ua=e,ta=e=Ns(e.current,null),ya=ho=t,ia=0,$u=null,c1=pg=Vi=0,Xa=au=null,fi!==null){for(t=0;t<fi.length;t++)if(a=fi[t],o=a.interleaved,o!==null){a.interleaved=null;var r=o.next,n=a.pending;if(n!==null){var i=n.next;n.next=r,o.next=i}a.pending=o}fi=null}return e}function U_(e,t){do{var a=ta;try{if(W2(),Jp.current=tf,ef){for(var o=Mt.memoizedState;o!==null;){var r=o.queue;r!==null&&(r.pending=null),o=o.next}ef=!1}if(Bi=0,da=sa=Mt=null,eu=!1,Eu=0,l1.current=null,a===null||a.return===null){ia=1,$u=t,ta=null;break}e:{var n=e,i=a.return,l=a,c=t;if(t=ya,l.flags|=32768,c!==null&&typeof c=="object"&&typeof c.then=="function"){var d=c,u=l,m=u.tag;if(!(u.mode&1)&&(m===0||m===11||m===15)){var h=u.alternate;h?(u.updateQueue=h.updateQueue,u.memoizedState=h.memoizedState,u.lanes=h.lanes):(u.updateQueue=null,u.memoizedState=null)}var p=qC(i);if(p!==null){p.flags&=-257,DC(p,i,l,n,t),p.mode&1&&OC(n,d,t),t=p,c=d;var f=t.updateQueue;if(f===null){var g=new Set;g.add(c),t.updateQueue=g}else f.add(c);break e}else{if(!(t&1)){OC(n,d,t),p1();break e}c=Error(ee(426))}}else if(Et&&l.mode&1){var b=qC(i);if(b!==null){!(b.flags&65536)&&(b.flags|=256),DC(b,i,l,n,t),K2(Nc(c,l));break e}}n=c=Nc(c,l),ia!==4&&(ia=2),au===null?au=[n]:au.push(n),n=i;do{switch(n.tag){case 3:n.flags|=65536,t&=-t,n.lanes|=t;var v=R_(n,c,t);NC(n,v);break e;case 1:l=c;var y=n.type,k=n.stateNode;if(!(n.flags&128)&&(typeof y.getDerivedStateFromError=="function"||k!==null&&typeof k.componentDidCatch=="function"&&(Rs===null||!Rs.has(k)))){n.flags|=65536,t&=-t,n.lanes|=t;var w=j_(n,l,t);NC(n,w);break e}}n=n.return}while(n!==null)}H_(a)}catch(R){t=R,ta===a&&a!==null&&(ta=a=a.return);continue}break}while(!0)}function G_(){var e=af.current;return af.current=tf,e===null?tf:e}function p1(){(ia===0||ia===3||ia===2)&&(ia=4),ua===null||!(Vi&268435455)&&!(pg&268435455)||ns(ua,ya)}function nf(e,t){var a=tt;tt|=2;var o=G_();(ua!==e||ya!==t)&&(vn=null,Ti(e,t));do try{J7();break}catch(r){U_(e,r)}while(!0);if(W2(),tt=a,af.current=o,ta!==null)throw Error(ee(261));return ua=null,ya=0,ia}function J7(){for(;ta!==null;)z_(ta)}function X7(){for(;ta!==null&&!w9();)z_(ta)}function z_(e){var t=Q_(e.alternate,e,ho);e.memoizedProps=e.pendingProps,t===null?H_(e):ta=t,l1.current=null}function H_(e){var t=e;do{var a=t.alternate;if(e=t.return,t.flags&32768){if(a=G7(a,t),a!==null){a.flags&=32767,ta=a;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{ia=6,ta=null;return}}else if(a=U7(a,t,ho),a!==null){ta=a;return}if(t=t.sibling,t!==null){ta=t;return}ta=t=e}while(t!==null);ia===0&&(ia=5)}function ii(e,t,a){var o=ut,r=Go.transition;try{Go.transition=null,ut=1,Y7(e,t,a,o)}finally{Go.transition=r,ut=o}return null}function Y7(e,t,a,o){do Xl();while(xs!==null);if(tt&6)throw Error(ee(327));a=e.finishedWork;var r=e.finishedLanes;if(a===null)return null;if(e.finishedWork=null,e.finishedLanes=0,a===e.current)throw Error(ee(177));e.callbackNode=null,e.callbackPriority=0;var n=a.lanes|a.childLanes;if(T9(e,n),e===ua&&(ta=ua=null,ya=0),!(a.subtreeFlags&2064)&&!(a.flags&2064)||tp||(tp=!0,W_(Bh,function(){return Xl(),null})),n=(a.flags&15990)!==0,a.subtreeFlags&15990||n){n=Go.transition,Go.transition=null;var i=ut;ut=1;var l=tt;tt|=4,l1.current=null,H7(e,a),B_(a,e),x7(tb),Fh=!!eb,tb=eb=null,e.current=a,K7(a),C9(),tt=l,ut=i,Go.transition=n}else e.current=a;if(tp&&(tp=!1,xs=e,rf=r),n=e.pendingLanes,n===0&&(Rs=null),R9(a.stateNode),no(e,Jt()),t!==null)for(o=e.onRecoverableError,a=0;a<t.length;a++)r=t[a],o(r.value,{componentStack:r.stack,digest:r.digest});if(of)throw of=!1,e=kb,kb=null,e;return rf&1&&e.tag!==0&&Xl(),n=e.pendingLanes,n&1?e===wb?ou++:(ou=0,wb=e):ou=0,Hs(),null}function Xl(){if(xs!==null){var e=RE(rf),t=Go.transition,a=ut;try{if(Go.transition=null,ut=16>e?16:e,xs===null)var o=!1;else{if(e=xs,xs=null,rf=0,tt&6)throw Error(ee(331));var r=tt;for(tt|=4,ve=e.current;ve!==null;){var n=ve,i=n.child;if(ve.flags&16){var l=n.deletions;if(l!==null){for(var c=0;c<l.length;c++){var d=l[c];for(ve=d;ve!==null;){var u=ve;switch(u.tag){case 0:case 11:case 15:tu(8,u,n)}var m=u.child;if(m!==null)m.return=u,ve=m;else for(;ve!==null;){u=ve;var h=u.sibling,p=u.return;if(I_(u),u===d){ve=null;break}if(h!==null){h.return=p,ve=h;break}ve=p}}}var f=n.alternate;if(f!==null){var g=f.child;if(g!==null){f.child=null;do{var b=g.sibling;g.sibling=null,g=b}while(g!==null)}}ve=n}}if(n.subtreeFlags&2064&&i!==null)i.return=n,ve=i;else e:for(;ve!==null;){if(n=ve,n.flags&2048)switch(n.tag){case 0:case 11:case 15:tu(9,n,n.return)}var v=n.sibling;if(v!==null){v.return=n.return,ve=v;break e}ve=n.return}}var y=e.current;for(ve=y;ve!==null;){i=ve;var k=i.child;if(i.subtreeFlags&2064&&k!==null)k.return=i,ve=k;else e:for(i=y;ve!==null;){if(l=ve,l.flags&2048)try{switch(l.tag){case 0:case 11:case 15:mg(9,l)}}catch(R){Gt(l,l.return,R)}if(l===i){ve=null;break e}var w=l.sibling;if(w!==null){w.return=l.return,ve=w;break e}ve=l.return}}if(tt=r,Hs(),Hr&&typeof Hr.onPostCommitFiberRoot=="function")try{Hr.onPostCommitFiberRoot(rg,e)}catch{}o=!0}return o}finally{ut=a,Go.transition=t}}return!1}function WC(e,t,a){t=Nc(a,t),t=R_(e,t,1),e=Ss(e,t,1),t=Va(),e!==null&&(fm(e,1,t),no(e,t))}function Gt(e,t,a){if(e.tag===3)WC(e,e,a);else for(;t!==null;){if(t.tag===3){WC(t,e,a);break}else if(t.tag===1){var o=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof o.componentDidCatch=="function"&&(Rs===null||!Rs.has(o))){e=Nc(a,e),e=j_(t,e,1),t=Ss(t,e,1),e=Va(),t!==null&&(fm(t,1,e),no(t,e));break}}t=t.return}}function Z7(e,t,a){var o=e.pingCache;o!==null&&o.delete(t),t=Va(),e.pingedLanes|=e.suspendedLanes&a,ua===e&&(ya&a)===a&&(ia===4||ia===3&&(ya&130023424)===ya&&500>Jt()-d1?Ti(e,0):c1|=a),no(e,t)}function K_(e,t){t===0&&(e.mode&1?(t=zm,zm<<=1,!(zm&130023424)&&(zm=4194304)):t=1);var a=Va();e=_n(e,t),e!==null&&(fm(e,t,a),no(e,a))}function eI(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),K_(e,a)}function tI(e,t){var a=0;switch(e.tag){case 13:var o=e.stateNode,r=e.memoizedState;r!==null&&(a=r.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(ee(314))}o!==null&&o.delete(t),K_(e,a)}var Q_;Q_=function(e,t,a){if(e!==null)if(e.memoizedProps!==t.pendingProps||oo.current)eo=!0;else{if(!(e.lanes&a)&&!(t.flags&128))return eo=!1,F7(e,t,a);eo=!!(e.flags&131072)}else eo=!1,Et&&t.flags&1048576&&YE(t,Wh,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;Yp(e,t),e=t.pendingProps;var r=Pc(t,_a.current);Jl(t,a),r=o1(null,t,o,e,r,a);var n=r1();return t.flags|=1,typeof r=="object"&&r!==null&&typeof r.render=="function"&&r.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ro(o)?(n=!0,Kh(t)):n=!1,t.memoizedState=r.state!==null&&r.state!==void 0?r.state:null,Y2(t),r.updater=ug,t.stateNode=r,r._reactInternals=t,db(t,o,e,a),t=pb(null,t,o,!0,n,a)):(t.tag=0,Et&&n&&z2(t),Ia(null,t,r,a),t=t.child),t;case 16:o=t.elementType;e:{switch(Yp(e,t),e=t.pendingProps,r=o._init,o=r(o._payload),t.type=o,r=t.tag=oI(o),e=lr(o,e),r){case 0:t=mb(null,t,o,e,a);break e;case 1:t=LC(null,t,o,e,a);break e;case 11:t=IC(null,t,o,e,a);break e;case 14:t=MC(null,t,o,lr(o.type,e),a);break e}throw Error(ee(306,o,""))}return t;case 0:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:lr(o,r),mb(e,t,o,r,a);case 1:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:lr(o,r),LC(e,t,o,r,a);case 3:e:{if(__(t),e===null)throw Error(ee(387));o=t.pendingProps,n=t.memoizedState,r=n.element,r_(e,t),Yh(t,o,null,a);var i=t.memoizedState;if(o=i.element,n.isDehydrated)if(n={element:o,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=n,t.memoizedState=n,t.flags&256){r=Nc(Error(ee(423)),t),t=BC(e,t,o,a,r);break e}else if(o!==r){r=Nc(Error(ee(424)),t),t=BC(e,t,o,a,r);break e}else for(bo=Ps(t.stateNode.containerInfo.firstChild),yo=t,Et=!0,hr=null,a=a_(t,null,o,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling;else{if(Sc(),o===r){t=Tn(e,t,a);break e}Ia(e,t,o,a)}t=t.child}return t;case 5:return n_(t),e===null&&ib(t),o=t.type,r=t.pendingProps,n=e!==null?e.memoizedProps:null,i=r.children,ab(o,r)?i=null:n!==null&&ab(o,n)&&(t.flags|=32),E_(e,t),Ia(e,t,i,a),t.child;case 6:return e===null&&ib(t),null;case 13:return T_(e,t,a);case 4:return Z2(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=Rc(t,null,o,a):Ia(e,t,o,a),t.child;case 11:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:lr(o,r),IC(e,t,o,r,a);case 7:return Ia(e,t,t.pendingProps,a),t.child;case 8:return Ia(e,t,t.pendingProps.children,a),t.child;case 12:return Ia(e,t,t.pendingProps.children,a),t.child;case 10:e:{if(o=t.type._context,r=t.pendingProps,n=t.memoizedProps,i=r.value,St(Jh,o._currentValue),o._currentValue=i,n!==null)if(Sr(n.value,i)){if(n.children===r.children&&!oo.current){t=Tn(e,t,a);break e}}else for(n=t.child,n!==null&&(n.return=t);n!==null;){var l=n.dependencies;if(l!==null){i=n.child;for(var c=l.firstContext;c!==null;){if(c.context===o){if(n.tag===1){c=jn(-1,a&-a),c.tag=2;var d=n.updateQueue;if(d!==null){d=d.shared;var u=d.pending;u===null?c.next=c:(c.next=u.next,u.next=c),d.pending=c}}n.lanes|=a,c=n.alternate,c!==null&&(c.lanes|=a),lb(n.return,a,t),l.lanes|=a;break}c=c.next}}else if(n.tag===10)i=n.type===t.type?null:n.child;else if(n.tag===18){if(i=n.return,i===null)throw Error(ee(341));i.lanes|=a,l=i.alternate,l!==null&&(l.lanes|=a),lb(i,a,t),i=n.sibling}else i=n.child;if(i!==null)i.return=n;else for(i=n;i!==null;){if(i===t){i=null;break}if(n=i.sibling,n!==null){n.return=i.return,i=n;break}i=i.return}n=i}Ia(e,t,r.children,a),t=t.child}return t;case 9:return r=t.type,o=t.pendingProps.children,Jl(t,a),r=Ho(r),o=o(r),t.flags|=1,Ia(e,t,o,a),t.child;case 14:return o=t.type,r=lr(o,t.pendingProps),r=lr(o.type,r),MC(e,t,o,r,a);case 15:return N_(e,t,t.type,t.pendingProps,a);case 17:return o=t.type,r=t.pendingProps,r=t.elementType===o?r:lr(o,r),Yp(e,t),t.tag=1,ro(o)?(e=!0,Kh(t)):e=!1,Jl(t,a),S_(t,o,r),db(t,o,r,a),pb(null,t,o,!0,e,a);case 19:return $_(e,t,a);case 22:return A_(e,t,a)}throw Error(ee(156,t.tag))};function W_(e,t){return wE(e,t)}function aI(e,t,a,o){this.tag=e,this.key=a,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Fo(e,t,a,o){return new aI(e,t,a,o)}function h1(e){return e=e.prototype,!(!e||!e.isReactComponent)}function oI(e){if(typeof e=="function")return h1(e)?1:0;if(e!=null){if(e=e.$$typeof,e===$2)return 11;if(e===O2)return 14}return 2}function Ns(e,t){var a=e.alternate;return a===null?(a=Fo(e.tag,t,e.key,e.mode),a.elementType=e.elementType,a.type=e.type,a.stateNode=e.stateNode,a.alternate=e,e.alternate=a):(a.pendingProps=t,a.type=e.type,a.flags=0,a.subtreeFlags=0,a.deletions=null),a.flags=e.flags&14680064,a.childLanes=e.childLanes,a.lanes=e.lanes,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,t=e.depen
vendor: 8,391 bytes, line 41
41dencies,a.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},a.sibling=e.sibling,a.index=e.index,a.ref=e.ref,a}function th(e,t,a,o,r,n){var i=2;if(o=e,typeof e=="function")h1(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case _l:return $i(a.children,r,n,t);case T2:i=8,r|=8;break;case Ox:return e=Fo(12,a,t,r|2),e.elementType=Ox,e.lanes=n,e;case qx:return e=Fo(13,a,t,r),e.elementType=qx,e.lanes=n,e;case Dx:return e=Fo(19,a,t,r),e.elementType=Dx,e.lanes=n,e;case nE:return hg(a,r,n,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case oE:i=10;break e;case rE:i=9;break e;case $2:i=11;break e;case O2:i=14;break e;case es:i=16,o=null;break e}throw Error(ee(130,e==null?e:typeof e,""))}return t=Fo(i,a,t,r),t.elementType=e,t.type=o,t.lanes=n,t}function $i(e,t,a,o){return e=Fo(7,e,o,t),e.lanes=a,e}function hg(e,t,a,o){return e=Fo(22,e,o,t),e.elementType=nE,e.lanes=a,e.stateNode={isHidden:!1},e}function K0(e,t,a){return e=Fo(6,e,null,t),e.lanes=a,e}function Q0(e,t,a){return t=Fo(4,e.children!==null?e.children:[],e.key,t),t.lanes=a,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function rI(e,t,a,o,r){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=N0(0),this.expirationTimes=N0(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=N0(0),this.identifierPrefix=o,this.onRecoverableError=r,this.mutableSourceEagerHydrationData=null}function f1(e,t,a,o,r,n,i,l,c){return e=new rI(e,t,a,l,c),t===1?(t=1,n===!0&&(t|=8)):t=0,n=Fo(3,null,null,t),e.current=n,n.stateNode=e,n.memoizedState={element:o,isDehydrated:a,cache:null,transitions:null,pendingSuspenseBoundaries:null},Y2(n),e}function nI(e,t,a){var o=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:El,key:o==null?null:""+o,children:e,containerInfo:t,implementation:a}}function J_(e){if(!e)return Os;e=e._reactInternals;e:{if(ol(e)!==e||e.tag!==1)throw Error(ee(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(ro(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(ee(171))}if(e.tag===1){var a=e.type;if(ro(a))return JE(e,a,t)}return t}function X_(e,t,a,o,r,n,i,l,c){return e=f1(a,o,!0,e,r,n,i,l,c),e.context=J_(null),a=e.current,o=Va(),r=js(a),n=jn(o,r),n.callback=t??null,Ss(a,n,r),e.current.lanes=r,fm(e,r,o),no(e,o),e}function fg(e,t,a,o){var r=t.current,n=Va(),i=js(r);return a=J_(a),t.context===null?t.context=a:t.pendingContext=a,t=jn(n,i),t.payload={element:e},o=o===void 0?null:o,o!==null&&(t.callback=o),e=Ss(r,t,i),e!==null&&(yr(e,r,i,n),Wp(e,r,i)),i}function sf(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function JC(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var a=e.retryLane;e.retryLane=a!==0&&a<t?a:t}}function g1(e,t){JC(e,t),(e=e.alternate)&&JC(e,t)}function sI(){return null}var Y_=typeof reportError=="function"?reportError:function(e){console.error(e)};function v1(e){this._internalRoot=e}gg.prototype.render=v1.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(ee(409));fg(e,t,null,null)};gg.prototype.unmount=v1.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Fi(function(){fg(null,e,null,null)}),t[En]=null}};function gg(e){this._internalRoot=e}gg.prototype.unstable_scheduleHydration=function(e){if(e){var t=AE();e={blockedOn:null,target:e,priority:t};for(var a=0;a<rs.length&&t!==0&&t<rs[a].priority;a++);rs.splice(a,0,e),a===0&&_E(e)}};function x1(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function vg(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function XC(){}function iI(e,t,a,o,r){if(r){if(typeof o=="function"){var n=o;o=function(){var d=sf(i);n.call(d)}}var i=X_(t,o,e,0,null,!1,!1,"",XC);return e._reactRootContainer=i,e[En]=i.current,Su(e.nodeType===8?e.parentNode:e),Fi(),i}for(;r=e.lastChild;)e.removeChild(r);if(typeof o=="function"){var l=o;o=function(){var d=sf(c);l.call(d)}}var c=f1(e,0,!1,null,null,!1,!1,"",XC);return e._reactRootContainer=c,e[En]=c.current,Su(e.nodeType===8?e.parentNode:e),Fi(function(){fg(t,c,a,o)}),c}function xg(e,t,a,o,r){var n=a._reactRootContainer;if(n){var i=n;if(typeof r=="function"){var l=r;r=function(){var c=sf(i);l.call(c)}}fg(t,i,e,r)}else i=iI(a,t,e,r,o);return sf(i)}jE=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var a=Dd(t.pendingLanes);a!==0&&(I2(t,a|1),no(t,Jt()),!(tt&6)&&(Ac=Jt()+500,Hs()))}break;case 13:Fi(function(){var o=_n(e,1);if(o!==null){var r=Va();yr(o,e,1,r)}}),g1(e,1)}};M2=function(e){if(e.tag===13){var t=_n(e,134217728);if(t!==null){var a=Va();yr(t,e,134217728,a)}g1(e,134217728)}};NE=function(e){if(e.tag===13){var t=js(e),a=_n(e,t);if(a!==null){var o=Va();yr(a,e,t,o)}g1(e,t)}};AE=function(){return ut};EE=function(e,t){var a=ut;try{return ut=e,t()}finally{ut=a}};Hx=function(e,t,a){switch(t){case"input":if(Lx(e,a),t=a.name,a.type==="radio"&&t!=null){for(a=e;a.parentNode;)a=a.parentNode;for(a=a.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<a.length;t++){var o=a[t];if(o!==e&&o.form===e.form){var r=lg(o);if(!r)throw Error(ee(90));iE(o),Lx(o,r)}}}break;case"textarea":cE(e,a);break;case"select":t=a.value,t!=null&&Hl(e,!!a.multiple,t,!1)}};gE=u1;vE=Fi;var lI={usingClientEntryPoint:!1,Events:[vm,ql,lg,hE,fE,u1]},bd={findFiberByHostInstance:hi,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},cI={bundleType:bd.bundleType,version:bd.version,rendererPackageName:bd.rendererPackageName,rendererConfig:bd.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Mn.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=yE(e),e===null?null:e.stateNode},findFiberByHostInstance:bd.findFiberByHostInstance||sI,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var ap=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ap.isDisabled&&ap.supportsFiber)try{rg=ap.inject(cI),Hr=ap}catch{}}Ro.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lI;Ro.createPortal=function(e,t){var a=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!x1(t))throw Error(ee(200));return nI(e,t,null,a)};Ro.createRoot=function(e,t){if(!x1(e))throw Error(ee(299));var a=!1,o="",r=Y_;return t!=null&&(t.unstable_strictMode===!0&&(a=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=f1(e,1,!1,null,null,a,!1,o,r),e[En]=t.current,Su(e.nodeType===8?e.parentNode:e),new v1(t)};Ro.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(ee(188)):(e=Object.keys(e).join(","),Error(ee(268,e)));return e=yE(t),e=e===null?null:e.stateNode,e};Ro.flushSync=function(e){return Fi(e)};Ro.hydrate=function(e,t,a){if(!vg(t))throw Error(ee(200));return xg(null,e,t,!0,a)};Ro.hydrateRoot=function(e,t,a){if(!x1(e))throw Error(ee(405));var o=a!=null&&a.hydratedSources||null,r=!1,n="",i=Y_;if(a!=null&&(a.unstable_strictMode===!0&&(r=!0),a.identifierPrefix!==void 0&&(n=a.identifierPrefix),a.onRecoverableError!==void 0&&(i=a.onRecoverableError)),t=X_(t,null,e,1,a??null,r,!1,n,i),e[En]=t.current,Su(e),o)for(e=0;e<o.length;e++)a=o[e],r=a._getVersion,r=r(a._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[a,r]:t.mutableSourceEagerHydrationData.push(a,r);return new gg(t)};Ro.render=function(e,t,a){if(!vg(t))throw Error(ee(200));return xg(null,e,t,!1,a)};Ro.unmountComponentAtNode=function(e){if(!vg(e))throw Error(ee(40
41));return e._reactRootContainer?(Fi(function(){xg(null,null,e,!1,function(){e._reactRootContainer=null,e[En]=null})}),!0):!1};Ro.unstable_batchedUpdates=u1;Ro.unstable_renderSubtreeIntoContainer=function(e,t,a,o){if(!vg(a))throw Error(ee(200));if(e==null||e._reactInternals===void 0)throw Error(ee(38));return xg(e,t,a,!1,o)};Ro.version="18.3.1-next-f1338f8080-20240426";function Z_(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Z_)}catch(e){console.error(e)}}Z_(),ZA.exports=Ro;var Xc=ZA.exports;const e3=tl(Xc);var t3,YC=Xc;t3=YC.createRoot,YC.hydrateRoot;var dI=typeof Element<"u",uI=typeof Map=="function",mI=typeof Set=="function",pI=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function ah(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var a,o,r;if(Array.isArray(e)){if(a=e.length,a!=t.length)return!1;for(o=a;o--!==0;)if(!ah(e[o],t[o]))return!1;return!0}var n;if(uI&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(n=e.entries();!(o=n.next()).done;)if(!t.has(o.value[0]))return!1;for(n=e.entries();!(o=n.next()).done;)if(!ah(o.value[1],t.get(o.value[0])))return!1;return!0}if(mI&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(n=e.entries();!(o=n.next()).done;)if(!t.has(o.value[0]))return!1;return!0}if(pI&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(a=e.length,a!=t.length)return!1;for(o=a;o--!==0;)if(e[o]!==t[o])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(r=Object.keys(e),a=r.length,a!==Object.keys(t).length)return!1;for(o=a;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,r[o]))return!1;if(dI&&e instanceof Element)return!1;for(o=a;o--!==0;)if(!((r[o]==="_owner"||r[o]==="__v"||r[o]==="__o")&&e.$$typeof)&&!ah(e[r[o]],t[r[o]]))return!1;return!0}return e!==e&&t!==t}var hI=function(t,a){try{return ah(t,a)}catch(o){if((o.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw o}};const fI=tl(hI);var gI=function(e,t,a,o,r,n,i,l){if(!e){var c;if(t===void 0)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var d=[a,o,r,n,i,l],u=0;c=new Error(t.replace(/%s/g,function(){return d[u++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}},vI=gI;const ZC=tl(vI);var xI=function(t,a,o,r){var n=o?o.call(r,t,a):void 0;if(n!==void 0)return!!n;if(t===a)return!0;if(typeof t!="object"||!t||typeof a!="object"||!a)return!1;var i=Object.keys(t),l=Object.keys(a);if(i.length!==l.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(a),d=0;d<i.length;d++){var u=i[d];if(!c(u))return!1;var m=t[u],h=a[u];if(n=o?o.call(r,m,h,u):void 0,n===!1||n===void 0&&m!==h)return!1}return!0};const bI=tl(xI);var a3=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(a3||{}),W0={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},eP=Object.values(a3),bg={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},o3=Object.entries(bg).reduce((e,[t,a])=>(e[a]=t,e),{}),xr="data-rh",Yl={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},Zl=(e,t)=>{for(let a=e.length-1;a>=0;a-=1){const o=e[a];if(Object.prototype.hasOwnProperty.call(o,t))return o[t]}return null},yI=e=>{let t=Zl(e,"title");const a=Zl(e,Yl.TITLE_TEMPLATE);if(Array.isArray(t)&&(t=t.join("")),a&&t)return a.replace(/%s/g,()=>t);const o=Zl(e,Yl.DEFAULT_TITLE);return t||o||void 0},kI=e=>Zl(e,Yl.ON_CHANGE_CLIENT_STATE)||(()=>{}),J0=(e,t)=>t.filter(a=>typeof a[e]<"u").map(a=>a[e]).reduce((a,o)=>({...a,...o}),{}),wI=(e,t)=>t.filter(a=>typeof a.base<"u").map(a=>a.base).reverse().reduce((a,o)=>
41{if(!a.length){const r=Object.keys(o);for(let n=0;n<r.length;n+=1){const l=r[n].toLowerCase();if(e.indexOf(l)!==-1&&o[l])return a.concat(o)}}return a},[]),CI=e=>console&&typeof console.warn=="function"&&console.warn(e),yd=(e,t,a)=>{const o={};return a.filter(r=>Array.isArray(r[e])?!0:(typeof r[e]<"u"&&CI(`Helmet: ${e} should be of type "Array". Instead found type "${typeof r[e]}"`),!1)).map(r=>r[e]).reverse().reduce((r,n)=>{const i={};n.filter(c=>{let d;const u=Object.keys(c);for(let h=0;h<u.length;h+=1){const p=u[h],f=p.toLowerCase();t.indexOf(f)!==-1&&!(d==="rel"&&c[d].toLowerCase()==="canonical")&&!(f==="rel"&&c[f].toLowerCase()==="stylesheet")&&(d=f),t.indexOf(p)!==-1&&(p==="innerHTML"||p==="cssText"||p==="itemprop")&&(d=p)}if(!d||!c[d])return!1;const m=c[d].toLowerCase();return o[d]||(o[d]={}),i[d]||(i[d]={}),o[d][m]?!1:(i[d][m]=!0,!0)}).reverse().forEach(c=>r.push(c));const l=Object.keys(i);for(let c=0;c<l.length;c+=1){const d=l[c],u={...o[d],...i[d]};o[d]=u}return r},[]).reverse()},PI=(e,t)=>{if(Array.isArray(e)&&e.length){for(let a=0;a<e.length;a+=1)if(e[a][t])return!0}return!1},SI=e=>({baseTag:wI(["href"],e),bodyAttributes:J0("bodyAttributes",e),defer:Zl(e,Yl.DEFER),encode:Zl(e,Yl.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:J0("htmlAttributes",e),linkTags:yd("link",["rel","href"],e),metaTags:yd("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:yd("noscript",["innerHTML"],e),onChangeClientState:kI(e),scriptTags:yd("script",["src","innerHTML"],e),styleTags:yd("style",["cssText"],e),title:yI(e),titleAttributes:J0("titleAttributes",e),prioritizeSeoTags:PI(e,Yl.PRIORITIZE_SEO_TAGS)}),r3=e=>Array.isArray(e)?e.join(""):e,RI=(e,t)=>{const a=Object.keys(e);for(let o=0;o<a.length;o+=1)if(t[a[o]]&&t[a[o]].includes(e[a[o]]))return!0;return!1},X0=(e,t)=>Array.isArray(e)?e.reduce((a,o)=>(RI(o,t)?a.priority.push(o):a.default.push(o),a),{priority:[],default:[]}):{default:e,priority:[]},tP=(e,t)=>({...e,[t]:void 0}),jI=["noscript","script","style"],Sb=(e,t=!0)=>t===!1?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),n3=e=>Object.keys(e).reduce((t,a)=>{const o=typeof e[a]<"u"?`${a}="${e[a]}"`:`${a}`;return t?`${t} ${o}`:o},""),NI=(e,t,a,o)=>{const r=n3(a),n=r3(t);return r?`<${e} ${xr}="true" ${r}>${Sb(n,o)}</${e}>`:`<${e} ${xr}="true">${Sb(n,o)}</${e}>`},AI=(e,t,a=!0)=>t.reduce((o,r)=>{const n=r,i=Object.keys(n).filter(d=>!(d==="innerHTML"||d==="cssText")).reduce((d,u)=>{const m=typeof n[u]>"u"?u:`${u}="${Sb(n[u],a)}"`;return d?`${d} ${m}`:m},""),l=n.innerHTML||n.cssText||"",c=jI.indexOf(e)===-1;return`${o}<${e} ${xr}="true" ${i}${c?"/>":`>${l}</${e}>`}`},""),s3=(e,t={})=>Object.keys(e).reduce((a,o)=>{const r=bg[o];return a[r||o]=e[o],a},t),EI=(e,t,a)=>{const o={key:t,[xr]:!0},r=s3(a,o);return[Q.createElement("title",r,t)]},oh=(e,t)=>t.map((a,o)=>{const r={key:o,[xr]:!0};return Object.keys(a).forEach(n=>{const l=bg[n]||n;if(l==="innerHTML"||l==="cssText"){const c=a.innerHTML||a.cssText;r.dangerouslySetInnerHTML={__html:c}}else r[l]=a[n]}),Q.createElement(e,r)}),To=(e,t,a=!0)=>{switch(e){case"title":return{toComponent:()=>EI(e,t.title,t.titleAttributes),toString:()=>NI(e,t.title,t.titleAttributes,a)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>s3(t),toString:()=>n3(t)};default:return{toComponent:()=>oh(e,t),toString:()=>AI(e,t,a)}}},_I=({metaTags:e,linkTags:t,scriptTags:a,encode:o})=>{const r=X0(e,W0.meta),n=X0(t,W0.link),i=X0(a,W0.script);return{priorityMethods:{toComponent:()=>[...oh("meta",r.priority),...oh("link",n.priority),...oh("script",i.priority)],toString:()=>`${To("meta",r.priority,o)} ${To("link",n.priority,o)} ${To("script",i.priority,o)}`},metaTags:r.default,linkTags:n.default,scriptTags:i.default}},TI=e=>{const{baseTag:t,bodyAttributes:a,encode:o=!0,htmlAttributes:r,noscriptTags:n,styleTags:i,title:l="",titleAttributes:c,prioritizeSeoTags:d}=e;let{linkTags:u,metaTags:m,scriptTags:h}=e,p={toComponent:()=>[],toString:()=>""};return d&&({priorityMethods:p,linkTags:u,metaTags:m,scriptTags:h}=_I(e)),{priority:p,base:To("base",t,o),bodyAttributes:To("bodyAttributes",a,o),htmlAttributes:To("htmlAttributes",r,o),link:To("link",u,o),meta:To("meta",m,o),noscript:To("noscript",n,o),script:To("script",h,o),style:To("style",i,o),title:To("title",{title:l,titleAttributes:c},o)}},Rb=TI,op=[],b1=!!(typeof window<"u"&&window.document&&window.document.createElement),jb=class{constructor(e,t){_r(this,"instances",[]);_r(this,"canUseDOM",b1);_r(this,"context");_r(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?op:this.instances,add:e=>{(this.canUseDOM?op:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?op:this.instances).indexOf(e);(this.canUseDOM?op:this.instances).splice(t,1)}}});this.context=e,this.canUseDOM=t||!1,t||(e.helmet=Rb({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},$I=parseInt(Q.version.split(".")[0],10),Nb=$I>=19,OI={},i3=Q.createContext(OI),wi,l3=(wi=class extends x.Component{constructor(a){
41super(a);_r(this,"helmetData");Nb?this.helmetData=null:this.helmetData=new jb(this.props.context||{},wi.canUseDOM)}render(){return Nb?Q.createElement(Q.Fragment,null,this.props.children):Q.createElement(i3.Provider,{value:this.helmetData.value},this.props.children)}},_r(wi,"canUseDOM",b1),wi),ml=(e,t)=>{const a=document.head||document.querySelector("head"),o=a.querySelectorAll(`${e}[${xr}]`),r=[].slice.call(o),n=[];let i;return t&&t.length&&t.forEach(l=>{const c=document.createElement(e);for(const d in l)if(Object.prototype.hasOwnProperty.call(l,d))if(d==="innerHTML")c.innerHTML=l.innerHTML;else if(d==="cssText"){const u=l.cssText;c.appendChild(document.createTextNode(u))}else{const u=d,m=typeof l[u]>"u"?"":l[u];c.setAttribute(d,m)}c.setAttribute(xr,"true"),r.some((d,u)=>(i=u,c.isEqualNode(d)))?r.splice(i,1):n.push(c)}),r.forEach(l=>{var c;return(c=l.parentNode)==null?void 0:c.removeChild(l)}),n.forEach(l=>a.appendChild(l)),{oldTags:r,newTags:n}},Ab=(e,t)=>{const a=document.getElementsByTagName(e)[0];if(!a)return;const o=a.getAttribute(xr),r=o?o.split(","):[],n=[...r],i=Object.keys(t);for(const l of i){const c=t[l]||"";a.getAttribute(l)!==c&&a.setAttribute(l,c),r.indexOf(l)===-1&&r.push(l);const d=n.indexOf(l);d!==-1&&n.splice(d,1)}for(let l=n.length-1;l>=0;l-=1)a.removeAttribute(n[l]);r.length===n.length?a.removeAttribute(xr):a.getAttribute(xr)!==i.join(",")&&a.setAttribute(xr,i.join(","))},qI=(e,t)=>{typeof e<"u"&&document.title!==e&&(document.title=r3(e)),Ab("title",t)},aP=(e,t)=>
41{const{baseTag:a,bodyAttributes:o,htmlAttributes:r,linkTags:n,metaTags:i,noscriptTags:l,onChangeClientState:c,scriptTags:d,styleTags:u,title:m,titleAttributes:h}=e;Ab("body",o),Ab("html",r),qI(m,h);const p={baseTag:ml("base",a),linkTags:ml("link",n),metaTags:ml("meta",i),noscriptTags:ml("noscript",l),scriptTags:ml("script",d),styleTags:ml("style",u)},f={},g={};Object.keys(p).forEach(b=>{const{newTags:v,oldTags:y}=p[b];v.length&&(f[b]=v),y.length&&(g[b]=p[b].oldTags)}),t&&t(),c(e,f,g)},kd=null,DI=e=>{kd&&cancelAnimationFrame(kd),e.defer?kd=requestAnimationFrame(()=>{aP(e,()=>{kd=null})}):(aP(e),kd=null)},II=DI,oP=class extends x.Component{constructor(){super(...arguments);_r(this,"rendered",!1)}shouldComponentUpdate(t){return!bI(t,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:t}=this.props.context;t.remove(this),this.emitChange()}emitChange(){const{helmetInstances:t,setHelmet:a}=this.props.context;let o=null;const r=SI(t.get().map(n=>{const{context:i,...l}=n.props;return l}));l3.canUseDOM?II(r):Rb&&(o=Rb(r)),a(o)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:t}=this.props.context;t.add(this),this.emitChange()}render(){return this.init(),null}},rh=[],rP=e=>{const t={};for(const a of Object.keys(e))t[o3[a]||a]=e[a];return t},Zs=e=>{const t={};for(const a of Object.keys(e)){const o=bg[a];t[o||a]=e[a]}return t},nP=(e,t)=>{if(!b1)return;const a=document.getElementsByTagName(e)[0];if(!a)return;const o="data-rh-managed",r=a.getAttribute(o),n=r?r.split(","):[],i=Object.keys(t);for(const l of n)i.includes(l)||a.removeAttribute(l);for(const l of i){const c=t[l];c==null||c===!1?a.removeAttribute(l):c===!0?a.setAttribute(l,""):a.setAttribute(l,String(c))}i.length>0?a.setAttribute(o,i.join(",")):a.removeAttribute(o)},Y0=()=>{const e={},t={};for(const a of rh){const{htmlAttributes:o,bodyAttributes:r}=a.props;o&&Object.assign(e,rP(o)),r&&Object.assign(t,rP(r))}nP("html",e),nP("body",t)},MI=class extends x.Component{componentDidMount(){rh.push(this),Y0()}componentDidUpdate(){Y0()}componentWillUnmount(){const e=rh.indexOf(this);e!==-1&&rh.splice(e,1),Y0()}resolveTitle(){const{title:e,titleTemplate:t,defaultTitle:a}=this.props;return e&&t?t.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||a||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const t=this.props.titleAttributes||{};return Q.createElement("title",Zs(t),e)}renderBase(){const{base:e}=this.props;return e?Q.createElement("base",Zs(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,a)=>Q.createElement("meta",{key:a,...Zs(t)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,a)=>Q.createElement("link",{key:a,...Zs(t)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,a)=>{const{innerHTML:o,...r}=t,n=Zs(r);return o&&(n.dangerouslySetInnerHTML={__html:o}),Q.createElement("script",{key:a,...n})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,a)=>{const{cssText:o,...r}=t,n=Zs(r);return o&&(n.dangerouslySetInnerHTML={__html:o}),Q.createElement("style",{key:a,...n})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,a)=>{const{innerHTML:o,...r}=t,n=Zs(r);return o&&(n.dangerouslySetInnerHTML={__html:o}),Q.createElement("noscript",{key:a,...n})})}render(){return Q.createElement(Q.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},Tx,y1=(Tx=class extends x.Component{shouldComponentUpdate(e){return!fI(tP(this.props,"helmetData"),tP(e,"helmetData"))}mapNestedChildrenToProps(e,t){if(!t)return null;switch(e.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,t,a,o){return{...t,[e.type]:[...t[e.type]||[],{...a,...this.mapNestedChildrenToProps(e,o)}]}}mapObjectTypeChildren(e,t,a,o){switch(e.type){case"title":return{...t,[e.type]:o,titleAttributes:{...a}};case"body":return{...t,bodyAttributes:{...a}};case"html":return{...t,htmlAttributes:{...a}};default:return{...t,[e.type]:{...a}}}}mapArrayTypeChildrenToProps(e,t){let a={...t};return Object.keys(e).forEach(o=>{a={...a,[o]:e[o]}}),a}
41warnOnInvalidChildren(e,t){return ZC(eP.some(a=>e.type===a),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${eP.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),ZC(!t||typeof t=="string"||Array.isArray(t)&&!t.some(a=>typeof a!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,t){let a={};return Q.Children.forEach(e,o=>{if(!o||!o.props)return;const{children:r,...n}=o.props,i=Object.keys(n).reduce((c,d)=>(c[o3[d]||d]=n[d],c),{});let{type:l}=o;switch(typeof l=="symbol"?l=l.toString():this.warnOnInvalidChildren(o,r),l){case"Symbol(react.fragment)":t=this.mapChildrenToProps(r,t);break;case"link":case"meta":case"noscript":case"script":case"style":a=this.flattenArrayTypeChildren(o,a,i,r);break;default:t=this.mapObjectTypeChildren(o,t,i,r);break}}),this.mapArrayTypeChildrenToProps(a,t)}render(){const{children:e,...t}=this.props;let a={...t},{helmetData:o}=t;if(e&&(a=this.mapChildrenToProps(e,a)),o&&!(o instanceof jb)){const r=o;o=new jb(r.context,!0),delete a.helmetData}return Nb?Q.createElement(MI,{...a}):o?Q.createElement(oP,{...a,context:o.value}):Q.createElement(i3.Consumer,null,r=>Q.createElement(oP,{...a,context:r}))}},_r(Tx,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),Tx);const LI="modulepreload",BI=function(e){return"/"+e},sP={},Qt=function(t,a,o){let r=Promise.resolve();if(a&&a.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(a.map(c=>{if(c=BI(c),c in sP)return;sP[c]=!0;const d=c.endsWith(".css"),u=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const m=document.createElement("link");if(m.rel=d?"stylesheet":LI,d||(m.as="script"),m.crossOrigin="",m.href=c,l&&m.setAttribute("nonce",l),document.head.appendChild(m),d)return new Promise((h,p)=>{m.addEventListener("load",h),m.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${c}`)))})}))}function n(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&n(l.reason);return t().catch(n)})};/** 42 * react-router v7.18.4 43 * 44 * Copyright (c) Remix Software Inc. 45 * 46 * This source code is licensed under the MIT license found in the 47 * LICENSE.md file in the root directory of this source tree. 48 * 49 * @license MIT 50 */var k1=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,c3=/^[\\/]{2}/;function VI(e,t){return t+e.replace(/\\/g,"/")}var iP="popstate";function lP(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function FI(e={}){function t(o,r){var d;let n=(d=r.state)==null?void 0:d.masked,{pathname:i,search:l,hash:c}=n||o.location;return Eb("",{pathname:i,search:l,hash:c},r.state&&r.state.usr||null,r.state&&r.state.key||"default",n?{pathname:o.location.pathname,search:o.location.search,hash:o.location.hash}:void 0)}function a(o,r){return typeof r=="string"?r:Ui(r)}return GI(t,a,null,e)}function _t(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Qo(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function UI(){return Math.random().toString(36).substring(2,10)}function cP(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Eb(e,t,a=null,o,r){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?Yc(t):t,state:a,key:t&&t.key||o||UI(),mask:r}}function Ui({pathname:e="/",search:t="",hash:a=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),a&&a!=="#"&&(e+=a.charAt(0)==="#"?a:"#"+a),e}function Yc(e){let t={};if(e){let a=e.indexOf("#");a>=0&&(t.hash=e.substring(a),e=e.substring(0,a));let o=e.indexOf("?");o>=0&&(t.search=e.substring(o),e=e.substring(0,o)),e&&(t.pathname=e)}return t}function GI(e,t,a,o={}){let{window:r=document.defaultView,v5Compat:n=!1}=o,i=r.history,l="POP",c=null,d=u();d==null&&(d=0,i.replaceState({...i.state,idx:d},""));function u(){return(i.state||{idx:null}).idx}function m(){l="POP";let b=u(),v=b==null?null:b-d;d=b,c&&c({action:l,location:g.location,delta:v})}function h(b,v){l="PUSH";let y=lP(b)?b:Eb(g.location,b,v);d=u()+1;let k=cP(y,d),w=g.createHref(y.mask||y);try{i.pushState(k,"",w)}catch(R){if(R instanceof DOMException&&R.name==="DataCloneError")throw R;r.location.assign(w)}n&&c&&c({action:l,location:g.location,delta:1})}function p(b,v){l="REPLACE";let y=lP(b)?b:Eb(g.location,b,v);d=u();let k=cP(y,d),w=g.createHref(y.mask||y);i.replaceState(k,"",w),n&&c&&c({action:l,location:g.location,delta:0})}function f(b){return zI(r,b)}let g={get action(){return l},get location(){return e(r,i)},listen(b){if(c)throw new Error("A history only accepts one active listener");return r.addEventListener(iP,m),c=b,()=>{r.removeEventListener(iP,m),c=null}},createHref(b){return t(r,b)},createURL:f,encodeLocation(b){let v=f(b);return{pathname:v.pathname,search:v.search,hash:v.hash}},push:h,replace:p,go(b){return i.go(b)}};return g}function zI(e,t,a=!1){let o="http://localhost";e&&(o=e.location.origin!=="null"?e.location.origin:e.location.href),_t(o,"No window.location.(origin|href) available to create URL");let r=typeof t=="string"?t:Ui(t);return r=r.replace(/ $/,"%20"),!a&&c3.test(r)&&(r=o+r),new URL(r,o)}function d3(e,t,a="/"){return HI(e,t,a,!1)}function HI(e,t,a,o,r){let n=typeof t=="string"?Yc(t):t,i=$n(n.pathname||"/",a);if(i==null)return null;let l=KI(e),c=null,d=rM(i);for(let u=0;c==null&&u<l.length;++u)c=oM(l[u],d,o);return c}function KI(e){let t=u3(e);return QI(t),t}function u3(e,t=[],a=[],o="",r=!1){let n=(i,l,c=r,d)=>{let u={relativePath:d===void 0?i.path||"":d,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(o)&&c)return;_t(u.relativePath.startsWith(o),`Absolute route path "${u.relativePath}" nested under path "${o}
50" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(o.length)}let m=kr([o,u.relativePath]),h=a.concat(u);i.children&&i.children.length>0&&(_t(i.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),u3(i.children,t,h,m,c)),!(i.path==null&&!i.index)&&t.push({path:m,score:tM(m,i.index),routesMeta:h.map((p,f)=>{let[g,b]=h3(p.relativePath,p.caseSensitive,f===h.length-1);return{...p,matcher:g,compiledParams:b}})})};return e.forEach((i,l)=>{var c;if(i.path===""||!((c=i.path)!=null&&c.includes("?")))n(i,l);else for(let d of m3(i.path))n(i,l,!0,d)}),t}function m3(e){let t=e.split("/");if(t.length===0)return[];let[a,...o]=t,r=a.endsWith("?"),n=a.replace(/\?$/,"");if(o.length===0)return r?[n,""]:[n];let i=m3(o.join("/")),l=[];return l.push(...i.map(c=>c===""?n:[n,c].join("/"))),r&&l.push(...i),l.map(c=>e.startsWith("/")&&c===""?"/":c)}function QI(e){e.sort((t,a)=>t.score!==a.score?a.score-t.score:aM(t.routesMeta.map(o=>o.childrenIndex),a.routesMeta.map(o=>o.childrenIndex)))}var WI=/^:[\w-]+$/,JI=3,XI=2,YI=1,ZI=10,eM=-2,dP=e=>e==="*";function tM(e,t){let a=e.split("/"),o=a.length;return a.some(dP)&&(o+=eM),t&&(o+=XI),a.filter(r=>!dP(r)).reduce((r,n)=>r+(WI.test(n)?JI:n===""?YI:ZI),o)}function aM(e,t){return e.length===t.length&&e.slice(0,-1).every((o,r)=>o===t[r])?e[e.length-1]-t[t.length-1]:0}function oM(e,t,a=!1){let{routesMeta:o}=e,r={},n="/",i=[];for(let l=0;l<o.length;++l){let c=o[l],d=l===o.length-1,u=n==="/"?t:t.slice(n.length)||"/",m={path:c.relativePath,caseSensitive:c.caseSensitive,end:d},h=c.matcher&&c.compiledParams?p3(m,u,c.matcher,c.compiledParams):lf(m,u),p=c.route;if(!h&&d&&a&&!o[o.length-1].route.index&&(h=lf({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},u)),!h)return null;
50Object.assign(r,h.params),i.push({params:r,pathname:kr([n,h.pathname]),pathnameBase:iM(kr([n,h.pathnameBase])),route:p}),h.pathnameBase!=="/"&&(n=kr([n,h.pathnameBase]))}return i}function lf(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[a,o]=h3(e.path,e.caseSensitive,e.end);return p3(e,t,a,o)}function p3(e,t,a,o){let r=t.match(a);if(!r)return null;let n=r[0],i=Ec(n,1),l=r.slice(1);return{params:o.reduce((d,{paramName:u,isOptional:m},h)=>{if(u==="*"){let f=l[h]||"";i=Ec(n.slice(0,n.length-f.length),1)}const p=l[h];return m&&!p?d[u]=void 0:d[u]=(p||"").replace(/%2F/g,"/"),d},{}),pathname:n,pathnameBase:i,pattern:e}}function h3(e,t=!1,a=!0){Qo(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let o=[],r="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,l,c,d,u)=>{if(o.push({paramName:l,isOptional:c!=null}),c){let m=u.charAt(d+i.length);return m&&m!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(o.push({paramName:"*"}),r+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?r+="\\/*$":e!==""&&e!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,t?void 0:"i"),o]}function rM(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Qo(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function $n(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let a=t.endsWith("/")?t.length-1:t.length,o=e.charAt(a);return o&&o!=="/"?null:e.slice(a)||"/"}function nM(e,t="/"){let{pathname:a,search:o="",hash:r=""}=typeof e=="string"?Yc(e):e,n;return a?(a=f3(a),a.startsWith("/")||a.startsWith("\\")?n=uP(a.substring(1),"/"):n=uP(a,t)):n=t,{pathname:n,search:lM(o),hash:cM(r)}}function uP(e,t){let a=Ec(t).split("/");return e.split("/").forEach(r=>{r===".."?a.length>1&&a.pop():r!=="."&&a.push(r)}),a.length>1?a.join("/"):"/"}function Z0(e,t,a,o){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${a}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function sM(e){return e.filter((t,a)=>a===0||t.route.path&&t.route.path.length>0)}function w1(e){let t=sM(e);return t.map((a,o)=>o===t.length-1?a.pathname:a.pathnameBase)}function yg(e,t,a,o=!1){let r;typeof e=="string"?r=Yc(e):(r={...e},_t(!r.pathname||!r.pathname.includes("?"),Z0("?","pathname","search",r)),_t(!r.pathname||!r.pathname.includes("#"),Z0("#","pathname","hash",r)),_t(!r.search||!r.search.includes("#"),Z0("#","search","hash",r)));let n=e===""||r.pathname==="",i=n?"/":r.pathname,l;if(i==null)l=a;else{let m=t.length-1;if(!o&&i.startsWith("..")){let h=i.split("/");for(;h[0]==="..";)h.shift(),m-=1;r.pathname=h.join("/")}l=m>=0?t[m]:"/"}let c=nM(r,l),d=i&&i!=="/"&&i.endsWith("/"),u=(n||i===".")&&a.endsWith("/");return!c.pathname.endsWith("/")&&(d||u)&&(c.pathname+="/"),c}var f3=e=>e.replace(/[\\/]{2,}/g,"/"),kr=e=>f3(e.join("/"));function Ec(e,t=0){let a=e.length;for(;a>t&&e.charCodeAt(a-1)===47;)a--;return a===e.length?e:e.slice(0,a)}var iM=e=>Ec(e).replace(/^\/*/,"/"),lM=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,cM=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,dM=class{constructor(e,t,a,o=!1){this.status=e,this.statusText=t||"",this.internal=o,a instanceof Error?(this.data=a.toString(),this.error=a):this.data=a}};function uM(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function mM(e){let t=e.map(a=>a.route.path).filter(Boolean);return kr(t)||"/"}var g3=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function v3(e,t){let a=e;if(typeof a!="string"||!k1.test(a))return{absoluteURL:void 0,isExternal:!1,to:a};let o=a,r=!1;if(g3)try{let n=new URL(window.location.href),i=c3.test(a)?new URL(VI(a,n.protocol)):new URL(a),l=$n(i.pathname,t);i.origin===n.origin&&l!=null?a=l+i.search+i.hash:r=!0}catch{Qo(!1,`<Link to="${a}">
50 contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:o,isExternal:r,to:a}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var mP=new URL("http://localhost");function C1(e){if(e.createURL)return e.createURL("/");try{return new URL(e.createHref("/"),mP)}catch{return mP}}function ev(e,t){return e.origin===t.origin&&(e.origin!=="null"||e.protocol===t.protocol&&e.host===t.host)}function pM(e,t){if(e.startsWith("//"))return!0;let a=t.protocol.toLowerCase();return e.toLowerCase().startsWith(a)?t.host===""||e.slice(a.length).startsWith("//"):!1}function P1(e,t,a,o){let r=null;try{r=e==null?null:new URL(e,a)}catch{}let n=new URL(t,a),i=r!=null&&!ev(r,a),l=!ev(n,a);if(o==="reject"){if(i||l)throw new Error("External navigation is not allowed")}else if(l&&(r==null||!pM(e,r)||!ev(r,n)))throw new Error("External navigation is not allowed")}var x3=["POST","PUT","PATCH","DELETE"];new Set(x3);var hM=["GET",...x3];new Set(hM);var fM=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function gM(e){try{return fM.includes(new URL(e).protocol)}catch{return!1}}var Zc=x.createContext(null);Zc.displayName="DataRouter";var kg=x.createContext(null);kg.displayName="DataRouterState";var b3=x.createContext(!1);function vM(){return x.useContext(b3)}var y3=x.createContext({isTransitioning:!1});y3.displayName="ViewTransition";var xM=x.createContext(new Map);xM.displayName="Fetchers";var bM=x.createContext(null);bM.displayName="Await";var No=x.createContext(null);No.displayName="Navigation";var bm=x.createContext(null);bm.displayName="Location";var Wo=x.createContext({outlet:null,matches:[],isDataRoute:!1});Wo.displayName="Route";var S1=x.createContext(null);S1.displayName="RouteError";var k3="REACT_ROUTER_ERROR",yM="REDIRECT",kM="ROUTE_ERROR_RESPONSE";function wM(e){if(e.startsWith(`${k3}:${yM}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function CM(e){if(e.startsWith(`${k3}:${kM}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new dM(t.status,t.statusText,t.data)}catch{}}function PM(e,{relative:t}={}){_t(ed(),"useHref() may be used only in the context of a <Router> component.");let{basename:a,navigator:o}=x.useContext(No),{hash:r,pathname:n,search:i}=ym(e,{relative:t}),l=n;return a!=="/"&&(l=n==="/"?a:kr([a,n])),o.createHref({pathname:l,search:i,hash:r})}function ed(){return x.useContext(bm)!=null}function Xt(){return _t(ed(),"useLocation() may be used only in the context of a <Router> component."),x.useContext(bm).location}var w3="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function C3(e){x.useContext(No).static||x.useLayoutEffect(e)}function Nr(){let{isDataRoute:e}=x.useContext(Wo);return e?IM():SM()}function SM(){_t(ed(),"useNavigate() may be used only in the context of a <Router> component.");let e=x.useContext(Zc),{basename:t,navigator:a}=x.useContext(No),{matches:o}=x.useContext(Wo),{pathname:r}=Xt(),n=JSON.stringify(w1(o)),i=x.useRef(!1);return C3(()=>{i.current=!0}),x.useCallback((c,d={})=>{if(Qo(i.current,w3),!i.current)return;if(typeof c=="number"){a.go(c);return}let u=yg(c,JSON.parse(n),r,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:kr([t,u.pathname])),P1(typeof c=="string"?c:Ui(c),a.createHref(u),C1(a),"reject"),(d.replace?a.replace:a.push)(u,d.state,d)},[t,a,n,r,e])}var P3=x.createContext(null);function Fge(){return x.useContext(P3)}function S3(e){let t=x.useContext(Wo).outlet;return x.useMemo(()=>t&&x.createElement(P3.Provider,{value:e},t),[t,e])}function on(){let{matches:e}=x.useContext(Wo),t=e[e.length-1];return(t==null?void 0:t.params)??{}}function ym(e,{relative:t}={}){let{matches:a}=x.useContext(Wo),{pathname:o}=Xt(),r=JSON.stringify(w1(a));return x.useMemo(()=>yg(e,JSON.parse(r),o,t==="path"),[e,r,o,t])}function RM(e,t){return R3(e,t)}function R3(e,t,a){var b;_t(ed(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=x.useContext(No),{matches:r}=x.useContext(Wo),n=r[r.length-1],i=n?n.params:{},l=n?n.pathname:"/",c=n?n.pathnameBase:"/",d=n&&n.route;{let v=d&&d.path||"";N3(l,!d||v.endsWith("*")||v.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${l}" (under <Route path="${v}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. 51 52Please change the parent <Route path="${v}"> to <Route path="${v==="/"?"*":`${v}/*`}">.`)}let u=Xt(),m;if(t){let v=typeof t=="string"?Yc(t):t;_t(c==="/"||((b=v.pathname)==null?void 0:b.startsWith(c)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${v.pathname}" was given in the \`location\` prop.`),m=v}else m=u;let h=m.pathname||"/",p=h;if(c!=="/"){let v=c.replace(/^\//,"").split("/");p="/"+h.replace(/^\//,"").split("/").slice(v.length).join("/")}let f=a&&a.state.matches.length?a.state.matches.map(v=>Object.assign(v,{route:a.manifest[v.route.id]||v.route})):d3(e,{pathname:p});Qo(d||f!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),Qo(f==null||f[f.length-1].route.element!==void 0||f[f.length-1].route.Component!==void 0||f[f.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let g=_M(f&&f.map(v=>Object.assign({},v,{params:Object.assign({},i,v.params),pathname:kr([c,o.encodeLocation?o.encodeLocation(v.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:v.pathname]),pathnameBase:v.pathnameBase==="/"?c:kr([c,o.encodeLocation?o.encodeLocation(v.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:v.pathnameBase])})),r,a);return t&&g?x.createElement(bm.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...m},navigationType:"POP"}},g):g}function jM(){let e=DM(),t=uM(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),a=e instanceof Error?e.stack:null,o="rgba(200,200,200, 0.5)",r={padding:"0.5rem",backgroundColor:o},n={padding:"2px 4px",backgroundColor:o},i=null;return console.error("Error handled by React Router default ErrorBoundary:",e),i=x.createElement(x.Fragment,null,x.createElement("p",null,"ð¿ Hey developer ð"),x.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",x.createElement("code",{style:n},"ErrorBoundary")," or"," ",x.createElement("code",{style:n},"errorElement")," prop on your route.")),x.createElement(x.Fragment,null,x.createElement("h2",null,"Unexpected Application
52Error!"),x.createElement("h3",{style:{fontStyle:"italic"}},t),a?x.createElement("pre",{style:r},a):null,i)}var NM=x.createElement(jM,null),j3=class extends x.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const a=CM(e.digest);a&&(e=a)}let t=e!==void 0?x.createElement(Wo.Provider,{value:this.props.routeContext},x.createElement(S1.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?x.createElement(AM,{error:e},t):t}};j3.contextType=b3;var tv=new WeakMap;function AM({children:e,error:t}){let{basename:a,navigator:o}=x.useContext(No);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let r=wM(t.digest);if(r){let n=tv.get(t);if(n)throw n;let i=v3(r.location,a),l=i.absoluteURL||i.to;if(P1(r.location,l,C1(o),"allow-explicit"),gM(l))throw new Error("Invalid redirect location");if(g3&&!tv.get(t))if(i.isExternal||r.reloadDocument)window.location.href=l;else{const c=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:r.replace}));throw tv.set(t,c),c}return x.createElement("meta",{httpEquiv:"refresh",content:`0;url=${l}`})}}return e}function EM({routeContext:e,match:t,children:a}){let o=x.useContext(Zc);return o&&o.static&&o.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=t.route.id),x.createElement(Wo.Provider,{value:e},a)}function _M(e,t=[],a){let o=a==null?void 0:a.state;if(e==null){if(!o)return null;if(o.errors)e=o.matches;else if(t.length===0&&!o.initialized&&o.matches.length>0)e=o.matches;else return null}let r=e,n=o==null?void 0:o.errors;if(n!=null){let u=r.findIndex(m=>m.route.id&&(n==null?void 0:n[m.route.id])!==void 0);_t(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(n).join(",")}`),r=r.slice(0,Math.min(r.length,u+1))}let i=!1,l=-1;if(a&&o){i=o.renderFallback;for(let u=0;u<r.length;u++){let m=r[u];if((m.route.HydrateFallback||m.route.hydrateFallbackElement)&&(l=u),m.route.id){let{loaderData:h,errors:p}=o,f=m.route.loader&&!h.hasOwnProperty(m.route.id)&&(!p||p[m.route.id]===void 0);if(m.route.lazy||f){a.isStatic&&(i=!0),l>=0?r=r.slice(0,l+1):r=[r[0]];break}}}}let c=a==null?void 0:a.onError,d=o&&c?(u,m)=>{var h,p;c(u,{location:o.location,params:((p=(h=o.matches)==null?void 0:h[0])==null?void 0:p.params)??{},pattern:mM(o.matches),errorInfo:m})}:void 0;return r.reduceRight((u,m,h)=>{let p,f=!1,g=null,b=null;o&&(p=n&&m.route.id?n[m.route.id]:void 0,g=m.route.errorElement||NM,i&&(l<0&&h===0?(N3("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,b=null):l===h&&(f=!0,b=m.route.hydrateFallbackElement||null)));let v=t.concat(r.slice(0,h+1)),y=()=>{let k;return p?k=g:f?k=b:m.route.Component?k=x.createElement(m.route.Component,null):m.route.element?k=m.route.element:k=u,x.createElement(EM,{match:m,routeContext:{outlet:u,matches:v,isDataRoute:o!=null},children:k})};return o&&(m.route.ErrorBoundary||m.route.errorElement||h===0)?x.createElement(j3,{location:o.location,revalidation:o.revalidation,component:g,error:p,children:y(),routeC
52ontext:{outlet:null,matches:v,isDataRoute:!0},onError:d}):y()},null)}function R1(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function TM(e){let t=x.useContext(Zc);return _t(t,R1(e)),t}function $M(e){let t=x.useContext(kg);return _t(t,R1(e)),t}function OM(e){let t=x.useContext(Wo);return _t(t,R1(e)),t}function j1(e){let t=OM(e),a=t.matches[t.matches.length-1];return _t(a.route.id,`${e} can only be used on routes that contain a unique "id"`),a.route.id}function qM(){return j1("useRouteId")}function DM(){var o;let e=x.useContext(S1),t=$M("useRouteError"),a=j1("useRouteError");return e!==void 0?e:(o=t.errors)==null?void 0:o[a]}function IM(){let{router:e}=TM("useNavigate"),t=j1("useNavigate"),a=x.useRef(!1);return C3(()=>{a.current=!0}),x.useCallback(async(r,n={})=>{Qo(a.current,w3),a.current&&(typeof r=="number"?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...n}))},[e,t])}var pP={};function N3(e,t,a){!t&&!pP[e]&&(pP[e]=!0,Qo(!1,a))}x.memo(MM);function MM({routes:e,manifest:t,future:a,state:o,isStatic:r,onError:n}){return R3(e,void 0,{manifest:t,state:o,isStatic:r,onError:n,future:a})}function fo({to:e,replace:t,state:a,relative:o}){_t(ed(),"<Navigate> may be used only in the context of a <Router> component.");let{static:r,navigator:n}=x.useContext(No);Qo(!r,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:i}=x.useContext(Wo),{pathname:l}=Xt(),c=Nr(),d=yg(e,w1(i),l,o==="path");P1(typeof e=="string"?e:Ui(e),n.createHref(d),C1(n),"reject");let u=JSON.stringify(d);return x.useEffect(()=>{c(JSON.parse(u),{replace:t,state:a,relative:o})},[c,u,o,t,a]),null}function Uge(e){return S3(e.context)}function ce(e){_t(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function LM({basename:e="/",children:t=null,location:a,navigationType:o="POP",navigator:r,static:n=!1,useTransitions:i}){_t(!ed(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),c=x.useMemo(()=>({basename:l,navigator:r,static:n,useTransitions:i,future:{}}),[l,r,n,i]);typeof a=="string"&&(a=Yc(a));let{pathname:d="/",search:u="",hash:m="",state:h=null,key:p="default",mask:f}=a,g=x.useMemo(()=>{let b=$n(d,l);return b==null?null:{location:{pathname:b,search:u,hash:m,state:h,key:p,mask:f},navigationType:o}},[l,d,u,m,h,p,o,f]);return Qo(g!=null,`<Router basename="${l}"> is not able to match the URL "${d}${u}${m}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:x.createElement(No.Provider,{value:c},x.createElement(bm.Provider,{children:t,value:g}))}function BM({children:e,location:t}){return RM(_b(e),t)}function _b(e,t=[]){let a=[];return x.Children.forEach(e,(o,r)=>{if(!x.isValidElement(o))return;let n=[...t,r];if(o.type===x.Fragment){a.push.apply(a,_b(o.props.children,n));return}_t(o.type===ce,`[${typeof o.type=="string"?o.type:o.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),_t(!o.props.index||!o.props.children,"An index route cannot have child routes.");let i={id:o.props.id||n.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(i.children=_b(o.props.children,n)),a.push(i)}),a}var nh="get",sh="application/x-www-form-urlencoded";function wg(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}
52function VM(e){return wg(e)&&e.tagName.toLowerCase()==="button"}function FM(e){return wg(e)&&e.tagName.toLowerCase()==="form"}function UM(e){return wg(e)&&e.tagName.toLowerCase()==="input"}function GM(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function zM(e,t){return e.button===0&&(!t||t==="_self")&&!GM(e)}function Tb(e=""){return new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,a)=>{let o=e[a];return t.concat(Array.isArray(o)?o.map(r=>[a,r]):[[a,o]])},[]))}function HM(e,t){let a=Tb(e);return t&&t.forEach((o,r)=>{a.has(r)||t.getAll(r).forEach(n=>{a.append(r,n)})}),a}var rp=null;function KM(){if(rp===null)try{new FormData(document.createElement("form"),0),rp=!1}catch{rp=!0}return rp}var QM=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function av(e){return e!=null&&!QM.has(e)?(Qo(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${sh}"`),null):e}function WM(e,t){let a,o,r,n,i;if(FM(e)){let l=e.getAttribute("action");o=l?$n(l,t):null,a=e.getAttribute("method")||nh,r=av(e.getAttribute("enctype"))||sh,n=new FormData(e)}else if(VM(e)||UM(e)&&(e.type==="submit"||e.type==="image")){let l=e.form;if(l==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let c=e.getAttribute("formaction")||l.getAttribute("action");if(o=c?$n(c,t):null,a=e.getAttribute("formmethod")||l.getAttribute("method")||nh,r=av(e.getAttribute("formenctype"))||av(l.getAttribute("enctype"))||sh,n=new FormData(l,e),!KM()){let{name:d,type:u,value:m}=e;if(u==="image"){let h=d?`${d}.`:"";n.append(`${h}x`,"0"),n.append(`${h}y`,"0")}else d&&n.append(d,m)}}else{if(wg(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');a=nh,o=null,r=sh,i=e}return n&&r==="text/plain"&&(i=n,n=void 0),{action:o,method:a.toLowerCase(),encType:r,formData:n,body:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function N1(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function A3(e,t,a,o){let r=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return a?r.pathname.endsWith("/")?r.pathname=`${r.pathname}_.${o}`:r.pathname=`${r.pathname}.${o}`:r.pathname==="/"?r.pathname=`_root.${o}`:t&&$n(r.pathname,t)==="/"?r.pathname=`${Ec(t)}/_root.${o}`:r.pathname=`${Ec(r.pathname)}.${o}`,r}async function JM(e,t){if(e.id in t)return t[e.id];try{let a=await import(e.module);return t[e.id]=a,a}catch(a){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(a),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function XM(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function YM(e,t,a){let o=await Promise.all(e.map(async r=>{let n=t.routes[r.route.id];if(n){let i=await JM(n,a);return i.links?i.links():[]}return[]}));return a8(o.flat(1).filter(XM).filter(r=>r.rel==="stylesheet"||r.rel==="preload").map(r=>r.rel==="stylesheet"?{...r,rel:"prefetch",as:"style"}:{...r,rel:"prefetch"}))}function hP(e,t,a,o,r,n){let i=(c,d)=>a[d]?c.route.id!==a[d].route.id:!0,l=(c,d)=>{var u;return a[d].pathname!==c.pathname||((u=a[d].route.path)==null?void 0:u.endsWith("*"))&&a[d].params["*"]!==c.params["*"]};return n==="assets"?t.filter((c,d)=>i(c,d)||l(c,d)):n==="data"?t.filter((c,d)=>{var m;let u=o.routes[c.route.id];if(!u||!u.hasLoader)return!1;if(i(c,d)||l(c,d))return!0;if(c.route.shouldRevalidate){let h=c.route.shouldRevalidate({currentUrl:new URL(r.pathname+r.search+r.hash,window.origin),currentParams:((m=a[0])==null?void 0:m.params)||{},nextUrl:new URL(e,window.origin),nextParams:c.params,defaultShouldRevalidate:!0});if(typeof h=="boolean")return h}return!0}):[]}function ZM(e,t,{includeHydrateFallback:a}={}){return e8(e.map(o=>{let r=t.routes[o.route.id];if(!r)return[];let n=[r.module];return r.clientActionModule&&(n=n.concat(r.clientActionModule)),r.clientLoaderModule&&(n=n.concat(r.clientLoaderModule)),a&&r.hydrateFallbackModule&&(n=n.concat(r.hydrateFallbackModule)),r.imports&&(n=n.concat(r.imports)),n}).flat(1))}function e8(e){return[...new Set(e)]}function t8(e){let t={},a=Object.keys(e).sort();for(let o of a)t[o]=e[o];return t}function a8(e,t){let a=new Set;return new Set(t),e.reduce((o,r)=>{let n=JSON.stringify(t8(r));return a.has(n)||(a.add(n),o.push({key:n,link:r})),o},[])}function A1(){let e=x.useContext(Zc);return N1(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function o8(){let e=x.useContext(kg);return N1(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var E1=x.createContext(void 0);E1.displayName="FrameworkContext";function Cg(){let e=x.useContext(E1);return N1(e,"You must render this element inside a <HydratedRouter> element"),e}
52function r8(e,t){let a=x.useContext(E1),[o,r]=x.useState(!1),[n,i]=x.useState(!1),{onFocus:l,onBlur:c,onMouseEnter:d,onMouseLeave:u,onTouchStart:m}=t,h=x.useRef(null);x.useEffect(()=>{if(e==="render"&&i(!0),e==="viewport"){let g=v=>{v.forEach(y=>{i(y.isIntersecting)})},b=new IntersectionObserver(g,{threshold:.5});return h.current&&b.observe(h.current),()=>{b.disconnect()}}},[e]),x.useEffect(()=>{if(o){let g=setTimeout(()=>{i(!0)},100);return()=>{clearTimeout(g)}}},[o]);let p=()=>{r(!0)},f=()=>{r(!1),i(!1)};return a?e!=="intent"?[n,h,{}]:[n,h,{onFocus:wd(l,p),onBlur:wd(c,f),onMouseEnter:wd(d,p),onMouseLeave:wd(u,f),onTouchStart:wd(m,p)}]:[!1,h,{}]}function wd(e,t){return a=>{e&&e(a),a.defaultPrevented||t(a)}}function n8({page:e,...t}){let a=vM(),{nonce:o}=Cg(),{router:r}=A1(),n=x.useMemo(()=>d3(r.routes,e,r.basename),[r.routes,e,r.basename]);return n?(t.nonce==null&&o&&(t={...t,nonce:o}),a?x.createElement(i8,{page:e,matches:n,...t}):x.createElement(l8,{page:e,matches:n,...t})):null}function s8(e){let{manifest:t,routeModules:a}=Cg(),[o,r]=x.useState([]);return x.useEffect(()=>{let n=!1;return YM(e,t,a).then(i=>{n||r(i)}),()=>{n=!0}},[e,t,a]),o}function i8({page:e,matches:t,...a}){let o=Xt(),{future:r}=Cg(),{basename:n}=A1(),i=x.useMemo(()=>{if(e===o.pathname+o.search+o.hash)return[];let l=A3(e,n,r.v8_trailingSlashAwareDataRequests,"rsc"),c=!1,d=[];for(let u of t)typeof u.route.shouldRevalidate=="function"?c=!0:d.push(u.route.id);return c&&d.length>0&&l.searchParams.set("_routes",d.join(",")),[l.pathname+l.search]},[n,r.v8_trailingSlashAwareDataRequests,e,o,t]);return x.createElement(x.Fragment,null,i.map(l=>x.createElement("link",{key:l,rel:"prefetch",as:"fetch",href:l,...a})))}function l8({page:e,matches:t,...a}){let o=Xt(),{future:r,manifest:n,routeModules:i}=Cg(),{basename:l}=A1(),{loaderData:c,matches:d}=o8(),u=x.useMemo(()=>hP(e,t,d,n,o,"data"),[e,t,d,n,o]),m=x.useMemo(()=>hP(e,t,d,n,o,"assets"),[e,t,d,n,o]),h=x.useMemo(()=>{if(e===o.pathname+o.search+o.hash)return[];let g=new Set,b=!1;if(t.forEach(y=>{var w;let k=n.routes[y.route.id];!k||!k.hasLoader||(!u.some(R=>R.route.id===y.route.id)&&y.route.id in c&&((w=i[y.route.id])!=null&&w.shouldRevalidate)||k.hasClientLoader?b=!0:g.add(y.route.id))}),g.size===0)return[];let v=A3(e,l,r.v8_trailingSlashAwareDataRequests,"data");return b&&g.size>0&&v.searchParams.set("_routes",t.filter(y=>g.has(y.route.id)).map(y=>y.route.id).join(",")),[v.pathname+v.search]},[l,r.v8_trailingSlashAwareDataRequests,c,o,n,u,t,e,i]),p=x.useMemo(()=>ZM(m,n),[m,n]),f=s8(m);return x.createElement(x.Fragment,null,h.map(g=>x.createElement("link",{key:g,rel:"prefetch",as:"fetch",href:g,...a})),p.map(g=>x.createElement("link",{key:g,rel:"modulepreload",href:g,...a})),f.map(({key:g,link:b})=>x.createElement("link",{key:g,nonce:a.nonce,...b,crossOrigin:b.crossOrigin??a.crossOrigin})))}function c8(...e){return t=>{e.forEach(a=>{typeof a=="function"?a(t):a!=null&&(a.current=t)})}}var d8=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{d8&&(window.__reactRouterVersion="7.18.4")}catch{}function u8({basename:e,children:t,useTransitions:a,window:o}){let r=x.useRef();r.current==null&&(r.current=FI({window:o,v5Compat:!0}));let n=r.current,[i,l]=x.useState({action:n.action,location:n.location}),c=x.useCallback(d=>{a===!1?l(d):x.startTransition(()=>l(d))},[a]);return x.useLayoutEffect(()=>n.listen(c),[n,c]),x.createElement(LM,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:a})}var G=x.forwardRef(function({onClick:t,discover:a="render",prefetch:o="none",relative:r,reloadDocument:n,replace:i,mask:l,state:c,target:d,to:u,preventScrollReset:m,viewTransition:h,defaultShouldRevalidate:p,...f},g){let{basename:b,navigator:v,useTransitions:y}=x.useContext(No),k=typeof u=="string"&&k1.test(u),w=v3(u,b);u=w.to;let R=PM(u,{relative:r}),C=Xt(),P=null;if(l){let D=yg(l,[],C.mask?C.mask.pathname:"/",!0);b!=="/"&&(D.pathname=D.pathname==="/"?b:kr([b,D.pathname])),P=v.createHref(D)}let[N,E,A]=r8(o,f),$=h8(u,{replace:i,mask:l,state:c,target:d,preventScrollReset:m,relative:r,viewTransition:h,defaultShouldRevalidate:p,useTransitions:y});function O(D){t&&t(D),D.defaultPrevented||$(D)}let V=!(w.isExternal||n),T=x.createElement("a",{...f,...A,href:(V?P:void 0)||w.absoluteURL||R,onClick:V?O:t,ref:c8(g,E),target:d,"data-discover":!k&&a==="render"?"true":void 0});return N&&!k?x.createElement(x.Fragment,null,T,x.createElement(n8,{page:R})):T});G.displayName="Link";var $b=x.forwardRef(function({"aria-current":t="page",caseSensitive:a=!1,className:o="",end:r=!1,style:n,to:i,viewTransition:l,children:c,...d},u){let m=ym(i,{relative:d.relative}),h=Xt(),p=x.useContext(kg),{navigator:f,basename:g}=x.useContext(No),b=p!=null&&b8(m)&&l===!0,v=f.encodeLocation?f.encodeLocation(m).pathname:m.pathname,y=h.pathname,k=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;a||(y=y.toLowerCase(),k=k?k.toLowerCase():null,v=v.toLowerCase()),k&&g&&(k=$n(k,g)||k);const w=v!=="/"&&v.endsWith("/")?v.length-1:v.length;let R=y===v||!r&&y.startsWith(v)&&y.charAt(w)==="/",C=k!=null&&(k===v||!r&&k.startsWith(v)&&k.charAt(v.length)==="/"),P={isActive:R,isPending:C,isTransitioning:b},N=R?t:void 0,E;typeof o=="function"?E=o(P):E=[o,R?"active":null,C?"pending":null,b?"transitioning":null].filter(
52Boolean).join(" ");let A=typeof n=="function"?n(P):n;return x.createElement(G,{...d,"aria-current":N,className:E,ref:u,style:A,to:i,viewTransition:l},typeof c=="function"?c(P):c)});$b.displayName="NavLink";var m8=x.forwardRef(({discover:e="render",fetcherKey:t,navigate:a,reloadDocument:o,replace:r,state:n,method:i=nh,action:l,onSubmit:c,relative:d,preventScrollReset:u,viewTransition:m,defaultShouldRevalidate:h,...p},f)=>{let{useTransitions:g}=x.useContext(No),b=v8(),v=x8(l,{relative:d}),y=i.toLowerCase()==="get"?"get":"post",k=typeof l=="string"&&k1.test(l),w=R=>{if(c&&c(R),R.defaultPrevented)return;R.preventDefault();let C=R.nativeEvent.submitter,P=(C==null?void 0:C.getAttribute("formmethod"))||i,N=()=>b(C||R.currentTarget,{fetcherKey:t,method:P,navigate:a,replace:r,state:n,relative:d,preventScrollReset:u,viewTransition:m,defaultShouldRevalidate:h});g&&a!==!1?x.startTransition(()=>N()):N()};return x.createElement("form",{ref:f,method:y,action:v,onSubmit:o?c:w,...p,"data-discover":!k&&e==="render"?"true":void 0})});m8.displayName="Form";function p8(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function E3(e){let t=x.useContext(Zc);return _t(t,p8(e)),t}function h8(e,{target:t,replace:a,mask:o,state:r,preventScrollReset:n,relative:i,viewTransition:l,defaultShouldRevalidate:c,useTransitions:d}={}){let u=Nr(),m=Xt(),h=ym(e,{relative:i});return x.useCallback(p=>{if(zM(p,t)){p.preventDefault();let f=a!==void 0?a:Ui(m)===Ui(h),g=()=>u(e,{replace:f,mask:o,state:r,preventScrollReset:n,relative:i,viewTransition:l,defaultShouldRevalidate:c});d?x.startTransition(()=>g()):g()}},[m,u,h,a,o,r,t,e,n,i,l,c,d])}function Ao(e){Qo(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=x.useRef(Tb(e)),a=x.useRef(!1),o=Xt(),r=x.useMemo(()=>HM(o.search,a.current?null:t.current),[o.search]),n=Nr(),i=x.useCallback((l,c)=>{const d=Tb(typeof l=="function"?l(new URLSearchParams(r)):l);a.current=!0,n("?"+d,c)},[n,r]);return[r,i]}var f8=0,g8=()=>`__${String(++f8)}__`;function v8(){let{router:e}=E3("useSubmit"),{basename:t}=x.useContext(No),a=qM(),o=e.fetch,r=e.navigate;return x.useCallback(async(n,i={})=>{let{action:l,method:c,encType:d,formData:u,body:m}=WM(n,t);if(i.navigate===!1){let h=i.fetcherKey||g8();await o(h,a,i.action||l,{defaultShouldRevalidate:i.defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:u,body:m,formMethod:i.method||c,formEncType:i.encType||d,flushSync:i.flushSync})}else await r(i.action||l,{defaultShouldRevalidate:i.defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:u,body:m,formMethod:i.method||c,formEncType:i.encType||d,replace:i.replace,state:i.state,fromRouteId:a,flushSync:i.flushSync,viewTransition:i.viewTransition})},[o,r,t,a])}function x8(e,{relative:t}={}){let{basename:a}=x.useContext(No),o=x.useContext(Wo);_t(o,"useFormAction must be used inside a RouteContext");let[r]=o.matches.slice(-1),n={...ym(e||".",{relative:t})},i=Xt();if(e==null){n.search=i.search;let l=new URLSearchParams(n.search),c=l.getAll("index");if(c.some(u=>u==="")){l.delete("index"),c.filter(m=>m).forEach(m=>l.append("index",m));let u=l.toString();n.search=u?`?${u}
vendor: 14,704 bytes, line 52
52`:""}}return(!e||e===".")&&r.route.index&&(n.search=n.search?n.search.replace(/^\?/,"?index&"):"?index"),a!=="/"&&(n.pathname=n.pathname==="/"?a:kr([a,n.pathname])),Ui(n)}function b8(e,{relative:t}={}){let a=x.useContext(y3);_t(a!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:o}=E3("useViewTransitionState"),r=ym(e,{relative:t});if(!a.isTransitioning)return!1;let n=$n(a.currentLocation.pathname,o)||a.currentLocation.pathname,i=$n(a.nextLocation.pathname,o)||a.nextLocation.pathname;return lf(r.pathname,i)!=null||lf(r.pathname,n)!=null}const y8=["/escolher","/auth","/auth/parceiros","/minhas-reservas","/checkout","/confirmacao","/avaliar","/reset-password","/viajante","/viajante/sair","/multipark","/aerovalet","/valetina"];function k8(e){const t=e.length>1?e.replace(/\/$/,""):e;return y8.includes(t)||t.startsWith("/assinar/")||t.startsWith("/minhas-reservas/")||t==="/admin"||t.startsWith("/admin/")}function w8(){const{pathname:e}=Xt();return k8(e)?s.jsx(y1,{children:s.jsx("meta",{name:"robots",content:"noindex, follow"})}):null}const C8=1,P8=1e6;let ov=0;function S8(){return ov=(ov+1)%Number.MAX_SAFE_INTEGER,ov.toString()}const rv=new Map,fP=e=>{if(rv.has(e))return;const t=setTimeout(()=>{rv.delete(e),ru({type:"REMOVE_TOAST",toastId:e})},P8);rv.set(e,t)},R8=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,C8)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(a=>a.id===t.toast.id?{...a,...t.toast}:a)};case"DISMISS_TOAST":{const{toastId:a}=t;return a?fP(a):e.toasts.forEach(o=>{fP(o.id)}),{...e,toasts:e.toasts.map(o=>o.id===a||a===void 0?{...o,open:!1}:o)}}case"REMOVE_TOAST":return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(a=>a.id!==t.toastId)}}},ih=[];let lh={toasts:[]};function ru(e){lh=R8(lh,e),ih.forEach(t=>{t(lh)})}function j8({...e}){const t=S8(),a=r=>ru({type:"UPDATE_TOAST",toast:{...r,id:t}}),o=()=>ru({type:"DISMISS_TOAST",toastId:t});return ru({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:r=>{r||o()}}}),{id:t,dismiss:o,update:a}}function N8(){const[e,t]=x.useState(lh);return x.useEffect(()=>(ih.push(t),()=>{const a=ih.indexOf(t);a>-1&&ih.splice(a,1)}),[e]),{...e,toast:j8,dismiss:a=>ru({type:"DISMISS_TOAST",toastId:a})}}function gt(e,t,{checkForDefaultPrevented:a=!0}={}){return function(r){if(e==null||e(r),a===!1||!r.defaultPrevented)return t==null?void 0:t(r)}}function gP(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function _3(...e){return t=>{let a=!1;const o=e.map(r=>{const n=gP(r,t);return!a&&typeof n=="function"&&(a=!0),n});if(a)return()=>{for(let r=0;r<o.length;r++){const n=o[r];typeof n=="function"?n():gP(e[r],null)}}}}function la(...e){return x.useCallback(_3(...e),e)}function A8(e,t){const a=x.createContext(t),o=n=>{const{children:i,...l}=n,c=x.useMemo(()=>l,Object.values(l));return s.jsx(a.Provider,{value:c,children:i})};o.displayName=e+"Provider";function r(n){const i=x.useContext(a);if(i)return i;if(t!==void 0)return t;throw new Error(`\`${n}\` must be used within \`${e}\``)}return[o,r]}function Ks(e,t=[]){let a=[];function o(n,i){const l=x.createContext(i),c=a.length;a=[...a,i];const d=m=>{var v;const{scope:h,children:p,...f}=m,g=((v=h==null?void 0:h[e])==null?void 0:v[c])||l,b=x.useMemo(()=>f,Object.values(f));return s.jsx(g.Provider,{value:b,children:p})};d.displayName=n+"Provider";function u(m,h){var g;const p=((g=h==null?void 0:h[e])==null?void 0:g[c])||l,f=x.useContext(p);if(f)return f;if(i!==void 0)return i;throw new Error(`\`${m}\` must be used within \`${n}\``)}return[d,u]}const r=()=>{const n=a.map(i=>x.createContext(i));return function(l){const c=(l==null?void 0:l[e])||n;return x.useMemo(()=>({[`__scope${e}`]:{...l,[e]:c}}),[l,c])}};return r.scopeName=e,[o,E8(r,...t)]}function E8(...e){const t=e[0];if(e.length===1)return t;const a=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(n){const i=o.reduce((l,{useScope:c,scopeName:d})=>{const m=c(n)[`__scope${d}`];return{...l,...m}},{});return x.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return a.scopeName=t.scopeName,a}function Ou(e){const t=T8(e),a=x.forwardRef((o,r)=>{const{children:n,...i}=o,l=x.Children.toArray(n),c=l.find(O8);if(c){const d=c.props.children,u=l.map(m=>m===c?x.Children.count(d)>1?x.Children.only(null):x.isValidElement(d)?d.props.children:null:m);return s.jsx(t,{...i,ref:r,children:x.isValidElement(d)?x.cloneElement(d,void 0,u):null})}return s.jsx(t,{...i,ref:r,children:n})});return a.displayName=`${e}.Slot`,a}var _8=Ou("Slot");function T8(e){const t=x.forwardRef((a,o)=>{const{children:r,...n}=a;if(x.isValidElement(r)){const i=D8(r),l=q8(n,r.props);return r.type!==x.Fragment&&(l.ref=o?_3(o,i):i),x.cloneElement(r,l)}return x.Children.count(r)>1?x.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var T3=Symbol("radix.slottable");function $8(e){const t=({children:a})=>s.jsx(s.Fragment,{children:a});return t.displayName=`${e}.Slottable`,t.__radixId=T3,t}function O8(e){return x.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===T3}function q8(e,t){const a={...t};for(const o in t){const r=e[o],n=t[o];/^on[A-Z]/.test(o)?r&&n?a[o]=(...l)=>{const c=n(...l);return r(...l),c}:r&&(a[o]=r):o==="style"?a[o]={...r,...n}:o==="className"&&(a[o]=[r,n].filter(Boolean).join(" "))}return{...e,...a}}function D8(e){var o,r;let t=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}function $3(e){const t=e+"CollectionProvider",[a,o]=Ks(t),[r,n]=a(t,{collectionRef:{current:null},itemMap:new Map}),i=g=>{const{scope:b,children:v}=g,y=Q.useRef(null),k=Q.useRef(new Map).current;return s.jsx(r,{scope:b,itemMap:k,collectionRef:y,children:v})};i.displayName=t;const l=e+"CollectionSlot",c=Ou(l),d=Q.forwardRef((g,b)=>{const{scope:v,children:y}=g,k=n(l,v),w=la(b,k.collectionRef);return s.jsx(c,{ref:w,children:y})});d.displayName=l;const u=e+"CollectionItemSlot",m="data-radix-collection-item",h=Ou(u),p=Q.forwardRef((g,b)=>{const{scope:v,children:y,...k}=g,w=Q.useRef(null),R=la(b,w),C=n(u,v);return Q.useEffect(()=>(C.itemMap.set(w,{ref:w,...k}),()=>void C.itemMap.delete(w))),s.jsx(h,{[m]:"",ref:R,children:y})});p.displayName=u;function f(g){const b=n(e+"CollectionConsumer",g);return Q.useCallback(()=>{const y=b.collectionRef.current;if(!y)return[];const k=Array.from(y.querySelectorAll(`[${m}]`));return Array.from(b.itemMap.values()).sort((C,P)=>k.indexOf(C.ref.current)-k.indexOf(P.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:i,Slot:d,ItemSlot:p},f,o]}var I8=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],yt=I8.reduce((e,t)=>{const a=Ou(`Primitive.${t}`),o=x.forwardRef((r,n)=>{const{asChild:i,...l}=r,c=i?a:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(c,{...l,ref:n})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function O3(e,t){e&&Xc.flushSync(()=>e.dispatchEvent(t))}function Yr(e){const t=x.useRef(e);return x.useEffect(()=>{t.current=e}),x.useMemo(()=>(...a)=>{var o;return(o=t.current)==null?void 0:o.call(t,...a)},[])}function M8(e,t=globalThis==null?void 0:globalThis.document){const a=Yr(e);x.useEffect(()=>{const o=r=>{r.key==="Escape"&&a(r)};return t.addEventListener("keydown",o,{capture:!0}),()=>t.removeEventListener("keydown",o,{capture:!0})},[a,t])}var L8="DismissableLayer",Ob="dismissableLayer.update",B8="dismissableLayer.pointerDownOutside",V8="dismissableLayer.focusOutside",vP,q3=x.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Pg=x.forwardRef((e,t)=>{const{disableOutsidePointerEvents:a=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:n,onInteractOutside:i,onDismiss:l,...c}=e,d=x.useContext(q3),[u,m]=x.useState(null),h=(u==null?void 0:u.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,p]=x.useState({}),f=la(t,P=>m(P)),g=Array.from(d.layers),[b]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),v=g.indexOf(b),y=u?g.indexOf(u):-1,k=d.layersWithOutsidePointerEventsDisabled.size>0,w=y>=v,R=U8(P=>{const N=P.target,E=[...d.branches].some(A=>A.contains(N));!w||E||(r==null||r(P),i==null||i(P),P.defaultPrevented||l==null||l())},h),C=G8(P=>{const N=P.target;[...d.branches].some(A=>A.contains(N))||(n==null||n(P),i==null||i(P),P.defaultPrevented||l==null||l())},h);return M8(P=>{y===d.layers.size-1&&(o==null||o(P),!P.defaultPrevented&&l&&(P.preventDefault(),l()))},h),x.useEffect(()=>{if(u)return a&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(vP=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(u)),d.layers.add(u),xP(),()=>{a&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=vP)}},[u,h,a,d]),x.useEffect(()=>()=>{u&&(d.layers.delete(u),d.layersWithOutsidePointerEventsDisabled.delete(u),xP())},[u,d]),x.useEffect(()=>{const P=()=>p({});return document.addEventListener(Ob,P),()=>document.removeEventListener(Ob,P)},[]),s.jsx(yt.div,{...c,ref:f,style:{pointerEvents:k?w?"auto":"none":void 0,...e.style},onFocusCapture:gt(e.onFocusCapture,C.onFocusCapture),onBlurCapture:gt(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:gt(e.onPointerDownCapture,R.onPointerDownCapture)})});Pg.displayName=L8;var F8="DismissableLayerBranch",D3=x.forwardRef((e,t)=>{const a=x.useContext(q3),o=x.useRef(null),r=la(t,o);return x.useEffect(()=>{const n=o.current;if(n)return a.branches.add(n),()=>{a.branches.delete(n)}},[a.branches]),s.jsx(yt.div,{...e,ref:r})});D3.displayName=F8;function U8(e,t=globalThis==null?void 0:globalThis.document){const a=Yr(e),o=x.useRef(!1),r=x.useRef(()=>{});return x.useEffect(()=>{const n=l=>{if(l.target&&!o.current){let c=function(){I3(B8,a,d,{discrete:!0})};const d={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=c,t.addEventListener("click",r.current,{once:!0})):c()}else t.removeEventListener("click",r.current);o.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",n)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",n),t.removeEventListener("click",r.current)}},[t,a]),{onPointerDownCapture:()=>o.current=!0}}function G8(e,t=globalThis==null?void 0:globalThis.document){const a=Yr(e),o=x.useRef(!1);return x.useEffect(()=>{const r=n=>{n.target&&!o.current&&I3(V8,a,{originalEvent:n},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,a]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function xP(){const e=new CustomEvent(Ob);document.dispatchEvent(e)}function I3(e,t,a,{discrete:o}){const r=a.originalEvent.target,n=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:a});t&&r.addEventListener(e,t,{once:!0}),o?O3(r,n):r.dispatchEvent(n)}var z8=Pg,H8=D3,Zr=globalThis!=null&&globalThis.document?x.useLayoutEffect:()=>{},K8="Portal",_1=x.forwardRef((e,t)=>{var l;const{container:a,...o}=e,[r,n]=x.useState(!1);Zr(()=>n(!0),[]);const i=a||r&&((l=globalThis==null?void 0:globalThis.document)==null?void 0:l.body);return i?e3.createPortal(s.jsx(yt.div,{...o,ref:t}),i):null});_1.displayName=K8;function Q8(e,t){return x.useReducer((a,o)=>t[a][o]??a,e)}var rl=e=>{const{present:t,children:a}=e,o=W8(t),r=typeof a=="function"?a({present:o.isPresent}):x.Children.only(a),n=la(o.ref,J8(r));return typeof a=="function"||o.isPresent?x.cloneElement(r,{ref:n}):null};rl.displayName="Presence";function W8(e){const[t,a]=x.useState(),o=x.useRef(null),r=x.useRef(e),n=x.useRef("none"),i=e?"mounted":"unmounted",[l,c]=Q8(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return x.useEffect(()=>{const d=np(o.current);n.current=l==="mounted"?d:"none"},[l]),Zr(()=>{const d=o.current,u=r.current;if(u!==e){const h=n.current,p=np(d);e?c("MOUNT"):p==="none"||(d==null?void 0:d.display)==="none"?c("UNMOUNT"):c(u&&h!==p?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,c]),Zr(()=>{if(t){let d;const u=t.ownerDocument.defaultView??window,m=p=>{const g=np(o.current).includes(p.animationName);if(p.target===t&&g&&(c("ANIMATION_END"),!r.current)){const b=t.style.animationFillMode;t.style.animationFillMode="forwards",d=u.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=b)})}},h=p=>{p.target===t&&(n.current=np(o.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{u.clearTimeout(d),t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else c("ANIMATION_END")},[t,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:x.useCallback(d=>{o.current=d?getComputedStyle(d):null,a(d)},[])}}function np(e){return(e==null?void 0:e.animationName)||"none"}function J8(e){var o,r;let t=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,a=t&&"isReactWarning"in t&&t.isReactWarning;return a?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,a=t&&"isReactWarning"in t&&t.isReactWarning,a?e.props.ref:e.props.ref||e.ref)}var X8=XA[" useInsertionEffect ".trim().toString()]||Zr;function td({prop:e,defaultProp:t,onChange:a=()=>{},caller:o}){const[r,n,i]=Y8({defaultProp:t,onChange:a}),l=e!==void 0,c=l?e:r;{const u=x.useRef(e!==void 0);x.useEffect(()=>{const m=u.current;m!==l&&console.warn(`${o} is changing from ${m?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=l},[l,o])}const d=x.useCallback(u=>{var m;if(l){const h=Z8(u)?u(e):u;h!==e&&((m=i.current)==null||m.call(i,h))}else n(u)},[l,e,n,i]);return[c,d]}function Y8({defaultProp:e,onChange:t}){const[a,o]=x.useState(e),r=x.useRef(a),n=x.useRef(t);return X8(()=>{n.current=t},[t]),x.useEffect(()=>{var i;r.current!==a&&((i=n.current)==null||i.call(n,a),r.current=a)},[a,r]),[a,o,n]}function Z8(e){return typeof e=="function"}var eL=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),tL="VisuallyHidden",Sg=x.forwardRef((e,t)=>
52s.jsx(yt.span,{...e,ref:t,style:{...eL,...e.style}}));Sg.displayName=tL;var aL=Sg,T1="ToastProvider",[$1,oL,rL]=$3("Toast"),[M3,Gge]=Ks("Toast",[rL]),[nL,Rg]=M3(T1),L3=e=>{const{__scopeToast:t,label:a="Notification",duration:o=5e3,swipeDirection:r="right",swipeThreshold:n=50,children:i}=e,[l,c]=x.useState(null),[d,u]=x.useState(0),m=x.useRef(!1),h=x.useRef(!1);return a.trim()||console.error(`Invalid prop \`label\` supplied to \`${T1}\`. Expected non-empty \`string\`.`),s.jsx($1.Provider,{scope:t,children:s.jsx(nL,{scope:t,label:a,duration:o,swipeDirection:r,swipeThreshold:n,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:x.useCallback(()=>u(p=>p+1),[]),onToastRemove:x.useCallback(()=>u(p=>p-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:h,children:i})})};L3.displayName=T1;var B3="ToastViewport",sL=["F8"],qb="toast.viewportPause",Db="toast.viewportResume",V3=x.forwardRef((e,t)=>{const{__scopeToast:a,hotkey:o=sL,label:r="Notifications ({hotkey})",...n}=e,i=Rg(B3,a),l=oL(a),c=x.useRef(null),d=x.useRef(null),u=x.useRef(null),m=x.useRef(null),h=la(t,m,i.onViewportChange),p=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),f=i.toastCount>0;x.useEffect(()=>{const b=v=>{var k;o.length!==0&&o.every(w=>v[w]||v.code===w)&&((k=m.current)==null||k.focus())};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[o]),x.useEffect(()=>{const b=c.current,v=m.current;if(f&&b&&v){const y=()=>{if(!i.isClosePausedRef.current){const C=new CustomEvent(qb);v.dispatchEvent(C),i.isClosePausedRef.current=!0}},k=()=>{if(i.isClosePausedRef.current){const C=new CustomEvent(Db);v.dispatchEvent(C),i.isClosePausedRef.current=!1}},w=C=>{!b.contains(C.relatedTarget)&&k()},R=()=>{b.contains(document.activeElement)||k()};return b.addEventListener("focusin",y),b.addEventListener("focusout",w),b.addEventListener("pointermove",y),b.addEventListener("pointerleave",R),window.addEventListener("blur",y),window.addEventListener("focus",k),()=>{b.removeEventListener("focusin",y),b.removeEventListener("focusout",w),b.removeEventListener("pointermove",y),b.removeEventListener("pointerleave",R),window.removeEventListener("blur",y),window.removeEventListener("focus",k)}}},[f,i.isClosePausedRef]);const g=x.useCallback(({tabbingDirection:b})=>{const y=l().map(k=>{const w=k.ref.current,R=[w,...bL(w)];return b==="forwards"?R:R.reverse()});return(b==="forwards"?y.reverse():y).flat()},[l]);return x.useEffect(()=>{const b=m.current;if(b){const v=y=>{var R,C,P;const k=y.altKey||y.ctrlKey||y.metaKey;if(y.key==="Tab"&&!k){const N=document.activeElement,E=y.shiftKey;if(y.target===b&&E){(R=d.current)==null||R.focus();return}const O=g({tabbingDirection:E?"backwards":"forwards"}),V=O.findIndex(T=>T===N);nv(O.slice(V+1))?y.preventDefault():E?(C=d.current)==null||C.focus():(P=u.current)==null||P.focus()}};return b.addEventListener("keydown",v),()=>b.removeEventListener("keydown",v)}},[l,g]),s.jsxs(H8,{ref:c,role:"region","aria-label":r.replace("{hotkey}",p),tabIndex:-1,style:{pointerEvents:f?void 0:"none"},children:[f&&s.jsx(Ib,{ref:d,onFocusFromOutsideViewport:()=>{const b=g({tabbingDirection:"forwards"});nv(b)}}),s.jsx($1.Slot,{scope:a,children:s.jsx(yt.ol,{tabIndex:-1,...n,ref:h})}),f&&s.jsx(Ib,{ref:u,onFocusFromOutsideViewport:()=>{const b=g({tabbingDirection:"backwards"});nv(b)}})]})});V3.displayName=B3;var F3="ToastFocusProxy",Ib=x.forwardRef((e,t)=>{const{__scopeToast:a,onFocusFromOutsideViewport:o,...r}=e,n=Rg(F3,a);return s.jsx(Sg,{"aria-hidden":!0,tabIndex:0,...r,ref:t,style:{position:"fixed"},onFocus:i=>{var d;const l=i.relatedTarget;!((d=n.viewport)!=null&&d.contains(l))&&o()}})});Ib.displayName=F3;var km="Toast",iL="toast.swipeStart",lL="toast.swipeMove",cL="toast.swipeCancel",dL="toast.swipeEnd",U3=x.forwardRef((e,t)=>{const{forceMount:a,open:o,defaultOpen:r,onOpenChange:n,...i}=e,[l,c]=td({prop:o,defaultProp:r??!0,onChange:n,caller:km});return s.jsx(rl,{present:a||l,children:s.jsx(pL,{open:l,...i,ref:t,onClose:()=>c(!1),onPause:Yr(e.onPause),onResume:Yr(e.onResume),onSwipeStart:gt(e.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:gt(e.onSwipeMove,d=>{const{x:u,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${u}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:gt(e.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:gt(e.onSwipeEnd,d=>{const{x:u,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${u}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});U3.displayName=km;var[uL,mL]=M3(km,{onClose(){}}),pL=x.forwardRef((e,t)=>
52{const{__scopeToast:a,type:o="foreground",duration:r,open:n,onClose:i,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:u,onSwipeMove:m,onSwipeCancel:h,onSwipeEnd:p,...f}=e,g=Rg(km,a),[b,v]=x.useState(null),y=la(t,T=>v(T)),k=x.useRef(null),w=x.useRef(null),R=r||g.duration,C=x.useRef(0),P=x.useRef(R),N=x.useRef(0),{onToastAdd:E,onToastRemove:A}=g,$=Yr(()=>{var D;(b==null?void 0:b.contains(document.activeElement))&&((D=g.viewport)==null||D.focus()),i()}),O=x.useCallback(T=>{!T||T===1/0||(window.clearTimeout(N.current),C.current=new Date().getTime(),N.current=window.setTimeout($,T))},[$]);x.useEffect(()=>{const T=g.viewport;if(T){const D=()=>{O(P.current),d==null||d()},F=()=>{const U=new Date().getTime()-C.current;P.current=P.current-U,window.clearTimeout(N.current),c==null||c()};return T.addEventListener(qb,F),T.addEventListener(Db,D),()=>{T.removeEventListener(qb,F),T.removeEventListener(Db,D)}}},[g.viewport,R,c,d,O]),x.useEffect(()=>{n&&!g.isClosePausedRef.current&&O(R)},[n,R,g.isClosePausedRef,O]),x.useEffect(()=>(E(),()=>A()),[E,A]);const V=x.useMemo(()=>b?J3(b):null,[b]);return g.viewport?s.jsxs(s.Fragment,{children:[V&&s.jsx(hL,{__scopeToast:a,role:"status","aria-live":o==="foreground"?"assertive":"polite","aria-atomic":!0,children:V}),s.jsx(uL,{scope:a,onClose:$,children:Xc.createPortal(s.jsx($1.ItemSlot,{scope:a,children:s.jsx(z8,{asChild:!0,onEscapeKeyDown:gt(l,()=>{g.isFocusedToastEscapeKeyDownRef.current||$(),g.isFocusedToastEscapeKeyDownRef.current=!1}),children:s.jsx(yt.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":n?"open":"closed","data-swipe-direction":g.swipeDirection,...f,ref:y,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:gt(e.onKeyDown,T=>{T.key==="Escape"&&(l==null||l(T.nativeEvent),T.nativeEvent.defaultPrevented||(g.isFocusedToastEscapeKeyDownRef.current=!0,$()))}),onPointerDown:gt(e.onPointerDown,T=>{T.button===0&&(k.current={x:T.clientX,y:T.clientY})}),onPointerMove:gt(e.onPointerMove,T=>{if(!k.current)return;const D=T.clientX-k.current.x,F=T.clientY-k.current.y,U=!!w.current,L=["left","right"].includes(g.swipeDirection),I=["left","up"].includes(g.swipeDirection)?Math.min:Math.max,j=L?I(0,D):0,H=L?0:I(0,F),W=T.pointerType==="touch"?10:2,_={x:j,y:H},B={originalEvent:T,delta:_};U?(w.current=_,sp(lL,m,B,{discrete:!1})):bP(_,g.swipeDirection,W)?(w.current=_,sp(iL,u,B,{discrete:!1}),T.target.setPointerCapture(T.pointerId)):(Math.abs(D)>W||Math.abs(F)>W)&&(k.current=null)}),onPointerUp:gt(e.onPointerUp,T=>{const D=w.current,F=T.target;if(F.hasPointerCapture(T.pointerId)&&F.releasePointerCapture(T.pointerId),w.current=null,k.current=null,D){const U=T.currentTarget,L={originalEvent:T,delta:D};bP(D,g.swipeDirection,g.swipeThreshold)?sp(dL,p,L,{discrete:!0}):sp(cL,h,L,{discrete:!0}),U.addEventListener("click",I=>I.preventDefault(),{once:!0})}})})})}),g.viewport)})]}):null}),hL=e=>{const{__scopeToast:t,children:a,...o}=e,r=Rg(km,t),[n,i]=x.useState(!1),[l,c]=x.useState(!1);return vL(()=>i(!0)),x.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:s.jsx(_1,{asChild:!0,children:s.jsx(Sg,{...o,children:n&&s.jsxs(s.Fragment,{children:[r.label," ",a]})})})},fL="ToastTitle",G3=x.forwardRef((e,t)=>{const{__scopeToast:a,...o}=e;return s.jsx(yt.div,{...o,ref:t})});G3.displayName=fL;var gL="ToastDescription",z3=x.forwardRef((e,t)=>{const{__scopeToast:a,...o}=e;return s.jsx(yt.div,{...o,ref:t})});z3.displayName=gL;var H3="ToastAction",K3=x.forwardRef((e,t)=>{const{altText:a,...o}=e;return a.trim()?s.jsx(W3,{altText:a,asChild:!0,children:s.jsx(O1,{...o,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${H3}\`. Expected non-empty \`string\`.`),null)});K3.displayName=H3;var Q3="ToastClose",O1=x.forwardRef((e,t)=>{const{__scopeToast:a,...o}=e,r=mL(Q3,a);return s.jsx(W3,{asChild:!0,children:s.jsx(yt.button,{type:"button",...o,ref:t,onClick:gt(e.onClick,r.onClose)})})});O1.displayName=Q3;var W3=x.forwardRef((e,t)=>{const{__scopeToast:a,altText:o,...r}=e;return s.jsx(yt.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":o||void 0,...r,ref:t})});function J3(e){const t=[];
vendor: 6,991 bytes, lines 52-117
52return Array.from(e.childNodes).forEach(o=>{if(o.nodeType===o.TEXT_NODE&&o.textContent&&t.push(o.textContent),xL(o)){const r=o.ariaHidden||o.hidden||o.style.display==="none",n=o.dataset.radixToastAnnounceExclude==="";if(!r)if(n){const i=o.dataset.radixToastAnnounceAlt;i&&t.push(i)}else t.push(...J3(o))}}),t}function sp(e,t,a,{discrete:o}){const r=a.originalEvent.currentTarget,n=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:a});t&&r.addEventListener(e,t,{once:!0}),o?O3(r,n):r.dispatchEvent(n)}var bP=(e,t,a=0)=>{const o=Math.abs(e.x),r=Math.abs(e.y),n=o>r;return t==="left"||t==="right"?n&&o>a:!n&&r>a};function vL(e=()=>{}){const t=Yr(e);Zr(()=>{let a=0,o=0;return a=window.requestAnimationFrame(()=>o=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(a),window.cancelAnimationFrame(o)}},[t])}function xL(e){return e.nodeType===e.ELEMENT_NODE}function bL(e){const t=[],a=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;a.nextNode();)t.push(a.currentNode);return t}function nv(e){const t=document.activeElement;return e.some(a=>a===t?!0:(a.focus(),document.activeElement!==t))}var yL=L3,X3=V3,Y3=U3,Z3=G3,eT=z3,tT=K3,aT=O1;function oT(e){var t,a,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(a=oT(e[t]))&&(o&&(o+=" "),o+=a)}else for(a in e)e[a]&&(o&&(o+=" "),o+=a);return o}function rT(){for(var e,t,a=0,o="",r=arguments.length;a<r;a++)(e=arguments[a])&&(t=oT(e))&&(o&&(o+=" "),o+=t);return o}const yP=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,kP=rT,q1=(e,t)=>a=>{var o;if((t==null?void 0:t.variants)==null)return kP(e,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:r,defaultVariants:n}=t,i=Object.keys(r).map(d=>{const u=a==null?void 0:a[d],m=n==null?void 0:n[d];if(u===null)return null;const h=yP(u)||yP(m);return r[d][h]}),l=a&&Object.entries(a).reduce((d,u)=>{let[m,h]=u;return h===void 0||(d[m]=h),d},{}),c=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((d,u)=>{let{class:m,className:h,...p}=u;return Object.entries(p).every(f=>{let[g,b]=f;return Array.isArray(b)?b.includes({...n,...l}[g]):{...n,...l}[g]===b})?[...d,m,h]:d},[]);return kP(e,i,c,a==null?void 0:a.class,a==null?void 0:a.className)};/** 53 * @license lucide-react v0.462.0 - ISC 54 * 55 * This source code is licensed under the ISC license. 56 * See the LICENSE file in the root directory of this source tree. 57 */const kL=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),nT=(...e)=>e.filter((t,a,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===a).join(" ").trim();/** 58 * @license lucide-react v0.462.0 - ISC 59 * 60 * This source code is licensed under the ISC license. 61 * See the LICENSE file in the root directory of this source tree. 62 */var wL={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** 63 * @license lucide-react v0.462.0 - ISC 64 * 65 * This source code is licensed under the ISC license. 66 * See the LICENSE file in the root directory of this source tree. 67 */const CL=x.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:o,className:r="",children:n,iconNode:i,...l},c)=>x.createElement("svg",{ref:c,...wL,width:t,height:t,stroke:e,strokeWidth:o?Number(a)*24/Number(t):a,className:nT("lucide",r),...l},[...i.map(([d,u])=>x.createElement(d,u)),...Array.isArray(n)?n:[n]]));/** 68 * @license lucide-react v0.462.0 - ISC 69 * 70 * This source code is licensed under the ISC license. 71 * See the LICENSE file in the root directory of this source tree. 72 */const pe=(e,t)=>{const a=x.forwardRef(({className:o,...r},n)=>x.createElement(CL,{ref:n,iconNode:t,className:nT(`lucide-${kL(e)}`,o),...r}));return a.displayName=`${e}`,a};/** 73 * @license lucide-react v0.462.0 - ISC 74 * 75 * This source code is licensed under the ISC license. 76 * See the LICENSE file in the root directory of this source tree. 77 */const PL=pe("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);/** 78 * @license lucide-react v0.462.0 - ISC 79 * 80 * This source code is licensed under the ISC license. 81 * See the LICENSE file in the root directory of this source tree. 82 */const Za=pe("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** 83 * @license lucide-react v0.462.0 - ISC 84 * 85 * This source code is licensed under the ISC license. 86 * See the LICENSE file in the root directory of this source tree. 87 */const aa=pe("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** 88 * @license lucide-react v0.462.0 - ISC 89 * 90 * This source code is licensed under the ISC license. 91 * See the LICENSE file in the root directory of this source tree. 92 */const zr=pe("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);/** 93 * @license lucide-react v0.462.0 - ISC 94 * 95 * This source code is licensed under the ISC license. 96 * See the LICENSE file in the root directory of this source tree. 97 */const D1=pe("Award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]);/** 98 * @license lucide-react v0.462.0 - ISC 99 * 100 * This source code is licensed under the ISC license. 101 * See the LICENSE file in the root directory of this source tree. 102 */const SL=pe("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 103 * @license lucide-react v0.462.0 - ISC 104 * 105 * This source code is licensed under the ISC license. 106 * See the LICENSE file in the root directory of this source tree. 107 */const RL=pe("Bell",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);/** 108 * @license lucide-react v0.462.0 - ISC 109 * 110 * This source code is licensed under the ISC license. 111 * See the LICENSE file in the root directory of this source tree. 112 */const sT=pe("Bookmark",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}]]);/** 113 * @license lucide-react v0.462.0 - ISC 114 * 115 * This source code is licensed under the ISC license. 116 * See the LICENSE file in the root directory of this source tree. 117 */const jL=pe("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}
117],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/** 118 * @license lucide-react v0.462.0 - ISC 119 * 120 * This source code is licensed under the ISC license. 121 * See the LICENSE file in the root directory of this source tree. 122 */const NL=pe("BusFront",[["path",{d:"M4 6 2 7",key:"1mqr15"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"m22 7-2-1",key:"1umjhc"}],["rect",{width:"16",height:"16",x:"4",y:"3",rx:"2",key:"1wxw4b"}],["path",{d:"M4 11h16",key:"mpoxn0"}],["path",{d:"M8 15h.01",key:"a7atzg"}],["path",{d:"M16 15h.01",key:"rnfrdf"}],["path",{d:"M6 19v2",key:"1loha6"}],["path",{d:"M18 21v-2",key:"sqyl04"}]]);/** 123 * @license lucide-react v0.462.0 - ISC 124 * 125 * This source code is licensed under the ISC license. 126 * See the LICENSE file in the root directory of this source tree. 127 */const AL=pe("Bus",[["path",{d:"M8 6v6",key:"18i7km"}],["path",{d:"M15 6v6",key:"1sg6z9"}],["path",{d:"M2 12h19.6",key:"de5uta"}],["path",{d:"M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3",key:"1wwztk"}],["circle",{cx:"7",cy:"18",r:"2",key:"19iecd"}],["path",{d:"M9 18h5",key:"lrx6i"}],["circle",{cx:"16",cy:"18",r:"2",key:"1v4tcr"}]]);/** 128 * @license lucide-react v0.462.0 - ISC 129 * 130 * This source code is licensed under the ISC license. 131 * See the LICENSE file in the root directory of this source tree. 132 */const iT=pe("CalendarDays",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]]);/** 133 * @license lucide-react v0.462.0 - ISC 134 * 135 * This source code is licensed under the ISC license. 136 * See the LICENSE file in the root directory of this source tree. 137 */const lT=pe("Camera",[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);/** 138 * @license lucide-react v0.462.0 - ISC 139 * 140 * This source code is licensed under the ISC license. 141 * See the LICENSE file in the root directory of this source tree. 142 */const EL=pe("CarFront",[["path",{d:"m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8",key:"1imjwt"}],["path",{d:"M7 14h.01",key:"1qa3f1"}],["path",{d:"M17 14h.01",key:"7oqj8z"}],["rect",{width:"18",height:"8",x:"3",y:"10",rx:"2",key:"a7itu8"}],["path",{d:"M5 18v2",key:"ppbyun"}],["path",{d:"M19 18v2",key:"gy7782"}]]);/** 143 * @license lucide-react v0.462.0 - ISC 144 * 145 * This source code is licensed under the ISC license. 146 * See the LICENSE file in the root directory of this source tree. 147 */const _L=pe("Car",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]);/** 148 * @license lucide-react v0.462.0 - ISC 149 * 150 * This source code is licensed under the ISC license. 151 * See the LICENSE file in the root directory of this source tree. 152 */const On=pe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** 153 * @license lucide-react v0.462.0 - ISC 154 * 155 * This source code is licensed under the ISC license. 156 * See the LICENSE file in the root directory of this source tree. 157 */const TL=pe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** 158 * @license lucide-react v0.462.0 - ISC 159 * 160 * This source code is licensed under the ISC license. 161 * See the LICENSE file in the root directory of this source tree. 162 */const $L=pe("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 163 * @license lucide-react v0.462.0 - ISC 164 * 165 * This source code is licensed under the ISC license. 166 * See the LICENSE file in the root directory of this source tree. 167 */const ip=pe("CircleUser",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]);/** 168 * @license lucide-react v0.462.0 - ISC 169 * 170 * This source code is licensed under the ISC license. 171 * See the LICENSE file in the root directory of this source tree. 172 */const OL=pe("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** 173 * @license lucide-react v0.462.0 - ISC 174 * 175 * This source code is licensed under the ISC license. 176 * See the LICENSE file in the root directory of this source tree. 177 */const cT=pe("Clock3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16.5 12",key:"1aq6pp"}]]);/** 178 * @license lucide-react v0.462.0 - ISC 179 * 180 * This source code is licensed under the ISC license. 181 * See the LICENSE file in the root directory of this source tree. 182 */const dT=pe("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** 183 * @license lucide-react v0.462.0 - ISC 184 * 185 * This source code is licensed under the ISC license. 186 * See the LICENSE file in the root directory of this source tree.
187 */const I1=pe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** 188 * @license lucide-react v0.462.0 - ISC 189 * 190 * This source code is licensed under the ISC license. 191 * See the LICENSE file in the root directory of this source tree. 192 */const qL=pe("CreditCard",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);/** 193 * @license lucide-react v0.462.0 - ISC 194 * 195 * This source code is licensed under the ISC license. 196 * See the LICENSE file in the root directory of this source tree. 197 */const uT=pe("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/** 198 * @license lucide-react v0.462.0 - ISC 199 * 200 * This source code is licensed under the ISC license. 201 * See the LICENSE file in the root directory of this source tree. 202 */const mT=pe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** 203 * @license lucide-react v0.462.0 - ISC 204 * 205 * This source code is licensed under the ISC license. 206 * See the LICENSE file in the root directory of this source tree. 207 */const cf=pe("Flag",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);/** 208 * @license lucide-react v0.462.0 - ISC 209 * 210 * This source code is licensed under the ISC license. 211 * See the LICENSE file in the root directory of this source tree. 212 */const qu=pe("Gift",[["rect",{x:"3",y:"8",width:"18",height:"4",rx:"1",key:"bkv52"}],["path",{d:"M12 8v13",key:"1c76mn"}],["path",{d:"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7",key:"6wjy6b"}],["path",{d:"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",key:"1ihvrl"}]]);/** 213 * @license lucide-react v0.462.0 - ISC 214 * 215 * This source code is licensed under the ISC license. 216 * See the LICENSE file in the root directory of this source tree. 217 */const DL=pe("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** 218 * @license lucide-react v0.462.0 - ISC 219 * 220 * This source code is licensed under the ISC license. 221 * See the LICENSE file in the root directory of this source tree. 222 */const IL=pe("Handshake",[["path",{d:"m11 17 2 2a1 1 0 1 0 3-3",key:"efffak"}],["path",{d:"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4",key:"9pr0kb"}],["path",{d:"m21 3 1 11h-2",key:"1tisrp"}],["path",{d:"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3",key:"1uvwmv"}],["path",{d:"M3 4h8",key:"1ep09j"}]]);/** 223 * @license lucide-react v0.462.0 - ISC 224 * 225 * This source code is licensed under the ISC license. 226 * See the LICENSE file in the root directory of this source tree. 227 */const Mb=pe("Heart",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]);/** 228 * @license lucide-react v0.462.0 - ISC 229 * 230 * This source code is licensed under the ISC license. 231 * See the LICENSE file in the root directory of this source tree. 232 */const wP=pe("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/** 233 * @license lucide-react v0.462.0 - ISC 234 * 235 * This source code is licensed under the ISC license. 236 * See the LICENSE file in the root directory of this source tree. 237 */const ML=pe("ImagePlus",[["path",{d:"M16 5h6",key:"1vod17"}],["path",{d:"M19 2v6",key:"4bpg5p"}],["path",{d:"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5",key:"1ue2ih"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}]]);/** 238 * @license lucide-react v0.462.0 - ISC 239 * 240 * This source code is licensed under the ISC license. 241 * See the LICENSE file in the root directory of this source tree. 242 */const LL=pe("Instagram",[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"5",ry:"5",key:"2e1cvw"}],["path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z",key:"9exkf1"}],["line",{x1:"17.5",x2:"17.51",y1:"6.5",y2:"6.5",key:"r4j83e"}]]);/** 243 * @license lucide-react v0.462.0 - ISC 244 * 245 * This source code is licensed under the ISC license. 246 * See the LICENSE file in the root directory of this source tree. 247 */const BL=pe("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);/** 248 * @license lucide-react v0.462.0 - ISC 249 * 250 * This source code is licensed under the ISC license. 251 * See the LICENSE file in the root directory of this source tree. 252 */const pT=pe("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** 253 * @license lucide-react v0.462.0 - ISC 254 * 255 * This source code is licensed under the ISC license. 256 * See the LICENSE file in the root directory of this source tree. 257 */const VL=pe("Linkedin",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]);/** 258 * @license lucide-react v0.462.0 - ISC 259 * 260 * This source code is licensed under the ISC license. 261 * See the LICENSE file in the root directory of this source tree. 262 */const Lb=pe("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** 263 * @license lucide-react v0.462.0 - ISC 264 * 265 * This source code is licensed under the ISC license. 266 * See the LICENSE file in the root directory of this source tree. 267 */const ch=pe("LockKeyhole",[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]]);/** 268 * @license lucide-react v0.462.0 - ISC 269 * 270 * This source code is licensed under the ISC license. 271 * See the LICENSE file in the root directory of this source tree.
272 */const FL=pe("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);/** 273 * @license lucide-react v0.462.0 - ISC 274 * 275 * This source code is licensed under the ISC license. 276 * See the LICENSE file in the root directory of this source tree. 277 */const UL=pe("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/** 278 * @license lucide-react v0.462.0 - ISC 279 * 280 * This source code is licensed under the ISC license. 281 * See the LICENSE file in the root directory of this source tree. 282 */const GL=pe("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** 283 * @license lucide-react v0.462.0 - ISC 284 * 285 * This source code is licensed under the ISC license. 286 * See the LICENSE file in the root directory of this source tree. 287 */const en=pe("MapPin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/** 288 * @license lucide-react v0.462.0 - ISC 289 * 290 * This source code is licensed under the ISC license. 291 * See the LICENSE file in the root directory of this source tree. 292 */const zL=pe("MapPinned",[["path",{d:"M18 8c0 3.613-3.869 7.429-5.393 8.795a1 1 0 0 1-1.214 0C9.87 15.429 6 11.613 6 8a6 6 0 0 1 12 0",key:"11u0oz"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["path",{d:"M8.714 14h-3.71a1 1 0 0 0-.948.683l-2.004 6A1 1 0 0 0 3 22h18a1 1 0 0 0 .948-1.316l-2-6a1 1 0 0 0-.949-.684h-3.712",key:"q8zwxj"}]]);/** 293 * @license lucide-react v0.462.0 - ISC 294 * 295 * This source code is licensed under the ISC license. 296 * See the LICENSE file in the root directory of this source tree. 297 */const HL=pe("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/** 298 * @license lucide-react v0.462.0 - ISC 299 * 300 * This source code is licensed under the ISC license. 301 * See the LICENSE file in the root directory of this source tree. 302 */const hT=pe("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** 303 * @license lucide-react v0.462.0 - ISC 304 * 305 * This source code is licensed under the ISC license. 306 * See the LICENSE file in the root directory of this source tree. 307 */const KL=pe("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** 308 * @license lucide-react v0.462.0 - ISC 309 * 310 * This source code is licensed under the ISC license. 311 * See the LICENSE file in the root directory of this source tree. 312 */const _c=pe("Plane",[["path",{d:"M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",key:"1v9wt8"}]]);/** 313 * @license lucide-react v0.462.0 - ISC 314 * 315 * This source code is licensed under the ISC license. 316 * See the LICENSE file in the root directory of this source tree. 317 */const dh=pe("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** 318 * @license lucide-react v0.462.0 - ISC 319 * 320 * This source code is licensed under the ISC license. 321 * See the LICENSE file in the root directory of this source tree. 322 */const QL=pe("Printer",[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]]);/** 323 * @license lucide-react v0.462.0 - ISC 324 * 325 * This source code is licensed under the ISC license. 326 * See the LICENSE file in the root directory of this source tree. 327 */const fT=pe("QrCode",[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]]);/** 328 * @license lucide-react v0.462.0 - ISC 329 * 330 * This source code is licensed under the ISC license. 331 * See the LICENSE file in the root directory of this source tree. 332 */const CP=pe("Quote",[["path",{d:"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"rib7q0"}],["path",{d:"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z",key:"1ymkrd"}]]);/** 333 * @license lucide-react v0.462.0 - ISC 334 * 335 * This source code is licensed under the ISC license. 336 * See the LICENSE file in the root directory of this source tree. 337 */const Du=pe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** 338 * @license lucide-react v0.462.0 - ISC 339 * 340 * This source code is licensed under the ISC license. 341 * See the LICENSE file in the root directory of this source tree. 342 */const WL=pe("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);/** 343 * @license lucide-react v0.462.0 - ISC 344 * 345 * This source code is licensed under the ISC license. 346 * See the LICENSE file in the root directory of this source tree. 347 */const Qs=pe("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",ke
347y:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 348 * @license lucide-react v0.462.0 - ISC 349 * 350 * This source code is licensed under the ISC license. 351 * See the LICENSE file in the root directory of this source tree. 352 */const PP=pe("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** 353 * @license lucide-react v0.462.0 - ISC 354 * 355 * This source code is licensed under the ISC license. 356 * See the LICENSE file in the root directory of this source tree. 357 */const JL=pe("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);/** 358 * @license lucide-react v0.462.0 - ISC 359 * 360 * This source code is licensed under the ISC license. 361 * See the LICENSE file in the root directory of this source tree. 362 */const gT=pe("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/** 363 * @license lucide-react v0.462.0 - ISC 364 * 365 * This source code is licensed under the ISC license. 366 * See the LICENSE file in the root directory of this source tree. 367 */const vT=pe("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/** 368 * @license lucide-react v0.462.0 - ISC 369 * 370 * This source code is licensed under the ISC license. 371 * See the LICENSE file in the root directory of this source tree. 372 */const SP=pe("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** 373 * @license lucide-react v0.462.0 - ISC 374 * 375 * This source code is licensed under the ISC license. 376 * See the LICENSE file in the root directory of this source tree. 377 */const XL=pe("Target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);/** 378 * @license lucide-react v0.462.0 - ISC 379 * 380 * This source code is licensed under the ISC license. 381 * See the LICENSE file in the root directory of this source tree. 382 */const YL=pe("Ticket",[["path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"qn84l0"}],["path",{d:"M13 5v2",key:"dyzc3o"}],["path",{d:"M13 17v2",key:"1ont0d"}],["path",{d:"M13 11v2",key:"1wjjxi"}]]);/** 383 * @license lucide-react v0.462.0 - ISC 384 * 385 * This source code is licensed under the ISC license. 386 * See the LICENSE file in the root directory of this source tree. 387 */const jg=pe("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** 388 * @license lucide-react v0.462.0 - ISC 389 * 390 * This source code is licensed under the ISC license. 391 * See the LICENSE file in the root directory of this source tree. 392 */const ZL=pe("UserPlus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/** 393 * @license lucide-react v0.462.0 - ISC 394 * 395 * This source code is licensed under the ISC license. 396 * See the LICENSE file in the root directory of this source tree. 397 */const RP=pe("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/** 398 * @license lucide-react v0.462.0 - ISC 399 * 400 * This source code is licensed under the ISC license. 401 * See the LICENSE file in the root directory of this source tree. 402 */const jP=pe("UsersRound",[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]]);/** 403 * @license lucide-react v0.462.0 - ISC 404 * 405 * This source code is licensed under the ISC license. 406 * See the LICENSE file in the root directory of this source tree. 407 */const Ng=pe("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** 408 * @license lucide-react v0.462.0 - ISC 409 * 410 * This source code is licensed under the ISC license. 411 * See the LICENSE file in the root directory of this source tree. 412 */const xT=pe("Wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]);/** 413 * @license lucide-react v0.462.0 - ISC 414 * 415 * This source code is licensed under the ISC license. 416 * See the LICENSE file in the root directory of this source tree. 417 */const Gi=pe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}
vendor: 4,739 bytes, line 417
417],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),M1="-",eB=e=>{const t=aB(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:i=>{const l=i.split(M1);return l[0]===""&&l.length!==1&&l.shift(),bT(l,t)||tB(i)},getConflictingClassGroupIds:(i,l)=>{const c=a[i]||[];return l&&o[i]?[...c,...o[i]]:c}}},bT=(e,t)=>{var i;if(e.length===0)return t.classGroupId;const a=e[0],o=t.nextPart.get(a),r=o?bT(e.slice(1),o):void 0;if(r)return r;if(t.validators.length===0)return;const n=e.join(M1);return(i=t.validators.find(({validator:l})=>l(n)))==null?void 0:i.classGroupId},NP=/^\[(.+)\]$/,tB=e=>{if(NP.test(e)){const t=NP.exec(e)[1],a=t==null?void 0:t.substring(0,t.indexOf(":"));if(a)return"arbitrary.."+a}},aB=e=>{const{theme:t,prefix:a}=e,o={nextPart:new Map,validators:[]};return rB(Object.entries(e.classGroups),a).forEach(([n,i])=>{Bb(i,o,n,t)}),o},Bb=(e,t,a,o)=>{e.forEach(r=>{if(typeof r=="string"){const n=r===""?t:AP(t,r);n.classGroupId=a;return}if(typeof r=="function"){if(oB(r)){Bb(r(o),t,a,o);return}t.validators.push({validator:r,classGroupId:a});return}Object.entries(r).forEach(([n,i])=>{Bb(i,AP(t,n),a,o)})})},AP=(e,t)=>{let a=e;return t.split(M1).forEach(o=>{a.nextPart.has(o)||a.nextPart.set(o,{nextPart:new Map,validators:[]}),a=a.nextPart.get(o)}),a},oB=e=>e.isThemeGetter,rB=(e,t)=>t?e.map(([a,o])=>{const r=o.map(n=>typeof n=="string"?t+n:typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,l])=>[t+i,l])):n);return[a,r]}):e,nB=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,a=new Map,o=new Map;const r=(n,i)=>{a.set(n,i),t++,t>e&&(t=0,o=a,a=new Map)};return{get(n){let i=a.get(n);if(i!==void 0)return i;if((i=o.get(n))!==void 0)return r(n,i),i},set(n,i){a.has(n)?a.set(n,i):r(n,i)}}},yT="!",sB=e=>{const{separator:t,experimentalParseClassName:a}=e,o=t.length===1,r=t[0],n=t.length,i=l=>{const c=[];let d=0,u=0,m;for(let b=0;b<l.length;b++){let v=l[b];if(d===0){if(v===r&&(o||l.slice(b,b+n)===t)){c.push(l.slice(u,b)),u=b+n;continue}if(v==="/"){m=b;continue}}v==="["?d++:v==="]"&&d--}const h=c.length===0?l:l.substring(u),p=h.startsWith(yT),f=p?h.substring(1):h,g=m&&m>u?m-u:void 0;return{modifiers:c,hasImportantModifier:p,baseClassName:f,maybePostfixModifierPosition:g}};return a?l=>a({className:l,parseClassName:i}):i},iB=e=>{if(e.length<=1)return e;const t=[];let a=[];return e.forEach(o=>{o[0]==="["?(t.push(...a.sort(),o),a=[]):a.push(o)}),t.push(...a.sort()),t},lB=e=>({cache:nB(e.cacheSize),parseClassName:sB(e),...eB(e)}),cB=/\s+/,dB=(e,t)=>{const{parseClassName:a,getClassGroupId:o,getConflictingClassGroupIds:r}=t,n=[],i=e.trim().split(cB);let l="";for(let c=i.length-1;c>=0;c-=1){const d=i[c],{modifiers:u,hasImportantModifier:m,baseClassName:h,maybePostfixModifierPosition:p}=a(d);let f=!!p,g=o(f?h.substring(0,p):h);if(!g){if(!f){l=d+(l.length>0?" "+l:l);continue}if(g=o(h),!g){l=d+(l.length>0?" "+l:l);continue}f=!1}const b=iB(u).join(":"),v=m?b+yT:b,y=v+g;if(n.includes(y))continue;n.push(y);const k=r(g,f);for(let w=0;w<k.length;++w){const R=k[w];n.push(v+R)}l=d+(l.length>0?" "+l:l)}return l};function uB(){let e=0,t,a,o="";for(;e<arguments.length;)(t=arguments[e++])&&(a=kT(t))&&(o&&(o+=" "),o+=a);return o}const kT=e=>{if(typeof e=="string")return e;let t,a="";for(let o=0;o<e.length;o++)e[o]&&(t=kT(e[o]))&&(a&&(a+=" "),a+=t);return a};function mB(e,...t){let a,o,r,n=i;function i(c){const d=t.reduce((u,m)=>m(u),e());return a=lB(d),o=a.cache.get,r=a.cache.set,n=l,l(c)}function l(c){const d=o(c);if(d)return d;const u=dB(c,a);return r(c,u),u}return function(){return n(uB.apply(null,arguments))}}const Rt=e=>{const t=a=>a[e]||[];return t.isThemeGetter=!0,t},wT=/^\[(?:([a-z-]+):)?(.+)\]$/i,pB=/^\d+\/\d+$/,hB=new Set(["px","full","screen"]),fB=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,gB=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,vB=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,xB=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,bB=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,mn=e=>ec(e)||hB.has(e)||pB.test(e),Hn=e=>ad(e,"length",jB),ec=e=>!!e&&!Number.isNaN(Number(e)),sv=e=>ad(e,"number",ec),Cd=e=>!!e&&Number.isInteger(Number(e)),yB=e=>e.endsWith("%")&&ec(e.slice(0,-1)),Ve=e=>wT.test(e),Kn=e=>fB.test(e),kB=new Set(["length","size","percentage"]),wB=e=>ad(e,kB,CT),CB=e=>ad(e,"position",CT),PB=new Set(["image","url"]),SB=e=>ad(e,PB,AB),RB=e=>ad(e,"",NB),Pd=()=>!0,ad=(e,t,a)=>{const o=wT.exec(e);return o?o[1]?typeof t=="string"?o[1]===t:t.has(o[1]):a(o[2]):!1},jB=e=>gB.test(e)&&!vB.test(e),CT=()=>!1,NB=e=>xB.test(e),AB=e=>bB.test(e),EB=()=>{const e=Rt("colors"),t=Rt("spacing"),a=Rt("blur"),o=Rt("brightness"),r=
vendor: 12,402 bytes, line 417
417Rt("borderColor"),n=Rt("borderRadius"),i=Rt("borderSpacing"),l=Rt("borderWidth"),c=Rt("contrast"),d=Rt("grayscale"),u=Rt("hueRotate"),m=Rt("invert"),h=Rt("gap"),p=Rt("gradientColorStops"),f=Rt("gradientColorStopPositions"),g=Rt("inset"),b=Rt("margin"),v=Rt("opacity"),y=Rt("padding"),k=Rt("saturate"),w=Rt("scale"),R=Rt("sepia"),C=Rt("skew"),P=Rt("space"),N=Rt("translate"),E=()=>["auto","contain","none"],A=()=>["auto","hidden","clip","visible","scroll"],$=()=>["auto",Ve,t],O=()=>[Ve,t],V=()=>["",mn,Hn],T=()=>["auto",ec,Ve],D=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],F=()=>["solid","dashed","dotted","double","none"],U=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],L=()=>["start","end","center","between","around","evenly","stretch"],I=()=>["","0",Ve],j=()=>["auto","avoid","all","avoid-page","page","left","right","column"],H=()=>[ec,Ve];return{cacheSize:500,separator:":",theme:{colors:[Pd],spacing:[mn,Hn],blur:["none","",Kn,Ve],brightness:H(),borderColor:[e],borderRadius:["none","","full",Kn,Ve],borderSpacing:O(),borderWidth:V(),contrast:H(),grayscale:I(),hueRotate:H(),invert:I(),gap:O(),gradientColorStops:[e],gradientColorStopPositions:[yB,Hn],inset:$(),margin:$(),opacity:H(),padding:O(),saturate:H(),scale:H(),sepia:I(),skew:H(),space:O(),translate:O()},classGroups:{aspect:[{aspect:["auto","square","video",Ve]}],container:["container"],columns:[{columns:[Kn]}],"break-after":[{"break-after":j()}],"break-before":[{"break-before":j()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...D(),Ve]}],overflow:[{overflow:A()}],"overflow-x":[{"overflow-x":A()}],"overflow-y":[{"overflow-y":A()}],overscroll:[{overscroll:E()}],"overscroll-x":[{"overscroll-x":E()}],"overscroll-y":[{"overscroll-y":E()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[g]}],"inset-x":[{"inset-x":[g]}],"inset-y":[{"inset-y":[g]}],start:[{start:[g]}],end:[{end:[g]}],top:[{top:[g]}],right:[{right:[g]}],bottom:[{bottom:[g]}],left:[{left:[g]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Cd,Ve]}],basis:[{basis:$()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",Ve]}],grow:[{grow:I()}],shrink:[{shrink:I()}],order:[{order:["first","last","none",Cd,Ve]}],"grid-cols":[{"grid-cols":[Pd]}],"col-start-end":[{col:["auto",{span:["full",Cd,Ve]},Ve]}],"col-start":[{"col-start":T()}],"col-end":[{"col-end":T()}],"grid-rows":[{"grid-rows":[Pd]}],"row-start-end":[{row:["auto",{span:[Cd,Ve]},Ve]}],"row-start":[{"row-start":T()}],"row-end":[{"row-end":T()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",Ve]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",Ve]}],gap:[{gap:[h]}],"gap-x":[{"gap-x":[h]}],"gap-y":[{"gap-y":[h]}],"justify-content":[{justify:["normal",...L()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...L(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...L(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[y]}],px:[{px:[y]}],py:[{py:[y]}],ps:[{ps:[y]}],pe:[{pe:[y]}],pt:[{pt:[y]}],pr:[{pr:[y]}],pb:[{pb:[y]}],pl:[{pl:[y]}],m:[{m:[b]}],mx:[{mx:[b]}],my:[{my:[b]}],ms:[{ms:[b]}],me:[{me:[b]}],mt:[{mt:[b]}],mr:[{mr:[b]}],mb:[{mb:[b]}],ml:[{ml:[b]}],"space-x":[{"space-x":[P]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[P]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",Ve,t]}],"min-w":[{"min-w":[Ve,t,"min","max","fit"]}],"max-w":[{"max-w":[Ve,t,"none","full","min","max","fit","prose",{screen:[Kn]},Kn]}],h:[{h:[Ve,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[Ve,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[Ve,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[Ve,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Kn,Hn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",sv]}],"font-family":[{font:[Pd]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",Ve]}],"line-clamp":[{"line-clamp":["none",ec,sv]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",mn,Ve]}],"list-image":[{"list-image":["none",Ve]}],"list-style-type":[{list:["none","disc","decimal",Ve]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[v]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[v]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...F(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",mn,Hn]}],"underline-offset":[{"underline-offset":["auto",mn,Ve]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:O()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ve]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ve]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[v]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...D(),CB]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",wB]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},SB]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[f]}],"gradient-via-pos":[{via:[f]}],"gradient-to-pos":[{to:[f]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[n]}],"rounded-s":[{"rounded-s":[n]}],"rounded-e":[{"rounded-e":[n]}],"rounded-t":[{"rounded-t":[n]}],"rounded-r":[{"rounded-r":[n]}],"rounded-b":[{"rounded-b":[n]}],"rounded-l":[{"rounded-l":[n]}],"rounded-ss":[{"rounded-ss":[n]}],"rounded-se":[{"rounded-se":[n]}],"rounded-ee":[{"rounded-ee":[n]}],"rounded-es":[{"rounded-es":[n]}],"rounded-tl":[{"rounded-tl":[n]}],"rounded-tr":[{"rounded-tr":[n]}],"rounded-br":[{"rounded-br":[n]}],"rounded-bl":[{"rounded-bl":[n]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-y":[{"border-y":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-b":[{"border-b":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[v]}],"border-style":[{border:[...F(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[l]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[v]}],"divide-style":[{divide:F()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...F()]}],"outline-offset":[{"outline-offset":[mn,Ve]}],"outline-w":[{outline:[mn,Hn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[v]}],"ring-offset-w":[{"ring-offset":[mn,Hn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Kn,RB]}],"shadow-color":[{shadow:[Pd]}],opacity:[{opacity:[v]}],"mix-blend":[{"mix-blend":[...U(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":U()}],filter:[{filter:["","none"]}],blur:[{blur:[a]}],brightness:[{brightness:[o]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",Kn,Ve]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[m]}],saturate:[{saturate:[k]}],sepia:[{sepia:[R]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[a]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[v]}],"backdrop-saturate":[{"backdrop-saturate":[k]}],"backdrop-sepia":[{"backdrop-sepia":[R]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",Ve]}],duration:[{duration:H()}],ease:[{ease:["linear","in","out","in-out",Ve]}],delay:[{delay:H()}],animate:[{animate:["none","spin","ping","pulse","bounce",Ve]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[w]}],"scale-x":[{"scale-x":[w]}],"scale-y":[{"scale-y":[w]}],rotate:[{rotate:[Cd,Ve]}],"translate-x":[{"translate-x":[N]}],"translate-y":[{"translate-y":[N]}],"skew-x":[{"skew-x":[C]}],"skew-y":[{"skew-y":[C]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",Ve]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ve]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":O()}],"scroll-mx":[{"scroll-mx":O()}],"scroll-my":[{"scroll-my":O()}],"scroll-ms":[{"scroll-ms":O()}],"scroll-me":[{"scroll-me":O()}],"scroll-mt":[{"scroll-mt":O()}],"scroll-mr":[{"scroll-mr":O()}],"scroll-mb":[{"scroll-mb":O()}],"scroll-ml":[{"scroll-ml":O()}],"scroll-p":[{"scroll-p":O()}],"scroll-px":[{"scroll-px":O()}],"scroll-py":[{"scroll-py":O()}],"scroll-ps":[{"scroll-ps":O()}],"scroll-pe":[{"scroll-pe":O()}],"scroll-pt":[{"scroll-pt":O()}
vendor: 4,226 bytes, line 417
417],"scroll-pr":[{"scroll-pr":O()}],"scroll-pb":[{"scroll-pb":O()}],"scroll-pl":[{"scroll-pl":O()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ve]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[mn,Hn,sv]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},_B=mB(EB);function ne(...e){return _B(rT(e))}const TB=yL,PT=x.forwardRef(({className:e,...t},a)=>s.jsx(X3,{ref:a,className:ne("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));PT.displayName=X3.displayName;const $B=q1("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),ST=x.forwardRef(({className:e,variant:t,...a},o)=>s.jsx(Y3,{ref:o,className:ne($B({variant:t}),e),...a}));ST.displayName=Y3.displayName;const OB=x.forwardRef(({className:e,...t},a)=>
417s.jsx(tT,{ref:a,className:ne("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",e),...t}));OB.displayName=tT.displayName;const RT=x.forwardRef(({className:e,...t},a)=>s.jsx(aT,{ref:a,className:ne("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:s.jsx(Gi,{className:"h-4 w-4"})}));RT.displayName=aT.displayName;const jT=x.forwardRef(({className:e,...t},a)=>s.jsx(Z3,{ref:a,className:ne("text-sm font-semibold",e),...t}));jT.displayName=Z3.displayName;const NT=x.forwardRef(({className:e,...t},a)=>s.jsx(eT,{ref:a,className:ne("text-sm opacity-90",e),...t}));NT.displayName=eT.displayName;function qB(){const{toasts:e}=N8();return s.jsxs(TB,{children:[e.map(function({id:t,title:a,description:o,action:r,...n}){return s.jsxs(ST,{...n,children:[s.jsxs("div",{className:"grid gap-1",children:[a&&s.jsx(jT,{children:a}),o&&s.jsx(NT,{children:o})]}),r,s.jsx(RT,{})]},t)}),s.jsx(PT,{})]})}var EP=["light","dark"],DB="(prefers-color-scheme: dark)",IB=x.createContext(void 0),MB={setTheme:e=>{},themes:[]},LB=()=>{var e;return(e=x.useContext(IB))!=null?e:MB};x.memo(({forcedTheme:e,storageKey:t,attribute:a,enableSystem:o,enableColorScheme:r,defaultTheme:n,value:i,attrs:l,nonce:c})=>{let d=n==="system",u=a==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${l.map(f=>`'${f}'`).join(",")})`};`:`var d=document.documentElement,n='${a}',s='setAttribute';`,m=r?EP.includes(n)&&n?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${n}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",h=(f,g=!1,b=!0)=>{let v=i?i[f]:f,y=g?f+"|| ''":`'${v}'`,k="";return r&&b&&!g&&EP.includes(f)&&(k+=`d.style.colorScheme = '${f}';`),a==="class"?g||v?k+=`c.add(${y})`:k+="null":v&&(k+=`d[s](n,${y})`),k},p=e?`!function(){${u}${h(e)}}()`:o?`!function(){try{${u}var e=localStorage.getItem('${t}');if('system'===e||(!e&&${d})){var t='${DB}',m=window.matchMedia(t);if(m.media!==t||m.matches){${h("dark")}}else{${h("light")}}}else if(e){${i?`var x=${JSON.stringify(i)};`:""}${h(i?"x[e]":"e",!0)}}${d?"":"else{"+h(n,!1,!1)+"}"}${m}}catch(e){}}()`:`!function(){try{${u}var e=localStorage.getItem('${t}');if(e){${i?`var x=${JSON.stringify(i)};`:""}${h(i?"x[e]":"e",!0)}}else{${h(n,!1,!1)};}${m}}catch(t){}}();`;return x.createElement("script",{nonce:c,dangerouslySetInnerHTML:{__html:p}})});var BB=e=>{switch(e){case"success":return UB;case"info":return zB;case"warning":return GB;case"error":return HB;default:return null}},VB=Array(12).fill(0),FB=({visible:e,className:t})=>Q.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},Q.createElement("div",{className:"sonner-spinner"},VB.map((a,o)=>Q.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${o}`})))),UB=Q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Q.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),GB=Q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},Q.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),zB=Q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Q.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),HB=Q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},Q.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),KB=Q.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},Q.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),Q.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),QB=()=>{let[e,t]=Q.useState(document.hidden);return Q.useEffect(()=>{let a=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",a),()=>window.removeEventListener("visibilitychange",a)},[]),e},Vb=1,WB=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>
vendor: 1,050 bytes, line 417
417{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var t;let{message:a,...o}=e,r=typeof(e==null?void 0:e.id)=="number"||((t=e.id)==null?void 0:t.length)>0?e.id:Vb++,n=this.toasts.find(l=>l.id===r),i=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),n?this.toasts=this.toasts.map(l=>l.id===r?(this.publish({...l,...e,id:r,title:a}),{...l,...e,id:r,dismissible:i,title:a}):l):this.addToast({title:a,...o,dismissible:i,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(a=>a({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:"error"}),this.success=(e,t)=>this.create({...t,type:"success",message:e}),this.info=(e,t)=>this.create({...t,type:"info",message:e}),this.warning=(e,t)=>this.create({...t,type:"warning",message:e}),this.loading=(e,t)=>
417this.create({...t,type:"loading",message:e}),this.promise=(e,t)=>{if(!t)return;let a;t.loading!==void 0&&(a=this.create({...t,promise:e,type:"loading",message:t.loading,description:typeof t.description!="function"?t.description:void 0}));let o=e instanceof Promise?e:e(),r=a!==void 0,n,i=o.then(async c=>{if(n=["resolve",c],Q.isValidElement(c))r=!1,this.create({id:a,type:"default",message:c});else if(XB(c)&&!c.ok){r=!1;let d=typeof t.error=="function"?await t.error(`HTTP error! status: ${c.status}`):t.error,u=typeof t.description=="function"?await t.description(`HTTP error! status: ${c.status}`):t.description;this.create({id:a,type:"error",message:d,description:u})}else if(t.success!==void 0){r=!1;let d=typeof t.success=="function"?await t.success(c):t.success,u=typeof t.description=="function"?await t.description(c):t.description;this.create({id:a,type:"success",message:d,description:u})}}).catch(async c=>{if(n=["reject",c],t.error!==void 0){r=!1;let d=typeof t.error=="function"?await t.error(c):t.error,u=typeof t.description=="function"?await t.description(c):t.description;this.create({id:a,type:"error",message:d,description:u})}}).finally(()=>{var c;r&&(this.dismiss(a),a=void 0),(c=t.finally)==null||c.call(t)}),l=()=>new Promise((c,d)=>i.then(()=>n[0]==="reject"?d(n[1]):c(n[1])).catch(d));return typeof a!="string"&&typeof a!="number"?{unwrap:l}:Object.assign(a,{unwrap:l})},this.custom=(e,t)=>{let a=(t==null?void 0:t.id)||Vb++;return this.create({jsx:e(a),id:a,...t}),a},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},Wa=new WB,JB=(e,t)=>{let a=(t==null?void 0:t.id)||Vb++;return Wa.addToast({title:e,...t,id:a}),a},XB=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",YB=JB,ZB=()=>Wa.toasts,eV=()=>Wa.getActiveToasts(),_e=Object.assign(YB,{success:Wa.success,info:Wa.info,warning:Wa.warning,error:Wa.error,custom:Wa.custom,message:Wa.message,promise:Wa.promise,dismiss:Wa.dismiss,loading:Wa.loading},{getHistory:ZB,getToasts:eV});function tV(e,{insertAt:t}={}){if(typeof document>"u")return;let a=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",t==="top"&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}tV(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
417left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
417:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
417--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} 418`);function lp(e){return e.label!==void 0}var aV=3,oV="32px",rV="16px",_P=4e3,nV=356,sV=14,iV=20,lV=200;function ar(...e){return e.filter(Boolean).join(" ")}function cV(e){let[t,a]=e.split("-"),o=[];return t&&o.push(t),a&&o.push(a),o}var dV=e=>{var t,a,o,r,n,i,l,c,d,u,m;let{invert:h,toast:p,unstyled:f,interacting:g,setHeights:b,visibleToasts:v,heights:y,index:k,toasts:w,expanded:R,removeToast:C,defaultRichColors:P,closeButton:N,style:E,cancelButtonStyle:A,actionButtonStyle:$,className:O="",descriptionClassName:V="",duration:T,position:D,gap:F,loadingIcon:U,expandByDefault:L,classNames:I,icons:j,closeButtonAriaLabel:H="Close toast",pauseWhenPageIsHidden:W}=e,[_,B]=Q.useState(null),[Y,ae]=Q.useState(null),[ie,fe]=Q.useState(!1),[Se,Ee]=Q.useState(!1),[Re,re]=Q.useState(!1),[Ce,$e]=Q.useState(!1),[Ze,mt]=Q.useState(!1),[ht,kt]=Q.useState(0),[Tt,oa]=Q.useState(0),Bt=Q.useRef(p.duration||T||_P),$t=Q.useRef(null),Ke=Q.useRef(null),co=k===0,uo=k+1<=v,K=p.type,Z=p.dism
418issible!==!1,J=p.className||"",he=p.descriptionClassName||"",Oe=Q.useMemo(()=>y.findIndex(qe=>qe.toastId===p.id)||0,[y,p.id]),wt=Q.useMemo(()=>{var qe;return(qe=p.closeButton)!=null?qe:N},[p.closeButton,N]),ra=Q.useMemo(()=>p.duration||T||_P,[p.duration,T]),z=Q.useRef(0),Pe=Q.useRef(0),st=Q.useRef(0),et=Q.useRef(null),[Wt,ma]=D.split("-"),Xo=Q.useMemo(()=>y.reduce((qe,nt,Ct)=>Ct>=Oe?qe:qe+nt.height,0),[y,Oe]),un=QB(),Xs=p.invert||h,rt=K==="loading";Pe.current=Q.useMemo(()=>Oe*F+Xo,[Oe,Xo]),Q.useEffect(()=>{Bt.current=ra},[ra]),Q.useEffect(()=>{fe(!0)},[]),Q.useEffect(()=>{let qe=Ke.current;if(qe){let nt=qe.getBoundingClientRect().height;return oa(nt),b(Ct=>[{toastId:p.id,height:nt,position:p.position},...Ct]),()=>b(Ct=>Ct.filter(Yo=>Yo.toastId!==p.id))}},[b,p.id]),Q.useLayoutEffect(()=>{if(!ie)return;let qe=Ke.current,nt=qe.style.height;qe.style.height="auto";let Ct=qe.getBoundingClientRect().height;qe.style.height=nt,oa(Ct),b(Yo=>Yo.find(Zo=>Zo.toastId===p.id)?Yo.map(Zo=>Zo.toastId===p.id?{...Zo,height:Ct}:Zo):[{toastId:p.id,height:Ct,position:p.position},...Yo])},[ie,p.title,p.description,b,p.id]);let pa=Q.useCallback(()=>{Ee(!0),kt(Pe.current),b(qe=>qe.filter(nt=>nt.toastId!==p.id)),setTimeout(()=>{C(p)},lV)},[p,C,b,Pe]);Q.useEffect(()=>{if(p.promise&&K==="loading"||p.duration===1/0||p.type==="loading")return;let qe;return R||g||W&&un?(()=>{if(st.current<z.current){let nt=new Date().getTime()-z.current;Bt.current=Bt.current-nt}st.current=new Date().getTime()})():Bt.current!==1/0&&(z.current=new Date().getTime(),qe=setTimeout(()=>{var nt;(nt=p.onAutoClose)==null||nt.call(p,p),pa()},Bt.current)),()=>clearTimeout(qe)},[R,g,p,K,W,un,pa]),Q.useEffect(()=>{p.delete&&pa()},[pa,p.delete]);function Fn(){var qe,nt,Ct;return j!=null&&j.loading?Q.createElement("div",{className:ar(I==null?void 0:I.loader,(qe=p==null?void 0:p.classNames)==null?void 0:qe.loader,"sonner-loader"),"data-visible":K==="loading"},j.loading):U?Q.createElement("div",{className:ar(I==null?void 0:I.loader,(nt=p==null?void 0:p.classNames)==null?void 0:nt.loader,"sonner-loader"),"data-visible":K==="loading"},U):Q.createElement(FB,{className:ar(I==null?void 0:I.loader,(Ct=p==null?void 0:p.classNames)==null?void 0:Ct.loader),visible:K==="loading"})}return Q.createElement("li",{tabIndex:0,ref:Ke,className:ar(O,J,I==null?void 0:I.toast,(t=p==null?void 0:p.classNames)==null?void 0:t.toast,I==null?void 0:I.default,I==null?void 0:I[K],(a=p==null?void 0:p.classNames)==null?void 0:a[K]),"data-sonner-toast":"","data-rich-colors":(o=p.richColors)!=null?o:P,"data-styled":!(p.jsx||p.unstyled||f),"data-mounted":ie,"data-promise":!!p.promise,"data-swiped":Ze,"data-removed":Se,"data-visible":uo,"data-y-position":Wt,"data-x-position":ma,"data-index":k,"data-front":co,"data-swiping":Re,"data-dismissible":Z,"data-type":K,"data-invert":Xs,"data-swipe-out":Ce,"data-swipe-direction":Y,"data-expanded":!!(R||L&&ie),style:{"--index":k,"--toasts-before":k,"--z-index":w.length-k,"--offset":`${Se?ht:Pe.current}px`,"--initial-height":L?"auto":`${Tt}px`,...E,...p.style},onDragEnd:()=>{re(!1),B(null),et.current=null},onPointerDown:qe=>{rt||!Z||($t.current=new Date,kt(Pe.current),qe.target.setPointerCapture(qe.pointerId),qe.target.tagName!=="BUTTON"&&(re(!0),et.current={x:qe.clientX,y:qe.clientY}))},onPointerUp:()=>{var qe,nt,Ct,Yo;if(Ce||!Z)return;et.current=null;let Zo=Number(((qe=Ke.current)==null?void 0:qe.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Un=Number(((nt=Ke.current)==null?void 0:nt.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ys=new Date().getTime()-((Ct=$t.current)==null?void 0:Ct.getTime()),er=_==="x"?Zo:Un,Gn=Math.abs(er)/Ys;if(Math.abs(er)>=iV||Gn>.11){kt(Pe.current),(Yo=p.onDismiss)==null||Yo.call(p,p),ae(_==="x"?Zo>0?"right":"left":Un>0?"down":"up"),pa(),$e(!0),mt(!1);return}re(!1),B(null)},onPointerMove:qe=>{var nt,Ct,Yo,Zo;if(!et.current||!Z||((nt=window.getSelection())==null?void 0:nt.toString().length)>0)return;let Un=qe.clientY-et.current.y,Ys=qe.clientX-et.current.x,er=(Ct=e.swipeDirections)!=null?Ct:cV(D);!_&&(Math.abs(Ys)>1||Math.abs(Un)>1)&&B(Math.abs(Ys)>Math.abs(Un)?"x":"y");let Gn={x:0,y:0};_==="y"?(er.includes("top")||er.includes("bottom"))&&(er.includes("top")&&Un<0||er.includes("bottom")&&Un>0)&&(Gn.y=Un):_==="x"&&(er.includes("left")||er.includes("right"))&&(er.includes("left")&&Ys<0||er.includes("right")&&Ys>0)&&(Gn.x=Ys),(Math.abs(Gn.x)>0||Math.abs(Gn.y)>0)&&mt(!0),(Yo=Ke.current)==null||Yo.style.setProperty("--swipe-amount-x",`${Gn.x}px`),(Zo=Ke.current)==null||Zo.style.setProperty("--swipe-amount-y",`${Gn.y}px`)}},wt&&!p.jsx?Q.createElement("button",{"aria-label":H,"data-disabled":rt,"data-close-button":!0,onClick:rt||!Z?()=>{}:()=>{var qe;pa(),(qe=p.onDismiss)==null||qe.call(p,p)},className:ar(I==null?void 0:I.closeButton,(r=p==null?void 0:p.classNames)==null?void 0:r.closeButton)},(n=j==null?void 0:j.close)!=null?n:KB):null,p.jsx||x.isValidElement(p.title)?p.jsx?p.jsx:typeof p.title=="function"?p.title():p.title:Q.createElement(Q.Fragment,null,K||p.icon||p.promise?Q.createElement("div",{"data-icon":"",className:ar(I==null?void 0:I.icon,(i=p==null?void 0:p.classNames)==null?void 0:i.icon)}
418,p.promise||p.type==="loading"&&!p.icon?p.icon||Fn():null,p.type!=="loading"?p.icon||(j==null?void 0:j[K])||BB(K):null):null,Q.createElement("div",{"data-content":"",className:ar(I==null?void 0:I.content,(l=p==null?void 0:p.classNames)==null?void 0:l.content)},Q.createElement("div",{"data-title":"",className:ar(I==null?void 0:I.title,(c=p==null?void 0:p.classNames)==null?void 0:c.title)},typeof p.title=="function"?p.title():p.title),p.description?Q.createElement("div",{"data-description":"",className:ar(V,he,I==null?void 0:I.description,(d=p==null?void 0:p.classNames)==null?void 0:d.description)},typeof p.description=="function"?p.description():p.description):null),x.isValidElement(p.cancel)?p.cancel:p.cancel&&lp(p.cancel)?Q.createElement("button",{"data-button":!0,"data-cancel":!0,style:p.cancelButtonStyle||A,onClick:qe=>{var nt,Ct;lp(p.cancel)&&Z&&((Ct=(nt=p.cancel).onClick)==null||Ct.call(nt,qe),pa())},className:ar(I==null?void 0:I.cancelButton,(u=p==null?void 0:p.classNames)==null?void 0:u.cancelButton)},p.cancel.label):null,x.isValidElement(p.action)?p.action:p.action&&lp(p.action)?Q.createElement("button",{"data-button":!0,"data-action":!0,style:p.actionButtonStyle||$,onClick:qe=>{var nt,Ct;lp(p.action)&&((Ct=(nt=p.action).onClick)==null||Ct.call(nt,qe),!qe.defaultPrevented&&pa())},className:ar(I==null?void 0:I.actionButton,(m=p==null?void 0:p.classNames)==null?void 0:m.actionButton)},p.action.label):null))};function TP(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function uV(e,t){let a={};return[e,t].forEach((o,r)=>{let n=r===1,i=n?"--mobile-offset":"--offset",l=n?rV:oV;function c(d){["top","right","bottom","left"].forEach(u=>{a[`${i}-${u}`]=typeof d=="number"?`${d}px`:d})}typeof o=="number"||typeof o=="string"?c(o):typeof o=="object"?["top","right","bottom","left"].forEach(d=>{o[d]===void 0?a[`${i}-${d}`]=l:a[`${i}-${d}`]=typeof o[d]=="number"?`${o[d]}px`:o[d]}):c(l)}),a}var mV=x.forwardRef(function(e,t){let{invert:a,position:o="bottom-right",hotkey:r=["altKey","KeyT"],expand:n,closeButton:i,className:l,offset:c,mobileOffset:d,theme:u="light",richColors:m,duration:h,style:p,visibleToasts:f=aV,toastOptions:g,dir:b=TP(),gap:v=sV,loadingIcon:y,icons:k,containerAriaLabel:w="Notifications",pauseWhenPageIsHidden:R}=e,[C,P]=Q.useState([]),N=Q.useMemo(()=>Array.from(new Set([o].concat(C.filter(W=>W.position).map(W=>W.position)))),[C,o]),[E,A]=Q.useState([]),[$,O]=Q.useState(!1),[V,T]=Q.useState(!1),[D,F]=Q.useState(u!=="system"?u:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),U=Q.useRef(null),L=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),I=Q.useRef(null),j=Q.useRef(!1),H=Q.useCallback(W=>{P(_=>{var B;return(B=_.find(Y=>Y.id===W.id))!=null&&B.delete||Wa.dismiss(W.id),_.filter(({id:Y})=>Y!==W.id)})},[]);return Q.useEffect(()=>Wa.subscribe(W=>{if(W.dismiss){P(_=>_.map(B=>B.id===W.id?{...B,delete:!0}:B));return}setTimeout(()=>{e3.flushSync(()=>{P(_=>{let B=_.findIndex(Y=>Y.id===W.id);return B!==-1?[..._.slice(0,B),{..._[B],...W},..._.slice(B+1)]:[W,..._]})})})}),[]),Q.useEffect(()=>{if(u!=="system"){F(u);return}if(u==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?F("dark"):F("light")),typeof window>"u")return;let W=window.matchMedia("(prefers-color-scheme: dark)");try{W.addEventListener("change",({matches:_})=>{F(_?"dark":"light")})}catch{W.addListener(({matches:B})=>{try{F(B?"dark":"light")}catch(Y){console.error(Y)}})}},[u]),Q.useEffect(()=>{C.length<=1&&O(!1)},[C]),Q.useEffect(()=>{let W=_=>{var B,Y;r.every(ae=>_[ae]||_.code===ae)&&(O(!0),(B=U.current)==null||B.focus()),_.code==="Escape"&&(document.activeElement===U.current||(Y=U.current)!=null&&Y.contains(document.activeElement))&&O(!1)};return document.addEventListener("keydown",W),()=>document.removeEventListener("keydown",W)},[r]),Q.useEffect(()=>{if(U.current)return()=>{I.current&&(I.current.focus({preventScroll:!0}),I.current=null,j.current=!1)}},[U.current]),Q.createElement("section",{ref:t,"aria-label":`${w} ${L}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},N.map((W,_)=>{var B;let[Y,ae]=W.split("-");return C.length?Q.createElement("ol",{key:W,dir:b==="auto"?TP():b,tabIndex:-1,ref:U,className:l,"data-sonner-toaster":!0,"data-theme":D,"data-y-position":Y,"data-lifted":$&&C.length>1&&!n,"data-x-position":ae,style:{"--front-toast-height":`${((B=E[0])==null?void 0:B.height)||0}px`,"--width":`${nV}px`,"--gap":`${v}px`,...p,...uV(c,d)},onBlur:ie=>{j.current&&!ie.currentTarget.contains(ie.relatedTarget)&&(j.current=!1,I.current&&(I.current.focus({preventScroll:!0}),I.current=null))},onFocus:ie=>{ie.target instanceof HTMLElement&&ie.target.dataset.dismissible==="false"||j.current||(j.current=!0,I.current=ie.relatedTarget)},onMouseEnter:()=>O(!0),onMouseMove:()=>O(!0),onMouseLeave:()=>{V||O(!1)},onDragEnd:()=>O(!1),onPointerDown:ie=>{ie.target instanceof HTMLElement&&ie.target.dataset.dismissible==="false"||T(!0)},onPointerUp:()=>T(!1)},C.filter(ie=>!ie.position&&_===0||ie.position===W).map((ie,fe)=>{var Se,Ee;return Q.createElement(dV,{key:ie.id,icons:k,index:fe,toast:ie,defaultRichColors:m,duration:(Se=g==null?void 0:g.duration)!=null?Se:h,className:g==null?void 0:g.className,descriptionClassName:g==null?void 0:g.descriptionClassName,invert:a,visibleToasts:f,closeButton:(Ee=g==null?void 0:g.closeButton)!=null?Ee:i,interacting:V,position:W,style:g==null?void 0:g.style,unstyled:g==null?void 0:g.unstyled,classNames:g==null?void 0:g.classNames,cancelButtonStyle:g==null?void 0:g.cancelButtonStyle,actionButtonStyle:g==null?void 0:g.actionButtonStyle,removeToast:H,toasts:C.filter(Re=>Re.position==ie.position),heights:E.filter(Re=>Re.position==ie.position),setHeights:A,expandByDefault:n,gap:v,loadingIcon:y,expanded:$,pauseWhenPageIsHidden:R,swipeDirections:e.swipeDirections})})):null}))});const pV=({...e})=>{const{theme:t="system"}=LB();return s.jsx(mV,{theme:t,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e})};var hV=XA[" useId ".trim().toString()]||(()=>{}),fV=0;function nu(e){const[t,a]=x.useState(hV());return Zr(()=>{a(o=>o??String(fV++))},[e]),t?`radix-${t}`:""}const gV=["top","right","bottom","left"],qs=Math.min,go=Math.max,df=Math.round,cp=Math.floor,Ds=e=>({x:e,y:e}
vendor: 4,207 bytes, line 418
418),vV={left:"right",right:"left",bottom:"top",top:"bottom"},xV={start:"end",end:"start"};function Fb(e,t,a){return go(e,qs(t,a))}function qn(e,t){return typeof e=="function"?e(t):e}function Dn(e){return e.split("-")[0]}function od(e){return e.split("-")[1]}function L1(e){return e==="x"?"y":"x"}function B1(e){return e==="y"?"height":"width"}function Is(e){return["top","bottom"].includes(Dn(e))?"y":"x"}function V1(e){return L1(Is(e))}function bV(e,t,a){a===void 0&&(a=!1);const o=od(e),r=V1(e),n=B1(r);let i=r==="x"?o===(a?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[n]>t.floating[n]&&(i=uf(i)),[i,uf(i)]}function yV(e){const t=uf(e);return[Ub(e),t,Ub(t)]}function Ub(e){return e.replace(/start|end/g,t=>xV[t])}function kV(e,t,a){const o=["left","right"],r=["right","left"],n=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return a?t?r:o:t?o:r;case"left":case"right":return t?n:i;default:return[]}}function wV(e,t,a,o){const r=od(e);let n=kV(Dn(e),a==="start",o);return r&&(n=n.map(i=>i+"-"+r),t&&(n=n.concat(n.map(Ub)))),n}function uf(e){return e.replace(/left|right|bottom|top/g,t=>vV[t])}function CV(e){return{top:0,right:0,bottom:0,left:0,...e}}function AT(e){return typeof e!="number"?CV(e):{top:e,right:e,bottom:e,left:e}}function mf(e){const{x:t,y:a,width:o,height:r}=e;return{width:o,height:r,top:a,left:t,right:t+o,bottom:a+r,x:t,y:a}}function $P(e,t,a){let{reference:o,floating:r}=e;const n=Is(t),i=V1(t),l=B1(i),c=Dn(t),d=n==="y",u=o.x+o.width/2-r.width/2,m=o.y+o.height/2-r.height/2,h=o[l]/2-r[l]/2;let p;switch(c){case"top":p={x:u,y:o.y-r.height};break;case"bottom":p={x:u,y:o.y+o.height};break;case"right":p={x:o.x+o.width,y:m};break;case"left":p={x:o.x-r.width,y:m};break;default:p={x:o.x,y:o.y}}switch(od(t)){case"start":p[i]-=h*(a&&d?-1:1);break;case"end":p[i]+=h*(a&&d?-1:1);break}return p}const PV=async(e,t,a)=>{const{placement:o="bottom",strategy:r="absolute",middleware:n=[],platform:i}=a,l=n.filter(Boolean),c=await(i.isRTL==null?void 0:i.isRTL(t));let d=await i.getElementRects({reference:e,floating:t,strategy:r}),{x:u,y:m}=$P(d,o,c),h=o,p={},f=0;for(let g=0;g<l.length;g++){const{name:b,fn:v}=l[g],{x:y,y:k,data:w,reset:R}=await v({x:u,y:m,initialPlacement:o,placement:h,strategy:r,middlewareData:p,rects:d,platform:i,elements:{reference:e,floating:t}});u=y??u,m=k??m,p={...p,[b]:{...p[b],...w}},R&&f<=50&&(f++,typeof R=="object"&&(R.placement&&(h=R.placement),R.rects&&(d=R.rects===!0?await i.getElementRects({reference:e,floating:t,strategy:r}):R.rects),{x:u,y:m}=$P(d,h,c)),g=-1)}return{x:u,y:m,placement:h,strategy:r,middlewareData:p}};async function Iu(e,t){var a;t===void 0&&(t={});const{x:o,y:r,platform:n,rects:i,elements:l,strategy:c}=e,{boundary:d="clippingAncestors",rootBoundary:u="viewport",elementContext:m="floating",altBoundary:h=!1,padding:p=0}=qn(t,e),f=AT(p),b=l[h?m==="floating"?"reference":"floating":m],v=mf(await n.getClippingRect({element:(a=await(n.isElement==null?void 0:n.isElement(b)))==null||a?b:b.contextElement||await(n.getDocumentElement==null?void 0:n.getDocumentElement(l.floating)),boundary:d,rootBoundary:u,strategy:c})),y=m==="floating"?{x:o,y:r,width:i.floating.width,height:i.floating.height}:i.reference,k=await(n.getOffsetParent==null?void 0:n.getOffsetParent(l.floating)),w=await(n.isElement==null?void 0:n.isElement(k))?await(n.getScale==null?void 0:n.getScale(k))||{x:1,y:1}:{x:1,y:1},R=mf(n.convertOffsetParentRelativeRectToViewportRelativeRect?await n.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:y,offsetParent:k,strategy:c}):y);return{top:(v.top-R.top+f.top)/w.y,bottom:(R.bottom-v.bottom+f.bottom)/w.y,left:(v.left-R.left+f.left)/w.x,right:(R.right-v.right+f.right)/w.x}}const SV=e=>({name:"arrow",options:e,async fn(t){const{x:a,y:o,placement:r,rects:n,platform:i,elements:l,middlewareData:c}=t,{element:d,padding:u=0}=qn(e,t)||{};if(d==null)return{};const m=AT(u),h={x:a,y:o},p=V1(r),f=B1(p),g=await i.getDimensions(d),b=p==="y",v=b?"top":"left",y=b?"bottom":"right",k=b?"clientHeight":"clientWidth",w=n.reference[f]+n.reference[p]-h[p]-n.floating[f],R=h[p]-n.reference[p],C=await(i.getOffsetParent==null?void 0:i.getOffsetParent(d));let P=C?C[k]:0;
vendor: 7,445 bytes, line 418
418(!P||!await(i.isElement==null?void 0:i.isElement(C)))&&(P=l.floating[k]||n.floating[f]);const N=w/2-R/2,E=P/2-g[f]/2-1,A=qs(m[v],E),$=qs(m[y],E),O=A,V=P-g[f]-$,T=P/2-g[f]/2+N,D=Fb(O,T,V),F=!c.arrow&&od(r)!=null&&T!==D&&n.reference[f]/2-(T<O?A:$)-g[f]/2<0,U=F?T<O?T-O:T-V:0;return{[p]:h[p]+U,data:{[p]:D,centerOffset:T-D-U,...F&&{alignmentOffset:U}},reset:F}}}),RV=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var a,o;const{placement:r,middlewareData:n,rects:i,initialPlacement:l,platform:c,elements:d}=t,{mainAxis:u=!0,crossAxis:m=!0,fallbackPlacements:h,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:g=!0,...b}=qn(e,t);if((a=n.arrow)!=null&&a.alignmentOffset)return{};const v=Dn(r),y=Is(l),k=Dn(l)===l,w=await(c.isRTL==null?void 0:c.isRTL(d.floating)),R=h||(k||!g?[uf(l)]:yV(l)),C=f!=="none";!h&&C&&R.push(...wV(l,g,f,w));const P=[l,...R],N=await Iu(t,b),E=[];let A=((o=n.flip)==null?void 0:o.overflows)||[];if(u&&E.push(N[v]),m){const T=bV(r,i,w);E.push(N[T[0]],N[T[1]])}if(A=[...A,{placement:r,overflows:E}],!E.every(T=>T<=0)){var $,O;const T=((($=n.flip)==null?void 0:$.index)||0)+1,D=P[T];if(D)return{data:{index:T,overflows:A},reset:{placement:D}};let F=(O=A.filter(U=>U.overflows[0]<=0).sort((U,L)=>U.overflows[1]-L.overflows[1])[0])==null?void 0:O.placement;if(!F)switch(p){case"bestFit":{var V;const U=(V=A.filter(L=>{if(C){const I=Is(L.placement);return I===y||I==="y"}return!0}).map(L=>[L.placement,L.overflows.filter(I=>I>0).reduce((I,j)=>I+j,0)]).sort((L,I)=>L[1]-I[1])[0])==null?void 0:V[0];U&&(F=U);break}case"initialPlacement":F=l;break}if(r!==F)return{reset:{placement:F}}}return{}}}};function OP(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function qP(e){return gV.some(t=>e[t]>=0)}const jV=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:a}=t,{strategy:o="referenceHidden",...r}=qn(e,t);switch(o){case"referenceHidden":{const n=await Iu(t,{...r,elementContext:"reference"}),i=OP(n,a.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:qP(i)}}}case"escaped":{const n=await Iu(t,{...r,altBoundary:!0}),i=OP(n,a.floating);return{data:{escapedOffsets:i,escaped:qP(i)}}}default:return{}}}}};async function NV(e,t){const{placement:a,platform:o,elements:r}=e,n=await(o.isRTL==null?void 0:o.isRTL(r.floating)),i=Dn(a),l=od(a),c=Is(a)==="y",d=["left","top"].includes(i)?-1:1,u=n&&c?-1:1,m=qn(t,e);let{mainAxis:h,crossAxis:p,alignmentAxis:f}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return l&&typeof f=="number"&&(p=l==="end"?f*-1:f),c?{x:p*u,y:h*d}:{x:h*d,y:p*u}}const AV=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var a,o;const{x:r,y:n,placement:i,middlewareData:l}=t,c=await NV(t,e);return i===((a=l.offset)==null?void 0:a.placement)&&(o=l.arrow)!=null&&o.alignmentOffset?{}:{x:r+c.x,y:n+c.y,data:{...c,placement:i}}}}},EV=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:a,y:o,placement:r}=t,{mainAxis:n=!0,crossAxis:i=!1,limiter:l={fn:b=>{let{x:v,y}=b;return{x:v,y}}},...c}=qn(e,t),d={x:a,y:o},u=await Iu(t,c),m=Is(Dn(r)),h=L1(m);let p=d[h],f=d[m];if(n){const b=h==="y"?"top":"left",v=h==="y"?"bottom":"right",y=p+u[b],k=p-u[v];p=Fb(y,p,k)}if(i){const b=m==="y"?"top":"left",v=m==="y"?"bottom":"right",y=f+u[b],k=f-u[v];f=Fb(y,f,k)}const g=l.fn({...t,[h]:p,[m]:f});return{...g,data:{x:g.x-a,y:g.y-o,enabled:{[h]:n,[m]:i}}}}}},_V=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:a,y:o,placement:r,rects:n,middlewareData:i}=t,{offset:l=0,mainAxis:c=!0,crossAxis:d=!0}=qn(e,t),u={x:a,y:o},m=Is(r),h=L1(m);let p=u[h],f=u[m];const g=qn(l,t),b=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(c){const k=h==="y"?"height":"width",w=n.reference[h]-n.floating[k]+b.mainAxis,R=n.reference[h]+n.reference[k]-b.mainAxis;p<w?p=w:p>R&&(p=R)}if(d){var v,y;const k=h==="y"?"width":"height",w=["top","left"].includes(Dn(r)),R=n.reference[m]-n.floating[k]+(w&&((v=i.offset)==null?void 0:v[m])||0)+(w?0:b.crossAxis),C=n.reference[m]+n.reference[k]+(w?0:((y=i.offset)==null?void 0:y[m])||0)-(w?b.crossAxis:0);f<R?f=R:f>C&&(f=C)}return{[h]:p,[m]:f}}}},TV=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var a,o;const{placement:r,rects:n,platform:i,elements:l}=t,{apply:c=()=>{},...d}=qn(e,t),u=await Iu(t,d),m=Dn(r),h=od(r),p=Is(r)==="y",{width:f,height:g}=n.floating;let b,v;m==="top"||m==="bottom"?(b=m,v=h===(await(i.isRTL==null?void 0:i.isRTL(l.floating))?"start":"end")?"left":"right"):(v=m,b=h==="end"?"top":"bottom");const y=g-u.top-u.bottom,k=f-u.left-u.right,w=qs(g-u[b],y),R=qs(f-u[v],k),C=!t.middlewareData.shift;let P=w,N=R;if((a=t.middlewareData.shift)!=null&&a.enabled.x&&(N=k),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(P=y),C&&!h){const A=go(u.left,0),$=go(u.right,0),O=go(u.top,0),V=go(u.bottom,0);p?N=f-2*(A!==0||$!==0?A+$:go(u.left,u.right)):P=g-2*(O!==0||V!==0?O+V:go(u.top,u.bottom))}await c({...t,availableWidth:N,availableHeight:P});const E=await i.getDimensions(l.floating);return f!==E.width||g!==E.height?{reset:{rects:!0}}:{}}}};function Ag(){return typeof window<"u"}function rd(e){return ET(e)?(e.nodeName||"").toLowerCase():"#document"}function ko(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function rn(e){var t;return(t=(ET(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function ET(e){return Ag()?e instanceof Node||e instanceof ko(e).Node:!1}function Rr(e){return Ag()?e instanceof Element||e instanceof ko(e).Element:!1}function tn(e){return Ag()?e instanceof HTMLElement||e instanceof ko(e).HTMLElement:!1}function DP(e){return!Ag()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof ko(e).ShadowRoot}function wm(e){const{overflow:t,overflowX:a,overflowY:o,display:r}=jr(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+a)&&!["inline","contents"].includes(r)}function $V(e){return["table","td","th"].includes(rd(e))}function Eg(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function F1(e){const t=U1(),a=Rr(e)?jr(e):e;return a.transform!=="none"||a.perspective!=="none"||(a.containerType?a.containerType!=="normal":!1)||!t&&(a.backdropFilter?a.backdropFilter!=="none":!1)||!t&&(a.filter?a.filter!=="none":!1)||["transform","perspective","filter"].some(o=>(a.willChange||"").includes(o))||["paint","layout","strict","content"].some(o=>(a.contain||"").includes(o))}function OV(e){let t=Ms(e);for(;tn(t)&&!Tc(t);){if(F1(t))return t;if(Eg(t))return null;t=Ms(t)}return null}function U1(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Tc(e){return["html","body","#document"].includes(rd(e))}function jr(e){return ko(e).getComputedStyle(e)}function _g(e){return Rr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Ms(e){if(rd(e)==="html")return e;const t=e.assignedSlot||e.parentNode||DP(e)&&e.host||rn(e);return DP(t)?t.host:t}function _T(e){const t=Ms(e);return Tc(t)?e.ownerDocument?e.ownerDocument.body:e.body:tn(t)&&wm(t)?t:_T(t)}function Mu(e,t,a){var o;t===void 0&&(t=[]),a===void 0&&(a=!0);const r=_T(e),n=r===((o=e.ownerDocument)==null?void 0:o.body),i=ko(r);if(n){const l=Gb(i);
vendor: 4,613 bytes, line 418
418return t.concat(i,i.visualViewport||[],wm(r)?r:[],l&&a?Mu(l):[])}return t.concat(r,Mu(r,[],a))}function Gb(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function TT(e){const t=jr(e);let a=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=tn(e),n=r?e.offsetWidth:a,i=r?e.offsetHeight:o,l=df(a)!==n||df(o)!==i;return l&&(a=n,o=i),{width:a,height:o,$:l}}function G1(e){return Rr(e)?e:e.contextElement}function tc(e){const t=G1(e);if(!tn(t))return Ds(1);const a=t.getBoundingClientRect(),{width:o,height:r,$:n}=TT(t);let i=(n?df(a.width):a.width)/o,l=(n?df(a.height):a.height)/r;return(!i||!Number.isFinite(i))&&(i=1),(!l||!Number.isFinite(l))&&(l=1),{x:i,y:l}}const qV=Ds(0);function $T(e){const t=ko(e);return!U1()||!t.visualViewport?qV:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function DV(e,t,a){return t===void 0&&(t=!1),!a||t&&a!==ko(e)?!1:t}function zi(e,t,a,o){t===void 0&&(t=!1),a===void 0&&(a=!1);const r=e.getBoundingClientRect(),n=G1(e);let i=Ds(1);t&&(o?Rr(o)&&(i=tc(o)):i=tc(e));const l=DV(n,a,o)?$T(n):Ds(0);let c=(r.left+l.x)/i.x,d=(r.top+l.y)/i.y,u=r.width/i.x,m=r.height/i.y;if(n){const h=ko(n),p=o&&Rr(o)?ko(o):o;let f=h,g=Gb(f);for(;g&&o&&p!==f;){const b=tc(g),v=g.getBoundingClientRect(),y=jr(g),k=v.left+(g.clientLeft+parseFloat(y.paddingLeft))*b.x,w=v.top+(g.clientTop+parseFloat(y.paddingTop))*b.y;c*=b.x,d*=b.y,u*=b.x,m*=b.y,c+=k,d+=w,f=ko(g),g=Gb(f)}}return mf({width:u,height:m,x:c,y:d})}function IV(e){let{elements:t,rect:a,offsetParent:o,strategy:r}=e;const n=r==="fixed",i=rn(o),l=t?Eg(t.floating):!1;if(o===i||l&&n)return a;let c={scrollLeft:0,scrollTop:0},d=Ds(1);const u=Ds(0),m=tn(o);if((m||!m&&!n)&&((rd(o)!=="body"||wm(i))&&(c=_g(o)),tn(o))){const h=zi(o);d=tc(o),u.x=h.x+o.clientLeft,u.y=h.y+o.clientTop}return{width:a.width*d.x,height:a.height*d.y,x:a.x*d.x-c.scrollLeft*d.x+u.x,y:a.y*d.y-c.scrollTop*d.y+u.y}}function MV(e){return Array.from(e.getClientRects())}function zb(e,t){const a=_g(e).scrollLeft;return t?t.left+a:zi(rn(e)).left+a}function LV(e){const t=rn(e),a=_g(e),o=e.ownerDocument.body,r=go(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),n=go(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let i=-a.scrollLeft+zb(e);const l=-a.scrollTop;return jr(o).direction==="rtl"&&(i+=go(t.clientWidth,o.clientWidth)-r),{width:r,height:n,x:i,y:l}}function BV(e,t){const a=ko(e),o=rn(e),r=a.visualViewport;let n=o.clientWidth,i=o.clientHeight,l=0,c=0;if(r){n=r.width,i=r.height;const d=U1();(!d||d&&t==="fixed")&&(l=r.offsetLeft,c=r.offsetTop)}return{width:n,height:i,x:l,y:c}}function VV(e,t){const a=zi(e,!0,t==="fixed"),o=a.top+e.clientTop,r=a.left+e.clientLeft,n=tn(e)?tc(e):Ds(1),i=e.clientWidth*n.x,l=e.clientHeight*n.y,c=r*n.x,d=o*n.y;return{width:i,height:l,x:c,y:d}}function IP(e,t,a){let o;if(t==="viewport")o=BV(e,a);else if(t==="document")o=LV(rn(e));else if(Rr(t))o=VV(t,a);else{const r=$T(e);o={...t,x:t.x-r.x,y:t.y-r.y}}return mf(o)}function OT(e,t){const a=Ms(e);return a===t||!Rr(a)||Tc(a)?!1:jr(a).position==="fixed"||OT(a,t)}function FV(e,t){const a=t.get(e);if(a)return a;let o=Mu(e,[],!1).filter(l=>Rr(l)&&rd(l)!=="body"),r=null;const n=jr(e).position==="fixed";let i=n?Ms(e):e;for(;Rr(i)&&!Tc(i);){const l=jr(i),c=F1(i);!c&&l.position==="fixed"&&(r=null),(n?!c&&!r:!c&&l.position==="static"&&!!r&&["absolute","fixed"].includes(r.position)||wm(i)&&!c&&OT(e,i))?o=o.filter(u=>u!==i):r=l,i=Ms(i)}return t.set(e,o),o}function UV(e){let{element:t,boundary:a,rootBoundary:o,strategy:r}=e;const i=[...a==="clippingAncestors"?Eg(t)?[]:FV(t,this._c):[].concat(a),o],l=i[0],c=i.reduce((d,u)=>{const m=IP(t,u,r);return d.top=go(m.top,d.top),d.right=qs(m.right,d.right),d.bottom=qs(m.bottom,d.bottom),d.left=go(m.left,d.left),d},IP(t,l,r));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}function GV(e){const{width:t,height:a}=TT(e);return{width:t,height:a}}function zV(e,t,a){const o=tn(t),r=rn(t),n=a==="fixed",i=zi(e,!0,n,t);let l={scrollLeft:0,scrollTop:0};const c=Ds(0);if(o||!o&&!n)if((rd(t)!=="body"||wm(r))&&(l=_g(t)),o){const p=zi(t,!0,n,t);c.x=p.x+t.clientLeft,c.y=p.y+t.clientTop}else r&&(c.x=zb(r));let d=0,u=0;if(r&&!o&&!n){const p=r.getBoundingClientRect();u=p.top+l.scrollTop,d=p.left+l.scrollLeft-zb(r,p)}const m=i.left+l.scrollLeft-c.x-d,h=i.top+l.scrollTop-c.y-u;return{x:m,y:h,width:i.width,height:i.height}}function iv(e){return jr(e).position==="static"}function MP(e,t){if(!tn(e)||jr(e).position==="fixed")return null;if(t)return t(e);let a=e.offsetParent;return rn(e)===a&&(a=a.ownerDocument.body),a}function qT(e,t){const a=ko(e);if(Eg(e))return a;
vendor: 9,027 bytes, line 418
418if(!tn(e)){let r=Ms(e);for(;r&&!Tc(r);){if(Rr(r)&&!iv(r))return r;r=Ms(r)}return a}let o=MP(e,t);for(;o&&$V(o)&&iv(o);)o=MP(o,t);return o&&Tc(o)&&iv(o)&&!F1(o)?a:o||OV(e)||a}const HV=async function(e){const t=this.getOffsetParent||qT,a=this.getDimensions,o=await a(e.floating);return{reference:zV(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function KV(e){return jr(e).direction==="rtl"}const QV={convertOffsetParentRelativeRectToViewportRelativeRect:IV,getDocumentElement:rn,getClippingRect:UV,getOffsetParent:qT,getElementRects:HV,getClientRects:MV,getDimensions:GV,getScale:tc,isElement:Rr,isRTL:KV};function WV(e,t){let a=null,o;const r=rn(e);function n(){var l;clearTimeout(o),(l=a)==null||l.disconnect(),a=null}function i(l,c){l===void 0&&(l=!1),c===void 0&&(c=1),n();const{left:d,top:u,width:m,height:h}=e.getBoundingClientRect();if(l||t(),!m||!h)return;const p=cp(u),f=cp(r.clientWidth-(d+m)),g=cp(r.clientHeight-(u+h)),b=cp(d),y={rootMargin:-p+"px "+-f+"px "+-g+"px "+-b+"px",threshold:go(0,qs(1,c))||1};let k=!0;function w(R){const C=R[0].intersectionRatio;if(C!==c){if(!k)return i();C?i(!1,C):o=setTimeout(()=>{i(!1,1e-7)},1e3)}k=!1}try{a=new IntersectionObserver(w,{...y,root:r.ownerDocument})}catch{a=new IntersectionObserver(w,y)}a.observe(e)}return i(!0),n}function JV(e,t,a,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:n=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:c=!1}=o,d=G1(e),u=r||n?[...d?Mu(d):[],...Mu(t)]:[];u.forEach(v=>{r&&v.addEventListener("scroll",a,{passive:!0}),n&&v.addEventListener("resize",a)});const m=d&&l?WV(d,a):null;let h=-1,p=null;i&&(p=new ResizeObserver(v=>{let[y]=v;y&&y.target===d&&p&&(p.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var k;(k=p)==null||k.observe(t)})),a()}),d&&!c&&p.observe(d),p.observe(t));let f,g=c?zi(e):null;c&&b();function b(){const v=zi(e);g&&(v.x!==g.x||v.y!==g.y||v.width!==g.width||v.height!==g.height)&&a(),g=v,f=requestAnimationFrame(b)}return a(),()=>{var v;u.forEach(y=>{r&&y.removeEventListener("scroll",a),n&&y.removeEventListener("resize",a)}),m==null||m(),(v=p)==null||v.disconnect(),p=null,c&&cancelAnimationFrame(f)}}const XV=AV,YV=EV,ZV=RV,eF=TV,tF=jV,LP=SV,aF=_V,oF=(e,t,a)=>{const o=new Map,r={platform:QV,...a},n={...r.platform,_c:o};return PV(e,t,{...r,platform:n})};var uh=typeof document<"u"?x.useLayoutEffect:x.useEffect;function pf(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let a,o,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(a=e.length,a!==t.length)return!1;for(o=a;o--!==0;)if(!pf(e[o],t[o]))return!1;return!0}if(r=Object.keys(e),a=r.length,a!==Object.keys(t).length)return!1;for(o=a;o--!==0;)if(!{}.hasOwnProperty.call(t,r[o]))return!1;for(o=a;o--!==0;){const n=r[o];if(!(n==="_owner"&&e.$$typeof)&&!pf(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function DT(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function BP(e,t){const a=DT(e);return Math.round(t*a)/a}function lv(e){const t=x.useRef(e);return uh(()=>{t.current=e}),t}function rF(e){e===void 0&&(e={});const{placement:t="bottom",strategy:a="absolute",middleware:o=[],platform:r,elements:{reference:n,floating:i}={},transform:l=!0,whileElementsMounted:c,open:d}=e,[u,m]=x.useState({x:0,y:0,strategy:a,placement:t,middlewareData:{},isPositioned:!1}),[h,p]=x.useState(o);pf(h,o)||p(o);const[f,g]=x.useState(null),[b,v]=x.useState(null),y=x.useCallback(L=>{L!==C.current&&(C.current=L,g(L))},[]),k=x.useCallback(L=>{L!==P.current&&(P.current=L,v(L))},[]),w=n||f,R=i||b,C=x.useRef(null),P=x.useRef(null),N=x.useRef(u),E=c!=null,A=lv(c),$=lv(r),O=lv(d),V=x.useCallback(()=>{if(!C.current||!P.current)return;const L={placement:t,strategy:a,middleware:h};$.current&&(L.platform=$.current),oF(C.current,P.current,L).then(I=>{const j={...I,isPositioned:O.current!==!1};T.current&&!pf(N.current,j)&&(N.current=j,Xc.flushSync(()=>{m(j)}))})},[h,t,a,$,O]);uh(()=>{d===!1&&N.current.isPositioned&&(N.current.isPositioned=!1,m(L=>({...L,isPositioned:!1})))},[d]);const T=x.useRef(!1);uh(()=>(T.current=!0,()=>{T.current=!1}),[]),uh(()=>{if(w&&(C.current=w),R&&(P.current=R),w&&R){if(A.current)return A.current(w,R,V);V()}},[w,R,V,A,E]);const D=x.useMemo(()=>({reference:C,floating:P,setReference:y,setFloating:k}),[y,k]),F=x.useMemo(()=>({reference:w,floating:R}),[w,R]),U=x.useMemo(()=>{const L={position:a,left:0,top:0};if(!F.floating)return L;const I=BP(F.floating,u.x),j=BP(F.floating,u.y);return l?{...L,transform:"translate("+I+"px, "+j+"px)",...DT(F.floating)>=1.5&&{willChange:"transform"}}:{position:a,left:I,top:j}},[a,l,F.floating,u.x,u.y]);return x.useMemo(()=>({...u,update:V,refs:D,elements:F,floatingStyles:U}),[u,V,D,F,U])}const nF=e=>{function t(a){return{}.hasOwnProperty.call(a,"current")}return{name:"arrow",options:e,fn(a){const{element:o,padding:r}=typeof e=="function"?e(a):e;return o&&t(o)?o.current!=null?LP({element:o.current,padding:r}).fn(a):{}:o?LP({element:o,padding:r}).fn(a):{}}}},sF=(e,t)=>({...XV(e),options:[e,t]}),iF=(e,t)=>({...YV(e),options:[e,t]}),lF=(e,t)=>({...aF(e),options:[e,t]}),cF=(e,t)=>({...ZV(e),options:[e,t]}),dF=(e,t)=>({...eF(e),options:[e,t]}),uF=(e,t)=>({...tF(e),options:[e,t]}),mF=(e,t)=>({...nF(e),options:[e,t]});var pF="Arrow",IT=x.forwardRef((e,t)=>{const{children:a,width:o=10,height:r=5,...n}=e;return s.jsx(yt.svg,{...n,ref:t,width:o,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?a:s.jsx("polygon",{points:"0,0 30,0 15,10"})})});IT.displayName=pF;var hF=IT;function MT(e){const[t,a]=x.useState(void 0);return Zr(()=>{if(e){a({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const n=r[0];let i,l;if("borderBoxSize"in n){const c=n.borderBoxSize,d=Array.isArray(c)?c[0]:c;i=d.inlineSize,l=d.blockSize}else i=e.offsetWidth,l=e.offsetHeight;a({width:i,height:l})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else a(void 0)},[e]),t}var z1="Popper",[LT,BT]=Ks(z1),[fF,VT]=LT(z1),FT=e=>{const{__scopePopper:t,children:a}=e,[o,r]=x.useState(null);return s.jsx(fF,{scope:t,anchor:o,onAnchorChange:r,children:a})};FT.displayName=z1;var UT="PopperAnchor",GT=x.forwardRef((e,t)=>{const{__scopePopper:a,virtualRef:o,...r}=e,n=VT(UT,a),i=x.useRef(null),l=la(t,i);return x.useEffect(()=>{n.onAnchorChange((o==null?void 0:o.current)||i.current)}),o?null:s.jsx(yt.div,{...r,ref:l})});GT.displayName=UT;var H1="PopperContent",[gF,vF]=LT(H1),zT=x.forwardRef((e,t)=>{var ie,fe,Se,Ee,Re,re;const{__scopePopper:a,side:o="bottom",sideOffset:r=0,align:n="center",alignOffset:i=0,arrowPadding:l=0,avoidCollisions:c=!0,collisionBoundary:d=[],collisionPadding:u=0,sticky:m="partial",hideWhenDetached:h=!1,updatePositionStrategy:p="optimized",onPlaced:f,...g}=e,b=VT(H1,a),[v,y]=x.useState(null),k=la(t,Ce=>y(Ce)),[w,R]=x.useState(null),C=MT(w),P=(C==null?void 0:C.width)??0,N=(C==null?void 0:C.height)??0,E=o+(n!=="center"?"-"+n:""),A=typeof u=="number"?u:{top:0,right:0,bottom:0,left:0,...u},$=Array.isArray(d)?d:[d],O=$.length>0,V={padding:A,boundary:$.filter(bF),altBoundary:O},{refs:T,floatingStyles:D,placement:F,isPositioned:U,middlewareData:L}=rF({strategy:"fixed",placement:E,whileElementsMounted:(...Ce)=>JV(...Ce,{animationFrame:p==="always"}),elements:{reference:b.anchor},middleware:[sF({mainAxis:r+N,alignmentAxis:i}),c&&iF({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?lF():void 0,...V}),c&&cF({...V}),dF({...V,apply:({elements:Ce,rects:$e,availableWidth:Ze,availableHeight:mt})=>{const{width:ht,height:kt}=$e.reference,Tt=Ce.floating.style;Tt.setProperty("--radix-popper-available-width",`${Ze}px`),Tt.setProperty("--radix-popper-available-height",`${mt}px`),Tt.setProperty("--radix-popper-anchor-width",`${ht}px`),Tt.setProperty("--radix-popper-anchor-height",`${kt}px`)}}),w&&mF({element:w,padding:l}),yF({arrowWidth:P,arrowHeight:N}),h&&uF({strategy:"referenceHidden",...V})]}),[I,j]=QT(F),H=Yr(f);Zr(()=>{U&&(H==null||H())},[U,H]);const W=(ie=L.arrow)==null?void 0:ie.x,_=(fe=L.arrow)==null?void 0:fe.y,B=((Se=L.arrow)==null?void 0:Se.centerOffset)!==0,[Y,ae]=x.useState();return Zr(()=>{v&&ae(window.getComputedStyle(v).zIndex)},[v]),s.jsx("div",{ref:T.setFloating,"data-radix-popper-content-wrapper":"",style:{...D,transform:U?D.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Y,"--radix-popper-transform-origin":[(Ee=L.transformOrigin)==null?void 0:Ee.x,(Re=L.transformOrigin)==null?void 0:Re.y].join(" "),...((re=L.hide)==null?void 0:re.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:s.jsx(gF,{scope:a,placedSide:I,onArrowChange:R,arrowX:W,arrowY:_,shouldHideArrow:B,children:s.jsx(yt.div,{"data-side":I,"data-align":j,...g,ref:k,style:{...g.style,animation:U?void 0:"none"}})})})});zT.displayName=H1;var HT="PopperArrow",xF={top:"bottom",right:"left",bottom:"top",left:"r
418ight"},KT=x.forwardRef(function(t,a){const{__scopePopper:o,...r}=t,n=vF(HT,o),i=xF[n.placedSide];return s.jsx("span",{ref:n.onArrowChange,style:{position:"absolute",left:n.arrowX,top:n.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[n.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[n.placedSide],visibility:n.shouldHideArrow?"hidden":void 0},children:s.jsx(hF,{...r,ref:a,style:{...r.style,display:"block"}})})});KT.displayName=HT;function bF(e){return e!==null}var yF=e=>({name:"transformOrigin",options:e,fn(t){var b,v,y;const{placement:a,rects:o,middlewareData:r}=t,i=((b=r.arrow)==null?void 0:b.centerOffset)!==0,l=i?0:e.arrowWidth,c=i?0:e.arrowHeight,[d,u]=QT(a),m={start:"0%",center:"50%",end:"100%"}[u],h=(((v=r.arrow)==null?void 0:v.x)??0)+l/2,p=(((y=r.arrow)==null?void 0:y.y)??0)+c/2;let f="",g="";return d==="bottom"?(f=i?m:`${h}px`,g=`${-c}px`):d==="top"?(f=i?m:`${h}px`,g=`${o.floating.height+c}px`):d==="right"?(f=`${-c}px`,g=i?m:`${p}px`):d==="left"&&(f=`${o.floating.width+c}px`,g=i?m:`${p}px`),{data:{x:f,y:g}}}});function QT(e){const[t,a="center"]=e.split("-");return[t,a]}var zge=FT,kF=GT,wF=zT,CF=KT,[Tg,Hge]=Ks("Tooltip",[BT]),K1=BT(),WT="TooltipProvider",PF=700,VP="tooltip.open",[SF,JT]=Tg(WT),XT=e=>{const{__scopeTooltip:t,delayDuration:a=PF,skipDelayDuration:o=300,disableHoverableContent:r=!1,children:n}=e,i=x.useRef(!0),l=x.useRef(!1),c=x.useRef(0);return x.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),s.jsx(SF,{scope:t,isOpenDelayedRef:i,delayDuration:a,onOpen:x.useCallback(()=>{window.clearTimeout(c.current),i.current=!1},[]),onClose:x.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>i.current=!0,o)},[o]),isPointerInTransitRef:l,onPointerInTransitChange:x.useCallback(d=>{l.current=d},[]),disableHoverableContent:r,children:n})};
vendor: 4,340 bytes, line 418
418XT.displayName=WT;var YT="Tooltip",[Kge,$g]=Tg(YT),Hb="TooltipTrigger",RF=x.forwardRef((e,t)=>{const{__scopeTooltip:a,...o}=e,r=$g(Hb,a),n=JT(Hb,a),i=K1(a),l=x.useRef(null),c=la(t,l,r.onTriggerChange),d=x.useRef(!1),u=x.useRef(!1),m=x.useCallback(()=>d.current=!1,[]);return x.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),s.jsx(kF,{asChild:!0,...i,children:s.jsx(yt.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...o,ref:c,onPointerMove:gt(e.onPointerMove,h=>{h.pointerType!=="touch"&&!u.current&&!n.isPointerInTransitRef.current&&(r.onTriggerEnter(),u.current=!0)}),onPointerLeave:gt(e.onPointerLeave,()=>{r.onTriggerLeave(),u.current=!1}),onPointerDown:gt(e.onPointerDown,()=>{r.open&&r.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:gt(e.onFocus,()=>{d.current||r.onOpen()}),onBlur:gt(e.onBlur,r.onClose),onClick:gt(e.onClick,r.onClose)})})});RF.displayName=Hb;var jF="TooltipPortal",[Qge,NF]=Tg(jF,{forceMount:void 0}),$c="TooltipContent",ZT=x.forwardRef((e,t)=>{const a=NF($c,e.__scopeTooltip),{forceMount:o=a.forceMount,side:r="top",...n}=e,i=$g($c,e.__scopeTooltip);return s.jsx(rl,{present:o||i.open,children:i.disableHoverableContent?s.jsx(e$,{side:r,...n,ref:t}):s.jsx(AF,{side:r,...n,ref:t})})}),AF=x.forwardRef((e,t)=>{const a=$g($c,e.__scopeTooltip),o=JT($c,e.__scopeTooltip),r=x.useRef(null),n=la(t,r),[i,l]=x.useState(null),{trigger:c,onClose:d}=a,u=r.current,{onPointerInTransitChange:m}=o,h=x.useCallback(()=>{l(null),m(!1)},[m]),p=x.useCallback((f,g)=>{const b=f.currentTarget,v={x:f.clientX,y:f.clientY},y=OF(v,b.getBoundingClientRect()),k=qF(v,y),w=DF(g.getBoundingClientRect()),R=MF([...k,...w]);l(R),m(!0)},[m]);return x.useEffect(()=>()=>h(),[h]),x.useEffect(()=>{if(c&&u){const f=b=>p(b,u),g=b=>p(b,c);return c.addEventListener("pointerleave",f),u.addEventListener("pointerleave",g),()=>{c.removeEventListener("pointerleave",f),u.removeEventListener("pointerleave",g)}}},[c,u,p,h]),x.useEffect(()=>{if(i){const f=g=>{const b=g.target,v={x:g.clientX,y:g.clientY},y=(c==null?void 0:c.contains(b))||(u==null?void 0:u.contains(b)),k=!IF(v,i);y?h():k&&(h(),d())};return document.addEventListener("pointermove",f),()=>document.removeEventListener("pointermove",f)}},[c,u,i,d,h]),s.jsx(e$,{...e,ref:n})}),[EF,_F]=Tg(YT,{isInside:!1}),TF=$8("TooltipContent"),e$=x.forwardRef((e,t)=>{const{__scopeTooltip:a,children:o,"aria-label":r,onEscapeKeyDown:n,onPointerDownOutside:i,...l}=e,c=$g($c,a),d=K1(a),{onClose:u}=c;return x.useEffect(()=>(document.addEventListener(VP,u),()=>document.removeEventListener(VP,u)),[u]),x.useEffect(()=>{if(c.trigger){const m=h=>{const p=h.target;p!=null&&p.contains(c.trigger)&&u()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,u]),s.jsx(Pg,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:n,onPointerDownOutside:i,onFocusOutside:m=>m.preventDefault(),onDismiss:u,children:s.jsxs(wF,{"data-state":c.stateAttribute,...d,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[s.jsx(TF,{children:o}),s.jsx(EF,{scope:a,isInside:!0,children:s.jsx(aL,{id:c.contentId,role:"tooltip",children:r||o})})]})})});ZT.displayName=$c;var t$="TooltipArrow",$F=x.forwardRef((e,t)=>{const{__scopeTooltip:a,...o}=e,r=K1(a);return _F(t$,a).isInside?null:s.jsx(CF,{...r,...o,ref:t})});$F.displayName=t$;function OF(e,t){const a=Math.abs(t.top-e.y),o=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),n=Math.abs(t.left-e.x);switch(Math.min(a,o,r,n)){case n:return"left";case r:return"right";case a:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function qF(e,t,a=5){const o=[];switch(t){case"top":o.push({x:e.x-a,y:e.y+a},{x:e.x+a,y:e.y+a});break;case"bottom":o.push({x:e.x-a,y:e.y-a},{x:e.x+a,y:e.y-a});break;case"left":o.push({x:e.x+a,y:e.y-a},{x:e.x+a,y:e.y+a});break;case"right":o.push({x:e.x-a,y:e.y-a},{x:e.x-a,y:e.y+a});break}return o}
418function DF(e){const{top:t,right:a,bottom:o,left:r}=e;return[{x:r,y:t},{x:a,y:t},{x:a,y:o},{x:r,y:o}]}function IF(e,t){const{x:a,y:o}=e;let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const l=t[n],c=t[i],d=l.x,u=l.y,m=c.x,h=c.y;u>o!=h>o&&a<(m-d)*(o-u)/(h-u)+d&&(r=!r)}return r}function MF(e){const t=e.slice();return t.sort((a,o)=>a.x<o.x?-1:a.x>o.x?1:a.y<o.y?-1:a.y>o.y?1:0),LF(t)}function LF(e){if(e.length<=1)return e.slice();const t=[];for(let o=0;o<e.length;o++){const r=e[o];for(;t.length>=2;){const n=t[t.length-1],i=t[t.length-2];if((n.x-i.x)*(r.y-i.y)>=(n.y-i.y)*(r.x-i.x))t.pop();else break}t.push(r)}t.pop();const a=[];for(let o=e.length-1;o>=0;o--){const r=e[o];for(;a.length>=2;){const n=a[a.length-1],i=a[a.length-2];if((n.x-i.x)*(r.y-i.y)>=(n.y-i.y)*(r.x-i.x))a.pop();else break}a.push(r)}return a.pop(),t.length===1&&a.length===1&&t[0].x===a[0].x&&t[0].y===a[0].y?t:t.concat(a)}var BF=XT,a$=ZT;const VF=BF,FF=x.forwardRef(({className:e,sideOffset:t=4,...a},o)=>s.jsx(a$,{ref:o,sideOffset:t,className:ne("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...a}));FF.displayName=a$.displayName;var Cm=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Hi=typeof window>"u"||"Deno"in globalThis;function Ja(){}function UF(e,t){return typeof e=="function"?e(t):e}function Kb(e){return typeof e=="number"&&e>=0&&e!==1/0}function o$(e,t){return Math.max(e+(t||0)-Date.now(),0)}function As(e,t){return typeof e=="function"?e(t):e}function Do(e,t){return typeof e=="function"?e(t):e}function FP(e,t){const{type:a="all",exact:o,fetchStatus:r,predicate:n,queryKey:i,stale:l}=e;if(i){if(o){if(t.queryHash!==Q1(i,t.options))return!1}else if(!Bu(t.queryKey,i))return!1}if(a!=="all"){const c=t.isActive();if(a==="active"&&!c||a==="inactive"&&c)return!1}return!(typeof l=="boolean"&&t.isStale()!==l||r&&r!==t.state.fetchStatus||n&&!n(t))}function UP(e,t){const{exact:a,status:o,predicate:r,mutationKey:n}=e;if(n){if(!t.options.mutationKey)return!1;if(a){if(Lu(t.options.mutationKey)!==Lu(n))return!1}else if(!Bu(t.options.mutationKey,n))return!1}return!(o&&t.state.status!==o||r&&!r(t))}function Q1(e,t){return((t==null?void 0:t.queryKeyHashFn)||Lu)(e)}function Lu(e){return JSON.stringify(e,(t,a)=>Wb(a)?Object.keys(a).sort().reduce((o,r)=>(o[r]=a[r],o),{}):a)}function Bu(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(t).every(a=>Bu(e[a],t[a])):!1}function r$(e,t){if(e===t)return e;const a=GP(e)&&GP(t);if(a||Wb(e)&&Wb(t)){const o=a?e:Object.keys(e),r=o.length,n=a?t:Object.keys(t),i=n.length,l=a?[]:{},c=new Set(o);let d=0;for(let u=0;u<i;u++){const m=a?u:n[u];(!a&&c.has(m)||a)&&e[m]===void 0&&t[m]===void 0?(l[m]=void 0,d++):(l[m]=r$(e[m],t[m]),l[m]===e[m]&&e[m]!==void 0&&d++)}return r===i&&d===r?e:l}return t}function Qb(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(const a in e)if(e[a]!==t[a])return!1;return!0}function GP(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function Wb(e){if(!zP(e))return!1;const t=e.constructor;if(t===void 0)return!0;const a=t.prototype;return!(!zP(a)||!a.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(e)!==Object.prototype)}function zP(e){return Object.prototype.toString.call(e)==="[object Object]"}function GF(e){return new Promise(t=>{setTimeout(t,e)})}function Jb(e,t,a){return typeof a.structuralSharing=="function"?a.structuralSharing(e,t):a.structuralSharing!==!1?r$(e,t):t}function zF(e,t,a=0){const o=[...e,t];return a&&o.length>a?o.slice(1):o}function HF(e,t,a=0){const o=[t,...e];return a&&o.length>a?o.slice(0,-1):o}var W1=Symbol();function n$(e,t){return!e.queryFn&&(t!=null&&t.initialPromise)?()=>t.initialPromise:!e.queryFn||e.queryFn===W1?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function KF(e,t){return typeof e=="function"?e(...t):!!e}var Ci,cs,uc,TA,QF=(TA=class extends Cm{constructor(){super();De(this,Ci);De(this,cs);De(this,uc);xe(this,uc,t=>{if(!Hi&&window.addEventListener){const a=()=>t();return window.addEventListener("visibilitychange",a,!1),()=>{window.removeEventListener("visibilitychange",a)}}})}onSubscribe(){M(this,cs)||this.setEventListener(M(this,uc))}onUnsubscribe(){var t;this.hasListeners()||((t=M(this,cs))==null||t.call(this),xe(this,cs,void 0))}setEventListener(t){var a;xe(this,uc,t),(a=M(this,cs))==null||a.call(this),xe(this,cs,t(o=>{typeof o=="boolean"?this.setFocused(o):this.onFocus()}))}setFocused(t){M(this,Ci)!==t&&(xe(this,Ci,t),this.onFocus())}onFocus(){const t=this.isFocused();
vendor: 4,924 bytes, line 418
418this.listeners.forEach(a=>{a(t)})}isFocused(){var t;return typeof M(this,Ci)=="boolean"?M(this,Ci):((t=globalThis.document)==null?void 0:t.visibilityState)!=="hidden"}},Ci=new WeakMap,cs=new WeakMap,uc=new WeakMap,TA),J1=new QF,mc,ds,pc,$A,WF=($A=class extends Cm{constructor(){super();De(this,mc,!0);De(this,ds);De(this,pc);xe(this,pc,t=>{if(!Hi&&window.addEventListener){const a=()=>t(!0),o=()=>t(!1);return window.addEventListener("online",a,!1),window.addEventListener("offline",o,!1),()=>{window.removeEventListener("online",a),window.removeEventListener("offline",o)}}})}onSubscribe(){M(this,ds)||this.setEventListener(M(this,pc))}onUnsubscribe(){var t;this.hasListeners()||((t=M(this,ds))==null||t.call(this),xe(this,ds,void 0))}setEventListener(t){var a;xe(this,pc,t),(a=M(this,ds))==null||a.call(this),xe(this,ds,t(this.setOnline.bind(this)))}setOnline(t){M(this,mc)!==t&&(xe(this,mc,t),this.listeners.forEach(o=>{o(t)}))}isOnline(){return M(this,mc)}},mc=new WeakMap,ds=new WeakMap,pc=new WeakMap,$A),hf=new WF;function Xb(){let e,t;const a=new Promise((r,n)=>{e=r,t=n});a.status="pending",a.catch(()=>{});function o(r){Object.assign(a,r),delete a.resolve,delete a.reject}return a.resolve=r=>{o({status:"fulfilled",value:r}),e(r)},a.reject=r=>{o({status:"rejected",reason:r}),t(r)},a}function JF(e){return Math.min(1e3*2**e,3e4)}function s$(e){return(e??"online")==="online"?hf.isOnline():!0}var i$=class extends Error{constructor(e){super("CancelledError"),this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}};function cv(e){return e instanceof i$}function l$(e){let t=!1,a=0,o=!1,r;const n=Xb(),i=g=>{var b;o||(h(new i$(g)),(b=e.abort)==null||b.call(e))},l=()=>{t=!0},c=()=>{t=!1},d=()=>J1.isFocused()&&(e.networkMode==="always"||hf.isOnline())&&e.canRun(),u=()=>s$(e.networkMode)&&e.canRun(),m=g=>{var b;o||(o=!0,(b=e.onSuccess)==null||b.call(e,g),r==null||r(),n.resolve(g))},h=g=>{var b;o||(o=!0,(b=e.onError)==null||b.call(e,g),r==null||r(),n.reject(g))},p=()=>new Promise(g=>{var b;r=v=>{(o||d())&&g(v)},(b=e.onPause)==null||b.call(e)}).then(()=>{var g;r=void 0,o||(g=e.onContinue)==null||g.call(e)}),f=()=>{if(o)return;let g;const b=a===0?e.initialPromise:void 0;try{g=b??e.fn()}catch(v){g=Promise.reject(v)}Promise.resolve(g).then(m).catch(v=>{var C;if(o)return;const y=e.retry??(Hi?0:3),k=e.retryDelay??JF,w=typeof k=="function"?k(a,v):k,R=y===!0||typeof y=="number"&&a<y||typeof y=="function"&&y(a,v);if(t||!R){h(v);return}a++,(C=e.onFail)==null||C.call(e,a,v),GF(w).then(()=>d()?void 0:p()).then(()=>{t?h(v):f()})})};return{promise:n,cancel:i,continue:()=>(r==null||r(),n),cancelRetry:l,continueRetry:c,canStart:u,start:()=>(u()?f():p().then(f),n)}}var XF=e=>setTimeout(e,0);function YF(){let e=[],t=0,a=l=>{l()},o=l=>{l()},r=XF;const n=l=>{t?e.push(l):r(()=>{a(l)})},i=()=>{const l=e;e=[],l.length&&r(()=>{o(()=>{l.forEach(c=>{a(c)})})})};return{batch:l=>{let c;t++;try{c=l()}finally{t--,t||i()}return c},batchCalls:l=>(...c)=>{n(()=>{l(...c)})},schedule:n,setNotifyFunction:l=>{a=l},setBatchNotifyFunction:l=>{o=l},setScheduler:l=>{r=l}}}var xa=YF(),Pi,OA,c$=(OA=class{constructor(){De(this,Pi)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Kb(this.gcTime)&&xe(this,Pi,setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Hi?1/0:5*60*1e3))}clearGcTimeout(){M(this,Pi)&&(clearTimeout(M(this,Pi)),xe(this,Pi,void 0))}},Pi=new WeakMap,OA),hc,Si,Oo,Ri,ja,dm,ji,ur,fn,qA,ZF=(qA=class extends c${constructor(t){super();De(this,ur);De(this,hc);De(this,Si);De(this,Oo);De(this,Ri);De(this,ja);De(this,dm);De(this,ji);xe(this,ji,!1),xe(this,dm,t.defaultOptions),this.setOptions(t.options),this.observers=[],xe(this,Ri,t.client),xe(this,Oo,M(this,Ri).getQueryCache()),this.queryKey=t.queryKey,this.queryHash=t.queryHash,xe(this,hc,eU(this.options)),this.state=t.state??M(this,hc),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var t;return(t=M(this,ja))==null?void 0:t.promise}setOptions(t){this.options={...M(this,dm),...t},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&M(this,Oo).remove(this)}setData(t,a){const o=Jb(this.state.data,t,this.options);return Qe(this,ur,fn).call(this,{data:o,type:"success",dataUpdatedAt:a==null?void 0:a.updatedAt,manual:a==null?void 0:a.manual}),o}setState(t,a){Qe(this,ur,fn).call(this,{type:"setState",state:t,setStateOptions:a})}cancel(t){var o,r;const a=(o=M(this,ja))==null?void 0:o.promise;return(r=M(this,ja))==null||r.cancel(t),a?a.then(Ja).catch(Ja):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(M(this,hc))}isActive(){return this.observers.some(t=>Do(t.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===W1||this.state.dataUpdateCount+this.state.errorUpdate
418Count===0}isStatic(){return this.getObserversCount()>0?this.observers.some(t=>As(t.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(t=>t.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(t=0){return this.state.data===void 0?!0:t==="static"?!1:this.state.isInvalidated?!0:!o$(this.state.dataUpdatedAt,t)}onFocus(){var a;const t=this.observers.find(o=>o.shouldFetchOnWindowFocus());t==null||t.refetch({cancelRefetch:!1}),(a=M(this,ja))==null||a.continue()}onOnline(){var a;const t=this.observers.find(o=>o.shouldFetchOnReconnect());t==null||t.refetch({cancelRefetch:!1}),(a=M(this,ja))==null||a.continue()}addObserver(t){this.observers.includes(t)||(this.observers.push(t),this.clearGcTimeout(),M(this,Oo).notify({type:"observerAdded",query:this,observer:t}))}removeObserver(t){this.observers.includes(t)&&(this.observers=this.observers.filter(a=>a!==t),this.observers.length||(M(this,ja)&&(M(this,ji)?M(this,ja).cancel({revert:!0}):M(this,ja).cancelRetry()),this.scheduleGc()),M(this,Oo).notify({type:"observerRemoved",query:this,observer:t}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||Qe(this,ur,fn).call(this,{type:"invalidate"})}fetch(t,a){var d,u,m;if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&(a!=null&&a.cancelRefetch))this.cancel({silent:!0});else if(M(this,ja))return M(this,ja).continueRetry(),M(this,ja).promise}if(t&&this.setOptions(t),!this.options.queryFn){const h=this.observers.find(p=>p.options.queryFn);h&&this.setOptions(h.options)}const o=new AbortController,r=h=>{Object.defineProperty(h,"signal",{enumerable:!0,get:()=>(xe(this,ji,!0),o.signal)})},n=()=>{const h=n$(this.options,a),f=(()=>{const g={client:M(this,Ri),queryKey:this.queryKey,meta:this.meta};return r(g),g})();return xe(this,ji,!1),this.options.persister?this.options.persister(h,f,this):h(f)},l=(()=>{const h={fetchOptions:a,options:this.options,queryKey:this.queryKey,client:M(this,Ri),state:this.state,fetchFn:n};return r(h),h})();(d=this.options.behavior)==null||d.onFetch(l,this),xe(this,Si,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((u=l.fetchOptions)==null?void 0:u.meta))&&Qe(this,ur,fn).call(this,{type:"fetch",meta:(m=l.fetchOptions)==null?void 0:m.meta});const c=h=>{var p,f,g,b;cv(h)&&h.silent||Qe(this,ur,fn).call(this,{type:"error",error:h}),cv(h)||((f=(p=M(this,Oo).config).onError)==null||f.call(p,h,this),(b=(g=M(this,Oo).config).onSettled)==null||b.call(g,this.state.data,h,this)),this.scheduleGc()};return xe(this,ja,l$({initialPromise:a==null?void 0:a.initialPromise,fn:l.fetchFn,abort:o.abort.bind(o),onSuccess:h=>{var p,f,g,b;if(h===void 0){c(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(h)}catch(v){c(v);return}(f=(p=M(this,Oo).config).onSuccess)==null||f.call(p,h,this),(b=(g=M(this,Oo).config).onSettled)==null||b.call(g,h,this.state.error,this),this.scheduleGc()},onError:c,onFail:(h,p)=>{Qe(this,ur,fn).call(this,{type:"failed",failureCount:h,error:p})},onPause:()=>{Qe(this,ur,fn).call(this,{type:"pause"})},onContinue:()=>{Qe(this,ur,fn).call(this,{type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode,canRun:()=>!0})),M(this,ja).start()}},hc=new WeakMap,Si=new WeakMap,Oo=new WeakMap,Ri=new WeakMap,ja=new WeakMap,dm=new WeakMap,ji=new WeakMap,ur=new WeakSet,fn=function(t){const a=o=>{switch(t.type){case"failed":return{...o,fetchFailureCount:t.failureCount,fetchFailureReason:t.error};case"pause":return{...o,fetchStatus:"paused"};case"continue":return{...o,fetchStatus:"fetching"};case"fetch":return{...o,...d$(o.data,this.options),fetchMeta:t.meta??null};case"success":return xe(this,Si,void 0),{...o,data:t.data,dataUpdateCount:o.dataUpdateCount+1,dataUpdatedAt:t.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!t.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=t.error;return cv(r)&&r.revert&&M(this,Si)?{...M(this,Si),fetchStatus:"idle"}
vendor: 20,616 bytes, line 418
418:{...o,error:r,errorUpdateCount:o.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:o.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...o,isInvalidated:!0};case"setState":return{...o,...t.state}}};this.state=a(this.state),xa.batch(()=>{this.observers.forEach(o=>{o.onQueryUpdate()}),M(this,Oo).notify({query:this,type:"updated",action:t})})},qA);function d$(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:s$(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function eU(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,a=t!==void 0,o=a?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:a?o??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:a?"success":"pending",fetchStatus:"idle"}}var Lr,DA,tU=(DA=class extends Cm{constructor(t={}){super();De(this,Lr);this.config=t,xe(this,Lr,new Map)}build(t,a,o){const r=a.queryKey,n=a.queryHash??Q1(r,a);let i=this.get(n);return i||(i=new ZF({client:t,queryKey:r,queryHash:n,options:t.defaultQueryOptions(a),state:o,defaultOptions:t.getQueryDefaults(r)}),this.add(i)),i}add(t){M(this,Lr).has(t.queryHash)||(M(this,Lr).set(t.queryHash,t),this.notify({type:"added",query:t}))}remove(t){const a=M(this,Lr).get(t.queryHash);a&&(t.destroy(),a===t&&M(this,Lr).delete(t.queryHash),this.notify({type:"removed",query:t}))}clear(){xa.batch(()=>{this.getAll().forEach(t=>{this.remove(t)})})}get(t){return M(this,Lr).get(t)}getAll(){return[...M(this,Lr).values()]}find(t){const a={exact:!0,...t};return this.getAll().find(o=>FP(a,o))}findAll(t={}){const a=this.getAll();return Object.keys(t).length>0?a.filter(o=>FP(t,o)):a}notify(t){xa.batch(()=>{this.listeners.forEach(a=>{a(t)})})}onFocus(){xa.batch(()=>{this.getAll().forEach(t=>{t.onFocus()})})}onOnline(){xa.batch(()=>{this.getAll().forEach(t=>{t.onOnline()})})}},Lr=new WeakMap,DA),Br,qa,Ni,Vr,Xn,IA,aU=(IA=class extends c${constructor(t){super();De(this,Vr);De(this,Br);De(this,qa);De(this,Ni);this.mutationId=t.mutationId,xe(this,qa,t.mutationCache),xe(this,Br,[]),this.state=t.state||oU(),this.setOptions(t.options),this.scheduleGc()}setOptions(t){this.options=t,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(t){M(this,Br).includes(t)||(M(this,Br).push(t),this.clearGcTimeout(),M(this,qa).notify({type:"observerAdded",mutation:this,observer:t}))}removeObserver(t){xe(this,Br,M(this,Br).filter(a=>a!==t)),this.scheduleGc(),M(this,qa).notify({type:"observerRemoved",mutation:this,observer:t})}optionalRemove(){M(this,Br).length||(this.state.status==="pending"?this.scheduleGc():M(this,qa).remove(this))}continue(){var t;return((t=M(this,Ni))==null?void 0:t.continue())??this.execute(this.state.variables)}async execute(t){var n,i,l,c,d,u,m,h,p,f,g,b,v,y,k,w,R,C,P,N;const a=()=>{Qe(this,Vr,Xn).call(this,{type:"continue"})};xe(this,Ni,l$({fn:()=>this.options.mutationFn?this.options.mutationFn(t):Promise.reject(new Error("No mutationFn found")),onFail:(E,A)=>{Qe(this,Vr,Xn).call(this,{type:"failed",failureCount:E,error:A})},onPause:()=>{Qe(this,Vr,Xn).call(this,{type:"pause"})},onContinue:a,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>M(this,qa).canRun(this)}));const o=this.state.status==="pending",r=!M(this,Ni).canStart();try{if(o)a();else{Qe(this,Vr,Xn).call(this,{type:"pending",variables:t,isPaused:r}),await((i=(n=M(this,qa).config).onMutate)==null?void 0:i.call(n,t,this));const A=await((c=(l=this.options).onMutate)==null?void 0:c.call(l,t));A!==this.state.context&&Qe(this,Vr,Xn).call(this,{type:"pending",context:A,variables:t,isPaused:r})}const E=await M(this,Ni).start();return await((u=(d=M(this,qa).config).onSuccess)==null?void 0:u.call(d,E,t,this.state.context,this)),await((h=(m=this.options).onSuccess)==null?void 0:h.call(m,E,t,this.state.context)),await((f=(p=M(this,qa).config).onSettled)==null?void 0:f.call(p,E,null,this.state.variables,this.state.context,this)),await((b=(g=this.options).onSettled)==null?void 0:b.call(g,E,null,t,this.state.context)),Qe(this,Vr,Xn).call(this,{type:"success",data:E}),E}catch(E){try{throw await((y=(v=M(this,qa).config).onError)==null?void 0:y.call(v,E,t,this.state.context,this)),await((w=(k=this.options).onError)==null?void 0:w.call(k,E,t,this.state.context)),await((C=(R=M(this,qa).config).onSettled)==null?void 0:C.call(R,void 0,E,this.state.variables,this.state.context,this)),await((N=(P=this.options).onSettled)==null?void 0:N.call(P,void 0,E,t,this.state.context)),E}finally{Qe(this,Vr,Xn).call(this,{type:"error",error:E})}}finally{M(this,qa).runNext(this)}}},Br=new WeakMap,qa=new WeakMap,Ni=new WeakMap,Vr=new WeakSet,Xn=function(t){const a=o=>{switch(t.type){case"failed":return{...o,failureCount:t.failureCount,failureReason:t.error};case"pause":return{...o,isPaused:!0};case"continue":return{...o,isPaused:!1};case"pending":return{...o,context:t.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:t.isPaused,status:"pending",variables:t.variables,submittedAt:Date.now()};case"success":return{...o,data:t.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...o,data:void 0,error:t.error,failureCount:o.failureCount+1,failureReason:t.error,isPaused:!1,status:"error"}}};this.state=a(this.state),xa.batch(()=>{M(this,Br).forEach(o=>{o.onMutationUpdate(t)}),M(this,qa).notify({mutation:this,type:"updated",action:t})})},IA);function oU(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var Cn,mr,um,MA,rU=(MA=class extends Cm{constructor(t={}){super();De(this,Cn);De(this,mr);De(this,um);this.config=t,xe(this,Cn,new Set),xe(this,mr,new Map),xe(this,um,0)}build(t,a,o){const r=new aU({mutationCache:this,mutationId:++Lm(this,um)._,options:t.defaultMutationOptions(a),state:o});return this.add(r),r}add(t){M(this,Cn).add(t);const a=dp(t);if(typeof a=="string"){const o=M(this,mr).get(a);o?o.push(t):M(this,mr).set(a,[t])}this.notify({type:"added",mutation:t})}remove(t){if(M(this,Cn).delete(t)){const a=dp(t);if(typeof a=="string"){const o=M(this,mr).get(a);if(o)if(o.length>1){const r=o.indexOf(t);r!==-1&&o.splice(r,1)}else o[0]===t&&M(this,mr).delete(a)}}this.notify({type:"removed",mutation:t})}canRun(t){const a=dp(t);if(typeof a=="string"){const o=M(this,mr).get(a),r=o==null?void 0:o.find(n=>n.state.status==="pending");return!r||r===t}else return!0}runNext(t){var o;const a=dp(t);if(typeof a=="string"){const r=(o=M(this,mr).get(a))==null?void 0:o.find(n=>n!==t&&n.state.isPaused);return(r==null?void 0:r.continue())??Promise.resolve()}else return Promise.resolve()}clear(){xa.batch(()=>{M(this,Cn).forEach(t=>{this.notify({type:"removed",mutation:t})}),M(this,Cn).clear(),M(this,mr).clear()})}getAll(){return Array.from(M(this,Cn))}find(t){const a={exact:!0,...t};return this.getAll().find(o=>UP(a,o))}findAll(t={}){return this.getAll().filter(a=>UP(t,a))}notify(t){xa.batch(()=>{this.listeners.forEach(a=>{a(t)})})}resumePausedMutations(){const t=this.getAll().filter(a=>a.state.isPaused);return xa.batch(()=>Promise.all(t.map(a=>a.continue().catch(Ja))))}},Cn=new WeakMap,mr=new WeakMap,um=new WeakMap,MA);function dp(e){var t;return(t=e.options.scope)==null?void 0:t.id}function HP(e){return{onFetch:(t,a)=>{var u,m,h,p,f;const o=t.options,r=(h=(m=(u=t.fetchOptions)==null?void 0:u.meta)==null?void 0:m.fetchMore)==null?void 0:h.direction,n=((p=t.state.data)==null?void 0:p.pages)||[],i=((f=t.state.data)==null?void 0:f.pageParams)||[];let l={pages:[],pageParams:[]},c=0;const d=async()=>{let g=!1;const b=k=>{Object.defineProperty(k,"signal",{enumerable:!0,get:()=>(t.signal.aborted?g=!0:t.signal.addEventListener("abort",()=>{g=!0}),t.signal)})},v=n$(t.options,t.fetchOptions),y=async(k,w,R)=>{if(g)return Promise.reject();if(w==null&&k.pages.length)return Promise.resolve(k);const P=(()=>{const $={client:t.client,queryKey:t.queryKey,pageParam:w,direction:R?"backward":"forward",meta:t.options.meta};return b($),$})(),N=await v(P),{maxPages:E}=t.options,A=R?HF:zF;return{pages:A(k.pages,N,E),pageParams:A(k.pageParams,w,E)}};if(r&&n.length){const k=r==="backward",w=k?nU:KP,R={pages:n,pageParams:i},C=w(o,R);l=await y(R,C,k)}else{const k=e??n.length;do{const w=c===0?i[0]??o.initialPageParam:KP(o,l);if(c>0&&w==null)break;l=await y(l,w),c++}while(c<k)}return l};t.options.persister?t.fetchFn=()=>{var g,b;return(b=(g=t.options).persister)==null?void 0:b.call(g,d,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},a)}:t.fetchFn=d}}}function KP(e,{pages:t,pageParams:a}){const o=t.length-1;return t.length>0?e.getNextPageParam(t[o],t,a[o],a):void 0}function nU(e,{pages:t,pageParams:a}){var o;return t.length>0?(o=e.getPreviousPageParam)==null?void 0:o.call(e,t[0],t,a[0],a):void 0}var Vt,us,ms,fc,gc,ps,vc,xc,LA,sU=(LA=class{constructor(e={}){De(this,Vt);De(this,us);De(this,ms);De(this,fc);De(this,gc);De(this,ps);De(this,vc);De(this,xc);xe(this,Vt,e.queryCache||new tU),xe(this,us,e.mutationCache||new rU),xe(this,ms,e.defaultOptions||{}),xe(this,fc,new Map),xe(this,gc,new Map),xe(this,ps,0)}mount(){Lm(this,ps)._++,M(this,ps)===1&&(xe(this,vc,J1.subscribe(async e=>{e&&(await this.resumePausedMutations(),M(this,Vt).onFocus())})),xe(this,xc,hf.subscribe(async e=>{e&&(await this.resumePausedMutations(),M(this,Vt).onOnline())})))}unmount(){var e,t;Lm(this,ps)._--,M(this,ps)===0&&((e=M(this,vc))==null||e.call(this),xe(this,vc,void 0),(t=M(this,xc))==null||t.call(this),xe(this,xc,void 0))}isFetching(e){return M(this,Vt).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return M(this,us).findAll({...e,status:"pending"}).length}getQueryData(e){var a;const t=this.defaultQueryOptions({queryKey:e});return(a=M(this,Vt).get(t.queryHash))==null?void 0:a.state.data}ensureQueryData(e){const t=this.defaultQueryOptions(e),a=M(this,Vt).build(this,t),o=a.state.data;return o===void 0?this.fetchQuery(e):(e.revalidateIfStale&&a.isStaleByTime(As(t.staleTime,a))&&this.prefetchQuery(t),Promise.resolve(o))}getQueriesData(e){return M(this,Vt).findAll(e).map(({queryKey:t,state:a})=>{const o=a.data;return[t,o]})}setQueryData(e,t,a){const o=this.defaultQueryOptions({queryKey:e}),r=M(this,Vt).get(o.queryHash),n=r==null?void 0:r.state.data,i=UF(t,n);if(i!==void 0)return M(this,Vt).build(this,o).setData(i,{...a,manual:!0})}setQueriesData(e,t,a){return xa.batch(()=>M(this,Vt).findAll(e).map(({queryKey:o})=>[o,this.setQueryData(o,t,a)]))}getQueryState(e){var a;const t=this.defaultQueryOptions({queryKey:e});return(a=M(this,Vt).get(t.queryHash))==null?void 0:a.state}removeQueries(e){const t=M(this,Vt);xa.batch(()=>{t.findAll(e).forEach(a=>{t.remove(a)})})}resetQueries(e,t){const a=M(this,Vt);return xa.batch(()=>(a.findAll(e).forEach(o=>{o.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e,t={}){const a={revert:!0,...t},o=xa.batch(()=>M(this,Vt).findAll(e).map(r=>r.cancel(a)));return Promise.all(o).then(Ja).catch(Ja)}invalidateQueries(e,t={}){return xa.batch(()=>(M(this,Vt).findAll(e).forEach(a=>{a.invalidate()}),(e==null?void 0:e.refetchType)==="none"?Promise.resolve():this.refetchQueries({...e,type:(e==null?void 0:e.refetchType)??(e==null?void 0:e.type)??"active"},t)))}refetchQueries(e,t={}){const a={...t,cancelRefetch:t.cancelRefetch??!0},o=xa.batch(()=>M(this,Vt).findAll(e).filter(r=>!r.isDisabled()&&!r.isStatic()).map(r=>{let n=r.fetch(void 0,a);return a.throwOnError||(n=n.catch(Ja)),r.state.fetchStatus==="paused"?Promise.resolve():n}));return Promise.all(o).then(Ja)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const a=M(this,Vt).build(this,t);return a.isStaleByTime(As(t.staleTime,a))?a.fetch(t):Promise.resolve(a.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Ja).catch(Ja)}fetchInfiniteQuery(e){return e.behavior=HP(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Ja).catch(Ja)}ensureInfiniteQueryData(e){return e.behavior=HP(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return hf.isOnline()?M(this,us).resumePausedMutations():Promise.resolve()}getQueryCache(){return M(this,Vt)}getMutationCache(){return M(this,us)}getDefaultOptions(){return M(this,ms)}setDefaultOptions(e){xe(this,ms,e)}setQueryDefaults(e,t){M(this,fc).set(Lu(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...M(this,fc).values()],a={};return t.forEach(o=>{Bu(e,o.queryKey)&&Object.assign(a,o.defaultOptions)}),a}setMutationDefaults(e,t){M(this,gc).set(Lu(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...M(this,gc).values()],a={};return t.forEach(o=>{Bu(e,o.mutationKey)&&Object.assign(a,o.defaultOptions)}),a}defaultQueryOptions(e){if(e._defaulted)return e;const t={...M(this,ms).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=Q1(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===W1&&(t.enabled=!1),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...M(this,ms).mutations,...(e==null?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){M(this,Vt).clear(),M(this,us).clear()}},Vt=new WeakMap,us=new WeakMap,ms=new WeakMap,fc=new WeakMap,gc=new WeakMap,ps=new WeakMap,vc=new WeakMap,xc=new WeakMap,LA),Ka,We,mm,Da,Ai,bc,hs,fs,pm,yc,kc,Ei,_i,gs,wc,dt,Md,Yb,Zb,ey,ty,ay,oy,ry,u$,BA,iU=(BA=class extends Cm{constructor(t,a){super();De(this,dt);De(this,Ka);De(this,We);De(this,mm);De(this,Da);De(this,Ai);De(this,bc);De(this,hs);De(this,fs);De(this,pm);De(this,yc);De(this,kc);De(this,Ei);De(this,_i);De(this,gs);De(this,wc,new Set);this.options=a,xe(this,Ka,t),xe(this,fs,null),xe(this,hs,Xb()),this.options.experimental_prefetchInRender||M(this,hs).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(a)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(M(this,We).addObserver(this),QP(M(this,We),this.options)?Qe(this,dt,Md).call(this):this.updateResult(),Qe(this,dt,ty).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ny(M(this,We),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ny(M(this,We),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,Qe(this,dt,ay).call(this),Qe(this,dt,oy).call(this),M(this,We).removeObserver(this)}setOptions(t){const a=this.options,o=M(this,We);if(this.options=M(this,Ka).defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Do(this.options.enabled,M(this,We))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");Qe(this,dt,ry).call(this),M(this,We).setOptions(this.options),a._defaulted&&!Qb(this.options,a)&&M(this,Ka).getQueryCache().notify({type:"observerOptionsUpdated",query:M(this,We),observer:this});const r=this.hasListeners();r&&WP(M(this,We),o,this.options,a)&&Qe(this,dt,Md).call(this),this.updateResult(),r&&(M(this,We)!==o||Do(this.options.enabled,M(this,We))!==Do(a.enabled,M(this,We))||As(this.options.staleTime,M(this,We))!==As(a.staleTime,M(this,We)))&&Qe(this,dt,Yb).call(this);const n=Qe(this,dt,Zb).call(this);r&&(M(this,We)!==o||Do(this.options.enabled,M(this,We))!==Do(a.enabled,M(this,We))||n!==M(this,gs))&&Qe(this,dt,ey).call(this,n)}getOptimisticResult(t){const a=M(this,Ka).getQueryCache().build(M(this,Ka),t),o=this.createResult(a,t);return cU(this,o)&&(xe(this,Da,o),xe(this,bc,this.options),xe(this,Ai,M(this,We).state)),o}getCurrentResult(){return M(this,Da)}trackResult(t,a){return new Proxy(t,{get:(o,r)=>(this.trackProp(r),a==null||a(r),Reflect.get(o,r))})}trackProp(t){M(this,wc).add(t)}getCurrentQuery(){return M(this,We)}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const a=M(this,Ka).defaultQueryOptions(t),o=M(this,Ka).getQueryCache().build(M(this,Ka),a);return o.fetch().then(()=>this.createResult(o,a))}fetch(t){return Qe(this,dt,Md).call(this,{...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),M(this,Da)))}createResult(t,a){var E;const o=M(this,We),r=this.options,n=M(this,Da),i=M(this,Ai),l=M(this,bc),d=t!==o?t.state:M(this,mm),{state:u}=t;let m={...u},h=!1,p;if(a._optimisticResults){const A=this.hasListeners(),$=!A&&QP(t,a),O=A&&WP(t,o,a,r);($||O)&&(m={...m,...d$(u.data,t.options)}),a._optimisticResults==="isRestoring"&&(m.fetchStatus="idle")}let{error:f,errorUpdatedAt:g,status:b}=m;p=m.data;let v=!1;if(a.placeholderData!==void 0&&p===void 0&&b==="pending"){let A;n!=null&&n.isPlaceholderData&&a.placeholderData===(l==null?void 0:l.placeholderData)?(A=n.data,v=!0):A=typeof a.placeholderData=="function"?a.placeholderData((E=M(this,kc))==null?void 0:E.state.data,M(this,kc)):a.placeholderData,A!==void 0&&(b="success",p=Jb(n==null?void 0:n.data,A,a),h=!0)}if(a.select&&p!==void 0&&!v)if(n&&p===(i==null?void 0:i.data)&&a.select===M(this,pm))p=M(this,yc);else try{xe(this,pm,a.select),p=a.select(p),p=Jb(n==null?void 0:n.data,p,a),xe(this,yc,p),xe(this,fs,null)}catch(A){xe(this,fs,A)}M(this,fs)&&(f=M(this,fs),p=M(this,yc),g=Date.now(),b="error");const y=m.fetchStatus==="fetching",k=b==="pending",w=b==="error",R=k&&y,C=p!==void 0,N={status:b,fetchStatus:m.fetchStatus,isPending:k,isSuccess:b==="success",isError:w,isInitialLoading:R,isLoading:R,data:p,dataUpdatedAt:m.dataUpdatedAt,error:f,errorUpdatedAt:g,failureCount:m.fetchFailureCount,failureReason:m.fetchFailureReason,errorUpdateCount:m.errorUpdateCount,isFetched:m.dataUpdateCount>0||m.errorUpdateCount>0,isFetchedAfterMount:m.dataUpdateCount>d.dataUpdateCount||m.errorUpdateCount>d.errorUpdateCount,isFetching:y,isRefetching:y&&!k,isLoadingError:w&&!C,isPaused:m.fetchStatus==="paused",isPlaceholderData:h,isRefetchError:w&&C,isStale:X1(t,a),refetch:this.refetch,promise:M(this,hs),isEnabled:Do(a.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const A=V=>{N.status==="error"?V.reject(N.error):N.data!==void 0&&V.resolve(N.data)},$=()=>{const V=xe(this,hs,N.promise=Xb());A(V)},O=M(this,hs);switch(O.status){case"pending":t.queryHash===o.queryHash&&A(O);break;case"fulfilled":(N.status==="error"||N.data!==O.value)&&$();break;case"rejected":(N.status!=="error"||N.error!==O.reason)&&$();break}}return N}updateResult(){const t=M(this,Da),a=this.createResult(M(this,We),this.options);if(xe(this,Ai,M(this,We).state),xe(this,bc,this.options),M(this,Ai).data!==void 0&&xe(this,kc,M(this,We)),Qb(a,t))return;xe(this,Da,a);const o=()=>{if(!t)return!0;const{notifyOnChangeProps:r}=this.options,n=typeof r=="function"?r():r;if(n==="all"||!n&&!M(this,wc).size)return!0;const i=new Set(n??M(this,wc));return this.options.throwOnError&&i.add("error"),Object.keys(M(this,Da)).some(l=>{const c=l;return M(this,Da)[c]!==t[c]&&i.has(c)})};Qe(this,dt,u$).call(this,{listeners:o()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&Qe(this,dt,ty).call(this)}},Ka=new WeakMap,We=new WeakMap,mm=new WeakMap,Da=new WeakMap,Ai=new WeakMap,bc=new WeakMap,hs=new WeakMap,fs=new WeakMap,pm=new WeakMap,yc=new WeakMap,kc=new WeakMap,Ei=new WeakMap,_i=new WeakMap,gs=new WeakMap,wc=new WeakMap,dt=new WeakSet,Md=function(t){Qe(this,dt,ry).call(this);let a=M(this,We).fetch(this.options,t);return t!=null&&t.throwOnError||(a=a.catch(Ja)),a},Yb=function(){Qe(this,dt,ay).call(this);const t=As(this.options.staleTime,M(this,We));if(Hi||M(this,Da).isStale||!Kb(t))return;const o=o$(M(this,Da).dataUpdatedAt,t)+1;xe(this,Ei,setTimeout(()=>{M(this,Da).isStale||this.updateResult()},o))},Zb=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(M(this,We)):this.options.refetchInterval)??!1},ey=function(t){Qe(this,dt,oy).call(this),xe(this,gs,t),!(Hi||Do(this.options.enabled,M(this,We))===!1||!Kb(M(this,gs))||M(this,gs)===0)&&xe(this,_i,setInterval(()=>{(this.options.refetchIntervalInBackground||J1.isFocused())&&Qe(this,dt,Md).call(this)},M(this,gs)))},ty=function(){Qe(this,dt,Yb).call(this),Qe(this,dt,ey).call(this,Qe(this,dt,Zb).call(this))},ay=function(){M(this,Ei)&&(clearTimeout(M(this,Ei)),xe(this,Ei,void 0))}
418,oy=function(){M(this,_i)&&(clearInterval(M(this,_i)),xe(this,_i,void 0))},ry=function(){const t=M(this,Ka).getQueryCache().build(M(this,Ka),this.options);if(t===M(this,We))return;const a=M(this,We);xe(this,We,t),xe(this,mm,t.state),this.hasListeners()&&(a==null||a.removeObserver(this),t.addObserver(this))},u$=function(t){xa.batch(()=>{t.listeners&&this.listeners.forEach(a=>{a(M(this,Da))}),M(this,Ka).getQueryCache().notify({query:M(this,We),type:"observerResultsUpdated"})})},BA);function lU(e,t){return Do(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function QP(e,t){return lU(e,t)||e.state.data!==void 0&&ny(e,t,t.refetchOnMount)}function ny(e,t,a){if(Do(t.enabled,e)!==!1&&As(t.staleTime,e)!=="static"){const o=typeof a=="function"?a(e):a;return o==="always"||o!==!1&&X1(e,t)}return!1}function WP(e,t,a,o){return(e!==t||Do(o.enabled,e)===!1)&&(!a.suspense||e.state.status!=="error")&&X1(e,a)}function X1(e,t){return Do(t.enabled,e)!==!1&&e.isStaleByTime(As(t.staleTime,e))}function cU(e,t){return!Qb(e.getCurrentResult(),t)}var m$=x.createContext(void 0),dU=e=>{const t=x.useContext(m$);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},uU=({client:e,children:t})=>(x.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),s.jsx(m$.Provider,{value:e,children:t})),p$=x.createContext(!1),mU=()=>x.useContext(p$);p$.Provider;function pU(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var hU=x.createContext(pU()),fU=()=>x.useContext(hU),gU=(e,t)=>{(e.suspense||e.throwOnError||e.experimental_prefetchInRender)&&(t.isReset()||(e.retryOnMount=!1))},vU=e=>{x.useEffect(()=>{e.clearReset()},[e])},xU=({result:e,errorResetBoundary:t,throwOnError:a,query:o,suspense:r})=>e.isError&&!t.isReset()&&!e.isFetching&&o&&(r&&e.data===void 0||KF(a,[e.error,o])),bU=e=>{if(e.suspense){const t=o=>o==="static"?o:Math.max(o??1e3,1e3),a=e.staleTime;e.staleTime=typeof a=="function"?(...o)=>t(a(...o)):t(a),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3))}},yU=(e,t)=>e.isLoading&&e.isFetching&&!t,kU=(e,t)=>(e==null?void 0:e.suspense)&&t.isPending,JP=(e,t,a)=>t.fetchOptimistic(e).catch(()=>{a.clearReset()});function wU(e,t,a){var m,h,p,f,g;const o=mU(),r=fU(),n=dU(),i=n.defaultQueryOptions(e);(h=(m=n.getDefaultOptions().queries)==null?void 0:m._experimental_beforeQuery)==null||h.call(m,i),i._optimisticResults=o?"isRestoring":"optimistic",bU(i),gU(i,r),vU(r);const l=!n.getQueryCache().get(i.queryHash),[c]=x.useState(()=>new t(n,i)),d=c.getOptimisticResult(i),u=!o&&e.subscribed!==!1;if(x.useSyncExternalStore(x.useCallback(b=>{const v=u?c.subscribe(xa.batchCalls(b)):Ja;return c.updateResult(),v},[c,u]),()=>c.getCurrentResult(),()=>c.getCurrentResult()),x.useEffect(()=>{c.setOptions(i)},[i,c]),kU(i,d))throw JP(i,c,r);if(xU({result:d,errorResetBoundary:r,throwOnError:i.throwOnError,query:n.getQueryCache().get(i.queryHash),suspense:i.suspense}))throw d.error;if((f=(p=n.getDefaultOptions().queries)==null?void 0:p._experimental_afterQuery)==null||f.call(p,i,d),i.experimental_prefetchInRender&&!Hi&&yU(d,o)){const b=l?JP(i,c,r):(g=n.getQueryCache().get(i.queryHash))==null?void 0:g.promise;b==null||b.catch(Ja).finally(()=>{c.updateResult()})}return i.notifyOnChangeProps?d:c.trackResult(d)}function Og(e,t){return wU(e,iU)}const Y1=x.createContext({});function Z1(e){const t=x.useRef(null);return t.current===null&&(t.current=e()),t.current}const CU=typeof window<"u",h$=CU?x.useLayoutEffect:x.useEffect,qg=x.createContext(null);function ek(e,t){e.indexOf(t)===-1&&e.push(t)}function ff(e,t){const a=e.indexOf(t);a>-1&&e.splice(a,1)}const an=(e,t,a)=>a>t?t:a<e?e:a;let Dg=()=>{},Oc=()=>{};const Ls={},f$=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e),g$=e=>typeof e=="object"&&e!==null,v$=e=>/^0[^.\s]+$/u.test(e);function x$(e){let t;return()=>(t===void 0&&(t=e()),t)}const zo=e=>e,Pm=(...e)=>e.reduce((t,a)=>o=>a(t(o))),Vu=(e,t,a)=>{const o=t-e;return o?(a-e)/o:1};class tk{constructor(){this.subscriptions=[]}add(t){return ek(this.subscriptions,t),()=>ff(this.subscriptions,t)}notify(t,a,o){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](t,a,o);else for(let n=0;n<r;n++){const i=this.subscriptions[n];i&&i(t,a,o)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const so=e=>e*1e3,Uo=e=>e/1e3,b$=(e,t)=>t?e*(1e3/t):0,y$=(e,t,a)=>(((1-3*a+3*t)*e+(3*a-6*t))*e+3*t)*e,PU=1e-7,SU=12;function RU(e,t,a,o,r){let n,i,l=0;do i=t+(a-t)/2,n=y$(i,o,r)-e,n>0?a=i:t=i;while(Math.abs(n)>PU&&++l<SU);return i}function Sm(e,t,a,o){if(e===t&&a===o)return zo;const r=n=>RU(n,0,1,e,a);return n=>n===0||n===1?n:y$(r(n),t,o)}const k$=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,w$=e=>t=>
vendor: 28,629 bytes, line 418
4181-e(1-t),C$=Sm(.33,1.53,.69,.99),ak=w$(C$),P$=k$(ak),S$=e=>e>=1?1:(e*=2)<1?.5*ak(e):.5*(2-Math.pow(2,-10*(e-1))),ok=e=>1-Math.sin(Math.acos(e)),R$=w$(ok),j$=k$(ok),jU=Sm(.42,0,1,1),NU=Sm(0,0,.58,1),N$=Sm(.42,0,.58,1),AU=e=>Array.isArray(e)&&typeof e[0]!="number",A$=e=>Array.isArray(e)&&typeof e[0]=="number",XP={linear:zo,easeIn:jU,easeInOut:N$,easeOut:NU,circIn:ok,circInOut:j$,circOut:R$,backIn:ak,backInOut:P$,backOut:C$,anticipate:S$},EU=e=>typeof e=="string",YP=e=>{if(A$(e)){Oc(e.length===4,"Cubic bezier arrays must contain four numerical values.","cubic-bezier-length");const[t,a,o,r]=e;return Sm(t,a,o,r)}else if(EU(e))return Oc(XP[e]!==void 0,`Invalid easing type '${e}'`,"invalid-easing-type"),XP[e];return e},up=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"],ZP={value:null,addProjectionMetrics:null};function _U(e,t){let a=new Set,o=new Set,r=!1,n=!1;const i=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1},c=0;function d(m){i.has(m)&&(u.schedule(m),e()),c++,m(l)}const u={schedule:(m,h=!1,p=!1)=>{const g=p&&r?a:o;return h&&i.add(m),g.add(m),m},cancel:m=>{o.delete(m),i.delete(m)},process:m=>{if(l=m,r){n=!0;return}r=!0;const h=a;a=o,o=h,a.forEach(d),t&&ZP.value&&ZP.value.frameloop[t].push(c),c=0,a.clear(),r=!1,n&&(n=!1,u.process(m))}};return u}const TU=40;function E$(e,t){let a=!1,o=!0;const r={delta:0,timestamp:0,isProcessing:!1},n=()=>a=!0,i=up.reduce((k,w)=>(k[w]=_U(n,t?w:void 0),k),{}),{setup:l,read:c,resolveKeyframes:d,preUpdate:u,update:m,preRender:h,render:p,postRender:f}=i,g=()=>{const k=Ls.useManualTiming,w=k?r.timestamp:performance.now();a=!1,k||(r.delta=o?1e3/60:Math.max(Math.min(w-r.timestamp,TU),1)),r.timestamp=w,r.isProcessing=!0,l.process(r),c.process(r),d.process(r),u.process(r),m.process(r),h.process(r),p.process(r),f.process(r),r.isProcessing=!1,a&&t&&(o=!1,e(g))},b=()=>{a=!0,o=!0,r.isProcessing||e(g)};return{schedule:up.reduce((k,w)=>{const R=i[w];return k[w]=(C,P=!1,N=!1)=>(a||b(),R.schedule(C,P,N)),k},{}),cancel:k=>{for(let w=0;w<up.length;w++)i[up[w]].cancel(k)},state:r,steps:i}}const{schedule:xt,cancel:Bs,state:va,steps:dv}=E$(typeof requestAnimationFrame<"u"?requestAnimationFrame:zo,!0);let mh;function $U(){mh=void 0}const La={now:()=>(mh===void 0&&La.set(va.isProcessing||Ls.useManualTiming?va.timestamp:performance.now()),mh),set:e=>{mh=e,queueMicrotask($U)}},_$=e=>t=>typeof t=="string"&&t.startsWith(e),T$=_$("--"),OU=_$("var(--"),rk=e=>OU(e)?qU.test(e.split("/*")[0].trim()):!1,qU=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function eS(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const nd={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Fu={...nd,transform:e=>an(0,1,e)},mp={...nd,default:1},su=e=>Math.round(e*1e5)/1e5,nk=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function DU(e){return e==null}const IU=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,sk=(e,t)=>a=>!!(typeof a=="string"&&IU.test(a)&&a.startsWith(e)||t&&!DU(a)&&Object.prototype.hasOwnProperty.call(a,t)),$$=(e,t,a)=>o=>{if(typeof o!="string")return o;const[r,n,i,l]=o.match(nk);return{[e]:parseFloat(r),[t]:parseFloat(n),[a]:parseFloat(i),alpha:l!==void 0?parseFloat(l):1}},MU=e=>an(0,255,e),uv={...nd,transform:e=>Math.round(MU(e))},vi={test:sk("rgb","red"),parse:$$("red","green","blue"),transform:({red:e,green:t,blue:a,alpha:o=1})=>"rgba("+uv.transform(e)+", "+uv.transform(t)+", "+uv.transform(a)+", "+su(Fu.transform(o))+")"};function LU(e){let t="",a="",o="",r="";return e.length>5?(t=e.substring(1,3),a=e.substring(3,5),o=e.substring(5,7),r=e.substring(7,9)):(t=e.substring(1,2),a=e.substring(2,3),o=e.substring(3,4),r=e.substring(4,5),t+=t,a+=a,o+=o,r+=r),{red:parseInt(t,16),green:parseInt(a,16),blue:parseInt(o,16),alpha:r?parseInt(r,16)/255:1}}const sy={test:sk("#"),parse:LU,transform:vi.transform},Rm=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),gn=Rm("deg"),Qr=Rm("%"),ye=Rm("px"),BU=Rm("vh"),VU=Rm("vw"),tS={...Qr,parse:e=>Qr.parse(e)/100,transform:e=>Qr.transform(e*100)},Fl={test:sk("hsl","hue"),parse:$$("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:a,alpha:o=1})=>"hsla("+Math.round(e)+", "+Qr.transform(su(t))+", "+Qr.transform(su(a))+", "+su(Fu.transform(o))+")"},ea={test:e=>vi.test(e)||sy.test(e)||Fl.test(e),parse:e=>vi.test(e)?vi.parse(e):Fl.test(e)?Fl.parse(e):sy.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?vi.transform(e):Fl.transform(e),getAnimatableNone:e=>{const t=ea.parse(e);return t.alpha=0,ea.transform(t)}},FU=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function UU(e){var t,a;return isNaN(e)&&typeof e=="string"&&(((t=e.match(nk))==null?void 0:t.length)||0)+(((a=e.match(FU))==null?void 0:a.length)||0)>0}const O$="number",q$="color",GU="var",zU="var(",aS="${}",HU=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function qc(e){const t=e.toString(),a=[],o={color:[],number:[],var:[]},r=[];let n=0;const l=t.replace(HU,c=>(ea.test(c)?(o.color.push(n),r.push(q$),a.push(ea.parse(c))):c.startsWith(zU)?(o.var.push(n),r.push(GU),a.push(c)):(o.number.push(n),r.push(O$),a.push(parseFloat(c))),++n,aS)).split(aS);return{values:a,split:l,indexes:o,types:r}}function KU(e){return qc(e).values}function D$({split:e,types:t}){const a=e.length;return o=>{let r="";for(let n=0;n<a;n++)if(r+=e[n],o[n]!==void 0){const i=t[n];i===O$?r+=su(o[n]):i===q$?r+=ea.transform(o[n]):r+=o[n]}return r}}function QU(e){return D$(qc(e))}const WU=e=>typeof e=="number"?0:ea.test(e)?ea.getAnimatableNone(e):e,JU=(e,t)=>typeof e=="number"?t!=null&&t.trim().endsWith("/")?e:0:WU(e);function XU(e){const t=qc(e);return D$(t)(t.values.map((o,r)=>JU(o,t.split[r])))}const wr={test:UU,parse:KU,createTransformer:QU,getAnimatableNone:XU};function mv(e,t,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?e+(t-e)*6*a:a<1/2?t:a<2/3?e+(t-e)*(2/3-a)*6:e}function YU({hue:e,saturation:t,lightness:a,alpha:o}){e/=360,t/=100,a/=100;let r=0,n=0,i=0;if(!t)r=n=i=a;else{const l=a<.5?a*(1+t):a+t-a*t,c=2*a-l;r=mv(c,l,e+1/3),n=mv(c,l,e),i=mv(c,l,e-1/3)}return{red:Math.round(r*255),green:Math.round(n*255),blue:Math.round(i*255),alpha:o}}function gf(e,t){return a=>a>0?t:e}const vt=(e,t,a)=>e+(t-e)*a,pv=(e,t,a)=>{const o=e*e,r=a*(t*t-o)+o;return r<0?0:Math.sqrt(r)},ZU=[sy,vi,Fl],eG=e=>ZU.find(t=>t.test(e));function oS(e){const t=eG(e);if(Dg(!!t,`'${e}' is not an animatable color. Use the equivalent color code instead.`,"color-not-animatable"),!t)return!1;let a=t.parse(e);return t===Fl&&(a=YU(a)),a}const rS=(e,t)=>{const a=oS(e),o=oS(t);if(!a||!o)return gf(e,t);const r={...a};return n=>(r.red=pv(a.red,o.red,n),r.green=pv(a.green,o.green,n),r.blue=pv(a.blue,o.blue,n),r.alpha=vt(a.alpha,o.alpha,n),vi.transform(r))},iy=new Set(["none","hidden"]);function tG(e,t){return iy.has(e)?a=>a<=0?e:t:a=>a>=1?t:e}function aG(e,t){return a=>vt(e,t,a)}function ik(e){return typeof e=="number"?aG:typeof e=="string"?rk(e)?gf:ea.test(e)?rS:nG:Array.isArray(e)?I$:typeof e=="object"?ea.test(e)?rS:oG:gf}function I$(e,t){const a=[...e],o=a.length,r=e.map((n,i)=>ik(n)(n,t[i]));return n=>{for(let i=0;i<o;i++)a[i]=r[i](n);return a}}function oG(e,t){const a={...e,...t},o={};for(const r in a)e[r]!==void 0&&t[r]!==void 0&&(o[r]=ik(e[r])(e[r],t[r]));return r=>{for(const n in o)a[n]=o[n](r);return a}}function rG(e,t){const a=[],o={color:0,var:0,number:0};for(let r=0;r<t.values.length;r++){const n=t.types[r],i=e.indexes[n][o[n]],l=e.values[i]??0;a[r]=l,o[n]++}return a}const nG=(e,t)=>{const a=wr.createTransformer(t),o=qc(e),r=qc(t);return o.indexes.var.length===r.indexes.var.length&&o.indexes.color.length===r.indexes.color.length&&o.indexes.number.length>=r.indexes.number.length?iy.has(e)&&!r.values.length||iy.has(t)&&!o.values.length?tG(e,t):Pm(I$(rG(o,r),r.values),a):(Dg(!0,`Complex values '${e}' and '${t}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`,"complex-values-different"),gf(e,t))};function M$(e,t,a){return typeof e=="number"&&typeof t=="number"&&typeof a=="number"?vt(e,t,a):ik(e)(e,t)}const sG=e=>{const t=({timestamp:a})=>e(a);return{start:(a=!0)=>xt.update(t,a),stop:()=>Bs(t),now:()=>va.isProcessing?va.timestamp:La.now()}},L$=(e,t,a=10)=>{let o="";const r=Math.max(Math.round(t/a),2);for(let n=0;n<r;n++)o+=Math.round(e(n/(r-1))*1e4)/1e4+", ";return`linear(${o.substring(0,o.length-2)})`},vf=2e4;function lk(e){let t=0;const a=50;let o=e.next(t);for(;!o.done&&t<vf;)t+=a,o=e.next(t);return t>=vf?1/0:t}function iG(e,t=100,a){const o=a({...e,keyframes:[0,t]}),r=Math.min(lk(o),vf);return{type:"keyframes",ease:n=>o.next(r*n).value/t,duration:Uo(r)}}const qt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function ly(e,t){return e*Math.sqrt(1-t*t)}const lG=12;function cG(e,t,a){let o=a;for(let r=1;r<lG;r++)o=o-e(o)/t(o);return o}const hv=.001;function dG({duration:e=qt.duration,bounce:t=qt.bounce,velocity:a=qt.velocity,mass:o=qt.mass}){let r,n;Dg(e<=so(qt.maxDuration),"Spring duration must be 10 seconds or less","spring-duration-limit");let i=1-t;i=an(qt.minDamping,qt.maxDamping,i),e=an(qt.minDuration,qt.maxDuration,Uo(e)),i<1?(r=d=>{const u=d*i,m=u*e,h=u-a,p=ly(d,i),f=Math.exp(-m);return hv-h/p*f},n=d=>{const m=d*i*e,h=m*a+a,p=Math.pow(i,2)*Math.pow(d,2)*e,f=Math.exp(-m),g=ly(Math.pow(d,2),i);return(-r(d)+hv>0?-1:1)*((h-p)*f)/g}):(r=d=>{const u=Math.exp(-d*e),m=(d-a)*e+1;return-hv+u*m},n=d=>{const u=Math.exp(-d*e),m=(a-d)*(e*e);return u*m});const l=5/e,c=cG(r,n,l);if(e=so(e),isNaN(c))return{stiffness:qt.stiffness,damping:qt.damping,duration:e};{const d=Math.pow(c,2)*o;return{stiffness:d,damping:i*2*Math.sqrt(o*d),duration:e}}}const uG=["duration","bounce"],mG=["stiffness","damping","mass"];function nS(e,t){return t.some(a=>e[a]!==void 0)}function pG(e){let t={velocity:qt.velocity,stiffness:qt.stiffness,damping:qt.damping,mass:qt.mass,isResolvedFromDuration:!1,...e};if(!nS(e,mG)&&nS(e,uG))if(t.velocity=0,e.visualDuration){const a=e.visualDuration,o=2*Math.PI/(a*1.2),r=o*o,n=2*an(.05,1,1-(e.bounce||0))*Math.sqrt(r);t={...t,mass:qt.mass,stiffness:r,damping:n}}else{const a=dG({...e,velocity:0});t={...t,...a,mass:qt.mass},t.isResolvedFromDuration=!0}return t}function xf(e=qt.visualDuration,t=qt.bounce){const a=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:o,restDelta:r}=a;const n=a.keyframes[0],i=a.keyframes[a.keyframes.length-1],l={done:!1,value:n},{stiffness:c,damping:d,mass:u,duration:m,velocity:h,isResolvedFromDuration:p}=pG({...a,velocity:-Uo(a.velocity||0)}),f=h||0,g=d/(2*Math.sqrt(c*u)),b=i-n,v=Uo(Math.sqrt(c/u)),y=Math.abs(b)<5;o||(o=y?qt.restSpeed.granular:qt.restSpeed.default),r||(r=y?qt.restDelta.granular:qt.restDelta.default);let k,w,R,C,P,N;if(g<1)R=ly(v,g),C=(f+g*v*b)/R,k=A=>{const $=Math.exp(-g*v*A);return i-$*(C*Math.sin(R*A)+b*Math.cos(R*A))},P=g*v*C+b*R,N=g*v*b-C*R,w=A=>Math.exp(-g*v*A)*(P*Math.sin(R*A)+N*Math.cos(R*A));else if(g===1){k=$=>i-Math.exp(-v*$)*(b+(f+v*b)*$);const A=f+v*b;w=$=>Math.exp(-v*$)*(v*A*$-f)}else{const A=v*Math.sqrt(g*g-1);k=T=>{const D=Math.exp(-g*v*T),F=Math.min(A*T,300);return i-D*((f+g*v*b)*Math.sinh(F)+A*b*Math.cosh(F))/A};const $=(f+g*v*b)/A,O=g*v*$-b*A,V=g*v*b-$*A;w=T=>{const D=Math.exp(-g*v*T),F=Math.min(A*T,300);return D*(O*Math.sinh(F)+V*Math.cosh(F))}}const E={calculatedDuration:p&&m||null,velocity:A=>so(w(A)),next:A=>{if(!p&&g<1){const O=Math.exp(-g*v*A),V=Math.sin(R*A),T=Math.cos(R*A),D=i-O*(C*V+b*T),F=so(O*(P*V+N*T));return l.done=Math.abs(F)<=o&&Math.abs(i-D)<=r,l.value=l.done?i:D,l}const $=k(A);if(p)l.done=A>=m;else{const O=so(w(A));l.done=Math.abs(O)<=o&&Math.abs(i-$)<=r}return l.value=l.done?i:$,l},toString:()=>{const A=Math.min(lk(E),vf),$=L$(O=>E.next(A*O).value,A,30);return A+"ms "+$},toTransition:()=>{}};return E}xf.applyToOptions=e=>{const t=iG(e,100,xf);return e.ease=t.ease,e.duration=so(t.duration),e.type="keyframes",e};const hG=5;function B$(e,t,a){const o=Math.max(t-hG,0);return b$(a-e(o),t-o)}function cy({keyframes:e,velocity:t=0,power:a=.8,timeConstant:o=325,bounceDamping:r=10,bounceStiffness:n=500,modifyTarget:i,min:l,max:c,restDelta:d=.5,restSpeed:u}){const m=e[0],h={done:!1,value:m},p=N=>l!==void 0&&N<l||c!==void 0&&N>c,f=N=>l===void 0?c:c===void 0||Math.abs(l-N)<Math.abs(c-N)?l:c;let g=a*t;const b=m+g,v=i===void 0?b:i(b);v!==b&&(g=v-m);const y=N=>-g*Math.exp(-N/o),k=N=>v+y(N),w=N=>{const E=y(N),A=k(N);h.done=Math.abs(E)<=d,h.value=h.done?v:A};let R,C;const P=N=>{p(h.value)&&(R=N,C=xf({keyframes:[h.value,f(h.value)],velocity:B$(k,N,h.value),damping:r,stiffness:n,restDelta:d,restSpeed:u}))};return P(0),{calculatedDuration:null,next:N=>{let E=!1;return!C&&R===void 0&&(E=!0,w(N),P(N)),R!==void 0&&N>=R?C.next(N-R):(!E&&w(N),h)}}}function fG(e,t,a){const o=[],r=a||Ls.mix||M$,n=e.length-1;for(let i=0;i<n;i++){let l=r(e[i],e[i+1]);if(t){const c=Array.isArray(t)?t[i]||zo:t;l=Pm(c,l)}o.push(l)}return o}function gG(e,t,{clamp:a=!0,ease:o,mixer:r}={}){const n=e.length;if(Oc(n===t.length,"Both input and output ranges must be the same length","range-length"),n===1)return()=>t[0];if(n===2&&t[0]===t[1])return()=>t[1];const i=e[0]===e[1];e[0]>e[n-1]&&(e=[...e].reverse(),t=[...t].reverse());const l=fG(t,o,r),c=l.length,d=u=>{if(i&&u<e[0])return t[0];let m=0;if(c>1)for(;m<e.length-2&&!(u<e[m+1]);m++);const h=Vu(e[m],e[m+1],u);return l[m](h)};return a?u=>d(an(e[0],e[n-1],u)):d}function vG(e,t){const a=e[e.length-1];for(let o=1;o<=t;o++){const r=Vu(0,t,o);e.push(vt(a,1,r))}}function xG(e){const t=[0];return vG(t,e.length-1),t}function bG(e,t){return e.map(a=>a*t)}function yG(e,t){return e.map(()=>t||N$).splice(0,e.length-1)}function iu({duration:e=300,keyframes:t,times:a,ease:o="easeInOut"}){const r=AU(o)?o.map(YP):YP(o),n={done:!1,value:t[0]},i=bG(a&&a.length===t.length?a:xG(t),e),l=gG(i,t,{ease:Array.isArray(r)?r:yG(t,r)});return{calculatedDuration:e,next:c=>(n.value=l(c),n.done=c>=e,n)}}const kG=e=>e!==null;function Ig(e,{repeat:t,repeatType:a="loop"},o,r=1){const n=e.filter(kG),l=r<0||t&&a!=="loop"&&t%2===1?0:n.length-1;return!l||o===void 0?n[l]:o}const wG={decay:cy,inertia:cy,tween:iu,keyframes:iu,spring:xf};function V$(e){typeof e.type=="string"&&(e.type=wG[e.type])}class ck{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,a){return this.finished.then(t,a)}}const CG=e=>e/100;class bf extends ck{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{var o,r;const{motionValue:a}=this.options;a&&a.updatedAt!==La.now()&&this.tick(La.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(r=(o=this.options).onStop)==null||r.call(o))},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;V$(t);const{type:a=iu,repeat:o=0,repeatDelay:r=0,repeatType:n,velocity:i=0}=t;let{keyframes:l}=t;const c=a||iu;c!==iu&&typeof l[0]!="number"&&(this.mixKeyframes=Pm(CG,M$(l[0],l[1])),l=[0,100]);const d=c({...t,keyframes:l});n==="mirror"&&(this.mirroredGenerator=c({...t,keyframes:[...l].reverse(),velocity:-i})),d.calculatedDuration===null&&(d.calculatedDuration=lk(d));const{calculatedDuration:u}=d;this.calculatedDuration=u,this.resolvedDuration=u+r,this.totalDuration=this.resolvedDuration*(o+1)-r,this.generator=d}updateTime(t){const a=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=a}tick(t,a=!1){const{generator:o,totalDuration:r,mixKeyframes:n,mirroredGenerator:i,resolvedDuration:l,calculatedDuration:c}=this;if(this.startTime===null)return o.next(0);const{delay:d=0,keyframes:u,repeat:m,repeatType:h,repeatDelay:p,type:f,onUpdate:g,finalKeyframe:b}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-r/this.speed,this.startTime)),a?this.currentTime=t:this.updateTime(t);const v=this.currentTime-d*(this.playbackSpeed>=0?1:-1),y=this.playbackSpeed>=0?v<0:v>r;this.currentTime=Math.max(v,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=r);let k=this.currentTime,w=o;if(m){const N=Math.min(this.currentTime,r)/l;let E=Math.floor(N),A=N%1;!A&&N>=1&&(A=1),A===1&&E--,E=Math.min(E,m+1),!!(E%2)&&(h==="reverse"?(A=1-A,p&&(A-=p/l)):h==="mirror"&&(w=i)),k=an(0,1,A)*l}let R;y?(this.delayState.value=u[0],R=this.delayState):R=w.next(k),n&&!y&&(R.value=n(R.value));let{done:C}=R;!y&&c!==null&&(C=this.playbackSpeed>=0?this.currentTime>=r:this.currentTime<=0);const P=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&C);return P&&f!==cy&&(R.value=Ig(u,this.options,b,this.speed)),g&&g(R.value),P&&this.finish(),R}then(t,a){return this.finished.then(t,a)}get duration(){return Uo(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+Uo(t)}get time(){return Uo(this.currentTime)}set time(t){t=so(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){const t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);const a=this.generator.next(t).value;return B$(o=>this.generator.next(o).value,t,a)}get speed(){return this.playbackSpeed}set speed(t){const a=this.playbackSpeed!==t;a&&this.driver&&this.updateTime(La.now()),this.playbackSpeed=t,a&&this.driver&&(this.time=Uo(this.currentTime))}play(){var r,n;if(this.isStopped)return;const{driver:t=sG,startTime:a}=this.options;this.driver||(this.driver=t(i=>this.tick(i))),(n=(r=this.options).onPlay)==null||n.call(r);const o=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=o):this.holdTime!==null?this.startTime=o-this.holdTime:this.startTime||(this.startTime=a??o),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(La.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var t,a;this.notifyFinished(),this.teardown(),this.state="finished",(a=(t=this.options).onComplete)==null||a.call(t)}cancel(){var t,a;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(a=(t=this.options).onCancel)==null||a.call(t)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){var a;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(a=this.driver)==null||a.stop(),t.observe(this)}}function PG(e){for(let t=1;t<e.length;t++)e[t]??(e[t]=e[t-1])}const xi=e=>e*180/Math.PI,dy=e=>{const t=xi(Math.atan2(e[1],e[0]));return uy(t)},SG={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:dy,rotateZ:dy,skewX:e=>xi(Math.atan(e[1])),skewY:e=>xi(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},uy=e=>(e=e%360,e<0&&(e+=360),e),sS=dy,iS=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),lS=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),RG={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:iS,scaleY:lS,scale:e=>(iS(e)+lS(e))/2,rotateX:e=>uy(xi(Math.atan2(e[6],e[5]))),rotateY:e=>uy(xi(Math.atan2(-e[2],e[0]))),rotateZ:sS,rotate:sS,skewX:e=>xi(Math.atan(e[4])),skewY:e=>xi(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function my(e){return e.includes("scale")?1:0}function py(e,t){if(!e||e==="none")return my(t);const a=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let o,r;if(a)o=RG,r=a;else{const l=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);o=SG,r=l}if(!r)return my(t);const n=o[t],i=r[1].split(",").map(NG);return typeof n=="function"?n(i):i[n]}const jG=(e,t)=>{const{transform:a="none"}=getComputedStyle(e);return py(a,t)};function NG(e){return parseFloat(e.trim())}const sd=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],id=new Set([...sd,"pathRotation"]),cS=e=>e===nd||e===ye,AG=new Set(["x","y","z"]),EG=sd.filter(e=>!AG.has(e));function _G(e){const t=[];return EG.forEach(a=>{const o=e.getValue(a);o!==void 0&&(t.push([a,o.get()]),o.set(a.startsWith("scale")?1:0))}),t}const bs={width:({x:e},{paddingLeft:t="0",paddingRight:a="0",boxSizing:o})=>{const r=e.max-e.min;return o==="border-box"?r:r-parseFloat(t)-parseFloat(a)},height:({y:e},{paddingTop:t="0",paddingBottom:a="0",boxSizing:o})=>{const r=e.max-e.min;return o==="border-box"?r:r-parseFloat(t)-parseFloat(a)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>py(t,"x"),y:(e,{transform:t})=>py(t,"y")};bs.translateX=bs.x;bs.translateY=bs.y;const Oi=new Set;let hy=!1,fy=!1,gy=!1;function F$(){if(fy){const e=Array.from(Oi).filter(o=>o.needsMeasurement),t=new Set(e.map(o=>o.element)),a=new Map;t.forEach(o=>{const r=_G(o);r.length&&(a.set(o,r),o.render())}),e.forEach(o=>o.measureInitialState()),t.forEach(o=>{o.render();const r=a.get(o);r&&r.forEach(([n,i])=>{var l;(l=o.getValue(n))==null||l.set(i)})}),e.forEach(o=>o.measureEndState()),e.forEach(o=>{o.suspendedScrollY!==void 0&&window.scrollTo(0,o.suspendedScrollY)})}fy=!1,hy=!1,Oi.forEach(e=>e.complete(gy)),Oi.clear()}function U$(){Oi.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(fy=!0)})}function TG(){gy=!0,U$(),F$(),gy=!1}class dk{constructor(t,a,o,r,n,i=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=a,this.name=o,this.motionValue=r,this.element=n,this.isAsync=i}scheduleResolve(){this.state="scheduled",this.isAsync?(Oi.add(this),hy||(hy=!0,xt.read(U$),xt.resolveKeyframes(F$))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:a,element:o,motionValue:r}=this;if(t[0]===null){const n=r==null?void 0:r.get(),i=t[t.length-1];if(n!==void 0)t[0]=n;else if(o&&a){const l=o.readValue(a,i);l!=null&&(t[0]=l)}t[0]===void 0&&(t[0]=i),r&&n===void 0&&r.set(t[0])}PG(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),Oi.delete(this)}cancel(){this.state==="scheduled"&&(Oi.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const $G=e=>e.startsWith("--");function G$(e,t,a){$G(t)?e.style.setProperty(t,a):e.style[t]=a}const OG={};function z$(e,t){const a=x$(e);return()=>OG[t]??a()}const qG=z$(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),H$=z$(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Ld=([e,t,a,o])=>`cubic-bezier(${e}, ${t}, ${a}, ${o})`,dS={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Ld([0,.65,.55,1]),circOut:Ld([.55,0,1,.45]),backIn:Ld([.31,.01,.66,-.59]),backOut:Ld([.33,1.53,.69,.99])};function K$(e,t){if(e)return typeof e=="function"?H$()?L$(e,t):"ease-out":A$(e)?Ld(e):Array.isArray(e)?e.map(a=>K$(a,t)||dS.easeOut):dS[e]}function DG(e,t,a,{delay:o=0,duration:r=300,repeat:n=0,repeatType:i="loop",ease:l="easeOut",times:c}={},d=void 0){const u={[t]:a};c&&(u.offset=c);const m=K$(l,r);Array.isArray(m)&&(u.easing=m);const h={delay:o,duration:r,easing:Array.isArray(m)?"linear":m,fill:"both",iterations:n+1,direction:i==="reverse"?"alternate":"normal"};return d&&(h.pseudoElement=d),e.animate(u,h)}function Q$(e){return typeof e=="function"&&"applyToOptions"in e}function IG({type:e,...t}){return Q$(e)&&H$()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class W$ extends ck{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:a,name:o,keyframes:r,pseudoElement:n,allowFlatten:i=!1,finalKeyframe:l,onComplete:c}=t;this.isPseudoElement=!!n,this.allowFlatten=i,this.options=t,Oc(typeof t.type!="string",`Mini animate() doesn't support "type" as a string.`,"mini-spring");const d=IG(t);this.animation=DG(a,o,r,d,n),d.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!n){const u=Ig(r,this.options,l,this.speed);this.updateMotionValue&&this.updateMotionValue(u),G$(a,o,u),this.animation.cancel()}c==null||c(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var t,a;(a=(t=this.animation).finish)==null||a.call(t)}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var a,o,r;const t=(a=this.options)==null?void 0:a.element;!this.isPseudoElement&&(t!=null&&t.isConnected)&&((r=(o=this.animation).commitStyles)==null||r.call(o))}get duration(){var a,o;const t=((o=(a=this.animation.effect)==null?void 0:a.getComputedTiming)==null?void 0:o.call(a).duration)||0;return Uo(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+Uo(t)}get time(){return Uo(Number(this.animation.currentTime)||0)}set time(t){const a=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=so(t),a&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:a,rangeEnd:o,observe:r}){var n;return this.allowFlatten&&((n=this.animation.effect)==null||n.updateTiming({easing:"linear"})),this.animation.onfinish=null,t&&qG()?(this.animation.timeline=t,a&&(this.animation.rangeStart=a),o&&(this.animation.rangeEnd=o),zo):r(this)}}const J$={anticipate:S$,backInOut:P$,circInOut:j$};function MG(e){return e in J$}function LG(e){typeof e.ease=="string"&&MG(e.ease)&&(e.ease=J$[e.ease])}const fv=10;class BG extends W${constructor(t){LG(t),V$(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:a,onUpdate:o,onComplete:r,element:n,...i}=this.options;if(!a)return;if(t!==void 0){a.set(t);return}const l=new bf({...i,autoplay:!1}),c=Math.max(fv,La.now()-this.startTime),d=an(0,fv,c-fv),u=l.sample(c).value,{name:m}=this.options;n&&m&&G$(n,m,u),a.setWithVelocity(l.sample(Math.max(0,c-d)).value,u,d),l.stop()}}const uS=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(wr.test(e)||e==="0")&&!e.startsWith("url("));function VG(e){const t=e[0];if(e.length===1)return!0;for(let a=0;a<e.length;a++)if(e[a]!==t)return!0}function FG(e,t,a,o){const r=e[0];if(r===null)return!1;if(t==="display"||t==="visibility")return!0;const n=e[e.length-1],i=uS(r,t),l=uS(n,t);return Dg(i===l,`You are trying to animate ${t} from "${r}" to "${n}". "${i?n:r}" is not an animatable value.`,"value-not-animatable"),!i||!l?!1:VG(e)||(a==="spring"||Q$(a))&&o}function vy(e){e.duration=0,e.type="keyframes"}const X$=new Set(["opacity","clipPath","filter","transform"]),UG=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function GG(e){for(let t=0;t<e.length;
418t++)if(typeof e[t]=="string"&&UG.test(e[t]))return!0;return!1}const zG=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),HG=x$(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function KG(e){var m;const{motionValue:t,name:a,repeatDelay:o,repeatType:r,damping:n,type:i,keyframes:l}=e;if(!(((m=t==null?void 0:t.owner)==null?void 0:m.current)instanceof HTMLElement))return!1;const{onUpdate:d,transformTemplate:u}=t.owner.getProps();return HG()&&a&&(X$.has(a)||zG.has(a)&&GG(l))&&(a!=="transform"||!u)&&!d&&!o&&r!=="mirror"&&n!==0&&i!=="inertia"}const QG=40;class WG extends ck{constructor({autoplay:t=!0,delay:a=0,type:o="keyframes",repeat:r=0,repeatDelay:n=0,repeatType:i="loop",keyframes:l,name:c,motionValue:d,element:u,...m}){var f;super(),this.stop=()=>{var g,b;this._animation&&(this._animation.stop(),(g=this.stopTimeline)==null||g.call(this)),(b=this.keyframeResolver)==null||b.cancel()},this.createdAt=La.now();const h={autoplay:t,delay:a,type:o,repeat:r,repeatDelay:n,repeatType:i,name:c,motionValue:d,element:u,...m},p=(u==null?void 0:u.KeyframeResolver)||dk;this.keyframeResolver=new p(l,(g,b,v)=>this.onKeyframesResolved(g,b,h,!v),c,d,u),(f=this.keyframeResolver)==null||f.scheduleResolve()}onKeyframesResolved(t,a,o,r){var v,y;this.keyframeResolver=void 0;const{name:n,type:i,velocity:l,delay:c,isHandoff:d,onUpdate:u}=o;this.resolvedAt=La.now();let m=!0;FG(t,n,i,l)||(m=!1,(Ls.instantAnimations||!c)&&(u==null||u(Ig(t,o,a))),t[0]=t[t.length-1],vy(o),o.repeat=0);const p={startTime:r?this.resolvedAt?this.resolvedAt-this.createdAt>QG?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:a,...o,keyframes:t},f=m&&!d&&KG(p),g=(y=(v=p.motionValue)==null?void 0:v.owner)==null?void 0:y.current;let b;if(f)try{b=new BG({...p,element:g})}catch{b=new bf(p)}else b=new bf(p);b.finished.then(()=>{this.notifyFinished()}).catch(zo),this.pendingTimeline&&(this.stopTimeline=b.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=b}get finished(){return this._animation?this.animation.finished:this._finished}then(t,a){return this.finished.finally(t).then(()=>{})}get animation(){var t;return this._animation||((t=this.keyframeResolver)==null||t.resume(),TG()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var t;this._animation&&this.animation.cancel(),(t=this.keyframeResolver)==null||t.cancel()}}function Y$(e,t,a,o=0,r=1){const n=Array.from(e).sort((d,u)=>d.sortNodePosition(u)).indexOf(t),i=e.size,l=(i-1)*o;return typeof a=="function"?a(n,i):r===1?n*o:l-n*o}const mS=30,JG=e=>!isNaN(parseFloat(e));class XG{constructor(t,a={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=o=>{var n;const r=La.now();if(this.updatedAt!==r&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(o),this.current!==this.prev&&((n=this.events.change)==null||n.notify(this.current),this.dependents))for(const i of this.dependents)i.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=a.owner}setCurrent(t){this.current=t,this.updatedAt=La.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=JG(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,a){this.events[t]||(this.events[t]=new tk);const o=this.events[t].add(a);return t==="change"?()=>{o(),xt.read(()=>{this.events.change.getSize()||this.stop()})}:o}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,a){this.passiveEffect=t,this.stopPassiveEffect=a}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,a,o){this.set(a),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-o}jump(t,a=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,a&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){var t;(t=this.events.change)==null||t.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const t=La.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>mS)return 0;const a=Math.min(this.updatedAt-this.prevUpdatedAt,mS);return b$(parseFloat(this.current)-parseFloat(this.prevFrameValue),a)}start(t){return this.stop(),new Promise(a=>
418{this.hasAnimated=!0,this.animation=t(a),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){var t,a;(t=this.dependents)==null||t.clear(),(a=this.events.destroy)==null||a.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Dc(e,t){return new XG(e,t)}function Z$(e,t){if(e!=null&&e.inherit&&t){const{inherit:a,...o}=e;return{...t,...o}}return e}function uk(e,t){const a=(e==null?void 0:e[t])??(e==null?void 0:e.default)??e;return a!==e?Z$(a,e):a}const YG={type:"spring",stiffness:500,damping:25,restSpeed:10},ZG=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),ez={type:"keyframes",duration:.8},tz={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},az=(e,{keyframes:t})=>t.length>2?ez:id.has(e)?e.startsWith("scale")?ZG(t[1]):YG:tz,oz=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function rz(e){for(const t in e)if(!oz.has(t))return!0;return!1}const mk=(e,t,a,o={},r,n)=>i=>{const l=uk(o,e)||{},c=l.delay||o.delay||0;let{elapsed:d=0}=o;d=d-so(c);const u={keyframes:Array.isArray(a)?a:[null,a],ease:"easeOut",velocity:t.getVelocity(),...l,delay:-d,onUpdate:h=>{t.set(h),l.onUpdate&&l.onUpdate(h)},onComplete:()=>{i(),l.onComplete&&l.onComplete()},name:e,motionValue:t,element:n?void 0:r};rz(l)||Object.assign(u,az(e,u)),u.duration&&(u.duration=so(u.duration)),u.repeatDelay&&(u.repeatDelay=so(u.repeatDelay)),u.from!==void 0&&(u.keyframes[0]=u.from);let m=!1;if((u.type===!1||u.duration===0&&!u.repeatDelay)&&(vy(u),u.delay===0&&(m=!0)),(Ls.instantAnimations||Ls.skipAnimations||r!=null&&r.shouldSkipAnimations||l.skipAnimations)&&(m=!0,vy(u),u.delay=0),u.allowFlatten=!l.type&&!l.ease,m&&!n&&t.get()!==void 0){const h=Ig(u.keyframes,l);if(h!==void 0){xt.update(()=>{u.onUpdate(h),u.onComplete()});return}}return l.isSync?new bf(u):new WG(u)},nz=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function sz(e){const t=nz.exec(e);if(!t)return[,];const[,a,o,r]=t;return[`--${a??o}`,r]}const iz=4;function e4(e,t,a=1){Oc(a<=iz,`Max CSS variable fallback depth detected in property "${e}". This may indicate a circular fallback dependency.`,"max-css-var-depth");const[o,r]=sz(e);if(!o)return;const n=window.getComputedStyle(t).getPropertyValue(o);if(n){const i=n.trim();return f$(i)?parseFloat(i):i}return rk(r)?e4(r,t,a+1):r}function pS(e){const t=[{},{}];return e==null||e.values.forEach((a,o)=>{t[0][o]=a.get(),t[1][o]=a.getVelocity()}),t}function pk(e,t,a,o){if(typeof t=="function"){const[r,n]=pS(o);t=t(a!==void 0?a:e.custom,r,n)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[r,n]=pS(o);t=t(a!==void 0?a:e.custom,r,n)}return t}function qi(e,t,a){const o=e.getProps();return pk(o,t,a!==void 0?a:o.custom,e)}const t4=new Set(["width","height","top","left","right","bottom",...sd]),xy=e=>Array.isArray(e);function lz(e,t,a){e.hasValue(t)?e.getValue(t).set(a):e.addValue(t,Dc(a))}function cz(e){return xy(e)?e[e.length-1]||0:e}function dz(e,t){const a=qi(e,t);let{transitionEnd:o={},transition:r={},...n}=a||{};n={...n,...o};for(const i in n){const l=cz(n[i]);lz(e,i,l)}}const ba=e=>!!(e&&e.getVelocity);function uz(e){return!!(ba(e)&&e.add)}function by(e,t){const a=e.getValue("willChange");if(uz(a))return a.add(t);if(!a&&Ls.WillChange){const o=new Ls.WillChange("auto");e.addValue("willChange",o),o.add(t)}}function hk(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const mz="framerAppearId",a4="data-"+hk(mz);function o4(e){return e.props[a4]}function pz({protectedKeys:e,needsAnimating:t},a){const o=e.hasOwnProperty(a)&&t[a]!==!0;return t[a]=!1,o}function r4(e,t,{delay:a=0,transitionOverride:o,type:r}={}){let{transition:n,transitionEnd:i,...l}=t;const c=e.getDefaultTransition();n=n?Z$(n,c):c;const d=n==null?void 0:n.reduceMotion,u=n==null?void 0:n.skipAnimations;o&&(n=o);const m=[],h=r&&e.animationState&&e.animationState.getState()[r],p=n==null?void 0:n.path;p&&p.animateVisualElement(e,l,n,a,m);for(const f in l){const g=e.getValue(f,e.latestValues[f]??null),b=l[f];if(b===void 0||h&&pz(h,f))continue;const v={delay:a,...uk(n||{},f)};u&&(v.skipAnimations=!0);const y=g.get();if(y!==void 0&&!g.isAnimating()&&!Array.isArray(b)&&b===y&&!v.velocity){xt.update(()=>
vendor: 56,677 bytes, line 418
418g.set(b));continue}let k=!1;if(window.MotionHandoffAnimation){const C=o4(e);if(C){const P=window.MotionHandoffAnimation(C,f,xt);P!==null&&(v.startTime=P,k=!0)}}by(e,f);const w=d??e.shouldReduceMotion;g.start(mk(f,g,b,w&&t4.has(f)?{type:!1}:v,e,k));const R=g.animation;R&&m.push(R)}if(i){const f=()=>xt.update(()=>{i&&dz(e,i)});m.length?Promise.all(m).then(f):f()}return m}function yy(e,t,a={}){var c;const o=qi(e,t,a.type==="exit"?(c=e.presenceContext)==null?void 0:c.custom:void 0);let{transition:r=e.getDefaultTransition()||{}}=o||{};a.transitionOverride&&(r=a.transitionOverride);const n=o?()=>Promise.all(r4(e,o,a)):()=>Promise.resolve(),i=e.variantChildren&&e.variantChildren.size?(d=0)=>{const{delayChildren:u=0,staggerChildren:m,staggerDirection:h}=r;return hz(e,t,d,u,m,h,a)}:()=>Promise.resolve(),{when:l}=r;if(l){const[d,u]=l==="beforeChildren"?[n,i]:[i,n];return d().then(()=>u())}else return Promise.all([n(),i(a.delay)])}function hz(e,t,a=0,o=0,r=0,n=1,i){const l=[];for(const c of e.variantChildren)c.notify("AnimationStart",t),l.push(yy(c,t,{...i,delay:a+(typeof o=="function"?0:o)+Y$(e.variantChildren,c,o,r,n)}).then(()=>c.notify("AnimationComplete",t)));return Promise.all(l)}function fz(e,t,a={}){e.notify("AnimationStart",t);let o;if(Array.isArray(t)){const r=t.map(n=>yy(e,n,a));o=Promise.all(r)}else if(typeof t=="string")o=yy(e,t,a);else{const r=typeof t=="function"?qi(e,t,a.custom):t;o=Promise.all(r4(e,r,a))}return o.then(()=>{e.notify("AnimationComplete",t)})}const gz={test:e=>e==="auto",parse:e=>e},n4=e=>t=>t.test(e),s4=[nd,ye,Qr,gn,VU,BU,gz],hS=e=>s4.find(n4(e));function vz(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||v$(e):!0}const xz=new Set(["brightness","contrast","saturate","opacity"]);function bz(e){const[t,a]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[o]=a.match(nk)||[];if(!o)return e;const r=a.replace(o,"");let n=xz.has(t)?1:0;return o!==a&&(n*=100),t+"("+n+r+")"}const yz=/\b([a-z-]*)\(.*?\)/gu,ky={...wr,getAnimatableNone:e=>{const t=e.match(yz);return t?t.map(bz).join(" "):e}},wy={...wr,getAnimatableNone:e=>{const t=wr.parse(e);return wr.createTransformer(e)(t.map(o=>typeof o=="number"?0:typeof o=="object"?{...o,alpha:1}:o))}},fS={...nd,transform:Math.round},kz={rotate:gn,pathRotation:gn,rotateX:gn,rotateY:gn,rotateZ:gn,scale:mp,scaleX:mp,scaleY:mp,scaleZ:mp,skew:gn,skewX:gn,skewY:gn,distance:ye,translateX:ye,translateY:ye,translateZ:ye,x:ye,y:ye,z:ye,perspective:ye,transformPerspective:ye,opacity:Fu,originX:tS,originY:tS,originZ:ye},yf={borderWidth:ye,borderTopWidth:ye,borderRightWidth:ye,borderBottomWidth:ye,borderLeftWidth:ye,borderRadius:ye,borderTopLeftRadius:ye,borderTopRightRadius:ye,borderBottomRightRadius:ye,borderBottomLeftRadius:ye,width:ye,maxWidth:ye,height:ye,maxHeight:ye,top:ye,right:ye,bottom:ye,left:ye,inset:ye,insetBlock:ye,insetBlockStart:ye,insetBlockEnd:ye,insetInline:ye,insetInlineStart:ye,insetInlineEnd:ye,padding:ye,paddingTop:ye,paddingRight:ye,paddingBottom:ye,paddingLeft:ye,paddingBlock:ye,paddingBlockStart:ye,paddingBlockEnd:ye,paddingInline:ye,paddingInlineStart:ye,paddingInlineEnd:ye,margin:ye,marginTop:ye,marginRight:ye,marginBottom:ye,marginLeft:ye,marginBlock:ye,marginBlockStart:ye,marginBlockEnd:ye,marginInline:ye,marginInlineStart:ye,marginInlineEnd:ye,fontSize:ye,backgroundPositionX:ye,backgroundPositionY:ye,...kz,zIndex:fS,fillOpacity:Fu,strokeOpacity:Fu,numOctaves:fS},wz={...yf,color:ea,backgroundColor:ea,outlineColor:ea,fill:ea,stroke:ea,borderColor:ea,borderTopColor:ea,borderRightColor:ea,borderBottomColor:ea,borderLeftColor:ea,filter:ky,WebkitFilter:ky,mask:wy,WebkitMask:wy},i4=e=>wz[e],Cz=new Set([ky,wy]);function l4(e,t){let a=i4(e);return Cz.has(a)||(a=wr),a.getAnimatableNone?a.getAnimatableNone(t):void 0}const Pz=new Set(["auto","none","0"]);function Sz(e,t,a){let o=0,r;for(;o<e.length&&!r;){const n=e[o];typeof n=="string"&&!Pz.has(n)&&qc(n).values.length&&(r=e[o]),o++}if(r&&a)for(const n of t)e[n]=l4(a,r)}class Rz extends dk{constructor(t,a,o,r,n){super(t,a,o,r,n,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:a,name:o}=this;if(!a||!a.current)return;super.readKeyframes();for(let u=0;u<t.length;u++){let m=t[u];if(typeof m=="string"&&(m=m.trim(),rk(m))){const h=e4(m,a.current);h!==void 0&&(t[u]=h),u===t.length-1&&(this.finalKeyframe=m)}}if(this.resolveNoneKeyframes(),!t4.has(o)||t.length!==2)return;const[r,n]=t,i=hS(r),l=hS(n),c=eS(r),d=eS(n);if(c!==d&&bs[o]){this.needsMeasurement=!0;return}if(i!==l)if(cS(i)&&cS(l))for(let u=0;u<t.length;u++){const m=t[u];typeof m=="string"&&(t[u]=parseFloat(m))}else bs[o]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:t,name:a}=this,o=[];for(let r=0;r<t.length;r++)(t[r]===null||vz(t[r]))&&o.push(r);o.length&&Sz(t,o,a)}measureInitialState(){const{element:t,unresolvedKeyframes:a,name:o}=this;if(!t||!t.current)return;o==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=bs[o](t.measureViewportBox(),window.getComputedStyle(t.current)),a[0]=this.measuredOrigin;const r=a[a.length-1];r!==void 0&&t.getValue(o,r).jump(r,!1)}measureEndState(){var l;const{element:t,name:a,unresolvedKeyframes:o}=this;if(!t||!t.current)return;const r=t.getValue(a);r&&r.jump(this.measuredOrigin,!1);const n=o.length-1,i=o[n];o[n]=bs[a](t.measureViewportBox(),window.getComputedStyle(t.current)),i!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=i),(l=this.removedTransforms)!=null&&l.length&&this.removedTransforms.forEach(([c,d])=>{t.getValue(c).set(d)}),this.resolveNoneKeyframes()}}function c4(e,t,a){if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){const r=document.querySelectorAll(e);return r?Array.from(r):[]}return Array.from(e).filter(o=>o!=null)}const Cy=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function ph(e){return g$(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}const{schedule:fk,cancel:Wge}=E$(queueMicrotask,!1),ir={x:!1,y:!1};function d4(){return ir.x||ir.y}function jz(e){return e==="x"||e==="y"?ir[e]?null:(ir[e]=!0,()=>{ir[e]=!1}):ir.x||ir.y?null:(ir.x=ir.y=!0,()=>{ir.x=ir.y=!1})}function u4(e,t){const a=c4(e),o=new AbortController,r={passive:!0,...t,signal:o.signal};return[a,r,()=>o.abort()]}function Nz(e){return!(e.pointerType==="touch"||d4())}function Az(e,t,a={}){const[o,r,n]=u4(e,a);return o.forEach(i=>{let l=!1,c=!1,d;const u=()=>{i.removeEventListener("pointerleave",f)},m=b=>{d&&(d(b),d=void 0),u()},h=b=>{l=!1,window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),c&&(c=!1,m(b))},p=()=>{l=!0,window.addEventListener("pointerup",h,r),window.addEventListener("pointercancel",h,r)},f=b=>{if(b.pointerType!=="touch"){if(l){c=!0;return}m(b)}},g=b=>{if(!Nz(b))return;c=!1;const v=t(i,b);typeof v=="function"&&(d=v,i.addEventListener("pointerleave",f,r))};i.addEventListener("pointerenter",g,r),i.addEventListener("pointerdown",p,r)}),n}const m4=(e,t)=>t?e===t?!0:m4(e,t.parentElement):!1,gk=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,Ez=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function _z(e){return Ez.has(e.tagName)||e.isContentEditable===!0}const Tz=new Set(["INPUT","SELECT","TEXTAREA"]);function $z(e){return Tz.has(e.tagName)||e.isContentEditable===!0}const hh=new WeakSet;function gS(e){return t=>{t.key==="Enter"&&e(t)}}function gv(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const Oz=(e,t)=>{const a=e.currentTarget;if(!a)return;const o=gS(()=>{if(hh.has(a))return;gv(a,"down");const r=gS(()=>{gv(a,"up")}),n=()=>gv(a,"cancel");a.addEventListener("keyup",r,t),a.addEventListener("blur",n,t)});a.addEventListener("keydown",o,t),a.addEventListener("blur",()=>a.removeEventListener("keydown",o),t)};function vS(e){return gk(e)&&!d4()}const xS=new WeakSet;function qz(e,t,a={}){const[o,r,n]=u4(e,a),i=l=>{const c=l.currentTarget;if(!vS(l)||xS.has(l))return;hh.add(c),a.stopPropagation&&xS.add(l);const d=t(c,l),u=(p,f)=>{window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",h),hh.has(c)&&hh.delete(c),vS(p)&&typeof d=="function"&&d(p,{success:f})},m=p=>{u(p,c===window||c===document||a.useGlobalTarget||m4(c,p.target))},h=p=>{u(p,!1)};window.addEventListener("pointerup",m,r),window.addEventListener("pointercancel",h,r)};return o.forEach(l=>{(a.useGlobalTarget?window:l).addEventListener("pointerdown",i,r),ph(l)&&(l.addEventListener("focus",d=>Oz(d,r)),!_z(l)&&!l.hasAttribute("tabindex")&&(l.tabIndex=0))}),n}function vk(e){return g$(e)&&"ownerSVGElement"in e}const fh=new WeakMap;let Yn;const p4=(e,t,a)=>(o,r)=>r&&r[0]?r[0][e+"Size"]:vk(o)&&"getBBox"in o?o.getBBox()[t]:o[a],Dz=p4("inline","width","offsetWidth"),Iz=p4("block","height","offsetHeight");function Mz({target:e,borderBoxSize:t}){var a;(a=fh.get(e))==null||a.forEach(o=>{o(e,{get width(){return Dz(e,t)},get height(){return Iz(e,t)}})})}function Lz(e){e.forEach(Mz)}function Bz(){typeof ResizeObserver>"u"||(Yn=new ResizeObserver(Lz))}function Vz(e,t){Yn||Bz();const a=c4(e);return a.forEach(o=>{let r=fh.get(o);r||(r=new Set,fh.set(o,r)),r.add(t),Yn==null||Yn.observe(o)}),()=>{a.forEach(o=>{const r=fh.get(o);r==null||r.delete(t),r!=null&&r.size||Yn==null||Yn.unobserve(o)})}}const gh=new Set;let Ul;function Fz(){Ul=()=>{const e={get width(){return window.innerWidth},get height(){return window.innerHeight}};gh.forEach(t=>t(e))},window.addEventListener("resize",Ul)}function Uz(e){return gh.add(e),Ul||Fz(),()=>{gh.delete(e),!gh.size&&typeof Ul=="function"&&(window.removeEventListener("resize",Ul),Ul=void 0)}}function bS(e,t){return typeof e=="function"?Uz(e):Vz(e,t)}function Gz(e){return vk(e)&&e.tagName==="svg"}const zz=[...s4,ea,wr],Hz=e=>zz.find(n4(e)),yS=()=>({translate:0,scale:1,origin:0,originPoint:0}),Gl=()=>({x:yS(),y:yS()}),kS=()=>({min:0,max:0}),na=()=>({x:kS(),y:kS()}),Kz=new WeakMap;function Mg(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function Uu(e){return typeof e=="string"||Array.isArray(e)}const xk=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],bk=["initial",...xk];function Lg(e){return Mg(e.animate)||bk.some(t=>Uu(e[t]))}function h4(e){return!!(Lg(e)||e.variants)}function Qz(e,t,a){for(const o in t){const r=t[o],n=a[o];if(ba(r))e.addValue(o,r);else if(ba(n))e.addValue(o,Dc(r,{owner:e}));else if(n!==r)if(e.hasValue(o)){const i=e.getValue(o);i.liveStyle===!0?i.jump(r):i.hasAnimated||i.set(r)}else{const i=e.getStaticValue(o);e.addValue(o,Dc(i!==void 0?i:r,{owner:e}))}}for(const o in a)t[o]===void 0&&e.removeValue(o);return t}const Py={current:null},f4={current:!1},Wz=typeof window<"u";function Jz(){if(f4.current=!0,!!Wz)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>Py.current=e.matches;e.addEventListener("change",t),t()}else Py.current=!1}const wS=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let kf={};function g4(e){kf=e}function Xz(){return kf}class Yz{scrapeMotionValuesFromProps(t,a,o){return{}}constructor({parent:t,props:a,presenceContext:o,reducedMotionConfig:r,skipAnimations:n,blockInitialAnimation:i,visualState:l},c={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=dk,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const p=La.now();this.renderScheduledAt<p&&(this.renderScheduledAt=p,xt.render(this.render,!1,!0))};const{latestValues:d,renderState:u}=l;this.latestValues=d,this.baseTarget={...d},this.initialValues=a.initial?{...d}:{},this.renderState=u,this.parent=t,this.props=a,this.presenceContext=o,this.depth=t?t.depth+1:0,this.reducedMotionConfig=r,this.skipAnimationsConfig=n,this.options=c,this.blockInitialAnimation=!!i,this.isControllingVariants=Lg(a),this.isVariantNode=h4(a),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:m,...h}=this.scrapeMotionValuesFromProps(a,{},this);for(const p in h){const f=h[p];d[p]!==void 0&&ba(f)&&f.set(d[p])}}mount(t){var a,o;if(this.hasBeenMounted)for(const r in this.initialValues)(a=this.values.get(r))==null||a.jump(this.initialValues[r]),this.latestValues[r]=this.initialValues[r];this.current=t,Kz.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((r,n)=>this.bindToMotionValue(n,r)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(f4.current||Jz(),this.shouldReduceMotion=Py.current),this.shouldSkipAnimations=this.skipAnimationsConfig??!1,(o=this.parent)==null||o.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var t;this.projection&&this.projection.unmount(),Bs(this.notifyUpdate),Bs(this.render),this.valueSubscriptions.forEach(a=>a()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(t=this.parent)==null||t.removeChild(this);for(const a in this.events)this.events[a].clear();for(const a in this.features){const o=this.features[a];o&&(o.unmount(),o.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,a){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),a.accelerate&&X$.has(t)&&this.current instanceof HTMLElement){const{factory:i,keyframes:l,times:c,ease:d,duration:u}=a.accelerate,m=new W$({element:this.current,name:t,keyframes:l,times:c,ease:d,duration:so(u)}),h=i(m);this.valueSubscriptions.set(t,()=>{h(),m.cancel()});return}const o=id.has(t);o&&this.onBindTransform&&this.onBindTransform();const r=a.on("change",i=>{this.latestValues[t]=i,this.props.onUpdate&&xt.preRender(this.notifyUpdate),o&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let n;typeof window<"u"&&window.MotionCheckAppearSync&&(n=window.MotionCheckAppearSync(this,t,a)),this.valueSubscriptions.set(t,()=>{r(),n&&n()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in kf){const a=kf[t];if(!a)continue;const{isEnabled:o,Feature:r}=a;if(!this.features[t]&&r&&o(this.props)&&(this.features[t]=new r(this)),this.features[t]){const n=this.features[t];n.isMounted?n.update():(n.mount(),n.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):na()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,a){this.latestValues[t]=a}update(t,a){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=a;for(let o=0;o<wS.length;o++){const r=wS[o];this.propEventSubscriptions[r]&&(this.propEventSubscriptions[r](),delete this.propEventSubscriptions[r]);const n="on"+r,i=t[n];i&&(this.propEventSubscriptions[r]=this.on(r,i))}this.prevMotionValues=Qz(this,this.scrapeMotionValuesFromProps(t,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){const a=this.getClosestVariantNode();if(a)return a.variantChildren&&a.variantChildren.add(t),()=>a.variantChildren.delete(t)}addValue(t,a){const o=this.values.get(t);a!==o&&(o&&this.removeValue(t),this.bindToMotionValue(t,a),this.values.set(t,a),this.latestValues[t]=a.get())}removeValue(t){this.values.delete(t);const a=this.valueSubscriptions.get(t);a&&(a(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,a){if(this.props.values&&this.props.values[t])return this.props.values[t];let o=this.values.get(t);return o===void 0&&a!==void 0&&(o=Dc(a===null?void 0:a,{owner:this}),this.addValue(t,o)),o}readValue(t,a){let o=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return o!=null&&(typeof o=="string"&&(f$(o)||v$(o))?o=parseFloat(o):!Hz(o)&&wr.test(a)&&(o=l4(t,a)),this.setBaseTarget(t,ba(o)?o.get():o)),ba(o)?o.get():o}setBaseTarget(t,a){this.baseTarget[t]=a}getBaseTarget(t){var n;const{initial:a}=this.props;let o;if(typeof a=="string"||typeof a=="object"){const i=pk(this.props,a,(n=this.presenceContext)==null?void 0:n.custom);i&&(o=i[t])}if(a&&o!==void 0)return o;const r=this.getBaseTargetFromProps(this.props,t);return r!==void 0&&!ba(r)?r:this.initialValues[t]!==void 0&&o===void 0?void 0:this.baseTarget[t]}on(t,a){return this.events[t]||(this.events[t]=new tk),this.events[t].add(a)}notify(t,...a){this.events[t]&&this.events[t].notify(...a)}scheduleRenderMicrotask(){fk.render(this.render)}}class v4 extends Yz{constructor(){super(...arguments),this.KeyframeResolver=Rz}sortInstanceNodePosition(t,a){return t.compareDocumentPosition(a)&2?1:-1}getBaseTargetFromProps(t,a){const o=t.style;return o?o[a]:void 0}removeValueFromRenderState(t,{vars:a,style:o}){delete a[t],delete o[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;ba(t)&&(this.childSubscription=t.on("change",a=>{this.current&&(this.current.textContent=`${a}`)}))}}class Ws{constructor(t){this.isMounted=!1,this.node=t}update(){}}function x4({top:e,left:t,right:a,bottom:o}){return{x:{min:t,max:a},y:{min:e,max:o}}}function Zz({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function eH(e,t){if(!t)return e;const a=t({x:e.left,y:e.top}),o=t({x:e.right,y:e.bottom});return{top:a.y,left:a.x,bottom:o.y,right:o.x}}function vv(e){return e===void 0||e===1}function Sy({scale:e,scaleX:t,scaleY:a}){return!vv(e)||!vv(t)||!vv(a)}function li(e){return Sy(e)||b4(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function b4(e){return CS(e.x)||CS(e.y)}function CS(e){return e&&e!=="0%"}function wf(e,t,a){const o=e-a,r=t*o;return a+r}function PS(e,t,a,o,r){return r!==void 0&&(e=wf(e,r,o)),wf(e,a,o)+t}function Ry(e,t=0,a=1,o,r){e.min=PS(e.min,t,a,o,r),e.max=PS(e.max,t,a,o,r)}function y4(e,{x:t,y:a}){Ry(e.x,t.translate,t.scale,t.originPoint),Ry(e.y,a.translate,a.scale,a.originPoint)}const SS=.999999999999,RS=1.0000000000001;function tH(e,t,a,o=!1){var l;const r=a.length;if(!r)return;t.x=t.y=1;let n,i;for(let c=0;c<r;c++){n=a[c],i=n.projectionDelta;const{visualElement:d}=n.options;d&&d.props.style&&d.props.style.display==="contents"||(o&&n.options.layoutScroll&&n.scroll&&n!==n.root&&(Fr(e.x,-n.scroll.offset.x),Fr(e.y,-n.scroll.offset.y)),i&&(t.x*=i.x.scale,t.y*=i.y.scale,y4(e,i)),o&&li(n.latestValues)&&vh(e,n.latestValues,(l=n.layout)==null?void 0:l.layoutBox))}t.x<RS&&t.x>SS&&(t.x=1),t.y<RS&&t.y>SS&&(t.y=1)}function Fr(e,t){e.min+=t,e.max+=t}function jS(e,t,a,o,r=.5){const n=vt(e.min,e.max,r);Ry(e,t,a,n,o)}function NS(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function vh(e,t,a){const o=a??e;jS(e.x,NS(t.x,o.x),t.scaleX,t.scale,t.originX),jS(e.y,NS(t.y,o.y),t.scaleY,t.scale,t.originY)}function k4(e,t){return x4(eH(e.getBoundingClientRect(),t))}function aH(e,t,a){const o=k4(e,a),{scroll:r}=t;return r&&(Fr(o.x,r.offset.x),Fr(o.y,r.offset.y)),o}const oH={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},rH=sd.length;function nH(e,t,a){let o="",r=!0;for(let i=0;i<rH;i++){const l=sd[i],c=e[l];if(c===void 0)continue;let d=!0;if(typeof c=="number")d=c===(l.startsWith("scale")?1:0);else{const u=parseFloat(c);d=l.startsWith("scale")?u===1:u===0}if(!d||a){const u=Cy(c,yf[l]);if(!d){r=!1;const m=oH[l]||l;o+=`${m}(${u}) `}a&&(t[l]=u)}}const n=e.pathRotation;return n&&(r=!1,o+=`rotate(${Cy(n,yf.pathRotation)}) `),o=o.trim(),a?o=a(t,r?"":o):r&&(o="none"),o}function yk(e,t,a){const{style:o,vars:r,transformOrigin:n}=e;let i=!1,l=!1;for(const c in t){const d=t[c];if(id.has(c)){i=!0;continue}else if(T$(c)){r[c]=d;continue}else{const u=Cy(d,yf[c]);c.startsWith("origin")?(l=!0,n[c]=u):o[c]=u}}if(t.transform||(i||a?o.transform=nH(t,e.transform,a):o.transform&&(o.transform="none")),l){const{originX:c="50%",originY:d="50%",originZ:u=0}=n;o.transformOrigin=`${c} ${d} ${u}`}}function w4(e,{style:t,vars:a},o,r){const n=e.style;let i;for(i in t)n[i]=t[i];r==null||r.applyProjectionStyles(n,o);for(i in a)n.setProperty(i,a[i])}function AS(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const Sd={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(ye.test(e))e=parseFloat(e);else return e;const a=AS(e,t.target.x),o=AS(e,t.target.y);return`${a}% ${o}%`}},sH={correct:(e,{treeScale:t,projectionDelta:a})=>{const o=e,r=wr.parse(e);if(r.length>5)return o;const n=wr.createTransformer(e),i=typeof r[0]!="number"?1:0,l=a.x.scale*t.x,c=a.y.scale*t.y;r[0+i]/=l,r[1+i]/=c;const d=vt(l,c,.5);return typeof r[2+i]=="number"&&(r[2+i]/=d),typeof r[3+i]=="number"&&(r[3+i]/=d),n(r)}},jy={borderRadius:{...Sd,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Sd,borderTopRightRadius:Sd,borderBottomLeftRadius:Sd,borderBottomRightRadius:Sd,boxShadow:sH};function C4(e,{layout:t,layoutId:a}){return id.has(e)||e.startsWith("origin")||(t||a!==void 0)&&(!!jy[e]||e==="opacity")}function kk(e,t,a){var i;const o=e.style,r=t==null?void 0:t.style,n={};if(!o)return n;for(const l in o)(ba(o[l])||r&&ba(r[l])||C4(l,e)||((i=a==null?void 0:a.getValue(l))==null?void 0:i.liveStyle)!==void 0)&&(n[l]=o[l]);return n}function iH(e){return window.getComputedStyle(e)}class lH extends v4{constructor(){super(...arguments),this.type="html",this.renderInstance=w4}readValueFromInstance(t,a){var o;if(id.has(a))return(o=this.projection)!=null&&o.isProjecting?my(a):jG(t,a);{const r=iH(t),n=(T$(a)?r.getPropertyValue(a):r[a])||0;return typeof n=="string"?n.trim():n}}measureInstanceViewportBox(t,{transformPagePoint:a}){return k4(t,a)}build(t,a,o){yk(t,a,o.transformTemplate)}scrapeMotionValuesFromProps(t,a,o){return kk(t,a,o)}}const cH={offset:"stroke-dashoffset",array:"stroke-dasharray"},dH={offset:"strokeDashoffset",array:"strokeDasharray"};function uH(e,t,a=1,o=0,r=!0){e.pathLength=1;const n=r?cH:dH;e[n.offset]=`${-o}`,e[n.array]=`${t} ${a}`}const mH=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function P4(e,{attrX:t,attrY:a,attrScale:o,pathLength:r,pathSpacing:n=1,pathOffset:i=0,...l},c,d,u){if(yk(e,l,d),c){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:m,style:h}=e;m.transform&&(h.transform=m.transform,delete m.transform),(h.transform||m.transformOrigin)&&(h.transformOrigin=m.transformOrigin??"50% 50%",delete m.transformOrigin),h.transform&&(h.transformBox=(u==null?void 0:u.transformBox)??"fill-box",delete m.transformBox);for(const p of mH)m[p]!==void 0&&(h[p]=m[p],delete m[p]);t!==void 0&&(m.x=t),a!==void 0&&(m.y=a),o!==void 0&&(m.scale=o),r!==void 0&&uH(m,r,n,i,!1)}const S4=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),R4=e=>typeof e=="string"&&e.toLowerCase()==="svg";function pH(e,t,a,o){w4(e,t,void 0,o);for(const r in t.attrs)e.setAttribute(S4.has(r)?r:hk(r),t.attrs[r])}function j4(e,t,a){const o=kk(e,t,a);for(const r in e)if(ba(e[r])||ba(t[r])){const n=sd.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;o[n]=e[r]}return o}class hH extends v4{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=na}getBaseTargetFromProps(t,a){return t[a]}readValueFromInstance(t,a){if(id.has(a)){const o=i4(a);return o&&o.default||0}return a=S4.has(a)?a:hk(a),t.getAttribute(a)}scrapeMotionValuesFromProps(t,a,o){return j4(t,a,o)}build(t,a,o){P4(t,a,this.isSVGTag,o.transformTemplate,o.style)}renderInstance(t,a,o,r){pH(t,a,o,r)}mount(t){this.isSVGTag=R4(t.tagName),super.mount(t)}}const fH=bk.length;function N4(e){if(!e)return;if(!e.isControllingVariants){const a=e.parent?N4(e.parent)||{}:{};return e.props.initial!==void 0&&(a.initial=e.props.initial),a}const t={};for(let a=0;a<fH;a++){const o=bk[a],r=e.props[o];(Uu(r)||r===!1)&&(t[o]=r)}return t}function A4(e,t){if(!Array.isArray(t))return!1;const a=t.length;if(a!==e.length)return!1;for(let o=0;o<a;o++)if(t[o]!==e[o])return!1;return!0}const gH=[...xk].reverse(),vH=xk.length;function xH(e){return t=>Promise.all(t.map(({animation:a,options:o})=>fz(e,a,o)))}function bH(e){let t=xH(e),a=ES(),o=!0,r=!1;const n=d=>(u,m)=>{var p;const h=qi(e,m,d==="exit"?(p=e.presenceContext)==null?void 0:p.custom:void 0);if(h){const{transition:f,transitionEnd:g,...b}=h;u={...u,...b,...g}}return u};function i(d){t=d(e)}function l(d){const{props:u}=e,m=N4(e.parent)||{},h=[],p=new Set;let f={},g=1/0;for(let v=0;v<vH;v++){const y=gH[v],k=a[y],w=u[y]!==void 0?u[y]:m[y],R=Uu(w),C=y===d?k.isActive:null;C===!1&&(g=v);let P=w===m[y]&&w!==u[y]&&R;if(P&&(o||r)&&e.manuallyAnimateOnMount&&(P=!1),k.protectedKeys={...f},!k.isActive&&C===null||!w&&!k.prevProp||Mg(w)||typeof w=="boolean")continue;if(y==="exit"&&k.isActive&&C!==!0){k.prevResolvedValues&&(f={...f,...k.prevResolvedValues});continue}const N=yH(k.prevProp,w);let E=N||y===d&&k.isActive&&!P&&R||v>g&&R,A=!1;const $=Array.isArray(w)?w:[w];let O=$.reduce(n(y),{});C===!1&&(O={});const{prevResolvedValues:V={}}=k,T={...V,...O},D=L=>{E=!0,p.has(L)&&(A=!0,p.delete(L)),k.needsAnimating[L]=!0;const I=e.getValue(L);I&&(I.liveStyle=!1)};for(const L in T){const I=O[L],j=V[L];if(f.hasOwnProperty(L))continue;let H=!1;xy(I)&&xy(j)?H=!A4(I,j)||N:H=I!==j,H?I!=null?D(L):p.add(L):I!==void 0&&p.has(L)?D(L):k.protectedKeys[L]=!0}k.prevProp=w,k.prevResolvedValues=O,k.isActive&&(f={...f,...O}),(o||r)&&e.blockInitialAnimation&&(E=!1);const F=P&&N;E&&(!F||A)&&h.push(...$.map(L=>{const I={type:y};if(typeof L=="string"&&(o||r)&&!F&&e.manuallyAnimateOnMount&&e.parent){const{parent:j}=e,H=qi(j,L);if(j.enteringChildren&&H){const{delayChildren:W}=H.transition||{};I.delay=Y$(j.enteringChildren,e,W)}}return{animation:L,options:I}}))}if(p.size){const v={};if(typeof u.initial!="boolean"){const y=qi(e,Array.isArray(u.initial)?u.initial[0]:u.initial);y&&y.transition&&(v.transition=y.transition)}p.forEach(y=>{const k=e.getBaseTarget(y),w=e.getValue(y);w&&(w.liveStyle=!0),v[y]=k??null}),h.push({animation:v})}let b=!!h.length;return o&&(u.initial===!1||u.initial===u.animate)&&!e.manuallyAnimateOnMount&&(b=!1),o=!1,r=!1,b?t(h):Promise.resolve()}function c(d,u){var h;if(a[d].isActive===u)return Promise.resolve();(h=e.variantChildren)==null||h.forEach(p=>{var f;return(f=p.animationState)==null?void 0:f.setActive(d,u)}),a[d].isActive=u;const m=l(d);for(const p in a)a[p].protectedKeys={};return m}return{animateChanges:l,setActive:c,setAnimateFunction:i,getState:()=>a,reset:()=>{a=ES(),r=!0}}}function yH(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!A4(t,e):!1}function ei(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function ES(){return{animate:ei(!0),whileInView:ei(),whileHover:ei(),whileTap:ei(),whileDrag:ei(),whileFocus:ei(),exit:ei()}}function Ny(e,t){e.min=t.min,e.max=t.max}function or(e,t){Ny(e.x,t.x),Ny(e.y,t.y)}function _S(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}const E4=1e-4,kH=1-E4,wH=1+E4,_4=.01,CH=0-_4,PH=0+_4;function Ba(e){return e.max-e.min}function SH(e,t,a){return Math.abs(e-t)<=a}function TS(e,t,a,o=.5){e.origin=o,e.originPoint=vt(t.min,t.max,e.origin),e.scale=Ba(a)/Ba(t),e.translate=vt(a.min,a.max,e.origin)-e.originPoint,(e.scale>=kH&&e.scale<=wH||isNaN(e.scale))&&(e.scale=1),(e.translate>=CH&&e.translate<=PH||isNaN(e.translate))&&(e.translate=0)}function lu(e,t,a,o){TS(e.x,t.x,a.x,o?o.originX:void 0),TS(e.y,t.y,a.y,o?o.originY:void 0)}function $S(e,t,a,o=0){const r=o?vt(a.min,a.max,o):a.min;e.min=r+t.min,e.max=e.min+Ba(t)}function RH(e,t,a,o){$S(e.x,t.x,a.x,o==null?void 0:o.x),$S(e.y,t.y,a.y,o==null?void 0:o.y)}function OS(e,t,a,o=0){const r=o?vt(a.min,a.max,o):a.min;e.min=t.min-r,e.max=e.min+Ba(t)}function Cf(e,t,a,o){OS(e.x,t.x,a.x,o==null?void 0:o.x),OS(e.y,t.y,a.y,o==null?void 0:o.y)}function qS(e,t,a,o,r){return e-=t,e=wf(e,1/a,o),r!==void 0&&(e=wf(e,1/r,o)),e}function jH(e,t=0,a=1,o=.5,r,n=e,i=e){if(Qr.test(t)&&(t=parseFloat(t),t=vt(i.min,i.max,t/100)-i.min),typeof t!="number")return;let l=vt(n.min,n.max,o);e===n&&(l-=t),e.min=qS(e.min,t,a,l,r),e.max=qS(e.max,t,a,l,r)}function DS(e,t,[a,o,r],n,i){jH(e,t[a],t[o],t[r],t.scale,n,i)}const NH=["x","scaleX","originX"],AH=["y","scaleY","originY"];function IS(e,t,a,o){DS(e.x,t,NH,a?a.x:void 0,o?o.x:void 0),DS(e.y,t,AH,a?a.y:void 0,o?o.y:void 0)}function MS(e){return e.translate===0&&e.scale===1}function T4(e){return MS(e.x)&&MS(e.y)}function LS(e,t){return e.min===t.min&&e.max===t.max}function EH(e,t){return LS(e.x,t.x)&&LS(e.y,t.y)}function BS(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function $4(e,t){return BS(e.x,t.x)&&BS(e.y,t.y)}function VS(e){return Ba(e.x)/Ba(e.y)}function FS(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function Or(e){return[e("x"),e("y")]}function _H(e,t,a){let o="";const r=e.x.translate/t.x,n=e.y.translate/t.y,i=(a==null?void 0:a.z)||0;if((r||n||i)&&(o=`translate3d(${r}px, ${n}px, ${i}px) `),(t.x!==1||t.y!==1)&&(o+=`scale(${1/t.x}, ${1/t.y}) `),a){const{transformPerspective:d,rotate:u,pathRotation:m,rotateX:h,rotateY:p,skewX:f,skewY:g}=a;d&&(o=`perspective(${d}px) ${o}`),u&&(o+=`rotate(${u}deg) `),m&&(o+=`rotate(${m}deg) `),h&&(o+=`rotateX(${h}deg) `),p&&(o+=`rotateY(${p}deg) `),f&&(o+=`skewX(${f}deg) `),g&&(o+=`skewY(${g}deg) `)}const l=e.x.scale*t.x,c=e.y.scale*t.y;return(l!==1||c!==1)&&(o+=`scale(${l}, ${c})`),o||"none"}const O4=["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"],TH=O4.length,US=e=>typeof e=="string"?parseFloat(e):e,GS=e=>typeof e=="number"||ye.test(e);function $H(e,t,a,o,r,n){r?(e.opacity=vt(0,a.opacity??1,OH(o)),e.opacityExit=vt(t.opacity??1,0,qH(o))):n&&(e.opacity=vt(t.opacity??1,a.opacity??1,o));for(let i=0;i<TH;i++){const l=O4[i];let c=zS(t,l),d=zS(a,l);if(c===void 0&&d===void 0)continue;c||(c=0),d||(d=0),c===0||d===0||GS(c)===GS(d)?(e[l]=Math.max(vt(US(c),US(d),o),0),(Qr.test(d)||Qr.test(c))&&(e[l]+="%")):e[l]=d}(t.rotate||a.rotate)&&(e.rotate=vt(t.rotate||0,a.rotate||0,o))}function zS(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const OH=q4(0,.5,R$),qH=q4(.5,.95,zo);function q4(e,t,a){return o=>o<e?0:o>t?1:a(Vu(e,t,o))}function DH(e,t,a){const o=ba(e)?e:Dc(e);return o.start(mk("",o,t,a)),o.animation}function Gu(e,t,a,o={passive:!0}){return e.addEventListener(t,a,o),()=>e.removeEventListener(t,a)}const IH=(e,t)=>e.depth-t.depth;class MH{constructor(){this.children=[],this.isDirty=!1}add(t){ek(this.children,t),this.isDirty=!0}remove(t){ff(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(IH),this.isDirty=!1,this.children.forEach(t)}}function LH(e,t){const a=La.now(),o=({timestamp:r})=>{const n=r-a;n>=t&&(Bs(o),e(n-t))};return xt.setup(o,!0),()=>Bs(o)}function xh(e){return ba(e)?e.get():e}class BH{constructor(){this.members=[]}add(t){ek(this.members,t);for(let a=this.members.length-1;a>=0;a--){const o=this.members[a];if(o===t||o===this.lead||o===this.prevLead)continue;const r=o.instance;(!r||r.isConnected===!1)&&!o.snapshot&&(ff(this.members,o),o.unmount())}t.scheduleRender()}remove(t){if(ff(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const a=this.members[this.members.length-1];a&&this.promote(a)}}relegate(t){var a;for(let o=this.members.indexOf(t)-1;o>=0;o--){const r=this.members[o];if(r.isPresent!==!1&&((a=r.instance)==null?void 0:a.isConnected)!==!1)return this.promote(r),!0}return!1}promote(t,a){var r;const o=this.lead;if(t!==o&&(this.prevLead=o,this.lead=t,t.show(),o)){o.updateSnapshot(),t.scheduleRender();const{layoutDependency:n}=o.options,{layoutDependency:i}=t.options;(n===void 0||n!==i)&&(t.resumeFrom=o,a&&(o.preserveOpacity=!0),o.snapshot&&(t.snapshot=o.snapshot,t.snapshot.latestValues=o.animationValues||o.latestValues),(r=t.root)!=null&&r.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&o.hide()}}exitAnimationComplete(){this.members.forEach(t=>{var a,o,r,n,i;(o=(a=t.options).onExitComplete)==null||o.call(a),(i=(r=t.resumingFrom)==null?void 0:(n=r.options).onExitComplete)==null||i.call(n)})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){var t;(t=this.lead)!=null&&t.snapshot&&(this.lead.snapshot=void 0)}}const bh={hasAnimatedSinceResize:!0,hasEverUpdated:!1},xv=["","X","Y","Z"],VH=1e3;let FH=0;function bv(e,t,a,o){const{latestValues:r}=t;r[e]&&(a[e]=r[e],t.setStaticValue(e,0),o&&(o[e]=0))}function D4(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const a=o4(t);if(window.MotionHasOptimisedAnimation(a,"transform")){const{layout:r,layoutId:n}=e.options;window.MotionCancelOptimisedAnimation(a,"transform",xt,!(r||n))}const{parent:o}=e;o&&!o.hasCheckedOptimisedAppear&&D4(o)}function I4({attachResizeListener:e,defaultParent:t,measureScroll:a,checkIsScrollRoot:o,resetTransform:r}){return class{constructor(i={},l=t==null?void 0:t()){this.id=FH++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(zH),this.nodes.forEach(XH),this.nodes.forEach(YH),this.nodes.forEach(HH)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=i,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0;for(let c=0;c<this.path.length;c++)this.path[c].shouldResetTransform=!0;this.root===this&&(this.nodes=new MH)}addEventListener(i,l){return this.eventHandlers.has(i)||this.eventHandlers.set(i,new tk),this.eventHandlers.get(i).add(l)}notifyListeners(i,...l){const c=this.eventHandlers.get(i);c&&c.notify(...l)}hasListeners(i){return this.eventHandlers.has(i)}mount(i){if(this.instance)return;this.isSVG=vk(i)&&!Gz(i),this.instance=i;const{layoutId:l,layout:c,visualElement:d}=this.options;if(d&&!d.current&&d.mount(i),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(c||l)&&(this.isLayoutDirty=!0),e){let u,m=0;const h=()=>this.root.updateBlockedByResize=!1;xt.read(()=>{m=window.innerWidth}),e(i,()=>{const p=window.innerWidth;p!==m&&(m=p,this.root.updateBlockedByResize=!0,u&&u(),u=LH(h,250),bh.hasAnimatedSinceResize&&(bh.hasAnimatedSinceResize=!1,this.nodes.forEach(QS)))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&d&&(l||c)&&this.addEventListener("didUpdate",({delta:u,hasLayoutChanged:m,hasRelativeLayoutChanged:h,layout:p})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const f=this.options.transition||d.getDefaultTransition()||oK,{onLayoutAnimationStart:g,onLayoutAnimationComplete:b}=d.getProps(),v=!this.targetLayout||!$4(this.targetLayout,p),y=!m&&h;if(this.options.layoutRoot||this.resumeFrom||y||m&&(v||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const k={...uk(f,"layout"),onPlay:g,onComplete:b};(d.shouldReduceMotion||this.options.layoutRoot)&&(k.delay=0,k.type=!1),this.startAnimation(k),this.setAnimationOrigin(u,y,k.path)}else m||QS(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=p})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const i=this.getStack();i&&i.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),Bs(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(ZH),this.animationId++)}getTransformTemplate(){const{visualElement:i}=this.options;return i&&i.getProps().transformTemplate}willUpdate(i=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&D4(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let u=0;u<this.path.length;u++){const m=this.path[u];m.shouldResetTransform=!0,(typeof m.latestValues.x=="string"||typeof m.latestValues.y=="string")&&(m.isLayoutDirty=!0),m.updateScroll("snapshot"),m.options.layoutRoot&&m.willUpdate(!1)}const{layoutId:l,layout:c}=this.options;if(l===void 0&&!c)return;const d=this.getTransformTemplate();this.prevTransformTemplateValue=d?d(this.latestValues,""):void 0,this.updateSnapshot(),i&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){const c=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),c&&this.nodes.forEach(QH),this.nodes.forEach(HS);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(KS);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(WH),this.nodes.forEach(JH),this.nodes.forEach(UH),this.nodes.forEach(GH)):this.nodes.forEach(KS),this.clearAllSnapshots();const l=La.now();va.delta=an(0,1e3/60,l-va.timestamp),va.timestamp=l,va.isProcessing=!0,dv.update.process(va),dv.preRender.process(va),dv.render.process(va),va.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,fk.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(KH),this.sharedNodes.forEach(eK)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,xt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){xt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!Ba(this.snapshot.measuredBox.x)&&!Ba(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c<this.path.length;c++)this.path[c].updateScroll();const i=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=na()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:l}=this.options;l&&l.notify("LayoutMeasure",this.layout.layoutBox,i?i.layoutBox:void 0)}updateScroll(i="measure"){let l=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===i&&(l=!1),l&&this.instance){const c=o(this.instance);this.scroll={animationId:this.root.animationId,phase:i,isRoot:c,offset:a(this.instance),wasRoot:this.scroll?this.scroll.isRoot:c}}}resetTransform(){if(!r)return;const i=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,l=this.projectionDelta&&!T4(this.projectionDelta),c=this.getTransformTemplate(),d=c?c(this.latestValues,""):void 0,u=d!==this.prevTransformTemplateValue;i&&this.instance&&(l||li(this.latestValues)||u)&&(r(this.instance,d),this.shouldResetTransform=!1,this.scheduleRender())}measure(i=!0){const l=this.measurePageBox();let c=this.removeElementScroll(l);return i&&(c=this.removeTransform(c)),rK(c),{animationId:this.root.animationId,measuredBox:l,layoutBox:c,latestValues:{},source:this.id}}measurePageBox(){var d;const{visualElement:i}=this.options;if(!i)return na();const l=i.measureViewportBox();if(!(((d=this.scroll)==null?void 0:d.wasRoot)||this.path.some(nK))){const{scroll:u}=this.root;u&&(Fr(l.x,u.offset.x),Fr(l.y,u.offset.y))}return l}removeElementScroll(i){var c;const l=na();if(or(l,i),(c=this.scroll)!=null&&c.wasRoot)return l;for(let d=0;d<this.path.length;d++){const u=this.path[d],{scroll:m,options:h}=u;u!==this.root&&m&&h.layoutScroll&&(m.wasRoot&&or(l,i),Fr(l.x,m.offset.x),Fr(l.y,m.offset.y))}return l}applyTransform(i,l=!1,c){var u,m;const d=c||na();or(d,i);for(let h=0;h<this.path.length;h++){const p=this.path[h];!l&&p.options.layoutScroll&&p.scroll&&p!==p.root&&(Fr(d.x,-p.scroll.offset.x),Fr(d.y,-p.scroll.offset.y)),li(p.latestValues)&&vh(d,p.latestValues,(u=p.layout)==null?void 0:u.layoutBox)}return li(this.latestValues)&&vh(d,this.latestValues,(m=this.layout)==null?void 0:m.layoutBox),d}removeTransform(i){var c;const l=na();or(l,i);for(let d=0;d<this.path.length;d++){const u=this.path[d];if(!li(u.latestValues))continue;let m;u.instance&&(Sy(u.latestValues)&&u.updateSnapshot(),m=na(),or(m,u.measurePageBox())),IS(l,u.latestValues,(c=u.snapshot)==null?void 0:c.layoutBox,m)}return li(this.latestValues)&&IS(l,this.latestValues),l}setTargetDelta(i){this.targetDelta=i,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(i){this.options={...this.options,...i,crossfade:i.crossfade!==void 0?i.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==va.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(i=!1){var p;const l=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=l.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=l.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=l.isSharedProjectionDirty);const c=!!this.resumingFrom||this!==l;if(!(i||c&&this.isSharedProjectionDirty||this.isProjectionDirty||(p=this.parent)!=null&&p.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:u,layoutId:m}=this.options;if(!this.layout||!(u||m))return;this.resolvedRelativeTargetAt=va.timestamp;const h=this.getClosestProjectingParent();h&&this.linkedParentVersion!==h.layoutVersion&&!h.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&h&&h.layout?this.createRelativeTarget(h,this.layout.layoutBox,h.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=na(),this.targetWithTransforms=na()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),RH(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):or(this.target,this.layout.layoutBox),y4(this.target,this.targetDelta)):or(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&h&&!!h.resumingFrom==!!this.resumingFrom&&!h.options.layoutScroll&&h.target&&this.animationProgress!==1?this.createRelativeTarget(h,this.target,h.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||Sy(this.parent.latestValues)||b4(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(i,l,c){this.relativeParent=i,this.linkedParentVersion=i.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=na(),this.relativeTargetOrigin=na(),Cf(this.relativeTargetOrigin,l,c,this.options.layoutAnchor||void 0),or(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){var f;const i=this.getLead(),l=!!this.resumingFrom||this!==i;let c=!0;if((this.isProjectionDirty||(f=this.parent)!=null&&f.isProjectionDirty)&&(c=!1),l&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(c=!1),this.resolvedRelativeTargetAt===va.timestamp&&(c=!1),c)return;const{layout:d,layoutId:u}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(d||u))return;or(this.layoutCorrected,this.layout.layoutBox);const m=this.treeScale.x,h=this.treeScale.y;tH(this.layoutCorrected,this.treeScale,this.path,l),i.layout&&!i.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(i.target=i.layout.layoutBox,i.targetWithTransforms=na());const{target:p}=i;if(!p){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(_S(this.prevProjectionDelta.x,this.projectionDelta.x),_S(this.prevProjectionDelta.y,this.projectionDelta.y)),lu(this.projectionDelta,this.layoutCorrected,p,this.latestValues),(this.treeScale.x!==m||this.treeScale.y!==h||!FS(this.projectionDelta.x,this.prevProjectionDelta.x)||!FS(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",p))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(i=!0){var l;if((l=this.options.visualElement)==null||l.scheduleRender(),i){const c=this.getStack();c&&c.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Gl(),this.projectionDelta=Gl(),this.projectionDeltaWithTransform=Gl()}setAnimationOrigin(i,l=!1,c){const d=this.snapshot,u=d?d.latestValues:{},m={...this.latestValues},h=Gl();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!l;const p=na(),f=d?d.source:void 0,g=this.layout?this.layout.source:void 0,b=f!==g,v=this.getStack(),y=!v||v.members.length<=1,k=!!(b&&!y&&this.options.crossfade===!0&&!this.path.some(aK));this.animationProgress=0;let w;const R=c==null?void 0:c.interpolateProjection(i);this.mixTargetDelta=C=>{const P=C/1e3,N=R==null?void 0:R(P);N?(h.x.translate=N.x,h.x.scale=vt(i.x.scale,1,P),h.x.origin=i.x.origin,h.x.originPoint=i.x.originPoint,h.y.translate=N.y,h.y.scale=vt(i.y.scale,1,P),h.y.origin=i.y.origin,h.y.originPoint=i.y.originPoint):(WS(h.x,i.x,P),WS(h.y,i.y,P)),this.setTargetDelta(h),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Cf(p,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),tK(this.relativeTarget,this.relativeTargetOrigin,p,P),w&&EH(this.relativeTarget,w)&&(this.isProjectionDirty=!1),w||(w=na()),or(w,this.relativeTarget)),b&&(this.animationValues=m,$H(m,u,this.latestValues,P,k,y)),N&&N.rotate!==void 0&&(this.animationValues||(this.animationValues=m),this.animationValues.pathRotation=N.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=P},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(i){var l,c,d;this.notifyListeners("animationStart"),(l=this.currentAnimation)==null||l.stop(),(d=(c=this.resumingFrom)==null?void 0:c.currentAnimation)==null||d.stop(),this.pendingAnimation&&(Bs(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=xt.update(()=>{bh.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=Dc(0)),this.motionValue.jump(0,!1),this.currentAnimation=DH(this.motionValue,[0,1e3],{...i,velocity:0,isSync:!0,onUpdate:u=>{this.mixTargetDelta(u),i.onUpdate&&i.onUpdate(u)},onStop:()=>{},onComplete:()=>{i.onComplete&&i.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const i=this.getStack();i&&i.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(VH),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const i=this.getLead();let{targetWithTransforms:l,target:c,layout:d,latestValues:u}=i;if(!(!l||!c||!d)){if(this!==i&&this.layout&&d&&M4(this.options.animationType,this.layout.layoutBox,d.layoutBox)){c=this.target||na();const m=Ba(this.layout.layoutBox.x);c.x.min=i.target.x.min,c.x.max=c.x.min+m;const h=Ba(this.layout.layoutBox.y);c.y.min=i.target.y.min,c.y.max=c.y.min+h}or(l,c),vh(l,u),lu(this.projectionDeltaWithTransform,this.layoutCorrected,l,u)}}registerSharedNode(i,l){this.sharedNodes.has(i)||this.sharedNodes.set(i,new BH),this.sharedNodes.get(i).add(l);const d=l.options.initialPromotionConfig;l.promote({transition:d?d.transition:void 0,preserveFollowOpacity:d&&d.shouldPreserveFollowOpacity?d.shouldPreserveFollowOpacity(l):void 0})}isLead(){const i=this.getStack();return i?i.lead===this:!0}getLead(){var l;const{layoutId:i}=this.options;return i?((l=this.getStack())==null?void 0:l.lead)||this:this}getPrevLead(){var l;const{layoutId:i}=this.options;return i?(l=this.getStack())==null?void 0:l.prevLead:void 0}getStack(){const{layoutId:i}=this.options;if(i)return this.root.sharedNodes.get(i)}promote({needsReset:i,transition:l,preserveFollowOpacity:c}={}){const d=this.getStack();d&&d.promote(this,c),i&&(this.projectionDelta=void 0,this.needsReset=!0),l&&this.setOptions({transition:l})}relegate(){const i=this.getStack();return i?i.relegate(this):!1}resetSkewAndRotation(){const{visualElement:i}=this.options;if(!i)return;let l=!1;const{latestValues:c}=i;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(l=!0),!l)return;const d={};c.z&&bv("z",i,d,this.animationValues);for(let u=0;u<xv.length;u++)bv(`rotate${xv[u]}`,i,d,this.animationValues),bv(`skew${xv[u]}`,i,d,this.animationValues);i.render();for(const u in d)i.setStaticValue(u,d[u]),this.animationValues&&(this.animationValues[u]=d[u]);i.scheduleRender()}applyProjectionStyles(i,l){if(!this.instance||this.isSVG)return;if(!this.isVisible){i.visibility="hidden";return}const c=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,i.visibility="",i.opacity="",i.pointerEvents=xh(l==null?void 0:l.pointerEvents)||"",i.transform=c?c(this.latestValues,""):"none";return}const d=this.getLead();if(!this.projectionDelta||!this.layout||!d.target){this.options.layoutId&&(i.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,i.pointerEvents=xh(l==null?void 0:l.pointerEvents)||""),this.hasProjected&&!li(this.latestValues)&&(i.transform=c?c({},""):"none",this.hasProjected=!1);return}i.visibility="";const u=d.animationValues||d.latestValues;this.applyTransformsToTarget();let m=_H(this.projectionDeltaWithTransform,this.treeScale,u);c&&(m=c(u,m)),i.transform=m;const{x:h,y:p}=this.projectionDelta;i.transformOrigin=`${h.origin*100}% ${p.origin*100}% 0`,d.animationValues?i.opacity=d===this?u.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:u.opacityExit:i.opacity=d===this?u.opacity!==void 0?u.opacity:"":u.opacityExit!==void 0?u.opacityExit:0;for(const f in jy){if(u[f]===void 0)continue;const{correct:g,applyTo:b,isCSSVariable:v}=jy[f],y=m==="none"?u[f]:g(u[f],d);if(b){const k=b.length;for(let w=0;w<k;w++)i[b[w]]=y}else v?this.options.visualElement.renderState.vars[f]=y:i[f]=y}this.options.layoutId&&(i.pointerEvents=d===this?xh(l==null?void 0:l.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(i=>{var l;return(l=i.currentAnimation)==null?void 0:l.stop()}),this.root.nodes.forEach(HS),this.root.sharedNodes.clear()}}}function UH(e){e.updateLayout()}function GH(e){var a;const t=((a=e.resumeFrom)==null?void 0:a.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:r}=e.layout,{animationType:n}=e.options,i=t.source!==e.layout.source;if(n==="size")Or(m=>{const h=i?t.measuredBox[m]:t.layoutBox[m],p=Ba(h);h.min=o[m].min,h.max=h.min+p});else if(n==="x"||n==="y"){const m=n==="x"?"y":"x";Ny(i?t.measuredBox[m]:t.layoutBox[m],o[m])}else M4(n,t.layoutBox,o)&&Or(m=>{const h=i?t.measuredBox[m]:t.layoutBox[m],p=Ba(o[m]);h.max=h.min+p,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[m].max=e.relativeTarget[m].min+p)});const l=Gl();lu(l,o,t.layoutBox);const c=Gl();i?lu(c,e.applyTransform(r,!0),t.measuredBox):lu(c,o,t.layoutBox);const d=!T4(l);let u=!1;if(!e.resumeFrom){const m=e.getClosestProjectingParent();if(m&&!m.resumeFrom){const{snapshot:h,layout:p}=m;if(h&&p){const f=e.options.layoutAnchor||void 0,g=na();Cf(g,t.layoutBox,h.layoutBox,f);const b=na();Cf(b,o,p.layoutBox,f),$4(g,b)||(u=!0),m.options.layoutRoot&&(e.relativeTarget=b,e.relativeTargetOrigin=g,e.relativeParent=m)}}}e.notifyListeners("didUpdate",{layout:o,snapshot:t,delta:c,layoutDelta:l,hasLayoutChanged:d,hasRelativeLayoutChanged:u})}else if(e.isLead()){const{onExitComplete:o}=e.options;o&&o()}e.options.transition=void 0}function zH(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function HH(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function KH(e){e.clearSnapshot()}function HS(e){e.clearMeasurements()}function QH(e){e.isLayoutDirty=!0,e.updateLayout()}function KS(e){e.isLayoutDirty=!1}function WH(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function JH(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function QS(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function XH(e){e.resolveTargetDelta()}function YH(e){e.calcProjection()}
418function ZH(e){e.resetSkewAndRotation()}function eK(e){e.removeLeadSnapshot()}function WS(e,t,a){e.translate=vt(t.translate,0,a),e.scale=vt(t.scale,1,a),e.origin=t.origin,e.originPoint=t.originPoint}function JS(e,t,a,o){e.min=vt(t.min,a.min,o),e.max=vt(t.max,a.max,o)}function tK(e,t,a,o){JS(e.x,t.x,a.x,o),JS(e.y,t.y,a.y,o)}function aK(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const oK={duration:.45,ease:[.4,0,.1,1]},XS=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),YS=XS("applewebkit/")&&!XS("chrome/")?Math.round:zo;function ZS(e){e.min=YS(e.min),e.max=YS(e.max)}function rK(e){ZS(e.x),ZS(e.y)}function M4(e,t,a){return e==="position"||e==="preserve-aspect"&&!SH(VS(t),VS(a),.2)}function nK(e){var t;return e!==e.root&&((t=e.scroll)==null?void 0:t.wasRoot)}const sK=I4({attachResizeListener:(e,t)=>Gu(e,"resize",t),measureScroll:()=>{var e,t;return{x:document.documentElement.scrollLeft||((e=document.body)==null?void 0:e.scrollLeft)||0,y:document.documentElement.scrollTop||((t=document.body)==null?void 0:t.scrollTop)||0}},checkIsScrollRoot:()=>!0}),yv={current:void 0},L4=I4({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!yv.current){const e=new sK({});e.mount(window),e.setOptions({layoutScroll:!0}),yv.current=e}return yv.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),wk=x.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function eR(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function iK(...e){return t=>{let a=!1;const o=e.map(r=>{const n=eR(r,t);return!a&&typeof n=="function"&&(a=!0),n});if(a)return()=>{for(let r=0;r<o.length;r++){const n=o[r];typeof n=="function"?n():eR(e[r],null)}}}}function lK(...e){return x.useCallback(iK(...e),e)}class cK extends x.Component{getSnapshotBeforeUpdate(t){const a=this.props.childRef.current;if(ph(a)&&t.isPresent&&!this.props.isPresent&&this.props.pop!==!1){const o=a.offsetParent,r=ph(o)&&o.offsetWidth||0,n=ph(o)&&o.offsetHeight||0,i=getComputedStyle(a),l=this.props.sizeRef.current;l.height=parseFloat(i.height),l.width=parseFloat(i.width),l.top=a.offsetTop,l.left=a.offsetLeft,l.right=r-l.width-l.left,l.bottom=n-l.height-l.top,l.direction=i.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function dK({children:e,isPresent:t,anchorX:a,anchorY:o,root:r,pop:n}){var h;const i=x.useId(),l=x.useRef(null),c=x.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:d}=x.useContext(wk),u=((h=e.props)==null?void 0:h.ref)??(e==null?void 0:e.ref),m=lK(l,u);return x.useInsertionEffect(()=>{const{width:p,height:f,top:g,left:b,right:v,bottom:y,direction:k}=c.current;if(t||n===!1||!l.current||!p||!f)return;const w=k==="rtl",R=a==="left"?w?`right: ${v}`:`left: ${b}`:w?`left: ${b}`:`right: ${v}`,C=o==="bottom"?`bottom: ${y}`:`top: ${g}`;l.current.dataset.motionPopId=i;const P=document.createElement("style");d&&(P.nonce=d);const N=r??document.head;return N.appendChild(P),P.sheet&&P.sheet.insertRule(` 419 [data-motion-pop-id="${i}"] { 420 position: absolute !important; 421 width: ${p}px !important; 422 height: ${f}px !important; 423 ${R}px !important; 424 ${C}px !important; 425 } 426 `),()=>{var E;(E=l.current)==null||E.removeAttribute("data-motion-pop-id"),N.contains(P)&&N.removeChild(P)}},[t]),s.jsx(cK,{isPresent:t,childRef:l,sizeRef:c,pop:n,children:n===!1?e:x.cloneElement(e,{ref:m})})}const uK=({children:e,initial:t,isPresent:a,onExitComplete:o,custom:r,presenceAffectsLayout:n,mode:i,anchorX:l,anchorY:c,root:d})=>{const u=Z1(mK),m=x.useId();let h=!0,p=x.useMemo(()=>(h=!1,{id:m,initial:t,isPresent:a,custom:r,onExitComplete:f=>{u.set(f,!0);for(const g of u.values())if(!g)return;o&&o()},register:f=>(u.set(f,!1),()=>u.delete(f))}),[a,u,o]);return n&&h&&(p={...p}),x.useMemo(()=>{u.forEach((f,g)=>u.set(g,!1))},[a]),x.useEffect(()=>{!a&&!u.size&&o&&o()},[a]),e=s.jsx(dK,{pop:i==="popLayout",isPresent:a,anchorX:l,anchorY:c,root:d,children:e}),s.jsx(qg.Provider,{value:p,children:e})};function mK(){return new Map}function B4(e=!0){const t=x.useContext(qg);if(t===null)return[!0,null];const{isPresent:a,onExitComplete:o,register:r}=t,n=x.useId();x.useEffect(()=>{if(e)return r(n)},[e]);const i=x.useCallback(()=>e&&o&&o(n),[n,o,e]);return!a&&o?[!1,i]:[!0]}const pp=e=>e.key||"";function tR(e){const t=[];
vendor: 1,703 bytes, line 426
426return x.Children.forEach(e,a=>{x.isValidElement(a)&&t.push(a)}),t}const pK=({children:e,custom:t,initial:a=!0,onExitComplete:o,presenceAffectsLayout:r=!0,mode:n="sync",propagate:i=!1,anchorX:l="left",anchorY:c="top",root:d})=>{const[u,m]=B4(i),h=x.useMemo(()=>tR(e),[e]),p=i&&!u?[]:h.map(pp),f=x.useRef(!0),g=x.useRef(h),b=Z1(()=>new Map),v=x.useRef(new Set),[y,k]=x.useState(h),[w,R]=x.useState(h);h$(()=>{f.current=!1,g.current=h;for(let N=0;N<w.length;N++){const E=pp(w[N]);p.includes(E)?(b.delete(E),v.current.delete(E)):b.get(E)!==!0&&b.set(E,!1)}},[w,p.length,p.join("-")]);const C=[];if(h!==y){let N=[...h];for(let E=0;E<w.length;E++){const A=w[E],$=pp(A);p.includes($)||(N.splice(E,0,A),C.push(A))}return n==="wait"&&C.length&&(N=C),R(tR(N)),k(h),null}const{forceRender:P}=x.useContext(Y1);return s.jsx(s.Fragment,{children:w.map(N=>{const E=pp(N),A=i&&!u?!1:h===w||p.includes(E),$=()=>{if(v.current.has(E))return;if(b.has(E))v.current.add(E),b.set(E,!0);else return;let O=!0;b.forEach(V=>{V||(O=!1)}),O&&(P==null||P(),R(g.current),i&&(m==null||m()),o&&o())};return s.jsx(uK,{isPresent:A,initial:!f.current||a?void 0:!1,custom:t,presenceAffectsLayout:r,mode:n,root:d,onExitComplete:A?void 0:$,anchorX:l,anchorY:c,children:N},E)})})},V4=x.createContext({strict:!1}),aR={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let oR=!1;
vendor: 28,027 bytes, line 426
426function hK(){if(oR)return;const e={};for(const t in aR)e[t]={isEnabled:a=>aR[t].some(o=>!!a[o])};g4(e),oR=!0}function F4(){return hK(),Xz()}function fK(e){const t=F4();for(const a in e)t[a]={...t[a],...e[a]};g4(t)}const gK=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function Pf(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||gK.has(e)}let U4=e=>!Pf(e);function vK(e){typeof e=="function"&&(U4=t=>t.startsWith("on")?!Pf(t):e(t))}try{vK(require("@emotion/is-prop-valid").default)}catch{}function xK(e,t,a){const o={};for(const r in e)r==="values"&&typeof e.values=="object"||ba(e[r])||(U4(r)||a===!0&&Pf(r)||!t&&!Pf(r)||e.draggable&&r.startsWith("onDrag"))&&(o[r]=e[r]);return o}const Bg=x.createContext({});function bK(e,t){if(Lg(e)){const{initial:a,animate:o}=e;return{initial:a===!1||Uu(a)?a:void 0,animate:Uu(o)?o:void 0}}return e.inherit!==!1?t:{}}function yK(e){const{initial:t,animate:a}=bK(e,x.useContext(Bg));return x.useMemo(()=>({initial:t,animate:a}),[rR(t),rR(a)])}function rR(e){return Array.isArray(e)?e.join(" "):e}const Ck=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function G4(e,t,a){for(const o in t)!ba(t[o])&&!C4(o,a)&&(e[o]=t[o])}function kK({transformTemplate:e},t){return x.useMemo(()=>{const a=Ck();return yk(a,t,e),Object.assign({},a.vars,a.style)},[t])}function wK(e,t){const a=e.style||{},o={};return G4(o,a,e),Object.assign(o,kK(e,t)),o}function CK(e,t){const a={},o=wK(e,t);return e.drag&&e.dragListener!==!1&&(a.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(a.tabIndex=0),a.style=o,a}const z4=()=>({...Ck(),attrs:{}});function PK(e,t,a,o){const r=x.useMemo(()=>{const n=z4();return P4(n,t,R4(o),e.transformTemplate,e.style),{...n.attrs,style:{...n.style}}},[t]);if(e.style){const n={};G4(n,e.style,e),r.style={...n,...r.style}}return r}const SK=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Pk(e){return typeof e!="string"||e.includes("-")?!1:!!(SK.indexOf(e)>-1||/[A-Z]/u.test(e))}function RK(e,t,a,{latestValues:o},r,n=!1,i){const c=(i??Pk(e)?PK:CK)(t,o,r,e),d=xK(t,typeof e=="string",n),u=e!==x.Fragment?{...d,...c,ref:a}:{},{children:m}=t,h=x.useMemo(()=>ba(m)?m.get():m,[m]);return x.createElement(e,{...u,children:h})}function jK({scrapeMotionValuesFromProps:e,createRenderState:t},a,o,r){return{latestValues:NK(a,o,r,e),renderState:t()}}function NK(e,t,a,o){const r={},n=o(e,{});for(const h in n)r[h]=xh(n[h]);let{initial:i,animate:l}=e;const c=Lg(e),d=h4(e);t&&d&&!c&&e.inherit!==!1&&(i===void 0&&(i=t.initial),l===void 0&&(l=t.animate));let u=a?a.initial===!1:!1;u=u||i===!1;const m=u?l:i;if(m&&typeof m!="boolean"&&!Mg(m)){const h=Array.isArray(m)?m:[m];for(let p=0;p<h.length;p++){const f=pk(e,h[p]);if(f){const{transitionEnd:g,transition:b,...v}=f;for(const y in v){let k=v[y];if(Array.isArray(k)){const w=u?k.length-1:0;k=k[w]}k!==null&&(r[y]=k)}for(const y in g)r[y]=g[y]}}}return r}const H4=e=>(t,a)=>{const o=x.useContext(Bg),r=x.useContext(qg),n=()=>jK(e,t,o,r);return a?n():Z1(n)},AK=H4({scrapeMotionValuesFromProps:kk,createRenderState:Ck}),EK=H4({scrapeMotionValuesFromProps:j4,createRenderState:z4}),_K=Symbol.for("motionComponentSymbol");function TK(e,t,a){const o=x.useRef(a);x.useInsertionEffect(()=>{o.current=a});const r=x.useRef(null);return x.useCallback(n=>{var l;n&&((l=e.onMount)==null||l.call(e,n)),t&&(n?t.mount(n):t.unmount());const i=o.current;if(typeof i=="function")if(n){const c=i(n);typeof c=="function"&&(r.current=c)}else r.current?(r.current(),r.current=null):i(n);else i&&(i.current=n)},[t])}const K4=x.createContext({});function wl(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function $K(e,t,a,o,r,n){var k,w;const{visualElement:i}=x.useContext(Bg),l=x.useContext(V4),c=x.useContext(qg),d=x.useContext(wk),u=d.reducedMotion,m=d.skipAnimations,h=x.useRef(null),p=x.useRef(!1);o=o||l.renderer,!h.current&&o&&(h.current=o(e,{visualState:t,parent:i,props:a,presenceContext:c,blockInitialAnimation:c?c.initial===!1:!1,reducedMotionConfig:u,skipAnimations:m,isSVG:n}),p.current&&h.current&&(h.current.manuallyAnimateOnMount=!0));const f=h.current,g=x.useContext(K4);f&&!f.projection&&r&&(f.type==="html"||f.type==="svg")&&OK(h.current,a,r,g);const b=x.useRef(!1);x.useInsertionEffect(()=>{f&&b.current&&f.update(a,c)});const v=a[a4],y=x.useRef(!!v&&typeof window<"u"&&!((k=window.MotionHandoffIsComplete)!=null&&k.call(window,v))&&((w=window.MotionHasOptimisedAnimation)==null?void 0:w.call(window,v)));return h$(()=>{p.current=!0,f&&(b.current=!0,window.MotionIsMounted=!0,f.updateFeatures(),f.scheduleRenderMicrotask(),y.current&&f.animationState&&f.animationState.animateChanges())}),x.useEffect(()=>{f&&(!y.current&&f.animationState&&f.animationState.animateChanges(),y.current&&(queueMicrotask(()=>{var R;(R=window.MotionHandoffMarkAsComplete)==null||R.call(window,v)}),y.current=!1),f.enteringChildren=void 0)}),f}function OK(e,t,a,o){const{layoutId:r,layout:n,drag:i,dragConstraints:l,layoutScroll:c,layoutRoot:d,layoutAnchor:u,layoutCrossfade:m}=t;e.projection=new a(e.latestValues,t["data-framer-portal-id"]?void 0:Q4(e.parent)),e.projection.setOptions({layoutId:r,layout:n,alwaysMeasureLayout:!!i||l&&wl(l),visualElement:e,animationType:typeof n=="string"?n:"both",initialPromotionConfig:o,crossfade:m,layoutScroll:c,layoutRoot:d,layoutAnchor:u})}function Q4(e){if(e)return e.options.allowProjection!==!1?e.projection:Q4(e.parent)}function kv(e,{forwardMotionProps:t=!1,type:a}={},o,r){o&&fK(o);const n=a?a==="svg":Pk(e),i=n?EK:AK;function l(d,u){let m;const h={...x.useContext(wk),...d,layoutId:qK(d)},{isStatic:p}=h,f=yK(d),g=i(d,p);if(!p&&typeof window<"u"){DK();const b=IK(h);m=b.MeasureLayout,f.visualElement=$K(e,g,h,r,b.ProjectionNode,n)}return s.jsxs(Bg.Provider,{value:f,children:[m&&f.visualElement?s.jsx(m,{visualElement:f.visualElement,...h}):null,RK(e,d,TK(g,f.visualElement,u),g,p,t,n)]})}l.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const c=x.forwardRef(l);return c[_K]=e,c}function qK({layoutId:e}){const t=x.useContext(Y1).id;return t&&e!==void 0?t+"-"+e:e}function DK(e,t){x.useContext(V4).strict}function IK(e){const t=F4(),{drag:a,layout:o}=t;if(!a&&!o)return{};const r={...a,...o};return{MeasureLayout:a!=null&&a.isEnabled(e)||o!=null&&o.isEnabled(e)?r.MeasureLayout:void 0,ProjectionNode:r.ProjectionNode}}function MK(e,t){if(typeof Proxy>"u")return kv;const a=new Map,o=(n,i)=>kv(n,i,e,t),r=(n,i)=>o(n,i);return new Proxy(r,{get:(n,i)=>i==="create"?o:(a.has(i)||a.set(i,kv(i,void 0,e,t)),a.get(i))})}const LK=(e,t)=>t.isSVG??Pk(e)?new hH(t):new lH(t,{allowProjection:e!==x.Fragment});class BK extends Ws{constructor(t){super(t),t.animationState||(t.animationState=bH(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Mg(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:a}=this.node.prevProps||{};t!==a&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)==null||t.call(this)}}let VK=0;class FK extends Ws{constructor(){super(...arguments),this.id=VK++,this.isExitComplete=!1}update(){var n;if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:a}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===o)return;if(t&&o===!1){if(this.isExitComplete){const{initial:i,custom:l}=this.node.getProps();if(typeof i=="string"||typeof i=="object"&&i!==null&&!Array.isArray(i)){const c=qi(this.node,i,l);if(c){const{transition:d,transitionEnd:u,...m}=c;for(const h in m)(n=this.node.getValue(h))==null||n.jump(m[h])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const r=this.node.animationState.setActive("exit",!t);a&&!t&&r.then(()=>{this.isExitComplete=!0,a(this.id)})}mount(){const{register:t,onExitComplete:a}=this.node.presenceContext||{};a&&a(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const UK={animation:{Feature:BK},exit:{Feature:FK}};function jm(e){return{point:{x:e.pageX,y:e.pageY}}}const GK=e=>t=>gk(t)&&e(t,jm(t));function cu(e,t,a,o){return Gu(e,t,GK(a),o)}const W4=({current:e})=>e?e.ownerDocument.defaultView:null,nR=(e,t)=>Math.abs(e-t);function zK(e,t){const a=nR(e.x,t.x),o=nR(e.y,t.y);return Math.sqrt(a**2+o**2)}const sR=new Set(["auto","scroll"]);class J4{constructor(t,a,{transformPagePoint:o,contextWindow:r=window,dragSnapToOrigin:n=!1,distanceThreshold:i=3,element:l}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=p=>{this.handleScroll(p.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=hp(this.lastRawMoveEventInfo,this.transformPagePoint));const p=wv(this.lastMoveEventInfo,this.history),f=this.startEvent!==null,g=zK(p.offset,{x:0,y:0})>=this.distanceThreshold;if(!f&&!g)return;const{point:b}=p,{timestamp:v}=va;this.history.push({...b,timestamp:v});const{onStart:y,onMove:k}=this.handlers;f||(y&&y(this.lastMoveEvent,p),this.startEvent=this.lastMoveEvent),k&&k(this.lastMoveEvent,p)},this.handlePointerMove=(p,f)=>{this.lastMoveEvent=p,this.lastRawMoveEventInfo=f,this.lastMoveEventInfo=hp(f,this.transformPagePoint),xt.update(this.updatePoint,!0)},this.handlePointerUp=(p,f)=>{this.end();const{onEnd:g,onSessionEnd:b,resumeAnimation:v}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&v&&v(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const y=wv(p.type==="pointercancel"?this.lastMoveEventInfo:hp(f,this.transformPagePoint),this.history);this.startEvent&&g&&g(p,y),b&&b(p,y)},!gk(t))return;this.dragSnapToOrigin=n,this.handlers=a,this.transformPagePoint=o,this.distanceThreshold=i,this.contextWindow=r||window;const c=jm(t),d=hp(c,this.transformPagePoint),{point:u}=d,{timestamp:m}=va;this.history=[{...u,timestamp:m}];const{onSessionStart:h}=a;h&&h(t,wv(d,this.history)),this.removeListeners=Pm(cu(this.contextWindow,"pointermove",this.handlePointerMove),cu(this.contextWindow,"pointerup",this.handlePointerUp),cu(this.contextWindow,"pointercancel",this.handlePointerUp)),l&&this.startScrollTracking(l)}startScrollTracking(t){let a=t.parentElement;for(;a;){const o=getComputedStyle(a);(sR.has(o.overflowX)||sR.has(o.overflowY))&&this.scrollPositions.set(a,{x:a.scrollLeft,y:a.scrollTop}),a=a.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const a=this.scrollPositions.get(t);if(!a)return;const o=t===window,r=o?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},n={x:r.x-a.x,y:r.y-a.y};n.x===0&&n.y===0||(o?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=n.x,this.lastMoveEventInfo.point.y+=n.y):this.history.length>0&&(this.history[0].x-=n.x,this.history[0].y-=n.y),this.scrollPositions.set(t,r),xt.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Bs(this.updatePoint)}}function hp(e,t){return t?{point:t(e.point)}:e}function iR(e,t){return{x:e.x-t.x,y:e.y-t.y}}function wv({point:e},t){return{point:e,delta:iR(e,X4(t)),offset:iR(e,HK(t)),velocity:KK(t,.1)}}function HK(e){return e[0]}function X4(e){return e[e.length-1]}function KK(e,t){if(e.length<2)return{x:0,y:0};let a=e.length-1,o=null;const r=X4(e);for(;a>=0&&(o=e[a],!(r.timestamp-o.timestamp>so(t)));)a--;if(!o)return{x:0,y:0};o===e[0]&&e.length>2&&r.timestamp-o.timestamp>so(t)*2&&(o=e[1]);const n=Uo(r.timestamp-o.timestamp);if(n===0)return{x:0,y:0};const i={x:(r.x-o.x)/n,y:(r.y-o.y)/n};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function QK(e,{min:t,max:a},o){return t!==void 0&&e<t?e=o?vt(t,e,o.min):Math.max(e,t):a!==void 0&&e>a&&(e=o?vt(a,e,o.max):Math.min(e,a)),e}function lR(e,t,a){return{min:t!==void 0?e.min+t:void 0,max:a!==void 0?e.max+a-(e.max-e.min):void 0}}function WK(e,{top:t,left:a,bottom:o,right:r}){return{x:lR(e.x,a,r),y:lR(e.y,t,o)}}function cR(e,t){let a=t.min-e.min,o=t.max-e.max;return t.max-t.min<e.max-e.min&&([a,o]=[o,a]),{min:a,max:o}}function JK(e,t){return{x:cR(e.x,t.x),y:cR(e.y,t.y)}}function XK(e,t){let a=.5;const o=Ba(e),r=Ba(t);return r>o?a=Vu(t.min,t.max-o,e.min):o>r&&(a=Vu(e.min,e.max-r,t.min)),an(0,1,a)}function YK(e,t){const a={};return t.min!==void 0&&(a.min=t.min-e.min),t.max!==void 0&&(a.max=t.max-e.min),a}const Ay=.35;function ZK(e=Ay){return e===!1?e=0:e===!0&&(e=Ay),{x:dR(e,"left","right"),y:dR(e,"top","bottom")}}function dR(e,t,a){return{min:uR(e,t),max:uR(e,a)}}function uR(e,t){return typeof e=="number"?e:e[t]||0}const eQ=new WeakMap;class tQ{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=na(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:a=!1,distanceThreshold:o}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const n=m=>{a&&this.snapToCursor(jm(m).point),this.stopAnimation()},i=(m,h)=>{const{drag:p,dragPropagation:f,onDragStart:g}=this.getProps();if(p&&!f&&(this.openDragLock&&this.openDragLock(),this.openDragLock=jz(p),!this.openDragLock))return;this.latestPointerEvent=m,this.latestPanInfo=h,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Or(v=>{let y=this.getAxisMotionValue(v).get()||0;if(Qr.test(y)){const{projection:k}=this.visualElement;if(k&&k.layout){const w=k.layout.layoutBox[v];w&&(y=Ba(w)*(parseFloat(y)/100))}}this.originPoint[v]=y}),g&&xt.update(()=>g(m,h),!1,!0),by(this.visualElement,"transform");const{animationState:b}=this.visualElement;b&&b.setActive("whileDrag",!0)},l=(m,h)=>{this.latestPointerEvent=m,this.latestPanInfo=h;const{dragPropagation:p,dragDirectionLock:f,onDirectionLock:g,onDrag:b}=this.getProps();if(!p&&!this.openDragLock)return;const{offset:v}=h;if(f&&this.currentDirection===null){this.currentDirection=oQ(v),this.currentDirection!==null&&g&&g(this.currentDirection);return}this.updateAxis("x",h.point,v),this.updateAxis("y",h.point,v),this.visualElement.render(),b&&xt.update(()=>b(m,h),!1,!0)},c=(m,h)=>{this.latestPointerEvent=m,this.latestPanInfo=h,this.stop(m,h),this.latestPointerEvent=null,this.latestPanInfo=null},d=()=>{const{dragSnapToOrigin:m}=this.getProps();(m||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:u}=this.getProps();this.panSession=new J4(t,{onSessionStart:n,onStart:i,onMove:l,onSessionEnd:c,resumeAnimation:d},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:u,distanceThreshold:o,contextWindow:W4(this.visualElement),element:this.visualElement.current})}stop(t,a){const o=t||this.latestPointerEvent,r=a||this.latestPanInfo,n=this.isDragging;if(this.cancel(),!n||!r||!o)return;const{velocity:i}=r;this.startAnimation(i);const{onDragEnd:l}=this.getProps();l&&xt.postRender(()=>l(o,r))}cancel(){this.isDragging=!1;const{projection:t,animationState:a}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),a&&a.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,a,o){const{drag:r}=this.getProps();if(!o||!fp(t,r,this.currentDirection))return;const n=this.getAxisMotionValue(t);let i=this.originPoint[t]+o[t];this.constraints&&this.constraints[t]&&(i=QK(i,this.constraints[t],this.elastic[t])),n.set(i)}resolveConstraints(){var n;const{dragConstraints:t,dragElastic:a}=this.getProps(),o=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(n=this.visualElement.projection)==null?void 0:n.layout,r=this.constraints;t&&wl(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&o?this.constraints=WK(o.layoutBox,t):this.constraints=!1,this.elastic=ZK(a),r!==this.constraints&&!wl(t)&&o&&this.constraints&&!this.hasMutatedConstraints&&Or(i=>{this.constraints!==!1&&this.getAxisMotionValue(i)&&(this.constraints[i]=YK(o.layoutBox[i],this.constraints[i]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:a}=this.getProps();if(!t||!wl(t))return!1;const o=t.current;Oc(o!==null,"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.","drag-constraints-ref");const{projection:r}=this.visualElement;if(!r||!r.layout)return!1;r.root&&(r.root.scroll=void 0,r.root.updateScroll());const n=aH(o,r.root,this.visualElement.getTransformPagePoint());let i=JK(r.layout.layoutBox,n);if(a){const l=a(Zz(i));this.hasMutatedConstraints=!!l,l&&(i=x4(l))}return i}startAnimation(t){const{drag:a,dragMomentum:o,dragElastic:r,dragTransition:n,dragSnapToOrigin:i,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},d=Or(u=>{if(!fp(u,a,this.currentDirection))return;let m=c&&c[u]||{};(i===!0||i===u)&&(m={min:0,max:0});const h=r?200:1e6,p=r?40:1e7,f={type:"inertia",velocity:o?t[u]:0,bounceStiffness:h,bounceDamping:p,timeConstant:750,restDelta:1,restSpeed:10,...n,...m};return this.startAxisValueAnimation(u,f)});return Promise.all(d).then(l)}startAxisValueAnimation(t,a){const o=this.getAxisMotionValue(t);return by(this.visualElement,t),o.start(mk(t,o,0,a,this.visualElement,!1))}stopAnimation(){Or(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const a=`_drag${t.toUpperCase()}`,r=this.visualElement.getProps()[a];return r||this.visualElement.getValue(t,this.visualElement.latestValues[t]??0)}snapToCursor(t){Or(a=>{const{drag:o}=this.getProps();if(!fp(a,o,this.currentDirection))return;const{projection:r}=this.visualElement,n=this.getAxisMotionValue(a);if(r&&r.layout){const{min:i,max:l}=r.layout.layoutBox[a],c=n.get()||0;n.set(t[a]-vt(i,l,.5)+c)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:a}=this.getProps(),{projection:o}=this.visualElement;if(!wl(a)||!o||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};Or(i=>{const l=this.getAxisMotionValue(i);if(l&&this.constraints!==!1){const c=l.get();r[i]=XK({min:c,max:c},this.constraints[i])}});const{transformTemplate:n}=this.visualElement.getProps();this.visualElement.current.style.transform=n?n({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.constraints=!1,this.resolveConstraints(),Or(i=>{if(!fp(i,t,null))return;const l=this.getAxisMotionValue(i),{min:c,max:d}=this.constraints[i];l.set(vt(c,d,r[i]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;eQ.set(this.visualElement,this);const t=this.visualElement.current,a=cu(t,"pointerdown",d=>{const{drag:u,dragListener:m=!0}=this.getProps(),h=d.target,p=h!==t&&$z(h);u&&m&&!p&&this.start(d)});let o;const r=()=>{const{dragConstraints:d}=this.getProps();wl(d)&&d.current&&(this.constraints=this.resolveRefConstraints(),o||(o=aQ(t,d.current,()=>this.scalePositionWithinConstraints())))},{projection:n}=this.visualElement,i=n.addEventListener("measure",r);n&&!n.layout&&(n.root&&n.root.updateScroll(),n.updateLayout()),xt.read(r);const l=Gu(window,"resize",()=>this.scalePositionWithinConstraints()),c=n.addEventListener("didUpdate",({delta:d,hasLayoutChanged:u})=>{this.isDragging&&u&&(Or(m=>{const h=this.getAxisMotionValue(m);h&&(this.originPoint[m]+=d[m].translate,h.set(h.get()+d[m].translate))}),this.visualElement.render())});return()=>{l(),a(),i(),c&&c(),o&&o()}}getProps(){const t=this.visualElement.getProps(),{drag:a=!1,dragDirectionLock:o=!1,dragPropagation:r=!1,dragConstraints:n=!1,dragElastic:i=Ay,dragMomentum:l=!0}=t;return{...t,drag:a,dragDirectionLock:o,dragPropagation:r,dragConstraints:n,dragElastic:i,dragMomentum:l}}}function mR(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function aQ(e,t,a){const o=bS(e,mR(a)),r=bS(t,mR(a));return()=>{o(),r()}}function fp(e,t,a){return(t===!0||t===e)&&(a===null||a===e)}function oQ(e,t=10){let a=null;return Math.abs(e.y)>t?a="y":Math.abs(e.x)>t&&(a="x"),a}class rQ extends Ws{constructor(t){super(t),this.removeGroupControls=zo,this.removeListeners=zo,this.controls=new tQ(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||zo}update(){const{dragControls:t}=this.node.getProps(),{dragControls:a}=this.node.prevProps||{};t!==a&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Cv=e=>(t,a)=>{e&&xt.update(()=>e(t,a),!1,!0)};class nQ extends Ws{constructor(){super(...arguments),this.removePointerDownListener=zo}onPointerDown(t){this.session=new J4(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:W4(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:a,onPan:o,onPanEnd:r}=this.node.getProps();return{onSessionStart:Cv(t),onStart:Cv(a),onMove:Cv(o),onEnd:(n,i)=>{delete this.session,r&&xt.postRender(()=>r(n,i))}}}mount(){this.removePointerDownListener=cu(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Pv=!1;class sQ extends x.Component{componentDidMount(){const{visualElement:t,layoutGroup:a,switchLayoutGroup:o,layoutId:r}=this.props,{projection:n}=t;n&&(a.group&&a.group.add(n),o&&o.register&&r&&o.register(n),Pv&&n.root.didUpdate(),n.addEventListener("animationComplete",()=>{this.safeToRemove()}),n.setOptions({...n.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),bh.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:a,visualElement:o,drag:r,isPresent:n}=this.props,{projection:i}=o;return i&&(i.isPresent=n,t.layoutDependency!==a&&i.setOptions({...i.options,layoutDependency:a}),Pv=!0,r||t.layoutDependency!==a||a===void 0||t.isPresent!==n?i.willUpdate():this.safeToRemove(),t.isPresent!==n&&(n?i.promote():i.relegate()||xt.postRender(()=>{const l=i.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:a}=this.props,{projection:o}=t;o&&(o.options.layoutAnchor=a,o.root.didUpdate(),fk.postRender(()=>{!o.currentAnimation&&o.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:a,switchLayoutGroup:o}=this.props,{projection:r}=t;Pv=!0,r&&(r.scheduleCheckAfterUnmount(),a&&a.group&&a.group.remove(r),o&&o.deregister&&o.deregister(r))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function Y4(e){const[t,a]=B4(),o=x.useContext(Y1);return s.jsx(sQ,{...e,layoutGroup:o,switchLayoutGroup:x.useContext(K4),isPresent:t,safeToRemove:a})}const iQ={pan:{Feature:nQ},drag:{Feature:rQ,ProjectionNode:L4,MeasureLayout:Y4}};function pR(e,t,a){const{props:o}=e;e.animationState&&o.whileHover&&e.animationState.setActive("whileHover",a==="Start");const r="onHover"+a,n=o[r];n&&xt.postRender(()=>n(t,jm(t)))}class lQ extends Ws{mount(){const{current:t}=this.node;t&&(this.unmount=Az(t,(a,o)=>(pR(this.node,o,"Start"),r=>pR(this.node,r,"End"))))}unmount(){}}class cQ extends Ws{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Pm(Gu(this.node.current,"focus",()=>this.onFocus()),Gu(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function hR(e,t,a){const{props:o}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&o.whileTap&&e.animationState.setActive("whileTap",a==="Start");const r="onTap"+(a==="End"?"":a),n=o[r];n&&xt.postRender(()=>n(t,jm(t)))}class dQ extends Ws{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:a,propagate:o}=this.node.props;this.unmount=qz(t,(r,n)=>(hR(this.node,n,"Start"),(i,{success:l})=>hR(this.node,i,l?"End":"Cancel")),{useGlobalTarget:a,stopPropagation:(o==null?void 0:o.tap)===!1})}unmount(){}}const Ey=new WeakMap,Sv=new WeakMap,uQ=e=>{const t=Ey.get(e.target);t&&t(e)},mQ=e=>{e.forEach(uQ)};function pQ({root:e,...t}){const a=e||document;Sv.has(a)||Sv.set(a,{});const o=Sv.get(a),r=JSON.stringify(t);return o[r]||(o[r]=new IntersectionObserver(mQ,{root:e,...t})),o[r]}function hQ(e,t,a){const o=pQ(t);return Ey.set(e,a),o.observe(e),()=>{Ey.delete(e),o.unobserve(e)}}const fQ={some:0,all:1};class gQ extends Ws{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var c;(c=this.stopObserver)==null||c.call(this);const{viewport:t={}}=this.node.getProps(),{root:a,margin:o,amount:r="some",once:n}=t,i={root:a?a.current:void 0,rootMargin:o,threshold:typeof r=="number"?r:fQ[r]},l=d=>{const{isIntersecting:u}=d;if(this.isInView===u||(this.isInView=u,n&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:m,onViewportLeave:h}=this.node.getProps(),p=u?m:h;p&&p(d)};this.stopObserver=hQ(this.node.current,i,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:a}=this.node;["amount","margin","root"].some(vQ(t,a))&&this.startObserver()}unmount(){var t;(t=this.stopObserver)==null||t.call(this),this.hasEnteredView=!1,this.isInView=!1}}function vQ({viewport:e={}},{viewport:t={}}={}){return a=>e[a]!==t[a]}const xQ={inView:{Feature:gQ},tap:{Feature:dQ},focus:{Feature:cQ},hover:{Feature:lQ}},bQ={layout:{ProjectionNode:L4,MeasureLayout:Y4}},yQ={...UK,...xQ,...iQ,...bQ},Bd=MK(yQ,LK),kQ=1,wQ="87f17f03-998f-474a-8701-3ccaa5bd7647",CQ="386e8409-a3d6-4603-9e31-4b97b7d57e01",PQ="/__l5e/assets-v1/87f17f03-998f-474a-8701-3ccaa5bd7647/xpark-logo-original.png",SQ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/87f17f03-998f-474a-8701-3ccaa5bd7647/xpark-logo-original.png",RQ="xpark-logo-original.png",jQ=147247,NQ="image/png",AQ="2026-09-27T02:45:44Z",Z4={version:kQ,asset_id:wQ,project_id:CQ,url:PQ,r2_key:SQ,original_filename:RQ,size:jQ,content_type:NQ,created_at:AQ}
426,EQ=1,_Q="13c5b1a4-c87c-49e9-9615-9bcbec268c12",TQ="386e8409-a3d6-4603-9e31-4b97b7d57e01",$Q="/__l5e/assets-v1/13c5b1a4-c87c-49e9-9615-9bcbec268c12/xpark-logo-footer.png",OQ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/13c5b1a4-c87c-49e9-9615-9bcbec268c12/xpark-logo-footer.png",qQ="xpark-logo-footer.png",DQ=102980,IQ="image/png",MQ="2026-09-27T02:45:47Z",e6={version:EQ,asset_id:_Q,project_id:TQ,url:$Q,r2_key:OQ,original_filename:qQ,size:DQ,content_type:IQ,created_at:MQ};function fR({light:e=!1}){return s.jsx("img",{src:e?e6.url:Z4.url,alt:"xpark",width:1709,height:463,className:"block h-auto w-[88px] shrink-0 object-contain sm:w-[106px] md:w-[120px]",loading:"eager",decoding:"async"})}function Vg({className:e,variant:t="dark"}){const a=t==="light"?"text-paper":t==="gold"?"text-gold":"text-ink";return s.jsx("span",{className:ne("wordmark inline-block text-2xl md:text-3xl leading-none",a,e),children:"xpark"})}const LQ="/assets/multipark-logo-BzNhzovq.png",BQ=1,VQ="543ec5b0-a5f9-470c-af57-a951ff98fd28",FQ="386e8409-a3d6-4603-9e31-4b97b7d57e01",UQ="/__l5e/assets-v1/543ec5b0-a5f9-470c-af57-a951ff98fd28/aerovalet.png",GQ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/543ec5b0-a5f9-470c-af57-a951ff98fd28/aerovalet.png",zQ="aerovalet.png",HQ=43067,KQ="image/png",QQ="2026-06-01T14:32:01Z",t6={version:BQ,asset_id:VQ,project_id:FQ,url:UQ,r2_key:GQ,original_filename:zQ,size:HQ,content_type:KQ,created_at:QQ},WQ=1,JQ="cfb0d1bb-2f24-4b95-b448-c4e945dc1b5a",XQ="386e8409-a3d6-4603-9e31-4b97b7d57e01",YQ="/__l5e/assets-v1/cfb0d1bb-2f24-4b95-b448-c4e945dc1b5a/valetina.png",ZQ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/cfb0d1bb-2f24-4b95-b448-c4e945dc1b5a/valetina.png",eW="valetina.png",tW=20904,aW="image/png",oW="2026-06-01T14:32:04Z",a6={version:WQ,asset_id:JQ,project_id:XQ,url:YQ,r2_key:ZQ,original_filename:eW,size:tW,content_type:aW,created_at:oW},rW={multipark:{src:LQ,alt:"Multipark"},aerovalet:{src:t6.url,alt:"Aerovalet"},valetina:{src:a6.url,alt:"Valetina"}};function ac({partner:e,className:t,variant:a="dark",logoClassName:o}){const r=rW[e];return s.jsxs("div",{className:ne("inline-flex items-center gap-3",t),children:[s.jsx(Vg,{variant:a}),s.jsx("span",{className:ne("h-5 w-px",a==="light"?"bg-paper/25":"bg-ink/15"),"aria-hidden":!0}),s.jsx("img",{src:r.src,alt:r.alt,loading:"eager",decoding:"sync",className:ne("w-auto",o??"h-9 md:h-10")})]})}const nW=Symbol.for("@supabase/supabase-js.traceContextExtractor");function sW(){return globalThis[nW]}function Fg(e,t){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(a[o[r]]=e[o[r]]);return a}function iW(e,t,a,o){function r(n){return n instanceof a?n:new a(function(i){i(n)})}return new(a||(a=Promise))(function(n,i){function l(u){try{d(o.next(u))}catch(m){i(m)}}function c(u){try{d(o.throw(u))}catch(m){i(m)}}function d(u){u.done?n(u.value):r(u.value).then(l,c)}d((o=o.apply(e,t||[])).next())})}const lW=e=>e?(...t)=>e(...t):(...t)=>fetch(...t);class Sk extends Error{constructor(t,a="FunctionsError",o){super(t),this.name=a,this.context=o}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class cW extends Sk{constructor(t){super("Failed to send a request to the Edge Function","FunctionsFetchError",t)}}class gR extends Sk{constructor(t){super("Relay Error invoking the Edge Function","FunctionsRelayError",t)}}class vR extends Sk{constructor(t){super("Edge Function returned a non-2xx status code","FunctionsHttpError",t)}}var _y;(function(e){e.Any="any",e.ApNortheast1="ap-northeast-1",e.ApNortheast2="ap-northeast-2",e.ApSouth1="ap-south-1",e.ApSoutheast1="ap-southeast-1",e.ApSoutheast2="ap-southeast-2",e.CaCentral1="ca-central-1",e.EuCentral1="eu-central-1",e.EuWest1="eu-west-1",e.EuWest2="eu-west-2",e.EuWest3="eu-west-3",e.SaEast1="sa-east-1",e.UsEast1="us-east-1",e.UsWest1="us-west-1",e.UsWest2="us-west-2"})(_y||(_y={}));class dW{constructor(t,{headers:a={},customFetch:o,region:r=_y.Any}={}){this.url=t,this.headers=a,this.region=r,this.fetch=lW(o)}setAuth(t){this.headers.Authorization=`Bearer ${t}`}invoke(t){return iW(this,arguments,void 0,function*(a,o={}){var r,n;let i,l,c;try{const{headers:d,method:u,body:m,signal:h,timeout:p}=o;let f={},{region:g}=o;g||(g=this.region);const b=new URL(`${this.url}/${a}`);g&&g!=="any"&&(f["x-region"]=g,b.searchParams.set("forceFunctionRegion",g));let v;const y=!!d&&Object.keys(d).some(N=>N.toLowerCase()==="content-type");m&&!y?typeof Blob<"u"&&m instanceof Blob||m instanceof ArrayBuffer?(f["Content-Type"]="application/octet-stream",v=m):typeof m=="string"?(f["Content-Type"]="text/plain",v=m):typeof FormData<"u"&&m instanceof FormData?v=m:(f["Content-Type"]="application/json",v=JSON.stringify(m)):m&&typeof m!="string"&&!(typeof Blob<"u"&&m instanceof Blob)&&!(m instanceof ArrayBuffer)&&!(typeof FormData<"u"&&m instanceof FormData)?v=JSON.stringify(m):v=m;let k=h;p&&(l=new AbortController,i=setTimeout(()=>l.abort(),p),h?(k=l.signal,c=()=>l.abort(),h.addEventListener("abort",c)):k=l.signal);const w=yield this.fetch(b.toString(),{method:u||"POST",headers:Object.assign(Object.assign(Object.assign({},f),this.headers),d),body:v,signal:k}).catch(N=>{throw new cW(N)}),R=w.headers.get("x-relay-error");
426if(R&&R==="true")throw new gR(w);if(!w.ok)throw new vR(w);let C=((r=w.headers.get("Content-Type"))!==null&&r!==void 0?r:"text/plain").split(";")[0].trim().toLowerCase(),P;return C==="application/json"?P=yield w.json():C==="application/octet-stream"||C==="application/pdf"?P=yield w.blob():C==="text/event-stream"?P=w:C==="multipart/form-data"?P=yield w.formData():P=yield w.text(),{data:P,error:null,response:w}}catch(d){return{data:null,error:d,response:d instanceof vR||d instanceof gR?d.context:void 0}}finally{i&&clearTimeout(i),c&&((n=o.signal)===null||n===void 0||n.removeEventListener("abort",c))}})}}var oc=class extends Error{constructor(e){super(e.message),this.name="PostgrestError",this.details=e.details,this.hint=e.hint,this.code=e.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};const o6=3,xR=e=>Math.min(1e3*2**e,3e4),uW=[520,503],r6=["GET","HEAD","OPTIONS"];function zu(e){"@babel/helpers - typeof";return zu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},zu(e)}function mW(e,t){if(zu(e)!="object"||!e)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var o=a.call(e,t||"default");if(zu(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pW(e){var t=mW(e,"string");return zu(t)=="symbol"?t:t+""}function hW(e,t,a){return(t=pW(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function bR(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),a.push.apply(a,o)}return a}function bi(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?bR(Object(a),!0).forEach(function(o){hW(e,o,a[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):bR(Object(a)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(a,o))})}return e}function yR(e,t){return new Promise(a=>{if(t!=null&&t.aborted){a();return}const o=setTimeout(()=>{t==null||t.removeEventListener("abort",r),a()},e);function r(){clearTimeout(o),a()}t==null||t.addEventListener("abort",r)})}function fW(e,t,a,o){return!(!o||a>=o6||!r6.includes(e)||!uW.includes(t))}async function n6(e,t,a,o){let r=0;for(;;){const l=bi({},a.headers);r>0&&(l["X-Retry-Count"]=String(r));let c;try{c=await e(t,{method:a.method,headers:l,body:a.body,signal:a.signal})}catch(d){if((d==null?void 0:d.name)==="AbortError"||(d==null?void 0:d.code)==="ABORT_ERR"||!r6.includes(a.method))throw d;if(o&&r<o6){const u=xR(r);r++,await yR(u,a.signal);continue}throw d}if(fW(a.method,c.status,r,o)){var n,i;const d=(n=(i=c.headers)===null||i===void 0?void 0:i.get("Retry-After"))!==null&&n!==void 0?n:null,u=d!==null?Math.max(0,parseInt(d,10)||0)*1e3:xR(r);await c.text(),r++,await yR(u,a.signal);continue}return c}}var gW=class{constructor(e){var t,a,o,r,n;this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=e.method,this.url=e.url,this.headers=new Headers(e.headers),this.schema=e.schema,this.body=e.body,this.shouldThrowOnError=(t=e.shouldThrowOnError)!==null&&t!==void 0?t:!1,this.signal=e.signal,this.isMaybeSingle=(a=e.isMaybeSingle)!==null&&a!==void 0?a:!1,this.shouldStripNulls=(o=e.shouldStripNulls)!==null&&o!==void 0?o:!1,this.urlLengthLimit=(r=e.urlLengthLimit)!==null&&r!==void 0?r:8e3,this.retryEnabled=(n=e.retry)!==null&&n!==void 0?n:!0,e.fetch?this.fetch=e.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw new Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(e,t){return this.headers=new Headers(this.headers),this.headers.set(e,t),this}retry(e){return this.retryEnabled=e,this}then(e,t){var a=this;if(this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json"),this.shouldStripNulls){const i=this.headers.get("Accept");i==="application/vnd.pgrst.object+json"?this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped"):(!i||i==="application/json")&&this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}const o=this.fetch;let n=(async()=>{const i={};
426a.headers.forEach((c,d)=>{i[d]=c});const l=await n6(o,a.url.toString(),{method:a.method,headers:i,body:JSON.stringify(a.body,(c,d)=>typeof d=="bigint"?d.toString():d),signal:a.signal},a.retryEnabled);return await a.processResponse(l)})();return this.shouldThrowOnError||(n=n.catch(i=>{var l;let c="",d="",u="";const m=i==null?void 0:i.cause;if(m){var h,p,f,g;const y=(h=m==null?void 0:m.message)!==null&&h!==void 0?h:"",k=(p=m==null?void 0:m.code)!==null&&p!==void 0?p:"";c=`${(f=i==null?void 0:i.name)!==null&&f!==void 0?f:"FetchError"}: ${i==null?void 0:i.message}`,c+=` 427 428Caused by: ${(g=m==null?void 0:m.name)!==null&&g!==void 0?g:"Error"}: ${y}`,k&&(c+=` (${k})`),m!=null&&m.stack&&(c+=` 429${m.stack}`)}else{var b;c=(b=i==null?void 0:i.stack)!==null&&b!==void 0?b:""}const v=this.url.toString().length;return(i==null?void 0:i.name)==="AbortError"||(i==null?void 0:i.code)==="ABORT_ERR"?(u="",d="Request was aborted (timeout or manual cancellation)",v>this.urlLengthLimit&&(d+=`. Note: Your request URL is ${v} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`)):((m==null?void 0:m.name)==="HeadersOverflowError"||(m==null?void 0:m.code)==="UND_ERR_HEADERS_OVERFLOW")&&(u="",d="HTTP headers exceeded server limits (typically 16KB)",v>this.urlLengthLimit&&(d+=`. Your request URL is ${v} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`)),{success:!1,error:{message:`${(l=i==null?void 0:i.name)!==null&&l!==void 0?l:"FetchError"}: ${i==null?void 0:i.message}`,details:c,hint:d,code:u},data:null,count:null,status:0,statusText:""}})),n.then(e,t)}async processResponse(e){var t=this;let a=null,o=null,r=null,n=e.status,i=e.statusText;if(e.ok){var l,c;if(t.method!=="HEAD"){var d;const p=await e.text();if(p!=="")if(t.headers.get("Accept")==="text/csv")o=p;else if(t.headers.get("Accept")&&(!((d=t.headers.get("Accept"))===null||d===void 0)&&d.includes("application/vnd.pgrst.plan+text")))o=p;else try{o=JSON.parse(p)}catch{if(a={message:p},o=null,t.shouldThrowOnError)throw new oc({message:p,details:"",hint:"",code:""})}}const m=(l=t.headers.get("Prefer"))===null||l===void 0?void 0:l.match(/count=(exact|planned|estimated)/),h=(c=e.headers.get("content-range"))===null||c===void 0?void 0:c.split("/");if(m&&h&&h.length>1&&(r=parseInt(h[1])),t.isMaybeSingle&&Array.isArray(o))if(o.length>1){if(a={code:"PGRST116",details:`Results contain ${o.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},o=null,r=null,n=406,i="Not Acceptable",t.shouldThrowOnError){var u;throw new oc(bi(bi({},a),{},{hint:(u=a.hint)!==null&&u!==void 0?u:""}))}}else o.length===1?o=o[0]:o=null}else{const m=await e.text();try{a=JSON.parse(m),Array.isArray(a)&&e.status===404&&(o=[],a=null,n=200,i="OK")}catch{e.status===404&&m===""?(n=204,i="No Content"):a={message:m}}if(a&&t.shouldThrowOnError)throw new oc(a)}return{success:a===null,error:a,data:o,count:r,status:n,statusText:i}}returns(){return this}overrideTypes(){return this}},vW=class extends gW{throwOnError(){return super.throwOnError()}select(e){let t=!1;const a=(e??"*").split("").map(o=>/\s/.test(o)&&!t?"":(o==='"'&&(t=!t),o)).join("");return this.url.searchParams.set("select",a),this.headers.append("Prefer","return=representation"),this}order(e,{ascending:t=!0,nullsFirst:a,foreignTable:o,referencedTable:r=o}={}){const n=r?`${r}.order`:"order",i=this.url.searchParams.get(n);return this.url.searchParams.set(n,`${i?`${i},`:""}${e}.${t?"asc":"desc"}${a===void 0?"":a?".nullsfirst":".nullslast"}`),this}limit(e,{foreignTable:t,referencedTable:a=t}={}){const o=typeof a>"u"?"limit":`${a}.limit`;return this.url.searchParams.set(o,`${e}`),this}range(e,t,{foreignTable:a,referencedTable:o=a}={}){const r=typeof o>"u"?"offset":`${o}.offset`,n=typeof o>"u"?"limit":`${o}.limit`;return this.url.searchParams.set(r,`${e}`),this.url.searchParams.set(n,`${t-e+1}`),this}abortSignal(e){return this.signal=e,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}
429explain({analyze:e=!1,verbose:t=!1,settings:a=!1,buffers:o=!1,wal:r=!1,format:n="text"}={}){var i;const l=[e?"analyze":null,t?"verbose":null,a?"settings":null,o?"buffers":null,r?"wal":null].filter(Boolean).join("|"),c=(i=this.headers.get("Accept"))!==null&&i!==void 0?i:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${n}; for="${c}"; options=${l};`),n==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(e){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${e}`),this}};const kR=new RegExp("[,()]");var Cl=class extends vW{throwOnError(){return super.throwOnError()}eq(e,t){return this.url.searchParams.append(e,`eq.${t}`),this}neq(e,t){return this.url.searchParams.append(e,`neq.${t}`),this}gt(e,t){return this.url.searchParams.append(e,`gt.${t}`),this}gte(e,t){return this.url.searchParams.append(e,`gte.${t}`),this}lt(e,t){return this.url.searchParams.append(e,`lt.${t}`),this}lte(e,t){return this.url.searchParams.append(e,`lte.${t}`),this}like(e,t){return this.url.searchParams.append(e,`like.${t}`),this}likeAllOf(e,t){return this.url.searchParams.append(e,`like(all).{${t.join(",")}}`),this}likeAnyOf(e,t){return this.url.searchParams.append(e,`like(any).{${t.join(",")}}`),this}ilike(e,t){return this.url.searchParams.append(e,`ilike.${t}`),this}ilikeAllOf(e,t){return this.url.searchParams.append(e,`ilike(all).{${t.join(",")}}`),this}ilikeAnyOf(e,t){return this.url.searchParams.append(e,`ilike(any).{${t.join(",")}}`),this}regexMatch(e,t){return this.url.searchParams.append(e,`match.${t}`),this}regexIMatch(e,t){return this.url.searchParams.append(e,`imatch.${t}`),this}is(e,t){return this.url.searchParams.append(e,`is.${t}`),this}isDistinct(e,t){return this.url.searchParams.append(e,`isdistinct.${t}`),this}in(e,t){const a=Array.from(new Set(t)).map(o=>typeof o=="string"&&kR.test(o)?`"${o}"`:`${o}`).join(",");return this.url.searchParams.append(e,`in.(${a})`),this}notIn(e,t){const a=Array.from(new Set(t)).map(o=>typeof o=="string"&&kR.test(o)?`"${o}"`:`${o}`).join(",");return this.url.searchParams.append(e,`not.in.(${a})`),this}contains(e,t){return typeof t=="string"?this.url.searchParams.append(e,`cs.${t}`):Array.isArray(t)?this.url.searchParams.append(e,`cs.{${t.join(",")}}`):this.url.searchParams.append(e,`cs.${JSON.stringify(t)}`),this}containedBy(e,t){return typeof t=="string"?this.url.searchParams.append(e,`cd.${t}`):Array.isArray(t)?this.url.searchParams.append(e,`cd.{${t.join(",")}}`):this.url.searchParams.append(e,`cd.${JSON.stringify(t)}`),this}rangeGt(e,t){return this.url.searchParams.append(e,`sr.${t}`),this}rangeGte(e,t){return this.url.searchParams.append(e,`nxl.${t}`),this}rangeLt(e,t){return this.url.searchParams.append(e,`sl.${t}`),this}rangeLte(e,t){return this.url.searchParams.append(e,`nxr.${t}`),this}rangeAdjacent(e,t){return this.url.searchParams.append(e,`adj.${t}`),this}overlaps(e,t){return typeof t=="string"?this.url.searchParams.append(e,`ov.${t}`):this.url.searchParams.append(e,`ov.{${t.join(",")}}`),this}textSearch(e,t,{config:a,type:o}={}){let r="";o==="plain"?r="pl":o==="phrase"?r="ph":o==="websearch"&&(r="w");const n=a===void 0?"":`(${a})`;return this.url.searchParams.append(e,`${r}fts${n}.${t}`),this}match(e){return Object.entries(e).filter(([t,a])=>a!==void 0).forEach(([t,a])=>{this.url.searchParams.append(t,`eq.${a}`)}),this}not(e,t,a){return this.url.searchParams.append(e,`not.${t}.${a}`),this}or(e,{foreignTable:t,referencedTable:a=t}={}){const o=a?`${a}.or`:"or";return this.url.searchParams.append(o,`(${e})`),this}filter(e,t,a){return this.url.searchParams.append(e,`${t}.${a}`),this}},xW=class{constructor(e,{headers:t={},schema:a,fetch:o,urlLengthLimit:r=8e3,retry:n}){this.url=e,this.headers=new Headers(t),this.schema=a,this.fetch=o,this.urlLengthLimit=r,this.retry=n}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(e,t){const{head:a=!1,count:o}=t??{},r=a?"HEAD":"GET";let n=!1;const i=(e??"*").split("").map(d=>/\s/.test(d)&&!n?"":(d==='"'&&(n=!n),d)).join(""),{url:l,headers:c}=this.cloneRequestState();return l.searchParams.set("select",i),o&&c.append("Prefer",`count=${o}`),new Cl({method:r,url:l,headers:c,schema:this.schema,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}insert(e,{count:t,defaultToNull:a=!0}={}){var o;const r="POST",{url:n,headers:i}=this.cloneRequestState();if(t&&i.append("Prefer",`count=${t}`),a||i.append("Prefer","missing=default"),Array.isArray(e)){const l=e.reduce((c,d)=>c.concat(Object.keys(d)),[]);if(l.length>0){const c=[...new Set(l)].map(d=>`"${d}"`);n.searchParams.set("columns",c.join(","))}}return new Cl({method:r,url:n,headers:i,schema:this.schema,body:e,fetch:(o=this.fetch)!==null&&o!==void 0?o:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}upsert(e,{onConflict:t,ignoreDuplicates:a=!1,count:o,defaultToNull:r=!0}={}){var n;const i="POST",{url:l,headers:c}=this.cloneRequestState();if(c.append("Prefer",`resolution=${a?"ignore":"merge"}-duplicates`),t!==void 0&&l.searchParams.set("on_conflict",t),o&&c.append("Prefer",`count=${o}`),r||c.append("Prefer","missing=default"),Array.isArray(e)){const d=e.reduce((u,m)=>u.concat(Object.keys(m)),[]);if(d.length>0){const u=[...new Set(d)].map(m=>`"${m}"`);l.searchParams.set("columns",u.join(","))}}return new Cl({method:i,url:l,headers:c,schema:this.schema,body:e,fetch:(n=this.fetch)!==null&&n!==void 0?n:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(e,{count:t}={}){var a;const o="PATCH",{url:r,headers:n}=this.cloneRequestState();return t&&n.append("Prefer",`count=${t}`),new Cl({method:o,url:r,headers:n,schema:this.schema,body:e,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}delete({count:e}={}){var t;const a="DELETE",{url:o,headers:r}=this.cloneRequestState();return e&&r.append("Prefer",`count=${e}`),new Cl({method:a,url:o,headers:r,schema:this.schema,fetch:(t=this.fetch)!==null&&t!==void 0?t:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};function bW(e,t){try{const i=JSON.parse(e);if(i&&typeof i=="object"&&!Array.isArray(i)){var a,o,r,n;return new oc({message:String((a=i.message)!==null&&a!==void 0?a:e),details:(o=i.details)!==null&&o!==void 0?o:"",hint:(r=i.hint)!==null&&r!==void 0?r:"",code:(n=i.code)!==null&&n!==void 0?n:""})}}catch{}return new oc({message:e||t,details:"",hint:"",code:""})}function wR(e,t,a){var o;const r=e;return{success:!1,error:new oc({message:`${(o=r==null?void 0:r.name)!==null&&o!==void 0?o:"FetchError"}: ${r==null?void 0:r.message}`,details:"",hint:"",code:""}),data:null,count:null,status:t,statusText:a}}var yW=class s6{constructor(t,{headers:a={},schema:o,fetch:r,timeout:n,urlLengthLimit:i=8e3,retry:l}={}){this.url=t,this.headers=new Headers(a),this.schemaName=o,this.urlLengthLimit=i;const c=r??globalThis.fetch;n!==void 0&&n>0?this.fetch=(d,u)=>{const m=new AbortController,h=setTimeout(()=>m.abort(),n),p=u==null?void 0:u.signal;if(p){if(p.aborted)return clearTimeout(h),c(d,u);const f=()=>{clearTimeout(h),m.abort()};return p.addEventListener("abort",f,{once:!0}),c(d,bi(bi({},u),{},{signal:m.signal})).finally(()=>{clearTimeout(h),p.removeEventListener("abort",f)})}return c(d,bi(bi({},u),{},{signal:m.signal})).finally(()=>
429clearTimeout(h))}:this.fetch=c,this.retry=l}from(t){if(!t||typeof t!="string"||t.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");return new xW(new URL(`${this.url}/${t}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}schema(t){return new s6(this.url,{headers:this.headers,schema:t,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}async getOpenApiSpec(){var t=this,a;const o=new Headers(t.headers);o.set("Accept","application/openapi+json"),t.schemaName&&o.set("Accept-Profile",t.schemaName);const r={};o.forEach((d,u)=>{r[u]=d});const n=(a=t.fetch)!==null&&a!==void 0?a:globalThis.fetch;let i;try{var l;i=await n6(n,`${t.url}/`,{method:"GET",headers:r},(l=t.retry)!==null&&l!==void 0?l:!0)}catch(d){return wR(d,0,"")}let c;try{c=await i.text()}catch(d){return wR(d,i.status,i.statusText)}if(i.ok)try{return{success:!0,error:null,data:JSON.parse(c),count:null,status:i.status,statusText:i.statusText}}catch{}return{success:!1,error:bW(c,i.statusText),data:null,count:null,status:i.status,statusText:i.statusText}}rpc(t,a={},{head:o=!1,get:r=!1,count:n}={}){var i;let l;const c=new URL(`${this.url}/rpc/${t}`);let d;const u=p=>p!==null&&typeof p=="object"&&(!Array.isArray(p)||p.some(u)),m=o&&Object.values(a).some(u);m?(l="POST",d=a):o||r?(l=o?"HEAD":"GET",Object.entries(a).filter(([p,f])=>f!==void 0).map(([p,f])=>[p,Array.isArray(f)?`{${f.join(",")}}`:`${f}`]).forEach(([p,f])=>{c.searchParams.append(p,f)})):(l="POST",d=a);const h=new Headers(this.headers);return m?h.set("Prefer",n?`count=${n},return=minimal`:"return=minimal"):n&&h.set("Prefer",`count=${n}`),new Cl({method:l,url:c,headers:h,schema:this.schemaName,body:d,fetch:(i=this.fetch)!==null&&i!==void 0?i:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};class kW{constructor(){}static detectEnvironment(){var t;if(typeof WebSocket<"u")return{type:"native",wsConstructor:WebSocket};const a=globalThis;if(typeof globalThis<"u"&&typeof a.WebSocket<"u")return{type:"native",wsConstructor:a.WebSocket};const o=typeof global<"u"?global:void 0;if(o&&typeof o.WebSocket<"u")return{type:"native",wsConstructor:o.WebSocket};if(typeof globalThis<"u"&&typeof a.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&a.EdgeRuntime||typeof navigator<"u"&&(!((t=navigator.userAgent)===null||t===void 0)&&t.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};const r=globalThis.process;if(r){const n=r.versions;if(n&&n.node)return{type:"unsupported",error:"Node.js detected but native WebSocket not found.",workaround:"Ensure you are running Node.js 22+ or provide a WebSocket implementation via the transport option."}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const t=this.detectEnvironment();if(t.wsConstructor)return t.wsConstructor;let a=t.error||"WebSocket not supported in this environment.";throw t.workaround&&(a+=` 430 431Suggested solution: ${t.workaround}`),new Error(a)}static isWebSocketSupported(){try{return this.detectEnvironment().type==="native"}catch{return!1}}}const wW="2.117.2",CW=`realtime-js/${wW}`,PW="1.0.0",i6="2.0.0",SW=i6,RW=1e4,jW=15e3,NW=1e4,AW=100,ss={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},l6={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave",access_token:"access_token"},Ty={connecting:"connecting",open:"open",closing:"closing",closed:"closed"};class EW{constructor(t){this.HEADER_LENGTH=1,this.USER_BROADCAST_PUSH_META_LENGTH=6,this.KINDS={userBroadcastPush:3,userBroadcast:4},this.BINARY_ENCODING=0,this.JSON_ENCODING=1,this.BROADCAST_EVENT="broadcast",this.allowedMetadataKeys=[],this.allowedMetadataKeys=t??[]}encode(t,a){if(t.event===this.BROADCAST_EVENT&&!(t.payload instanceof ArrayBuffer)&&typeof t.payload.event=="string")return a(this._binaryEncodeUserBroadcastPush(t));let o=[t.join_ref,t.ref,t.topic,t.event,t.payload];return a(JSON.stringify(o))}_binaryEncodeUserBroadcastPush(t){var a;return this._isArrayBuffer((a=t.payload)===null||a===void 0?void 0:a.payload)?this._encodeBinaryUserBroadcastPush(t):this._encodeJsonUserBroadcastPush(t)}_encodeBinaryUserBroadcastPush(t){var a,o;const r=(o=(a=t.payload)===null||a===void 0?void 0:a.payload)!==null&&o!==void 0?o:new ArrayBuffer(0);return this._encodeUserBroadcastPush(t,this.BINARY_ENCODING,r)}_encodeJsonUserBroadcastPush(t){var a,o;const r=(o=(a=t.payload)===null||a===void 0?void 0:a.payload)!==null&&o!==void 0?o:{},i=new TextEncoder().encode(JSON.stringify(r)).buffer;return this._encodeUserBroadcastPush(t,this.JSON_ENCODING,i)}_encodeUserBroadcastPush(t,a,o){var r,n;const i=new TextEncoder,l=i.encode(t.topic),c=i.encode((r=t.ref)!==null&&r!==void 0?r:""),d=i.encode((n=t.join_ref)!==null&&n!==void 0?n:""),u=i.encode(t.payload.event),m=this.allowedMetadataKeys?this._pick(t.payload,this.allowedMetadataKeys):{},h=i.encode(Object.keys(m).length===0?"":JSON.stringify(m));if(d.length>255)throw new Error(`joinRef length ${d.length} exceeds maximum of 255`);if(c.length>255)throw new Error(`ref length ${c.length} exceeds maximum of 255`);if(l.length>255)throw new Error(`topic length ${l.length} exceeds maximum of 255`);if(u.length>255)throw new Error(`userEvent length ${u.length} exceeds maximum of 255`);if(h.length>255)throw new Error(`metadata length ${h.length} exceeds maximum of 255`);const p=this.USER_BROADCAST_PUSH_META_LENGTH+d.length+c.length+l.length+u.length+h.length,f=new ArrayBuffer(this.HEADER_LENGTH+p),g=new DataView(f),b=new Uint8Array(f);let v=0;g.setUint8(v++,this.KINDS.userBroadcastPush),g.setUint8(v++,d.length),g.setUint8(v++,c.length),g.setUint8(v++,l.length),g.setUint8(v++,u.length),g.setUint8(v++,h.length),g.setUint8(v++,a),b.set(d,v),v+=d.length,b.set(c,v),v+=c.length,b.set(l,v),v+=l.length,b.set(u,v),v+=u.length,b.set(h,v),v+=h.length;var y=new Uint8Array(f.byteLength+o.byteLength);return y.set(new Uint8Array(f),0),y.set(new Uint8Array(o),f.byteLength),y.buffer}decode(t,a){if(this._isArrayBuffer(t)){let o=this._binaryDecode(t);return a(o)}if(typeof t=="string"){const o=JSON.parse(t),[r,n,i,l,c]=o;return a({join_ref:r,ref:n,topic:i,event:l,payload:c})}return a({})}_binaryDecode(t){const a=new DataView(t),o=a.getUint8(0),r=new TextDecoder;switch(o){case this.KINDS.userBroadcast:return this._decodeUserBroadcast(t,a,r)}}_decodeUserBroadcast(t,a,o){const r=a.getUint8(1),n=a.getUint8(2),i=a.getUint8(3),l=a.getUint8(4);let c=this.HEADER_LENGTH+4;const d=o.decode(t.slice(c,c+r));c=c+r;const u=o.decode(t.slice(c,c+n));c=c+n;const m=o.decode(t.slice(c,c+i));c=c+i;const h=t.slice(c,t.byteLength),p=l===this.JSON_ENCODING?JSON.parse(o.decode(h)):h,f={type:this.BROADCAST_EVENT,event:u,payload:p};return i>0&&(f.meta=JSON.parse(m)),{join_ref:null,ref:null,topic:d,event:this.BROADCAST_EVENT,payload:f}}_isArrayBuffer(t){var a;return t instanceof ArrayBuffer||((a=t==null?void 0:t.constructor)===null||a===void 0?void 0:a.name)==="ArrayBuffer"}_pick(t,a){return!t||typeof t!="object"?{}:Object.fromEntries(Object.entries(t).filter(([o])=>a.includes(o)))}}var Pt;(function(e){e.abstime="abstime",e.bool="bool",e.date="date",e.daterange="daterange",e.float4="float4",e.float8="float8",e.int2="int2",e.int4="int4",e.int4range="int4range",e.int8="int8",e.int8range="int8range",e.json="json",e.jsonb="jsonb",e.money="money",e.numeric="numeric",e.oid="oid",e.reltime="reltime",e.text="text",e.time="time",e.timestamp="timestamp",e.timestamptz="timestamptz",e.timetz="timetz",e.tsrange="tsrange",e.tstzrange="tstzrange"})(Pt||(Pt={}));const CR=(e,t,a={})=>{var o;const r=(o=a.skipTypes)!==null&&o!==void 0?o:[];return t?Object.keys(t).reduce((n,i)=>(n[i]=_W(i,e,t,r),n),{}):{}},_W=(e,t,a,o)=>{const r=t.find(l=>
vendor: 5,530 bytes, line 431
431l.name===e),n=r==null?void 0:r.type,i=a[e];return n&&!o.includes(n)?c6(n,i):$y(i)},c6=(e,t)=>{if(e.charAt(0)==="_"){const a=e.slice(1,e.length);return qW(t,a)}switch(e){case Pt.bool:return TW(t);case Pt.float4:case Pt.float8:case Pt.int2:case Pt.int4:case Pt.int8:case Pt.numeric:case Pt.oid:return $W(t);case Pt.json:case Pt.jsonb:return OW(t);case Pt.timestamp:return DW(t);case Pt.abstime:case Pt.date:case Pt.daterange:case Pt.int4range:case Pt.int8range:case Pt.money:case Pt.reltime:case Pt.text:case Pt.time:case Pt.timestamptz:case Pt.timetz:case Pt.tsrange:case Pt.tstzrange:return $y(t);default:return $y(t)}},$y=e=>e,TW=e=>{switch(e){case"t":return!0;case"f":return!1;default:return e}},$W=e=>{if(typeof e=="string"){const t=parseFloat(e);if(!Number.isNaN(t))return t}return e},OW=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e},qW=(e,t)=>{if(typeof e!="string")return e;const a=e.length-1,o=e[a];if(e[0]==="{"&&o==="}"){let n;const i=e.slice(1,a);try{n=JSON.parse("["+i+"]")}catch{n=i?i.split(","):[]}return n.map(l=>c6(t,l))}return e},DW=e=>typeof e=="string"?e.replace(" ","T"):e,d6=e=>{const t=new URL(e);return t.protocol=t.protocol.replace(/^ws/i,"http"),t.pathname=t.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),t.pathname===""||t.pathname==="/"?t.pathname="/api/broadcast":t.pathname=t.pathname+"/api/broadcast",t.href};var rc=e=>typeof e=="function"?e:function(){return e},IW=typeof self<"u"?self:null,Pl=typeof window<"u"?window:null,Mr=IW||Pl||globalThis,MW="2.0.0",LW=1e4,BW=1e3,VW=100,Ur={connecting:0,open:1,closing:2,closed:3},Ga={closed:"closed",errored:"errored",joined:"joined",joining:"joining",leaving:"leaving"},xn={close:"phx_close",error:"phx_error",join:"phx_join",reply:"phx_reply",leave:"phx_leave"},Oy={longpoll:"longpoll",websocket:"websocket"},FW={complete:4},qy="base64url.bearer.phx.",gp=class{constructor(e,t,a,o){this.channel=e,this.event=t,this.payload=a||function(){return{}},this.receivedResp=null,this.timeout=o,this.timeoutTimer=null,this.recHooks=[],this.sent=!1,this.ref=void 0}resend(e){this.timeout=e,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(e,t){return this.hasReceived(e)&&t(this.receivedResp.response),this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}destroy(){this.cancelRefEvent(),this.cancelTimeout()}matchReceive({status:e,response:t,_ref:a}){this.recHooks.filter(o=>o.status===e).forEach(o=>o.callback(t))}cancelRefEvent(){this.refEvent&&this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,e=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)}),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},u6=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=void 0,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}},UW=class{constructor(e,t,a){this.state=Ga.closed,this.topic=e,this.params=rc(t||{}),this.socket=a,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new gp(this,xn.join,this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new u6(()=>{this.socket.isConnected()&&this.rejoin()},this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError(()=>this.rejoinTimer.reset())),this.stateChangeRefs.push(this.socket.onOpen(()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()})),this.joinPush.receive("ok",()=>{this.state=Ga.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(o=>o.send()),this.pushBuffer=[]}),this.joinPush.receive("error",o=>{this.state=Ga.errored,this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,o),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.onClose(()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic}`),this.state=Ga.closed,this.socket.remove(this)}),this.onError(o=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,o),this.isJoining()&&this.joinPush.reset(),this.state=Ga.errored,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.joinPush.receive("timeout",()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),new gp(this,xn.leave,rc({}),this.timeout).send(),this.state=Ga.errored,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()}),this.on(xn.reply,(o,r)=>{this.trigger(this.replyEventName(r),o)})}join(e=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}
vendor: 19,019 bytes, lines 431-432
431teardown(){this.pushBuffer.forEach(e=>e.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=Ga.closed,this.bindings=[]}onClose(e){this.on(xn.close,e)}onError(e){return this.on(xn.error,t=>e(t))}on(e,t){let a=this.bindingRef++;return this.bindings.push({event:e,ref:a,callback:t}),a}off(e,t){this.bindings=this.bindings.filter(a=>!(a.event===e&&(typeof t>"u"||t===a.ref)))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,a=this.timeout){if(t=t||{},!this.joinedOnce)throw new Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let o=new gp(this,e,function(){return t},a);return this.canPush()?o.send():(o.startTimeout(),this.pushBuffer.push(o)),o}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=Ga.leaving;let t=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(xn.close,"leave")},a=new gp(this,xn.leave,rc({}),e);return a.receive("ok",()=>t()).receive("timeout",()=>t()),a.send(),this.canPush()||a.trigger("ok",{}),a}onMessage(e,t,a){return t}filterBindings(e,t,a){return!0}isMember(e,t,a,o){return this.topic!==e?!1:o&&o!==this.joinRef()?(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:a,joinRef:o}),!1):!0}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=Ga.joining,this.joinPush.resend(e))}trigger(e,t,a,o){let r=this.onMessage(e,t,a,o);if(t&&!r)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let n=this.bindings.filter(i=>i.event===e&&this.filterBindings(i,t,a));for(let i=0;i<n.length;i++)n[i].callback(r,a,o||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===Ga.closed}isErrored(){return this.state===Ga.errored}isJoined(){return this.state===Ga.joined}isJoining(){return this.state===Ga.joining}isLeaving(){return this.state===Ga.leaving}},Sf=class{static request(e,t,a,o,r,n,i){if(Mr.XDomainRequest){let l=new Mr.XDomainRequest;return this.xdomainRequest(l,e,t,o,r,n,i)}else if(Mr.XMLHttpRequest){let l=new Mr.XMLHttpRequest;return this.xhrRequest(l,e,t,a,o,r,n,i)}else{if(Mr.fetch&&Mr.AbortController)return this.fetchRequest(e,t,a,o,r,n,i);throw new Error("No suitable XMLHttpRequest implementation found")}}static fetchRequest(e,t,a,o,r,n,i){let l={method:e,headers:a,body:o},c=null;return r&&(c=new AbortController,setTimeout(()=>c.abort(),r),l.signal=c.signal),Mr.fetch(t,l).then(d=>d.text()).then(d=>this.parseJSON(d)).then(d=>i&&i(d)).catch(d=>{d.name==="AbortError"&&n?n():i&&i(null)}),c}static xdomainRequest(e,t,a,o,r,n,i){return e.timeout=r,e.open(t,a),e.onload=()=>{let l=this.parseJSON(e.responseText);i&&i(l)},n&&(e.ontimeout=n),e.onprogress=()=>{},e.send(o),e}static xhrRequest(e,t,a,o,r,n,i,l){e.open(t,a,!0),e.timeout=n;for(let[c,d]of Object.entries(o))e.setRequestHeader(c,d);return e.onerror=()=>l&&l(null),e.onreadystatechange=()=>{if(e.readyState===FW.complete&&l){let c=this.parseJSON(e.responseText);l(c)}},i&&(e.ontimeout=i),e.send(r),e}static parseJSON(e){if(!e||e==="")return null;try{return JSON.parse(e)}catch{return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let a=[];for(var o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;let r=t?`${t}[${o}]`:o,n=e[o];typeof n=="object"?a.push(this.serialize(n,r)):a.push(encodeURIComponent(r)+"="+encodeURIComponent(n))}return a.join("&")}static appendParams(e,t){if(Object.keys(t).length===0)return e;let a=e.match(/\?/)?"&":"?";return`${e}${a}${this.serialize(t)}`}},GW=e=>{let t="",a=new Uint8Array(e),o=a.byteLength;for(let r=0;r<o;r++)t+=String.fromCharCode(a[r]);return btoa(t)},pl=class{constructor(e,t){t&&t.length===2&&t[1].startsWith(qy)&&(this.authToken=atob(t[1].slice(qy.length))),this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=Ur.connecting,setTimeout(()=>this.poll(),0)}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/"+Oy.websocket),"$1/"+Oy.longpoll)}endpointURL(){return Sf.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,a){this.close(e,t,a),this.readyState=Ur.connecting}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return this.readyState===Ur.open||this.readyState===Ur.connecting}poll(){const e={Accept:"application/json"};this.authToken&&(e["X-Phoenix-AuthToken"]=this.authToken),this.ajax("GET",e,null,()=>this.ontimeout(),t=>{if(t){var{status:a,token:o,messages:r}=t;if(a===410&&this.token!==null){this.onerror(410),this.closeAndRetry(3410,"session_gone",!1);return}this.token=o}else a=0;switch(a){case 200:r.forEach(n=>{setTimeout(()=>this.onmessage({data:n}),0)}),this.poll();break;case 204:this.poll();break;case 410:this.readyState=Ur.open,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${a}`)}})}send(e){typeof e!="string"&&(e=GW(e)),this.currentBatch?this.currentBatch.push(e):this.awaitingBatchAck?this.batchBuffer.push(e):(this.currentBatch=[e],this.currentBatchTimer=setTimeout(()=>{this.batchSend(this.currentBatch),this.currentBatch=null},0))}batchSend(e,t=0){this.awaitingBatchAck=!0;const a=t+VW,o=e.slice(t,a);this.ajax("POST",{"Content-Type":"application/x-ndjson"},o.join(` 432`),()=>this.onerror("timeout"),r=>{!r||r.status!==200?(this.awaitingBatchAck=!1,this.onerror(r&&r.status),this.closeAndRetry(1011,"internal server error",!1)):a<e.length?this.batchSend(e,a):this.batchBuffer.length>0?(this.batchSend(this.batchBuffer),this.batchBuffer=[]):this.awaitingBatchAck=!1})}close(e,t,a){for(let r of this.reqs)r.abort();this.readyState=Ur.closed;let o=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:a});this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,typeof CloseEvent<"u"?this.onclose(new CloseEvent("close",o)):this.onclose(o)}ajax(e,t,a,o,r){let n,i=()=>{this.reqs.delete(n),o()};n=Sf.request(e,this.endpointURL(),t,a,this.timeout,i,l=>{this.reqs.delete(n),this.isActive()&&r(l)}),this.reqs.add(n)}},zW=class Vd{constructor(t,a={}){let o=a.events||{state:"presence_state",diff:"presence_diff"};this.state=Object.create(null),this.pendingDiffs=[],this.channel=t,this.joinRef=null,this.caller={onJoin:function(){},onLeave:function(){},onSync:function(){}},this.channel.on(o.state,r=>{let{onJoin:n,onLeave:i,onSync:l}=this.caller;this.joinRef=this.channel.joinRef(),this.state=Vd.syncState(this.state,r,n,i),this.pendingDiffs.forEach(c=>{this.state=Vd.syncDiff(this.state,c,n,i)}),this.pendingDiffs=[],l()}),this.channel.on(o.diff,r=>{let{onJoin:n,onLeave:i,onSync:l}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=Vd.syncDiff(this.state,r,n,i),l())})}onJoin(t){this.caller.onJoin=t}onLeave(t){this.caller.onLeave=t}onSync(t){this.caller.onSync=t}list(t){return Vd.list(this.state,t)}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel.joinRef()}static syncState(t,a,o,r){let n=this.toNullProtoObj(this.clone(t));a=this.toNullProtoObj(a);let i=Object.create(null),l=Object.create(null);return this.map(n,(c,d)=>{a[c]||(l[c]=d)}),this.map(a,(c,d)=>{let u=n[c];if(u){let m=d.metas.map(g=>g.phx_ref),h=u.metas.map(g=>g.phx_ref),p=d.metas.filter(g=>h.indexOf(g.phx_ref)<0),f=u.metas.filter(g=>m.indexOf(g.phx_ref)<0);p.length>0&&(i[c]=d,i[c].metas=p),f.length>0&&(l[c]=this.clone(u),l[c].metas=f)}else i[c]=d}),this.syncDiff(n,{joins:i,leaves:l},o,r)}static syncDiff(t,a,o,r){t=this.toNullProtoObj(t);let{joins:n,leaves:i}=this.clone(a);return o||(o=function(){}),r||(r=function(){}),this.map(n,(l,c)=>{let d=t[l];if(t[l]=this.clone(c),d){let u=t[l].metas.map(h=>h.phx_ref),m=d.metas.filter(h=>u.indexOf(h.phx_ref)<0);t[l].metas.unshift(...m)}o(l,d,c)}),this.map(i,(l,c)=>{let d=t[l];if(!d)return;let u=c.metas.map(m=>m.phx_ref);d.metas=d.metas.filter(m=>u.indexOf(m.phx_ref)<0),r(l,d,c),d.metas.length===0&&delete t[l]}),t}static list(t,a){return a||(a=function(o,r){return r}),this.map(t,(o,r)=>a(o,r))}static map(t,a){return Object.getOwnPropertyNames(t).map(o=>a(o,t[o]))}static toNullProtoObj(t){if(Object.getPrototypeOf(t)===null)return t;let a=Object.create(null);return Object.getOwnPropertyNames(t).forEach(o=>{a[o]=t[o]}),a}static clone(t){return JSON.parse(JSON.stringify(t))}},vp={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));{let a=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(a))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));{let[a,o,r,n,i]=JSON.parse(e);return t({join_ref:a,ref:o,topic:r,event:n,payload:i})}},binaryEncode(e){let{join_ref:t,ref:a,event:o,topic:r,payload:n}=e,i=new TextEncoder,l=i.encode(t),c=i.encode(a),d=i.encode(r),u=i.encode(o);this.assertFieldSize(l.byteLength,"join_ref"),this.assertFieldSize(c.byteLength,"ref"),this.assertFieldSize(d.byteLength,"topic"),this.assertFieldSize(u.byteLength,"event");let m=this.META_LENGTH+l.byteLength+c.byteLength+d.byteLength+u.byteLength,h=new ArrayBuffer(this.HEADER_LENGTH+m),p=new Uint8Array(h),f=new DataView(h),g=0;f.setUint8(g++,this.KINDS.push),f.setUint8(g++,l.byteLength),f.setUint8(g++,c.byteLength),f.setUint8(g++,d.byteLength),f.setUint8(g++,u.byteLength),p.set(l,g),g+=l.byteLength,p.set(c,g),g+=c.byteLength,p.set(d,g),g+=d.byteLength,p.set(u,g),g+=u.byteLength;var b=new Uint8Array(h.byteLength+n.byteLength);return b.set(p,0),b.set(new Uint8Array(n),h.byteLength),b.buffer},assertFieldSize(e,t){if(e>255)throw new Error(`unable to convert ${t} to binary: must be less than or equal to 255 bytes, but is ${e} bytes`)},binaryDecode(e){let t=new DataView(e),a=t.getUint8(0),o=new TextDecoder;switch(a){case this.KINDS.push:return this.decodePush(e,t,o);case this.KINDS.reply:return this.decodeReply(e,t,o);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,o)}},decodePush(e,t,a){let o=t.getUint8(1),r=t.getUint8(2),n=t.getUint8(3),i=this.HEADER_LENGTH+this.META_LENGTH-1,l=a.decode(e.slice(i,i+o));i=i+o;let c=a.decode(e.slice(i,i+r));i=i+r;let d=a.decode(e.slice(i,i+n));i=i+n;let u=e.slice(i,e.byteLength);return{join_ref:l,ref:null,topic:c,event:d,payload:u}},decodeReply(e,t,a){let o=t.getUint8(1),r=t.getUint8(2),n=t.getUint8(3),i=t.getUint8(4),l=this.HEADER_LENGTH+this.META_LENGTH,c=a.decode(e.slice(l,l+o));l=l+o;let d=a.decode(e.slice(l,l+r));l=l+r;let u=a.decode(e.slice(l,l+n));l=l+n;let m=a.decode(e.slice(l,l+i));l=l+i;let h=e.slice(l,e.byteLength),p={status:m,response:h};return{join_ref:c,ref:d,topic:u,event:xn.reply,payload:p}},decodeBroadcast(e,t,a){let o=t.getUint8(1),r=t.getUint8(2),n=this.HEADER_LENGTH+2,i=a.decode(e.slice(n,n+o));n=n+o;let l=a.decode(e.slice(n,n+r));n=n+r;let c=e.slice(n,e.byteLength);return{join_ref:null,ref:null,topic:i,event:l,payload:c}}},HW=class{constructor(e,t={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.fallbackRef=null,this.timeout=t.timeout||LW,this.transport=t.transport||Mr.WebSocket||pl,this.conn=void 0,this.primaryPassedHealthCheck=!1,this.longPollFallbackMs=t.longPollFallbackMs,this.fallbackTimer=null;let a=null;try{a=Mr&&Mr.sessionStorage}catch{}this.sessionStore=t.sessionStorage||a,this.establishedConnections=0,this.defaultEncoder=vp.encode.bind(vp),this.defaultDecoder=vp.decode.bind(vp),this.closeWasClean=!0,this.disconnecting=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.pageHidden=!1,this.encode=void 0,this.decode=void 0,this.transport!==pl?(this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let o=null;Pl&&Pl.addEventListener&&(Pl.addEventListener("pagehide",r=>{this.conn&&(this.disconnect(),o=this.connectClock)}),Pl.addEventListener("pageshow",r=>{o===this.connectClock&&(o=null,this.connect())}),Pl.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"?this.pageHidden=!0:(this.pageHidden=!1,!this.isConnected()&&!this.closeWasClean&&this.teardown(()=>this.connect()))})),this.heartbeatIntervalMs=t.heartbeatIntervalMs||3e4,this.autoSendHeartbeat=t.autoSendHeartbeat??!0,this.heartbeatCallback=t.heartbeatCallback??(()=>{}),this.rejoinAfterMs=r=>t.rejoinAfterMs?t.rejoinAfterMs(r):[1e3,2e3,5e3][r-1]||1e4,this.reconnectAfterMs=r=>t.reconnectAfterMs?t.reconnectAfterMs(r):[10,50,100,150,200,250,500,1e3,2e3][r-1]||5e3,this.logger=t.logger||null,!this.logger&&t.debug&&(this.logger=(r,n,i)=>{console.log(`${r}: ${n}`,i)}),this.longpollerTimeout=t.longpollerTimeout||2e4,this.params=rc(t.params||{}),this.endPoint=`${e}/${Oy.websocket}`,this.vsn=t.vsn||MW,this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.heartbeatSentAt=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new u6(()=>{if(this.pageHidden){this.log("Not reconnecting as page is hidden!"),this.teardown();return}this.teardown(async()=>{t.beforeReconnect&&await t.beforeReconnect(),this.connect()})},this.reconnectAfterMs),this.authToken=t.authToken&&rc(t.authToken)}getLongPollTransport(){return pl}replaceTransport(e){this.connectClock++,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.conn&&(this.conn.close(),this.conn=null),this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=Sf.appendParams(Sf.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return e.charAt(0)!=="/"?e:e.charAt(1)==="/"?`${this.protocol()}:${e}`:`${this.protocol()}://${location.host}${e}`}disconnect(e,t,a){this.connectClock++,this.disconnecting=!0,this.closeWasClean=!0,clearTimeout(this.fallbackTimer),this.reconnectTimer.reset(),this.teardown(()=>{this.disconnecting=!1,e&&e()},t,a)}connect(e){e&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=rc(e)),!(this.conn&&!this.disconnecting)&&(this.longPollFallbackMs&&this.transport!==pl?this.connectWithFallback(pl,this.longPollFallbackMs):this.transportConnect())}log(e,t,a){this.logger&&this.logger(e,t,a)}hasLogger(){return this.logger!==null}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}onHeartbeat(e){this.heartbeatCallback=e}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),a=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let o=this.onMessage(r=>{r.ref===t&&(this.off([o]),e(Date.now()-a))});return!0}transportName(e){switch(e){case pl:return"LongPoll";default:return e.name}}transportConnect(){this.connectClock++,this.closeWasClean=!1;let e;this.authToken&&(e=["phoenix",`${qy}${btoa(this.authToken()).replace(/=/g,"")}`]),this.conn=new this.transport(this.endPointURL(),e),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=t=>this.onConnError(t),this.conn.onmessage=t=>this.onConnMessage(t),this.conn.onclose=t=>this.onConnClose(t)}getSession(e){return this.sessionStore&&this.sessionStore.getItem(e)}storeSession(e,t){this.sessionStore&&this.sessionStore.setItem(e,t)}connectWithFallback(e,t=2500){clearTimeout(this.fallbackTimer);let a=!1,o=!0,r,n,i=this.transportName(e),l=c=>{this.log("transport",`falling back to ${i}...`,c),this.off([r,n]),o=!1,this.replaceTransport(e),this.transportConnect()};if(this.getSession(`phx:fallback:${i}`))return l("memorized");this.fallbackTimer=setTimeout(l,t),n=this.onError(c=>{this.log("transport","error",c),o&&!a&&(clearTimeout(this.fallbackTimer),l(c))}),this.fallbackRef&&this.off([this.fallbackRef]),this.fallbackRef=this.onOpen(()=>{if(a=!0,!o){let c=this.transportName(e);return this.primaryPassedHealthCheck||this.storeSession(`phx:fallback:${c}`,"true"),this.log("transport",`established ${c} fallback`)}clearTimeout(this.fallbackTimer),this.fallbackTimer=setTimeout(l,t),this.ping(c=>{this.log("transport","connected to primary after",c),this.primaryPassedHealthCheck=!0,clearTimeout(this.fallbackTimer)})}),this.transportConnect()}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.disconnecting=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.autoSendHeartbeat&&this.resetHeartbeat(),this.triggerStateCallbacks("open")}heartbeatTimeout(){if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(e){this.log("error","error in heartbeat callback",e)}this.triggerChanError(new Error("heartbeat timeout")),this.closeWasClean=!1,this.teardown(()=>this.reconnectTimer.scheduleTimeout(),BW,"heartbeat timeout")}}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}teardown(e,t,a){if(!this.conn)return e&&e();const o=this.conn;this.waitForBufferDone(o,()=>{t?o.close(t,a||""):o.close(),this.waitForSocketClosed(o,()=>{this.conn===o&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),e&&e()})})}waitForBufferDone(e,t,a=1){if(a===5||!e.bufferedAmount){t();return}setTimeout(()=>{this.waitForBufferDone(e,t,a+1)},150*a)}waitForSocketClosed(e,t,a=1){if(a===5||e.readyState===Ur.closed){t();return}setTimeout(()=>{this.waitForSocketClosed(e,t,a+1)},150*a)}onConnClose(e){this.conn&&(this.conn.onclose=()=>{}),this.hasLogger()&&this.log("transport","close",e),this.triggerChanError(e),this.clearHeartbeats(),this.closeWasClean||this.reconnectTimer.scheduleTimeout(),this.triggerStateCallbacks("close",e)}onConnError(e){this.hasLogger()&&this.log("transport","error",e);let t=this.transport,a=this.establishedConnections;this.triggerStateCallbacks("error",e,t,a),(t===this.transport||a>0)&&this.triggerChanError(e)}
vendor: 4,209 bytes, line 432
432triggerChanError(e){this.channels.forEach(t=>{t.isErrored()||t.isLeaving()||t.isClosed()||t.trigger(xn.error,e)})}connectionState(){switch(this.conn&&this.conn.readyState){case Ur.connecting:return"connecting";case Ur.open:return"open";case Ur.closing:return"closing";default:return"closed"}}isConnected(){return this.connectionState()==="open"}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter(t=>t!==e)}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter(([a])=>e.indexOf(a)===-1)}channel(e,t={}){let a=new UW(e,t,this);return this.channels.push(a),a}push(e){if(this.hasLogger()){let{topic:t,event:a,payload:o,ref:r,join_ref:n}=e;this.log("push",`${t} ${a} (${n}, ${r})`,o)}this.isConnected()?this.encode(e,t=>this.conn.send(t)):this.sendBuffer.push(()=>this.encode(e,t=>this.conn.send(t)))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}sendHeartbeat(){if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(e){this.log("error","error in heartbeat callback",e)}return}if(this.pendingHeartbeatRef){this.heartbeatTimeout();return}this.pendingHeartbeatRef=this.makeRef(),this.heartbeatSentAt=Date.now(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(e){this.log("error","error in heartbeat callback",e)}this.heartbeatTimeoutTimer=setTimeout(()=>this.heartbeatTimeout(),this.heartbeatIntervalMs)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}onConnMessage(e){this.decode(e.data,t=>{let{topic:a,event:o,payload:r,ref:n,join_ref:i}=t;if(n&&n===this.pendingHeartbeatRef){const l=this.heartbeatSentAt?Date.now()-this.heartbeatSentAt:void 0;this.clearHeartbeats();try{this.heartbeatCallback(r.status==="ok"?"ok":"error",l)}catch(c){this.log("error","error in heartbeat callback",c)}this.pendingHeartbeatRef=null,this.heartbeatSentAt=null,this.autoSendHeartbeat&&(this.heartbeatTimer=setTimeout(()=>this.sendHeartbeat(),this.heartbeatIntervalMs))}this.hasLogger()&&this.log("receive",`${r.status||""} ${a} ${o} ${n&&"("+n+")"||""}`.trim(),r);for(let l=0;l<this.channels.length;l++){const c=this.channels[l];c.isMember(a,o,r,i)&&c.trigger(o,r,n,i)}this.triggerStateCallbacks("message",t)})}triggerStateCallbacks(e,...t){try{this.stateChangeCallbacks[e].forEach(([a,o])=>{try{o(...t)}catch(r){this.log("error",`error in ${e} callback`,r)}})}catch(a){this.log("error",`error triggering ${e} callbacks`,a)}}leaveOpenTopic(e){let t=this.channels.find(a=>a.topic===e&&(a.isJoined()||a.isJoining()));t&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${e}"`),t.leave())}};class du{constructor(t,a){const o=QW(a);this.presence=new zW(t.getChannel(),o),this.presence.onJoin((r,n,i)=>{const l=du.onJoinPayload(r,n,i);t.getChannel().trigger("presence",l)}),this.presence.onLeave((r,n,i)=>{const l=du.onLeavePayload(r,n,i);t.getChannel().trigger("presence",l)}),this.presence.onSync(()=>{t.getChannel().trigger("presence",{event:"sync"})})}get state(){return du.transformState(this.presence.state)}static transformState(t){return t=KW(t),Object.getOwnPropertyNames(t).reduce((a,o)=>{const r=t[o];return a[o]=yh(r),a},{})}static onJoinPayload(t,a,o){const r=PR(a),n=yh(o);return{event:"join",key:t,currentPresences:r,newPresences:n}}static onLeavePayload(t,a,o){const r=PR(a),n=yh(o);return{event:"leave",key:t,currentPresences:r,leftPresences:n}}}function yh(e){return e.metas.map(t=>{const a=Object.getOwnPropertyDescriptors(t),o=Object.defineProperties({},a);return o.presence_ref=o.phx_ref,delete o.phx_ref,delete o.phx_ref_prev,o})}function KW(e){return JSON.parse(JSON.stringify(e))}function QW(e){return(e==null?void 0:e.events)&&{events:e.events}}function PR(e){return e!=null&&e.metas?yh(e):[]}var SR;(function(e){e.SYNC="sync",e.JOIN="join",e.LEAVE="leave"})(SR||(SR={}));class WW{get state(){return this.presenceAdapter.state}constructor(t,a){this.channel=t,this.presenceAdapter=new du(this.channel.channelAdapter,a)}}function JW(e){if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);
432if(e&&typeof e=="object"){const t=e;if(typeof t.code=="number"){const a=typeof t.reason=="string"&&t.reason?` (${t.reason})`:"";return new Error(`socket closed: ${t.code}${a}`,{cause:e})}return new Error("channel error: transport failure",{cause:e})}return new Error("channel error: connection lost")}class XW{constructor(t,a,o){const r=YW(o);this.channel=t.getSocket().channel(a,r),this.socket=t}get state(){return this.channel.state}set state(t){this.channel.state=t}get joinedOnce(){return this.channel.joinedOnce}get joinPush(){return this.channel.joinPush}get rejoinTimer(){return this.channel.rejoinTimer}on(t,a){return this.channel.on(t,a)}off(t,a){this.channel.off(t,a)}subscribe(t){return this.channel.join(t)}unsubscribe(t){return this.channel.leave(t)}teardown(){this.channel.teardown()}onClose(t){this.channel.onClose(t)}onError(t){return this.channel.onError(t)}push(t,a,o){let r;try{r=this.channel.push(t,a,o)}catch{throw new Error(`tried to push '${t}' to '${this.channel.topic}' before joining. Use channel.subscribe() before pushing events`)}if(this.channel.pushBuffer.length>AW){const n=this.channel.pushBuffer.shift();n.cancelTimeout(),this.socket.log("channel",`discarded push due to buffer overflow: ${n.event}`,n.payload())}return r}updateJoinPayload(t){const a=this.channel.joinPush.payload();this.channel.joinPush.payload=()=>Object.assign(Object.assign({},a),t)}canPush(){return this.socket.isConnected()&&this.state===ss.joined}isJoined(){return this.state===ss.joined}isJoining(){return this.state===ss.joining}isClosed(){return this.state===ss.closed}isLeaving(){return this.state===ss.leaving}updateFilterBindings(t){this.channel.filterBindings=t}updatePayloadTransform(t){this.channel.onMessage=t}getChannel(){return this.channel}}function YW(e){return{config:Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},e.config)}}const ZW=/[,()"\\]/,eJ=e=>ZW.test(e)||e!==e.trim(),tJ=e=>`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`,RR=e=>{const t=e===null?"null":String(e);return eJ(t)?tJ(t):t},aJ=e=>e===null?"null":String(e),oJ=(e,t)=>{if(e==="in"){const a=Array.isArray(t)?t:[t];if(a.length===0)throw new Error("Realtime `in` filter requires at least one value.");return`in.(${Array.from(new Set(a)).map(r=>RR(r)).join(",")})`}return e==="is"?`is.${aJ(t)}`:`${e}.${RR(t)}`};class rJ{constructor(){this.filters=[]}add(t,a,o,r=!1){const n=r?"not.":"";return this.filters.push(`${t}=${n}${oJ(a,o)}`),this}eq(t,a){return this.add(t,"eq",a)}neq(t,a){return this.add(t,"neq",a)}gt(t,a){return this.add(t,"gt",a)}gte(t,a){return this.add(t,"gte",a)}lt(t,a){return this.add(t,"lt",a)}lte(t,a){return this.add(t,"lte",a)}in(t,a){return this.add(t,"in",a)}like(t,a){return this.add(t,"like",a)}ilike(t,a){return this.add(t,"ilike",a)}match(t,a){return this.add(t,"match",a)}imatch(t,a){return this.add(t,"imatch",a)}is(t,a){return this.add(t,"is",a)}isDistinct(t,a){return this.add(t,"isdistinct",a)}not(t,a,o){return this.add(t,a,o,!0)}build(){return this.filters.join(",")}toString(){return this.build()}}var jR;(function(e){e.ALL="*",e.INSERT="INSERT",e.UPDATE="UPDATE",e.DELETE="DELETE"})(jR||(jR={}));var ui;(function(e){e.BROADCAST="broadcast",e.PRESENCE="presence",e.POSTGRES_CHANGES="postgres_changes",e.SYSTEM="system"})(ui||(ui={}));var bn;(function(e){e.SUBSCRIBED="SUBSCRIBED",e.TIMED_OUT="TIMED_OUT",e.CLOSED="CLOSED",e.CHANNEL_ERROR="CHANNEL_ERROR"})(bn||(bn={}));class yn{get state(){return this.channelAdapter.state}set state(t){this.channelAdapter.state=t}get joinedOnce(){return this.channelAdapter.joinedOnce}get timeout(){return this.socket.timeout}get joinPush(){return this.channelAdapter.joinPush}get rejoinTimer(){return this.channelAdapter.rejoinTimer}constructor(t,a={config:{}},o){var r,n;if(this.topic=t,this.params=a,this.socket=o,this.bindings={},this.subTopic=t.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},a.config),this.channelAdapter=new XW(this.socket.socketAdapter,t,this.params),this.presence=new WW(this),this._onClose(()=>{this.socket._remove(this)}),this._updateFilterTransform(),this.broadcastEndpointURL=d6(this.socket.socketAdapter.endPointURL()),this.private=this.params.config.private||!1,!this.private&&(!((n=(r=this.params.config)===null||r===void 0?void 0:r.broadcast)===null||n===void 0)&&n.replay))throw new Error(`tried to use replay on public channel '${this.topic}'. It must be a private channel.`)}subscribe(t,a=this.timeout){var o,r,n,i;if(this.socket.isConnected()||this.socket.connect(),this.channelAdapter.isClosed()){const{config:{broadcast:l,presence:c,private:d,postgres_changes_options:u}}=this.params,m=(r=(o=this.bindings.postgres_changes)===null||o===void 0?void 0:o.map(b=>b.filter))!==null&&r!==void 0?r:[],h=!!this.bindings[ui.PRESENCE]&&this.bindings[ui.PRESENCE].length>0||((n=this.params.config.presence)===null||n===void 0?void 0:n.enabled)===!0,p={},f=Object.assign({broadcast:l,presence:Object.assign(Object.assign({},c),{enabled:h}),postgres_changes:m,private:d},u?{postgres_changes_options:u}:{});this.socket.accessTokenValue&&(p.access_token=this.socket.accessTokenValue),this._onError(b=>{t==null||t(bn.CHANNEL_ERROR,JW(b))}),this._onClose(()=>t==null?void 0:t(bn.CLOSED)),this.updateJoinPayload(Object.assign({config:f},p)),this._updateFilterMessage();const g=u!=null&&u.wait&&m.length>0?Math.max(a,((i=u.timeout)!==null&&i!==void 0?i:jW)+NW):a;this.channelAdapter.subscribe(g).receive("ok",async({postgres_changes:b})=>{if(this.socket._isManualToken()||this.socket.setAuth(),b===void 0){t==null||t(bn.SUBSCRIBED);return}this._updatePostgresBindings(b,t)}).receive("error",b=>{this.state=ss.errored;const v=Object.values(b).join(", ")||"error";t==null||t(bn.CHANNEL_ERROR,new Error(v,{cause:b}))}).receive("timeout",()=>{t==null||t(bn.TIMED_OUT)})}return this}_updatePostgresBindings(t,a){var o;const r=this.bindings.postgres_changes,n=(o=r==null?void 0:r.length)!==null&&o!==void 0?o:0,i=[];for(let l=0;l<n;l++){const c=r[l],{filter:{event:d,schema:u,table:m,filter:h}}=c,p=t&&t[l];if(p&&p.event===d&&yn.isFilterValueEqual(p.schema,u)&&yn.isFilterValueEqual(p.table,m)&&yn.isFilterValueEqual(p.filter,h))i.push(Object.assign(Object.assign({},c),{id:p.id}));
432else{this.unsubscribe(),this.state=ss.errored,a==null||a(bn.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=i,this.state!=ss.errored&&a&&a(bn.SUBSCRIBED)}presenceState(){return this.presence.state}async track(t,a={}){return await this.send({type:"presence",event:"track",payload:t},a)}async untrack(t={}){return await this.send({type:"presence",event:"untrack"},t)}on(t,a,o){const r=this.channelAdapter.isJoined()||this.channelAdapter.isJoining(),n=t===ui.PRESENCE||t===ui.POSTGRES_CHANGES;if(r&&n)throw this.socket.log("channel",`cannot add \`${t}\` callbacks for ${this.topic} after \`subscribe()\`.`),new Error(`cannot add \`${t}\` callbacks for ${this.topic} after \`subscribe()\`.`);return this._on(t,a,o)}async httpSend(t,a,o={}){var r;if(a==null)return Promise.reject(new Error("Payload is required for httpSend()"));const n=a instanceof ArrayBuffer||ArrayBuffer.isView(a),i={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":n?"application/octet-stream":"application/json"};this.socket.accessTokenValue&&(i.Authorization=`Bearer ${this.socket.accessTokenValue}`);const l=new URL(this.broadcastEndpointURL);l.pathname+=`/${encodeURIComponent(this.subTopic)}/events/${encodeURIComponent(t)}`,this.private&&l.searchParams.set("private","true");const c={method:"POST",headers:i,body:n?a:JSON.stringify(a)},d=await this._fetchWithTimeout(l.toString(),c,(r=o.timeout)!==null&&r!==void 0?r:this.timeout);if(d.status===202)return{success:!0};if(d.status===404)return Promise.reject(new Error("httpSend() requires Realtime server v2.97.0 or newer; the endpoint returned 404. Update your Supabase CLI to a recent version, or upgrade the Realtime server in your self-hosted setup. See https://github.com/supabase/supabase-js/blob/master/packages/core/realtime-js/migrations/httpsend-server-version.md"));let u=d.statusText;try{const m=await d.json();u=m.error||m.message||u}catch{}return Promise.reject(new Error(u))}async send(t,a={}){var o,r;if(!this.channelAdapter.canPush()&&t.type==="broadcast"){const n="Realtime send() is automatically falling back to REST API. This behavior will be deprecated
432in the future. Please use httpSend() explicitly for REST delivery.";this.socket.hasLogger()?this.socket.log("channel",n):console.warn(n);const{event:i,payload:l}=t,c={apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"};this.socket.accessTokenValue&&(c.Authorization=`Bearer ${this.socket.accessTokenValue}`);const d={method:"POST",headers:c,body:JSON.stringify({messages:[{topic:this.subTopic,event:i,payload:l,private:this.private}]})};try{const u=await this._fetchWithTimeout(this.broadcastEndpointURL,d,(o=a.timeout)!==null&&o!==void 0?o:this.timeout);return await((r=u.body)===null||r===void 0?void 0:r.cancel()),u.ok?"ok":"error"}catch(u){return u instanceof Error&&u.name==="AbortError"?"timed out":"error"}}else return new Promise(n=>{var i,l,c;const d=this.channelAdapter.push(t.type,t,a.timeout||this.timeout);t.type==="broadcast"&&!(!((c=(l=(i=this.params)===null||i===void 0?void 0:i.config)===null||l===void 0?void 0:l.broadcast)===null||c===void 0)&&c.ack)&&n("ok"),d.receive("ok",()=>n("ok")),d.receive("error",()=>n("error")),d.receive("timeout",()=>n("timed out"))})}updateJoinPayload(t){this.channelAdapter.updateJoinPayload(t)}async unsubscribe(t=this.timeout){return new Promise(a=>{this.channelAdapter.unsubscribe(t).receive("ok",()=>a("ok")).receive("timeout",()=>a("timed out")).receive("error",()=>a("error"))})}teardown(){this.channelAdapter.teardown()}async _fetchWithTimeout(t,a,o){const r=new AbortController,n=setTimeout(()=>r.abort(),o),i=await this.socket.fetch(t,Object.assign(Object.assign({},a),{signal:r.signal}));return clearTimeout(n),i}_on(t,a,o){var r;const n=t.toLocaleLowerCase(),i=a==null?void 0:a.filter;if((i instanceof rJ||typeof i=="object"&&i!==null&&typeof i.build=="function")&&(a=Object.assign(Object.assign({},a),{filter:i.build()})),n===ui.POSTGRES_CHANGES&&((r=this.bindings[n])===null||r===void 0?void 0:r.find(u=>yn.isSamePostgresFilter(u.filter,a))))return this.socket.log("error",`duplicate \`postgres_changes\` binding for ${this.topic} ignored`,a),this;const l=this.channelAdapter.on(t,o),c={type:n,filter:a,callback:o,ref:l};return this.bindings[n]?this.bindings[n].push(c):this.bindings[n]=[c],this._updateFilterMessage(),this}_onClose(t){this.channelAdapter.onClose(t)}_onError(t){this.channelAdapter.onError(t)}_updateFilterMessage(){this.channelAdapter.updateFilterBindings((t,a,o)=>{var r,n,i,l,c,d,u;const m=t.event.toLocaleLowerCase();if(this._notThisChannelEvent(m,o))return!1;const h=(r=this.bindings[m])===null||r===void 0?void 0:r.find(p=>p.ref===t.ref);if(!h)return!0;if(["broadcast","presence","postgres_changes"].includes(m))if("id"in h){const p=h.id,f=(n=h.filter)===null||n===void 0?void 0:n.event;return p&&((i=a.ids)===null||i===void 0?void 0:i.includes(p))&&(f==="*"||(f==null?void 0:f.toLocaleLowerCase())===((l=a.data)===null||l===void 0?void 0:l.type.toLocaleLowerCase()))}else{const p=(d=(c=h==null?void 0:h.filter)===null||c===void 0?void 0:c.event)===null||d===void 0?void 0:d.toLocaleLowerCase();return p==="*"||p===((u=a==null?void 0:a.event)===null||u===void 0?void 0:u.toLocaleLowerCase())}else return h.type.toLocaleLowerCase()===m})}_notThisChannelEvent(t,a){const{close:o,error:r,leave:n,join:i}=l6;return a&&[o,r,n,i].includes(t)&&a!==this.joinPush.ref}_updateFilterTransform(){this.channelAdapter.updatePayloadTransform((t,a,o)=>{if(typeof a=="object"&&"ids"in a){const r=a.data,{schema:n,table:i,commit_timestamp:l,type:c,errors:d}=r;return Object.assign(Object.assign({},{schema:n,table:i,commit_timestamp:l,eventType:c,new:{},old:{},errors:d}),this._getPayloadRecords(r))}return a})}copyBindings(t){if(this.joinedOnce)throw new Error("cannot copy bindings into joined channel");for(const a in t.bindings)for(const o of t.bindings[a])this._on(o.type,o.filter,o.callback)}static isFilterValueEqual(t,a){return(t??void 0)===(a??void 0)}static isSamePostgresFilter(t,a){var o,r,n,i;const l=(r=(o=t==null?void 0:t.select)===null||o===void 0?void 0:o.join())!==null&&r!==void 0?r:void 0,c=(i=(n=a==null?void 0:a.select)===null||n===void 0?void 0:n.join())!==null&&i!==void 0?i:void 0;return(t==null?void 0:t.event)===(a==null?void 0:a.event)&&yn.isFilterValueEqual(t==null?void 0:t.schema,a==null?void 0:a.schema)&&yn.isFilterValueEqual(t==null?void 0:t.table,a==null?void 0:a.table)&&yn.isFilterValueEqual(t==null?void 0:t.filter,a==null?void 0:a.filter)&&l===c}_getPayloadRecords(t){const a={new:{},old:{}};return(t.type==="INSERT"||t.type==="UPDATE")&&(a.new=CR(t.columns,t.record)),(t.type==="UPDATE"||t.type==="DELETE")&&(a.old=CR(t.columns,t.old_record)),a}}class nJ{constructor(t,a){this.socket=new HW(t,a)}get timeout(){return this.socket.timeout}get endPoint(){return this.socket.endPoint}get transport(){return this.socket.transport}get heartbeatIntervalMs(){return this.socket.heartbeatIntervalMs}get heartbeatCallback(){return this.socket.heartbeatCallback}set heartbeatCallback(t){this.socket.heartbeatCallback=t}get heartbeatTimer(){return this.socket.heartbeatTimer}get pendingHeartbeatRef(){return this.socket.pendingHeartbeatRef}get reconnectTimer(){return this.socket.reconnectTimer}get vsn(){return this.socket.vsn}get encode(){return this.socket.encode}get decode(){return this.socket.decode}get reconnectAfterMs(){return this.socket.reconnectAfterMs}get sendBuffer(){return this.socket.sendBuffer}get stateChangeCallbacks(){return this.socket.stateChangeCallbacks}connect(){this.socket.connect()}disconnect(t,a,o,r=1e4){return new Promise(n=>{setTimeout(()=>n("timeout"),r),this.socket.disconnect(()=>{t(),n("ok")},a,o)})}push(t){this.socket.push(t)}log(t,a,o){this.socket.log(t,a,o)}hasLogger(){return this.socket.hasLogger()}makeRef(){return this.socket.makeRef()}onOpen(t){this.socket.onOpen(t)}onClose(t){this.socket.onClose(t)}onError(t){this.socket.onError(t)}onMessage(t){this.socket.onMessage(t)}isConnected(){return this.socket.isConnected()}isConnecting(){return this.socket.connectionState()==Ty.connecting}isDisconnecting(){return this.socket.connectionState()==Ty.closing}connectionState(){return this.socket.connectionState()}endPointURL(){return this.socket.endPointURL()}sendHeartbeat(){this.socket.sendHeartbeat()}getSocket(){return this.socket}}const NR={HEARTBEAT_INTERVAL:25e3,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100}
432,sJ=[1e3,2e3,5e3,1e4],iJ=1e4;function lJ(){const e=new Map;return{get length(){return e.size},clear(){e.clear()},getItem(t){return e.has(t)?e.get(t):null},key(t){var a;return(a=Array.from(e.keys())[t])!==null&&a!==void 0?a:null},removeItem(t){e.delete(t)},setItem(t,a){e.set(t,String(a))}}}function cJ(){try{if(typeof globalThis<"u"&&globalThis.sessionStorage)return globalThis.sessionStorage}catch{}return lJ()}const dJ=` 433 addEventListener("message", (e) => { 434 if (e.data.event === "start") { 435 setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval); 436 } 437 });`;class uJ{get endPoint(){return this.socketAdapter.endPoint}get timeout(){return this.socketAdapter.timeout}get transport(){return this.socketAdapter.transport}get heartbeatCallback(){return this.socketAdapter.heartbeatCallback}get heartbeatIntervalMs(){return this.socketAdapter.heartbeatIntervalMs}get heartbeatTimer(){return this.worker?this._workerHeartbeatTimer:this.socketAdapter.heartbeatTimer}get pendingHeartbeatRef(){return this.worker?this._pendingWorkerHeartbeatRef:this.socketAdapter.pendingHeartbeatRef}get reconnectTimer(){return this.socketAdapter.reconnectTimer}get vsn(){return this.socketAdapter.vsn}get encode(){return this.socketAdapter.encode}get decode(){return this.socketAdapter.decode}get reconnectAfterMs(){return this.socketAdapter.reconnectAfterMs}get sendBuffer(){return this.socketAdapter.sendBuffer}get stateChangeCallbacks(){return this.socketAdapter.stateChangeCallbacks}constructor(t,a){var o;if(this.channels=new Array,this.accessTokenValue=null,this.accessToken=null,this.apiKey=null,this.httpEndpoint="",this.headers={},this.params={},this.ref=0,this.serializer=new EW,this._manuallySetToken=!1,this._authPromise=null,this._authGeneration=0,this._workerHeartbeatTimer=void 0,this._pendingWorkerHeartbeatRef=null,this._pendingDisconnectTimer=null,this._disconnectOnEmptyChannelsAfterMs=0,this._resolveFetch=n=>n?(...i)=>n(...i):(...i)=>fetch(...i),!(!((o=a==null?void 0:a.params)===null||o===void 0)&&o.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=a.params.apikey;const r=this._initializeOptions(a);this.socketAdapter=new nJ(t,r),this.httpEndpoint=d6(t),this.fetch=this._resolveFetch(a==null?void 0:a.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.isConnected())){this.accessToken&&!this._authPromise&&this._setAuthSafely("connect"),this._setupConnectionHandlers();try{this.socketAdapter.connect()}catch(t){const a=t.message;throw new Error(`WebSocket not available: ${a}`)}this._handleNodeJsRaceCondition()}}endpointURL(){return this.socketAdapter.endPointURL()}async disconnect(t,a){return this._cancelPendingDisconnect(),this.isDisconnecting()?"ok":await this.socketAdapter.disconnect(()=>{clearInterval(this._workerHeartbeatTimer),this._terminateWorker()},t,a)}getChannels(){return this.channels}async removeChannel(t){const a=await t.unsubscribe();return a==="ok"&&t.teardown(),a}async removeAllChannels(){const t=this.channels.map(async o=>{const r=await o.unsubscribe();return o.teardown(),r}),a=await Promise.all(t);return await this.disconnect(),a}log(t,a,o){this.socketAdapter.log(t,a,o)}hasLogger(){return this.socketAdapter.hasLogger()}connectionState(){return this.socketAdapter.connectionState()||Ty.closed}isConnected(){return this.socketAdapter.isConnected()}isConnecting(){return this.socketAdapter.isConnecting()}isDisconnecting(){return this.socketAdapter.isDisconnecting()}channel(t,a={config:{}}){const o=`realtime:${t}`,r=this.getChannels().find(n=>n.topic===o);if(r)return r;{const n=new yn(`realtime:${t}`,a,this);return this._cancelPendingDisconnect(),this.channels.push(n),n}}push(t){this.socketAdapter.push(t)}async setAuth(t=null){const a=++this._authGeneration,o=this._performAuth(t,a);a===this._authGeneration&&(this._authPromise=o);try{await o}finally{this._authPromise===o&&(this._authPromise=null)}}_isManualToken(){return this._manuallySetToken}async sendHeartbeat(){this.socketAdapter.sendHeartbeat()}onHeartbeat(t){this.socketAdapter.heartbeatCallback=this._wrapHeartbeatCallback(t)}_makeRef(){return this.socketAdapter.makeRef()}_remove(t){this.channels=this.channels.filter(a=>a.topic!==t.topic),this.channels.length===0&&(this.log("transport","no channels remaining, scheduling disconnect"),this._schedulePendingDisconnect())}_schedulePendingDisconnect(){if(this._cancelPendingDisconnect(),this._disconnectOnEmptyChannelsAfterMs===0){this.log("transport","disconnecting immediately - no channels"),this.disconnect();return}
437this._pendingDisconnectTimer=setTimeout(()=>{this._pendingDisconnectTimer=null,this.channels.length===0&&(this.log("transport","deferred disconnect fired - no channels, disconnecting"),this.disconnect())},this._disconnectOnEmptyChannelsAfterMs),this.log("transport",`deferred disconnect scheduled in ${this._disconnectOnEmptyChannelsAfterMs}ms`)}_cancelPendingDisconnect(){this._pendingDisconnectTimer!==null&&(this.log("transport","pending disconnect cancelled - channel activity detected"),clearTimeout(this._pendingDisconnectTimer),this._pendingDisconnectTimer=null)}async _performAuth(t,a){let o,r=!1;if(t)o=t,r=!0;else if(this.accessToken)try{o=await this.accessToken()}catch(n){this.log("error","Error fetching access token from callback",n),o=this.accessTokenValue}else o=this.accessTokenValue;a===this._authGeneration&&(this.accessToken?this._manuallySetToken=!1:r&&(this._manuallySetToken=!0),this.accessTokenValue!=o&&(this.accessTokenValue=o,this.channels.forEach(n=>{const i={access_token:o,version:CW};n.updateJoinPayload(i),n.joinedOnce&&n.channelAdapter.isJoined()&&n.channelAdapter.push(l6.access_token,{access_token:o})})))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(t="general"){this._isManualToken()||this.setAuth().catch(a=>{this.log("error",`Error setting auth in ${t}`,a)})}_setupConnectionHandlers(){this.socketAdapter.onOpen(()=>{(this._authPromise||(this.accessToken&&!this.accessTokenValue?this.setAuth():Promise.resolve())).catch(a=>{this.log("error","error waiting for auth on connect",a)}),this.worker&&!this.workerRef&&this._startWorkerHeartbeat()}),this.socketAdapter.onClose(()=>{this.worker&&this.workerRef&&this._terminateWorker()}),this.socketAdapter.onMessage(t=>{t.ref&&t.ref===this._pendingWorkerHeartbeatRef&&(this._pendingWorkerHeartbeatRef=null)})}_handleNodeJsRaceCondition(){this.socketAdapter.isConnected()&&this.socketAdapter.getSocket().onConnOpen()}_wrapHeartbeatCallback(t){return(a,o)=>{a!=="disconnected"&&(a=="sent"&&this._setAuthSafely(),t&&t(a,o))}}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const t=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(t),this.workerRef.onerror=a=>{this.log("worker","worker error",a.message),this._terminateWorker(),this.disconnect()},this.workerRef.onmessage=a=>{a.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_terminateWorker(){this.workerRef&&(this.log("worker","terminating worker"),this.workerRef.terminate(),this.workerRef=void 0)}_workerObjectUrl(t){let a;if(t)a=t;else{const o=new Blob([dJ],{type:"application/javascript"});a=URL.createObjectURL(o)}return a}_initializeOptions(t){var a,o,r,n,i,l,c,d,u,m,h,p;this.worker=(a=t==null?void 0:t.worker)!==null&&a!==void 0?a:!1,this.accessToken=(o=t==null?void 0:t.accessToken)!==null&&o!==void 0?o:null;const f={};f.timeout=(r=t==null?void 0:t.timeout)!==null&&r!==void 0?r:RW,f.heartbeatIntervalMs=(n=t==null?void 0:t.heartbeatIntervalMs)!==null&&n!==void 0?n:NR.HEARTBEAT_INTERVAL,this._disconnectOnEmptyChannelsAfterMs=(i=t==null?void 0:t.disconnectOnEmptyChannelsAfterMs)!==null&&i!==void 0?i:2*((l=t==null?void 0:t.heartbeatIntervalMs)!==null&&l!==void 0?l:NR.HEARTBEAT_INTERVAL),f.transport=(c=t==null?void 0:t.transport)!==null&&c!==void 0?c:kW.getWebSocketConstructor(),f.params=t==null?void 0:t.params,f.logger=t==null?void 0:t.logger,f.heartbeatCallback=this._wrapHeartbeatCallback(t==null?void 0:t.heartbeatCallback),f.sessionStorage=(d=t==null?void 0:t.sessionStorage)!==null&&d!==void 0?d:cJ(),f.reconnectAfterMs=(u=t==null?void 0:t.reconnectAfterMs)!==null&&u!==void 0?u:y=>sJ[y-1]||iJ;let g,b;const v=(m=t==null?void 0:t.vsn)!==null&&m!==void 0?m:SW;switch(v){case PW:g=(y,k)=>k(JSON.stringify(y)),b=(y,k)=>k(JSON.parse(y));break;case i6:g=this.serializer.encode.bind(this.serializer),b=this.serializer.decode.bind(this.serializer);break;default:throw new Error(`Unsupported serializer version: ${f.vsn}`)}if(f.vsn=v,f.encode=(h=t==null?void 0:t.encode)!==null&&h!==void 0?h:g,f.decode=(p=t==null?void 0:t.decode)!==null&&p!==void 0?p:b,f.beforeReconnect=this._reconnectAuth.bind(this),(t!=null&&t.logLevel||t!=null&&t.log_level)&&(this.logLevel=t.logLevel||t.log_level,f.params=Object.assign(Object.assign({},f.params),{log_level:this.logLevel})),this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=t==null?void 0:t.workerUrl,f.autoSendHeartbeat=!this.worker}return f}async _reconnectAuth(){await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()}}
437var Hu=class extends Error{constructor(e,t){var a;super(e),this.name="IcebergError",this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType==="CommitStateUnknownException"||[500,502,504].includes(t.status)&&((a=t.icebergType)==null?void 0:a.includes("CommitState"))===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function mJ(e,t,a){const o=new URL(t,e);if(a)for(const[r,n]of Object.entries(a))n!==void 0&&o.searchParams.set(r,n);return o.toString()}async function pJ(e){return!e||e.type==="none"?{}:e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:e.type==="header"?{[e.name]:e.value}:e.type==="custom"?await e.getHeaders():{}}function hJ(e){const t=e.fetchImpl??globalThis.fetch;return{async request({method:a,path:o,query:r,body:n,headers:i}){const l=mJ(e.baseUrl,o,r),c=await pJ(e.auth),d=await t(l,{method:a,headers:{...n?{"Content-Type":"application/json"}:{},...c,...i},body:n?JSON.stringify(n):void 0}),u=await d.text(),m=(d.headers.get("content-type")||"").includes("application/json"),h=m&&u?JSON.parse(u):u;if(!d.ok){const p=m?h:void 0,f=p==null?void 0:p.error;throw new Hu((f==null?void 0:f.message)??`Request failed with status ${d.status}`,{status:d.status,icebergType:f==null?void 0:f.type,icebergCode:f==null?void 0:f.code,details:p})}return{status:d.status,headers:d.headers,data:h}}}}function xp(e){return e.join("�")}var fJ=class{constructor(e,t=""){this.client=e,this.prefix=t}async listNamespaces(e){const t=e?{parent:xp(e.namespace)}:void 0;return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map(o=>({namespace:o}))}async createNamespace(e,t){const a={namespace:e.namespace,properties:t==null?void 0:t.properties};return(await this.client.request({method:"POST",path:`${this.prefix}/namespaces`,body:a})).data}async dropNamespace(e){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${xp(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${xp(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${xp(e.namespace)}`}),!0}catch(t){if(t instanceof Hu&&t.status===404)return!1;throw t}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(a){if(a instanceof Hu&&a.status===409)return;throw a}}};function hl(e){return e.join("�")}var gJ=class{constructor(e,t="",a){this.client=e,this.prefix=t,this.accessDelegation=a}async listTables(e){return(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${hl(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){const a={};return this.accessDelegation&&(a["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${hl(e.namespace)}/tables`,body:t,headers:a})).data.metadata}async updateTable(e,t){const a=await this.client.request({method:"POST",path:`${this.prefix}/namespaces/${hl(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":a.data["metadata-location"],metadata:a.data.metadata}}async dropTable(e,t){await this.client.request({method:"DELETE",path:`${this.prefix}/namespaces/${hl(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String((t==null?void 0:t.purge)??!1)}})}async loadTable(e){const t={};return this.accessDelegation&&(t["X-Iceberg-Access-Delegation"]=this.accessDelegation),(await this.client.request({method:"GET",path:`${this.prefix}/namespaces/${hl(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){const t={};this.accessDelegation&&(t["X-Iceberg-Access-Delegation"]=this.accessDelegation);try{return await this.client.request({method:"HEAD",path:`${this.prefix}/namespaces/${hl(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(a){if(a instanceof Hu&&a.status===404)return!1;throw a}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(a){if(a instanceof Hu&&a.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw a}}},vJ=class{constructor(e){var o;let t="v1";e.catalogName&&(t+=`/${e.catalogName}`);const a=e.baseUrl.endsWith("/")?e.baseUrl:`${e.baseUrl}/`;this.client=hJ({baseUrl:a,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=(o=e.accessDelegation)==null?void 0:o.join(","),this.namespaceOps=new fJ(this.client,t),this.tableOps=new gJ(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}
437async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}};function Ku(e){"@babel/helpers - typeof";return Ku=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ku(e)}function xJ(e,t){if(Ku(e)!="object"||!e)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var o=a.call(e,t||"default");if(Ku(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function bJ(e){var t=xJ(e,"string");return Ku(t)=="symbol"?t:t+""}function yJ(e,t,a){return(t=bJ(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function AR(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),a.push.apply(a,o)}return a}function Ne(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?AR(Object(a),!0).forEach(function(o){yJ(e,o,a[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):AR(Object(a)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(a,o))})}return e}var Ug=class extends Error{constructor(e,t="storage",a,o){super(e),this.__isStorageError=!0,this.namespace=t,this.name=t==="vectors"?"StorageVectorsError":"StorageError",this.status=a,this.statusCode=o}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}};function Gg(e){return typeof e=="object"&&e!==null&&"__isStorageError"in e}var Dy=class extends Ug{constructor(e,t,a,o="storage",r){super(e,o,t,a),this.name=o==="vectors"?"StorageVectorsApiError":"StorageApiError",this.status=t,this.statusCode=a,this.code=r}toJSON(){return Ne(Ne({},super.toJSON()),{},{code:this.code})}},m6=class extends Ug{constructor(e,t,a="storage"){super(e,a),this.name=a==="vectors"?"StorageVectorsUnknownError":"StorageUnknownError",this.originalError=t}};function Rf(e,t,a){const o=Ne({},e),r=t.toLowerCase();for(const n of Object.keys(o))n.toLowerCase()===r&&delete o[n];return o[r]=a,o}function kJ(e){const t={};for(const[a,o]of Object.entries(e))t[a.toLowerCase()]=o;return t}const wJ=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),CJ=e=>{if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Iy=e=>{if(Array.isArray(e))return e.map(a=>Iy(a));if(typeof e=="function"||e!==Object(e))return e;const t={};return Object.entries(e).forEach(([a,o])=>{const r=a.replace(/([-_][a-z])/gi,n=>n.toUpperCase().replace(/[-_]/g,""));t[r]=Iy(o)}),t},PJ=e=>!e||typeof e!="string"||e.length===0||e.length>100||e.trim()!==e||e.includes("/")||e.includes("\\")?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(e),My=e=>e.split("/").map(encodeURIComponent).join("/"),ER=e=>{if(typeof e=="object"&&e!==null){const t=e;if(typeof t.msg=="string")return t.msg;if(typeof t.message=="string")return t.message;if(typeof t.error_description=="string")return t.error_description;if(typeof t.error=="string")return t.error;if(typeof t.error=="object"&&t.error!==null){const a=t.error;if(typeof a.message=="string")return a.message}}return JSON.stringify(e)},SJ=async(e,t,a,o)=>{if(e!==null&&typeof e=="object"&&"json"in e&&typeof e.json=="function"){const r=e;let n=parseInt(String(r.status),10);Number.isFinite(n)||(n=500),r.json().then(i=>{const l=(i==null?void 0:i.statusCode)||(i==null?void 0:i.code)||n+"";t(new Dy(ER(i),n,l,o,i==null?void 0:i.code))}).catch(()=>{const i=n+"";t(new Dy(r.statusText||`HTTP ${n}
437 error`,n,i,o))})}else t(new m6(ER(e),e,o))},RJ=(e,t,a,o)=>{const r={method:e,headers:(t==null?void 0:t.headers)||{}};if(e==="GET"||e==="HEAD"||!o)return Ne(Ne({},r),a);if(CJ(o)){var n;const i=(t==null?void 0:t.headers)||{};let l;for(const[c,d]of Object.entries(i))c.toLowerCase()==="content-type"&&(l=d);r.headers=Rf(i,"Content-Type",(n=l)!==null&&n!==void 0?n:"application/json"),r.body=JSON.stringify(o)}else r.body=o;return t!=null&&t.duplex&&(r.duplex=t.duplex),Ne(Ne({},r),a)};async function Rd(e,t,a,o,r,n,i){return new Promise((l,c)=>{e(a,RJ(t,o,r,n)).then(d=>{if(!d.ok)throw d;if(o!=null&&o.noResolveJson)return d;if(i==="vectors"){const u=d.headers.get("content-type");if(d.headers.get("content-length")==="0"||d.status===204)return{};if(!u||!u.includes("application/json"))return{}}return d.json()}).then(d=>l(d)).catch(d=>SJ(d,c,o,i))})}function p6(e="storage"){return{get:async(t,a,o,r)=>Rd(t,"GET",a,o,r,void 0,e),post:async(t,a,o,r,n)=>Rd(t,"POST",a,r,n,o,e),put:async(t,a,o,r,n)=>Rd(t,"PUT",a,r,n,o,e),head:async(t,a,o,r)=>Rd(t,"HEAD",a,Ne(Ne({},o),{},{noResolveJson:!0}),r,void 0,e),remove:async(t,a,o,r,n)=>Rd(t,"DELETE",a,r,n,o,e)}}const jJ=p6("storage"),{get:nc,post:cr,put:jf,head:NJ,remove:sc}=jJ,vo=p6("vectors");var ld=class{constructor(e,t={},a,o="storage"){this.shouldThrowOnError=!1,this.url=e,this.headers=kJ(t),this.fetch=wJ(a),this.namespace=o}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(e,t){return this.headers=Rf(this.headers,e,t),this}async handleOperation(e){var t=this;try{return{data:await e(),error:null}}catch(a){if(t.shouldThrowOnError)throw a;if(Gg(a))return{data:null,error:a};throw a}}};let h6;h6=Symbol.toStringTag;var AJ=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[h6]="StreamDownloadBuilder",this.promise=null}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var e=this;try{return{data:(await e.downloadFn()).body,error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Gg(t))return{data:null,error:t};throw t}}};let f6;f6=Symbol.toStringTag;var EJ=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[f6]="BlobDownloadBuilder",this.promise=null}asStream(){return new AJ(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}async execute(){var e=this;try{return{data:await(await e.downloadFn()).blob(),error:null}}catch(t){if(e.shouldThrowOnError)throw t;if(Gg(t))return{data:null,error:t};throw t}}};const Rv={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},_R={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};var _J=class extends ld{constructor(e,t={},a,o){super(e,t,o,"storage"),this.bucketId=a}async uploadOrUpdate(e,t,a,o){var r=this;return r.handleOperation(async()=>{let n;const i=Ne(Ne({},_R),o);let l=Ne(Ne({},r.headers),e==="POST"&&{"x-upsert":String(i.upsert)});const c=i.metadata;if(typeof Blob<"u"&&a instanceof Blob?(n=new FormData,n.append("cacheControl",i.cacheControl),c&&n.append("metadata",r.encodeMetadata(c)),n.append("",a)):typeof FormData<"u"&&a instanceof FormData?(n=a,n.has("cacheControl")||n.append("cacheControl",i.cacheControl),c&&!n.has("metadata")&&n.append("metadata",r.encodeMetadata(c))):(n=a,l["cache-control"]=`max-age=${i.cacheControl}`,l["content-type"]=i.contentType,c&&(l["x-metadata"]=r.toBase64(r.encodeMetadata(c))),(typeof ReadableStream<"u"&&n instanceof ReadableStream||n&&typeof n=="object"&&"pipe"in n&&typeof n.pipe=="function")&&!i.duplex&&(i.duplex="half")),o!=null&&o.headers)for(const[h,p]of Object.entries(o.headers))l=Rf(l,h,p);const d=r._removeEmptyFolders(t),u=r._getFinalPath(d),m=await(e=="PUT"?jf:cr)(r.fetch,`${r.url}/object/${u}`,n,Ne({headers:l},i!=null&&i.duplex?{duplex:i.duplex}:{}));return{path:d,id:m.Id,fullPath:m.Key}})}async upload(e,t,a){return this.uploadOrUpdate("POST",e,t,a)}async uploadToSignedUrl(e,t,a,o){var r=this;const n=r._removeEmptyFolders(e),i=r._getFinalPath(n),l=new URL(r.url+`/object/upload/sign/${i}`);return l.searchParams.set("token",t),r.handleOperation(async()=>{let c;const d=Ne(Ne({},_R),o);let u=Ne(Ne({},r.headers),{"x-upsert":String(d.upsert)});const m=d.metadata;
437if(typeof Blob<"u"&&a instanceof Blob?(c=new FormData,c.append("cacheControl",d.cacheControl),m&&c.append("metadata",r.encodeMetadata(m)),c.append("",a)):typeof FormData<"u"&&a instanceof FormData?(c=a,c.has("cacheControl")||c.append("cacheControl",d.cacheControl),m&&!c.has("metadata")&&c.append("metadata",r.encodeMetadata(m))):(c=a,u["cache-control"]=`max-age=${d.cacheControl}`,u["content-type"]=d.contentType,m&&(u["x-metadata"]=r.toBase64(r.encodeMetadata(m))),(typeof ReadableStream<"u"&&c instanceof ReadableStream||c&&typeof c=="object"&&"pipe"in c&&typeof c.pipe=="function")&&!d.duplex&&(d.duplex="half")),o!=null&&o.headers)for(const[h,p]of Object.entries(o.headers))u=Rf(u,h,p);return{path:n,fullPath:(await jf(r.fetch,l.toString(),c,Ne({headers:u},d!=null&&d.duplex?{duplex:d.duplex}:{}))).Key}})}async createSignedUploadUrl(e,t){var a=this;return a.handleOperation(async()=>{let o=a._getFinalPath(e);const r=Ne({},a.headers);t!=null&&t.upsert&&(r["x-upsert"]="true");const n=await cr(a.fetch,`${a.url}/object/upload/sign/${o}`,{},{headers:r}),i=new URL(a.url+n.url),l=i.searchParams.get("token");if(!l)throw new Ug("No token returned by API");return{signedUrl:i.toString(),path:e,token:l}})}async update(e,t,a){return this.uploadOrUpdate("PUT",e,t,a)}async move(e,t,a){var o=this;return o.handleOperation(async()=>await cr(o.fetch,`${o.url}/object/move`,{bucketId:o.bucketId,sourceKey:e,destinationKey:t,de
437stinationBucket:a==null?void 0:a.destinationBucket,sourceVersionId:a==null?void 0:a.sourceVersionId},{headers:o.headers}))}async copy(e,t,a){var o=this;return o.handleOperation(async()=>({path:(await cr(o.fetch,`${o.url}/object/copy`,{bucketId:o.bucketId,sourceKey:e,destinationKey:t,destinationBucket:a==null?void 0:a.destinationBucket,sourceVersionId:a==null?void 0:a.sourceVersionId},{headers:o.headers})).Key}))}async createSignedUrl(e,t,a){var o=this;return o.handleOperation(async()=>{let r=o._getFinalPath(e);const n=typeof(a==null?void 0:a.transform)=="object"&&a.transform!==null&&Object.keys(a.transform).length>0;let i=await cr(o.fetch,`${o.url}/object/sign/${r}`,Ne(Ne({expiresIn:t},n?{transform:a.transform}:{}),(a==null?void 0:a.versionId)!=null?{versionId:a.versionId}:{}),{headers:o.headers});const l=new URLSearchParams;a!=null&&a.download&&l.set("download",a.download===!0?"":a.download),(a==null?void 0:a.cacheNonce)!=null&&l.set("cacheNonce",String(a.cacheNonce));const c=l.toString();return{signedUrl:encodeURI(`${o.url}${i.signedURL}${c?`&${c}`:""}`)}})}async createSignedUrls(e,t,a){var o=this;return o.handleOperation(async()=>{const r=await cr(o.fetch,`${o.url}/object/sign/${o.bucketId}`,{expiresIn:t,paths:e},{headers:o.headers}),n=new URLSearchParams;a!=null&&a.download&&n.set("download",a.download===!0?"":a.download),(a==null?void 0:a.cacheNonce)!=null&&n.set("cacheNonce",String(a.cacheNonce));const i=n.toString();return r.map(l=>Ne(Ne({},l),{},{signedUrl:l.signedURL?encodeURI(`${o.url}${l.signedURL}${i?`&${i}`:""}`):null}))})}download(e,t,a){const o=typeof(t==null?void 0:t.transform)=="object"&&t.transform!==null&&Object.keys(t.transform).length>0?"render/image/authenticated":"object",r=new URLSearchParams;t!=null&&t.transform&&this.applyTransformOptsToQuery(r,t.transform),(t==null?void 0:t.cacheNonce)!=null&&r.set("cacheNonce",String(t.cacheNonce)),(t==null?void 0:t.versionId)!=null&&r.set("versionId",String(t.versionId));const n=r.toString(),i=this._getFinalPath(e),l=()=>nc(this.fetch,`${this.url}/${o}/${i}${n?`?${n}`:""}`,{headers:this.headers,noResolveJson:!0},a);return new EJ(l,this.shouldThrowOnError)}async info(e,t){var a=this;const o=a._getFinalPath(e),r=new URLSearchParams;(t==null?void 0:t.versionId)!=null&&r.set("versionId",String(t.versionId));const n=r.toString();return a.handleOperation(async()=>Iy(await nc(a.fetch,`${a.url}/object/info/${o}${n?`?${n}`:""}`,{headers:a.headers})))}async exists(e){var t=this;const a=t._getFinalPath(e);try{return await NJ(t.fetch,`${t.url}/object/${a}`,{headers:t.headers}),{data:!0,error:null}}catch(r){if(t.shouldThrowOnError)throw r;if(Gg(r)){var o;const n=r instanceof Dy?r.status:r instanceof m6?(o=r.originalError)===null||o===void 0?void 0:o.status:void 0;if(n!==void 0&&[400,404].includes(n))return{data:!1,error:r}}throw r}}getPublicUrl(e,t){const a=this._getFinalPath(e),o=new URLSearchParams;t!=null&&t.download&&o.set("download",t.download===!0?"":t.download),t!=null&&t.transform&&this.applyTransformOptsToQuery(o,t.transform),(t==null?void 0:t.cacheNonce)!=null&&o.set("cacheNonce",String(t.cacheNonce)),(t==null?void 0:t.versionId)!=null&&o.set("versionId",String(t.versionId));const r=o.toString(),n=typeof(t==null?void 0:t.transform)=="object"&&t.transform!==null&&Object.keys(t.transform).length>0?"render/image":"object";return{data:{publicUrl:encodeURI(`${this.url}/${n}/public/${a}`)+(r?`?${r}`:"")}}}async remove(e){var t=this;return t.handleOperation(async()=>await sc(t.fetch,`${t.url}/object/${t.bucketId}`,{prefixes:e},{headers:t.headers}))}async purgeCache(e,t,a){var o=this;return o.handleOperation(async()=>{const r=My(o._getFinalPath(e)),n=new URLSearchParams;t!=null&&t.transformations&&n.set("transformations","true");const i=n.toString();return await sc(o.fetch,`${o.url}/cdn/${r}${i?`?${i}`:""}`,{},{headers:o.headers},a)})}async list(e,t,a){var o=this;return o.handleOperation(async()=>{const r=t!=null&&t.sortBy?Ne(Ne({},Rv.sortBy),t.sortBy):Rv.sortBy,n=Ne(Ne(Ne({},Rv),t),{},{sortBy:r,prefix:e||""});return await cr(o.fetch,`${o.url}/object/list/${o.bucketId}`,n,{headers:o.headers},a)})}async listV2(e,t){var a=this;return a.handleOperation(async()=>{const o=Ne({},e);return await cr(a.fetch,`${a.url}/object/list-v2/${a.bucketId}`,o,{headers:a.headers},t)})}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,"")}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}applyTransformOptsToQuery(e,t){return t.width&&e.set("width",t.width.toString()),t.height&&e.set("height",t.height.toString()),t.resize&&e.set("resize",t.resize),t.format&&e.set("format",t.format),t.quality&&e.set("qual
437ity",t.quality.toString()),e}};const TJ="2.117.2",Nm={"X-Client-Info":`storage-js/${TJ}`};var $J=class extends ld{constructor(e,t={},a,o){const r=new URL(e);o!=null&&o.useNewHostname&&/supabase\.(co|in|red)$/.test(r.hostname)&&!r.hostname.includes("storage.supabase.")&&(r.hostname=r.hostname.replace("supabase.","storage.supabase."));const n=r.href.replace(/\/$/,""),i=Ne(Ne({},Nm),t);super(n,i,a,"storage")}async listBuckets(e){var t=this;return t.handleOperation(async()=>{const a=t.listBucketOptionsToQueryString(e);return await nc(t.fetch,`${t.url}/bucket${a}`,{headers:t.headers})})}async getBucket(e){var t=this;return t.handleOperation(async()=>await nc(t.fetch,`${t.url}/bucket/${e}`,{headers:t.headers}))}async createBucket(e,t={public:!1}){var a=this;return a.handleOperation(async()=>await cr(a.fetch,`${a.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes,versioning_status:t.versioningStatus},{headers:a.headers}))}async updateBucket(e,t){var a=this;return a.handleOperation(async()=>await jf(a.fetch,`${a.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes,versioning_status:t.versioningStatus},{headers:a.headers}))}async emptyBucket(e){var t=this;return t.handleOperation(async()=>await cr(t.fetch,`${t.url}/bucket/${e}/empty`,{},{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await sc(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}async getBucketLifecycle(e){var t=this;return t.handleOperation(async()=>await nc(t.fetch,t.bucketLifecycleUrl(e),{headers:t.headers}))}async updateBucketLifecycle(e,t){var a=this;return a.handleOperation(async()=>await jf(a.fetch,a.bucketLifecycleUrl(e),t,{headers:a.headers}))}async deleteBucketLifecycle(e){var t=this;return t.handleOperation(async()=>await sc(t.fetch,t.bucketLifecycleUrl(e),{},{headers:t.headers}))}async purgeBucketCache(e,t,a){var o=this;return o.handleOperation(async()=>{const r=new URLSearchParams;t!=null&&t.transformations&&r.set("transformations","true");const n=r.toString();return await sc(o.fetch,`${o.url}/cdn/${My(e)}${n?`?${n}`:""}`,{},{headers:o.headers},a)})}bucketLifecycleUrl(e){return`${this.url}/bucket/${My(e)}/lifecycle`}listBucketOptionsToQueryString(e){const t={};return e&&("limit"in e&&(t.limit=String(e.limit)),"offset"in e&&(t.offset=String(e.offset)),e.search&&(t.search=e.search),e.sortColumn&&(t.sortColumn=e.sortColumn),e.sortOrder&&(t.sortOrder=e.sortOrder)),Object.keys(t).length>0?"?"+new URLSearchParams(t).toString():""}},OJ=class extends ld{constructor(e,t={},a){const o=e.replace(/\/$/,""),r=Ne(Ne({},Nm),t);super(o,r,a,"storage")}async createBucket(e){var t=this;return t.handleOperation(async()=>await cr(t.fetch,`${t.url}/bucket`,{name:e},{headers:t.headers}))}async listBuckets(e){var t=this;return t.handleOperation(async()=>{const a=new URLSearchParams;(e==null?void 0:e.limit)!==void 0&&a.set("limit",e.limit.toString()),(e==null?void 0:e.offset)!==void 0&&a.set("offset",e.offset.toString()),e!=null&&e.sortColumn&&a.set("sortColumn",e.sortColumn),e!=null&&e.sortOrder&&a.set("sortOrder",e.sortOrder),e!=null&&e.search&&a.set("search",e.search);const o=a.toString(),r=o?`${t.url}/bucket?${o}`:`${t.url}/bucket`;return await nc(t.fetch,r,{headers:t.headers})})}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await sc(t.fetch,`${t.url}/bucket/${e}`,{},{headers:t.headers}))}from(e){var t=this;if(!PJ(e))throw new Ug("Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.");const a=new vJ({baseUrl:this.url,catalogName:e,auth:{type:"custom",getHeaders:async()=>t.headers},fetch:this.fetch}),o=this.shouldThrowOnError;return new Proxy(a,{get(r,n){const i=r[n];return typeof i!="function"?i:async(...l)=>{try{return{data:await i.apply(r,l),error:null}}catch(c){if(o)throw c;return{data:null,error:c}}}}})}},qJ=class extends ld{constructor(e,t={},a){const o=e.replace(/\/$/,""),r=Ne(Ne({},Nm),{},{"Content-Type":"application/json"},t);super(o,r,a,"vectors")}async createIndex(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/CreateIndex`,e,{headers:t.headers})||{})}async getIndex(e,t){var a=this;return a.handleOperation(async()=>await vo.post(a.fetch,`${a.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:a.headers}))}async listIndexes(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/ListIndexes`,e,{headers:t.headers}))}async deleteIndex(e,t){var a=this;return a.handleOperation(async()=>await vo.post(a.fetch,`${a.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:a.headers})||{})}},DJ=class extends ld{constructor(e,t={},a){const o=e.replace(/\/$/,""),r=Ne(Ne({},Nm),{},{"Content-Type":"application/json"},t);super(o,r,a,"vectors")}async putVectors(e){var t=this;if(e.vectors.length<1||e.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/PutVectors`,e,{headers:t.headers})||{})}async getVectors(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/GetVectors`,e,{headers:t.headers}))}async listVectors(e){var t=this;if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");
437if(e.segmentIndex!==void 0&&(e.segmentIndex<0||e.segmentIndex>=e.segmentCount))throw new Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/ListVectors`,e,{headers:t.headers}))}async queryVectors(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/QueryVectors`,e,{headers:t.headers}))}async deleteVectors(e){var t=this;if(e.keys.length<1||e.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/DeleteVectors`,e,{headers:t.headers})||{})}},IJ=class extends ld{constructor(e,t={},a){const o=e.replace(/\/$/,""),r=Ne(Ne({},Nm),{},{"Content-Type":"application/json"},t);super(o,r,a,"vectors")}async createBucket(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}async getBucket(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/GetVectorBucket`,{vectorBucketName:e},{headers:t.headers}))}async listBuckets(e={}){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/ListVectorBuckets`,e,{headers:t.headers}))}async deleteBucket(e){var t=this;return t.handleOperation(async()=>await vo.post(t.fetch,`${t.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:t.headers})||{})}},MJ=class extends IJ{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new LJ(this.url,this.headers,e,this.fetch)}async createBucket(e){var t=()=>super.createBucket,a=this;return t().call(a,e)}async getBucket(e){var t=()=>super.getBucket,a=this;return t().call(a,e)}async listBuckets(e={}){var t=()=>super.listBuckets,a=this;return t().call(a,e)}async deleteBucket(e){var t=()=>super.deleteBucket,a=this;return t().call(a,e)}},LJ=class extends qJ{constructor(e,t,a,o){super(e,t,o),this.vectorBucketName=a}async createIndex(e){var t=()=>super.createIndex,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName}))}async listIndexes(e={}){var t=()=>super.listIndexes,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName}))}async getIndex(e){var t=()=>super.getIndex,a=this;return t().call(a,a.vectorBucketName,e)}async deleteIndex(e){var t=()=>super.deleteIndex,a=this;return t().call(a,a.vectorBucketName,e)}index(e){return new BJ(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},BJ=class extends DJ{constructor(e,t,a,o,r){super(e,t,r),this.vectorBucketName=a,this.indexName=o}async putVectors(e){var t=()=>super.putVectors,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async getVectors(e){var t=()=>super.getVectors,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async listVectors(e={}){var t=()=>super.listVectors,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async queryVectors(e){var t=()=>super.queryVectors,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}async deleteVectors(e){var t=()=>super.deleteVectors,a=this;return t().call(a,Ne(Ne({},e),{},{vectorBucketName:a.vectorBucketName,indexName:a.indexName}))}},VJ=class extends $J{constructor(e,t={},a,o){super(e,t,a,o)}from(e){return new _J(this.url,this.headers,e,this.fetch)}get vectors(){return new MJ(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new OJ(this.url+"/iceberg",this.headers,this.fetch)}};const g6="2.117.2",kn=30*1e3,Fd=3,jv=Fd*kn,FJ=2*kn,UJ="http://localhost:9999",GJ="supabase.auth.token",zJ={"X-Client-Info":`gotrue-js/${g6}`},Ly="X-Supabase-Api-Version",v6={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},HJ=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,yi="sb_flow_id",KJ=5,QJ=10*60*1e3;class Qu extends Error{constructor(t,a,o){super(t),this.__isAuthError=!0,this.name="AuthError",this.status=a,this.code=o}toJSON(){return{name:this.name,message:this.message,status:this.status,code:this.code}}}function se(e){return typeof e=="object"&&e!==null&&"__isAuthError"in e}class WJ extends Qu{constructor(t,a,o){super(t,a,o),this.name="AuthApiError",this.status=a,this.code=o}}function TR(e){return se(e)&&e.name==="AuthApiError"}class fr extends Qu{constructor(t,a){super(t),this.name="AuthUnknownError",this.originalError=a}}class nn extends Qu{constructor(t,a,o,r){super(t,o,r),this.name=a,this.status=o}}class ca extends nn{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function bp(e){return se(e)&&e.name==="AuthSessionMissingError"}class fl extends nn{constructor(){super("Auth session or user missing","AuthInvalidToken
437ResponseError",500,void 0)}}class yp extends nn{constructor(t){super(t,"AuthInvalidCredentialsError",400,void 0)}}class kp extends nn{constructor(t,a=null){super(t,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=a}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}function JJ(e){return se(e)&&e.name==="AuthImplicitGrantRedirectError"}class $R extends nn{constructor(t,a=null){super(t,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=a}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{details:this.details})}}class XJ extends nn{constructor(){super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.","AuthPKCECodeVerifierMissingError",400,"pkce_code_verifier_not_found")}}class kh extends nn{constructor(t,a){super(t,"AuthRetryableFetchError",a,void 0)}}function wp(e){return se(e)&&e.name==="AuthRetryableFetchError"}class OR extends nn{constructor(t="Refresh result discarded: session state changed mid-flight (e.g., concurrent signOut)"){super(t,"AuthRefreshDiscardedError",409,void 0)}}function qR(e){return se(e)&&e.name==="AuthRefreshDiscardedError"}class DR extends nn{constructor(t,a,o){super(t,"AuthWeakPasswordError",a,"weak_password"),this.reasons=o}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{reasons:this.reasons})}}class Nf extends nn{constructor(t){super(t,"AuthInvalidJwtError",400,"invalid_jwt")}}const Af="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),IR=` 438\r=`.split(""),YJ=(()=>{const e=new Array(128);for(let t=0;t<e.length;t+=1)e[t]=-1;for(let t=0;t<IR.length;t+=1)e[IR[t].charCodeAt(0)]=-2;for(let t=0;t<Af.length;t+=1)e[Af[t].charCodeAt(0)]=t;return e})();function MR(e,t,a){if(e!==null)for(t.queue=t.queue<<8|e,t.queuedBits+=8;t.queuedBits>=6;){const o=t.queue>>t.queuedBits-6&63;a(Af[o]),t.queuedBits-=6}else if(t.queuedBits>0)for(t.queue=t.queue<<6-t.queuedBits,t.queuedBits=6;t.queuedBits>=6;){const o=t.queue>>t.queuedBits-6&63;a(Af[o]),t.queuedBits-=6}}function x6(e,t,a){const o=YJ[e];if(o>-1)for(t.queue=t.queue<<6|o,t.queuedBits+=6;t.queuedBits>=8;)a(t.queue>>t.queuedBits-8&255),t.queuedBits-=8;else{if(o===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`)}}function LR(e){const t=[],a=i=>{t.push(String.fromCodePoint(i))},o={utf8seq:0,codepoint:0},r={queue:0,queuedBits:0},n=i=>{tX(i,o,a)};for(let i=0;i<e.length;i+=1)x6(e.charCodeAt(i),r,n);return t.join("")}function ZJ(e,t){if(e<=127){t(e);return}else if(e<=2047){t(192|e>>6),t(128|e&63);return}else if(e<=65535){t(224|e>>12),t(128|e>>6&63),t(128|e&63);return}else if(e<=1114111){t(240|e>>18),t(128|e>>12&63),t(128|e>>6&63),t(128|e&63);return}throw new Error(`Unrecognized Unicode codepoint: ${e.toString(16)}`)}function eX(e,t){for(let a=0;a<e.length;a+=1){let o=e.charCodeAt(a);if(o>55295&&o<=56319){const r=(o-55296)*1024&65535;o=(e.charCodeAt(a+1)-56320&65535|r)+65536,a+=1}ZJ(o,t)}}function tX(e,t,a){if(t.utf8seq===0){if(e<=127){a(e);return}for(let o=1;o<6;o+=1)if(!(e>>7-o&1)){t.utf8seq=o;break}if(t.utf8seq===2)t.codepoint=e&31;else if(t.utf8seq===3)t.codepoint=e&15;else if(t.utf8seq===4)t.codepoint=e&7;else throw new Error("Invalid UTF-8 sequence");t.utf8seq-=1}else if(t.utf8seq>0){if(e<=127)throw new Error("Invalid UTF-8 sequence");t.codepoint=t.codepoint<<6|e&63,t.utf8seq-=1,t.utf8seq===0&&a(t.codepoint)}}function ic(e){const t=[],a={queue:0,queuedBits:0},o=r=>{t.push(r)};for(let r=0;r<e.length;r+=1)x6(e.charCodeAt(r),a,o);return new Uint8Array(t)}function aX(e){const t=[];return eX(e,a=>t.push(a)),new Uint8Array(t)}function ki(e){const t=[],a={queue:0,queuedBits:0},o=r=>{t.push(r)};return e.forEach(r=>MR(r,a,o)),MR(null,a,o),t.join("")}function b6(e){return Math.round(Date.now()/1e3)+e}function oX(){return Symbol("auth-callback")}const fa=()=>typeof window<"u"&&typeof document<"u",ti={tested:!1,writable:!1},y6=()=>
438{if(!fa())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(ti.tested)return ti.writable;const e=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),ti.tested=!0,ti.writable=!0}catch{ti.tested=!0,ti.writable=!1}return ti.writable};function BR(e){const t={},a=new URL(e);if(a.hash&&a.hash[0]==="#")try{new URLSearchParams(a.hash.substring(1)).forEach((r,n)=>{t[n]=r})}catch{}return a.searchParams.forEach((o,r)=>{t[r]=o}),t}const k6=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),rX=e=>typeof e=="object"&&e!==null&&"status"in e&&"ok"in e&&"json"in e&&typeof e.json=="function",Pn=async(e,t,a)=>{await e.setItem(t,JSON.stringify(a))},Na=async(e,t)=>{const a=await e.getItem(t);if(!a)return null;try{return JSON.parse(a)}catch{return null}},Ya=async(e,t)=>{await e.removeItem(t)};class zg{constructor(){this.promise=new zg.promiseConstructor((t,a)=>{this.resolve=t,this.reject=a})}}zg.promiseConstructor=Promise;function Cp(e){const t=e.split(".");if(t.length!==3)throw new Nf("Invalid JWT structure");for(let o=0;o<t.length;o++)if(!HJ.test(t[o]))throw new Nf("JWT not in base64url format");return{header:JSON.parse(LR(t[0])),payload:JSON.parse(LR(t[1])),signature:ic(t[2]),raw:{header:t[0],payload:t[1]}}}async function nX(e){return await new Promise(t=>{setTimeout(()=>t(null),e)})}function sX(e,t){return new Promise((o,r)=>{(async()=>{for(let n=0;n<1/0;n++)try{const i=await e(n);if(!t(n,null,i)){o(i);return}}catch(i){if(!t(n,i)){r(i);return}}})()})}function w6(e){return("0"+e.toString(16)).substr(-2)}function iX(){const t=new Uint32Array(56);if(typeof crypto>"u"){const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",o=a.length;let r="";for(let n=0;n<56;n++)r+=a.charAt(Math.floor(Math.random()*o));return r}return crypto.getRandomValues(t),Array.from(t,w6).join("")}async function lX(e){const a=new TextEncoder().encode(e),o=await crypto.subtle.digest("SHA-256",a),r=new Uint8Array(o);return Array.from(r).map(n=>String.fromCharCode(n)).join("")}async function cX(e){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),e;const a=await lX(e);return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}const dX=/^[a-zA-Z0-9_-]{8,64}$/;function wh(e){return typeof e=="string"&&dX.test(e)?e:null}function uX(){if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"){const t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,w6).join("")}let e="";for(let t=0;t<32;t++)e+=Math.floor(Math.random()*16).toString(16);return e}const Ic=(e,t)=>`${e}-flow-${t}-code-verifier`,Wu=e=>`${e}-flows-code-verifier`;async function Rk(e,t){const a=await Na(e,Wu(t));return Array.isArray(a)?a.filter(o=>wh(o)!==null):[]}async function mX(e,t,a,o,r){await Pn(e,Ic(t,a),o);const n=(await Rk(e,t)).filter(i=>i!==a);for(n.push(a);n.length>KJ;){const i=n.shift();await Ya(e,Ic(t,i)),r==null||r(i)}await Pn(e,Wu(t),n),await Pn(e,`${t}-code-verifier`,o)}async function pX(e,t,a){if(a){const r=await Na(e,Ic(t,a));return{verifier:typeof r=="string"?r:null,flowId:a}}const o=await Na(e,`${t}-code-verifier`);return{verifier:typeof o=="string"?o:null,flowId:null}}async function rr(e,t,a){const o=`${t}-code-verifier`;if(!a){await Ya(e,o);return}const r=Ic(t,a),n=await Na(e,r);await Ya(e,r);const i=await Rk(e,t),l=i.filter(c=>c!==a);l.length!==i.length&&(l.length>0?await Pn(e,Wu(t),l):await Ya(e,Wu(t))),n!=null&&n===await Na(e,o)&&await Ya(e,o)}async function hX(e,t){const a=await Rk(e,t);for(const o of a)await Ya(e,Ic(t,o));await Ya(e,Wu(t)),await Ya(e,`${t}-code-verifier`)}function fX(e,t){const a=e.indexOf("#");let o=a===-1?e:e.slice(0,a);const r=a===-1?"":e.slice(a),n=o.indexOf("?");if(n!==-1){const l=o.slice(0,n),c=o.slice(n+1).split("&").filter(d=>d!==""&&d!==yi&&!d.startsWith(`${yi}=`));o=c.length>0?`${l}?${c.join("&")}`:l}const i=o.includes("?")?"&":"?";return`${o}${i}${yi}=${encodeURIComponent(t)}${r}`}async function gX(e,t,a=!1,o){const r=iX();let n=r;a&&(n+="/recovery");const i=uX();await mX(e,t,i,n,o);const l=await cX(r);return[l,r===l?"plain":"s256",i]}const vX=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function xX(e){const t=e.headers.get(Ly);if(!t||!t.match(vX))return null;try{return new Date(`${t}T00:00:00.0Z`)}catch{return null}}function bX(e){if(!e)throw new Error("Missing exp claim");const t=Math.floor(Date.now()/1e3);if(e<=t)throw new Error("JWT has expired")}function yX(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const kX=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function pn(e){if(!kX.test(e))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}
438function jd(e){if(!e.recoveryCodes)throw new Error("@supabase/auth-js: the MFA recovery codes API is experimental and disabled by default. Enable it by passing `auth: { experimental: { recoveryCodes: true } }` to createClient (or to the GoTrueClient constructor).")}function Nv(){const e={};return new Proxy(e,{get:(t,a)=>{if(a==="__isUserNotAvailableProxy")return!0;if(typeof a=="symbol"){const o=a.toString();if(o==="Symbol(Symbol.toPrimitive)"||o==="Symbol(Symbol.toStringTag)"||o==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${a}" property of the session object is not supported. Please use getUser() instead.`)},set:(t,a)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${a}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(t,a)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${a}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function wX(e,t){return new Proxy(e,{get:(a,o,r)=>{if(o==="__isInsecureUserWarningProxy")return!0;if(typeof o=="symbol"){const n=o.toString();if(n==="Symbol(Symbol.toPrimitive)"||n==="Symbol(Symbol.toStringTag)"||n==="Symbol(util.inspect.custom)"||n==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(a,o,r)}return!t.value&&typeof o=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),t.value=!0),Reflect.get(a,o,r)}})}function VR(e){return JSON.parse(JSON.stringify(e))}const ci=e=>{if(typeof e=="object"&&e!==null){const t=e;if(typeof t.msg=="string")return t.msg;if(typeof t.message=="string")return t.message;if(typeof t.error_description=="string")return t.error_description;if(typeof t.error=="string")return t.error}return JSON.stringify(e)},FR=[500,501,502,503,504,520,521,522,523,524,525,526,527,528,529,530];async function UR(e){var t;if(!rX(e))throw new kh(ci(e),0);let a;try{a=await e.json()}catch(n){throw FR.includes(e.status)?new kh(e.statusText||`HTTP ${e.status}`,e.status):new fr(ci(n),n)}if(FR.includes(e.status))throw new kh(ci(a),e.status);let o;const r=xX(e);if(r&&r.getTime()>=v6["2024-01-01"].timestamp&&typeof a=="object"&&a&&typeof a.code=="string"?o=a.code:typeof a=="object"&&a&&typeof a.error_code=="string"&&(o=a.error_code),o){if(o==="weak_password")throw new DR(ci(a),e.status,((t=a.weak_password)===null||t===void 0?void 0:t.reasons)||[]);if(o==="session_not_found")throw new ca}else if(typeof a=="object"&&a&&typeof a.weak_password=="object"&&a.weak_password&&Array.isArray(a.weak_password.reasons)&&a.weak_password.reasons.length&&a.weak_password.reasons.reduce((n,i)=>n&&typeof i=="string",!0))throw new DR(ci(a),e.status,a.weak_password.reasons);throw new WJ(ci(a),e.status||500,o)}const CX=(e,t,a,o)=>{const r={method:e,headers:(t==null?void 0:t.headers)||{}};return e==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"},t==null?void 0:t.headers),r.body=JSON.stringify(o),Object.assign(Object.assign({},r),a))};async function me(e,t,a,o){var r;const n=Object.assign({},o==null?void 0:o.headers);n[Ly]||(n[Ly]=v6["2024-01-01"].name),o!=null&&o.jwt&&(n.Authorization=`Bearer ${o.jwt}`);const i=(r=o==null?void 0:o.query)!==null&&r!==void 0?r:{};o!=null&&o.redirectTo&&(i.redirect_to=o.redirectTo);const l=Object.keys(i).length?"?"+new URLSearchParams(i).toString():"",c=await PX(e,t,a+l,{headers:n,noResolveJson:o==null?void 0:o.noResolveJson},{},o==null?void 0:o.body);return o!=null&&o.xform?o==null?void 0:o.xform(c):{data:Object.assign({},c),error:null}}async function PX(e,t,a,o,r,n){const i=CX(t,o,r,n);let l;try{l=await e(a,Object.assign({},i))}catch(c){throw new kh(ci(c),0)}if(l.ok||await UR(l),o!=null&&o.noResolveJson)return l;try{return await l.json()}catch(c){await UR(c)}}function _o(e){var t;let a=null;jX(e)&&(a=Object.assign({},e),e.expires_at||(a.expires_at=b6(e.expires_in)));const o=(t=e.user)!==null&&t!==void 0?t:typeof(e==null?void 0:e.id)=="string"?e:null;return{data:{session:a,user:o},error:null}}function GR(e){const t=_o(e);return!t.error&&e.weak_password&&typeof e.weak_password=="object"&&Array.isArray(e.weak_password.reasons)&&e.weak_password.reasons.length&&e.weak_password.message&&typeof e.weak_password.message=="string"&&e.weak_password.reasons.reduce((a,o)=>
438a&&typeof o=="string",!0)&&(t.data.weak_password=e.weak_password),t}function is(e){var t;return{data:{user:(t=e.user)!==null&&t!==void 0?t:e},error:null}}function SX(e){return{data:e,error:null}}function RX(e){const{action_link:t,email_otp:a,hashed_token:o,redirect_to:r,verification_type:n}=e,i=Fg(e,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),l={action_link:t,email_otp:a,hashed_token:o,redirect_to:r,verification_type:n},c=Object.assign({},i);return{data:{properties:l,user:c},error:null}}function zR(e){return e}function jX(e){return!!e.access_token&&!!e.refresh_token&&!!e.expires_in}const Av=["global","local","others"];class NX{constructor({url:t="",headers:a={},fetch:o,experimental:r}){this.url=t,this.headers=a,this.fetch=k6(o),this.experimental=r??{},this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)},this.customProviders={listProviders:this._listCustomProviders.bind(this),createProvider:this._createCustomProvider.bind(this),getProvider:this._getCustomProvider.bind(this),updateProvider:this._updateCustomProvider.bind(this),deleteProvider:this._deleteCustomProvider.bind(this)},this.passkey={listPasskeys:this._adminListPasskeys.bind(this),deletePasskey:this._adminDeletePasskey.bind(this)}}async signOut(t,a=Av[0]){if(Av.indexOf(a)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${Av.join(", ")}`);try{return await me(this.fetch,"POST",`${this.url}/logout?scope=${a}`,{headers:this.headers,jwt:t,noResolveJson:!0}),{data:null,error:null}}catch(o){if(se(o))return{data:null,error:o};throw o}}async inviteUserByEmail(t,a={}){try{return await me(this.fetch,"POST",`${this.url}/invite`,{body:{email:t,data:a.data},headers:this.headers,redirectTo:a.redirectTo,xform:is})}catch(o){if(se(o))return{data:{user:null},error:o};throw o}}async generateLink(t){try{const{options:a}=t,o=Fg(t,["options"]),r=Object.assign(Object.assign({},o),a);return"newEmail"in o&&(r.new_email=o==null?void 0:o.newEmail,delete r.newEmail),await me(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:r,headers:this.headers,xform:RX,redirectTo:a==null?void 0:a.redirectTo})}catch(a){if(se(a))return{data:{properties:null,user:null},error:a};throw a}}async createUser(t){try{return await me(this.fetch,"POST",`${this.url}/admin/users`,{body:t,headers:this.headers,xform:is})}catch(a){if(se(a))return{data:{user:null},error:a};throw a}}async listUsers(t){var a,o,r,n,i,l,c;try{const d={nextPage:null,lastPage:0,total:0},u=await me(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(o=(a=t==null?void 0:t.page)===null||a===void 0?void 0:a.toString())!==null&&o!==void 0?o:"",per_page:(n=(r=t==null?void 0:t.perPage)===null||r===void 0?void 0:r.toString())!==null&&n!==void 0?n:""},xform:zR});if(u.error)throw u.error;const m=await u.json(),h=(i=u.headers.get("x-total-count"))!==null&&i!==void 0?i:0,p=(c=(l=u.headers.get("link"))===null||l===void 0?void 0:l.split(","))!==null&&c!==void 0?c:[];return p.length>0&&(p.forEach(f=>{const g=parseInt(f.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(f.split(";")[1].split("=")[1]);d[`${b}Page`]=g}),d.total=parseInt(h)),{data:Object.assign(Object.assign({},m),d),error:null}}catch(d){if(se(d))return{data:{users:[]},error:d};throw d}}async getUserById(t){pn(t);try{return await me(this.fetch,"GET",`${this.url}/admin/users/${t}`,{headers:this.headers,xform:is})}catch(a){if(se(a))return{data:{user:null},error:a};throw a}}async updateUserById(t,a){pn(t);try{return await me(this.fetch,"PUT",`${this.url}/admin/users/${t}`,{body:a,headers:this.headers,xform:is})}catch(o){if(se(o))return{data:{user:null},error:o};throw o}}async deleteUser(t,a=!1){pn(t);try{return await me(this.fetch,"DELETE",`${this.url}/admin/users/${t}`,{headers:this.headers,body:{should_soft_delete:a},xform:is}
438)}catch(o){if(se(o))return{data:{user:null},error:o};throw o}}async _listFactors(t){pn(t.userId);try{const{data:a,error:o}=await me(this.fetch,"GET",`${this.url}/admin/users/${t.userId}/factors`,{headers:this.headers,xform:r=>({data:{factors:r},error:null})});return{data:a,error:o}}catch(a){if(se(a))return{data:null,error:a};throw a}}async _deleteFactor(t){pn(t.userId),pn(t.id);try{return{data:await me(this.fetch,"DELETE",`${this.url}/admin/users/${t.userId}/factors/${t.id}`,{headers:this.headers}),error:null}}catch(a){if(se(a))return{data:null,error:a};throw a}}async _listOAuthClients(t){var a,o,r,n,i,l,c;try{const d={nextPage:null,lastPage:0,total:0},u=await me(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(o=(a=t==null?void 0:t.page)===null||a===void 0?void 0:a.toString())!==null&&o!==void 0?o:"",per_page:(n=(r=t==null?void 0:t.perPage)===null||r===void 0?void 0:r.toString())!==null&&n!==void 0?n:""},xform:zR});if(u.error)throw u.error;const m=await u.json(),h=(i=u.headers.get("x-total-count"))!==null&&i!==void 0?i:0,p=(c=(l=u.headers.get("link"))===null||l===void 0?void 0:l.split(","))!==null&&c!==void 0?c:[];return p.length>0&&(p.forEach(f=>{const g=parseInt(f.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(f.split(";")[1].split("=")[1]);d[`${b}Page`]=g}),d.total=parseInt(h)),{data:Object.assign(Object.assign({},m),d),error:null}}catch(d){if(se(d))return{data:{clients:[]},error:d};throw d}}async _createOAuthClient(t){try{return await me(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:t,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(se(a))return{data:null,error:a};throw a}}async _getOAuthClient(t){try{return await me(this.fetch,"GET",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(se(a))return{data:null,error:a};throw a}}async _updateOAuthClient(t,a){try{return await me(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${t}`,{body:a,headers:this.headers,xform:o=>({data:o,error:null})})}catch(o){if(se(o))return{data:null,error:o};throw o}}async _deleteOAuthClient(t){try{return await me(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${t}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(se(a))return{data:null,error:a};throw a}}async _regenerateOAuthClientSecret(t){try{return await me(this.fetch,"POST",`${this.url}/admin/oauth/clients/${t}/regenerate_secret`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(se(a))return{data:null,error:a};throw a}}async _listCustomProviders(t){try{const a={};return t!=null&&t.type&&(a.type=t.type),await me(this.fetch,"GET",`${this.url}/admin/custom-providers`,{headers:this.headers,query:a,xform:o=>{var r;return{data:{providers:(r=o==null?void 0:o.providers)!==null&&r!==void 0?r:[]},error:null}}})}catch(a){if(se(a))return{data:{providers:[]},error:a};throw a}}async _createCustomProvider(t){try{return await me(this.fetch,"POST",`${this.url}/admin/custom-providers`,{body:t,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(se(a))return{data:null,error:a};throw a}}async _getCustomProvider(t){try{return await me(this.fetch,"GET",`${this.url}/admin/custom-providers/${t}`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(se(a))return{data:null,error:a};throw a}}async _updateCustomProvider(t,a){try{return await me(this.fetch,"PUT",`${this.url}/admin/custom-providers/${t}`,{body:a,headers:this.headers,xform:o=>({data:o,error:null})})}catch(o){if(se(o))return{data:null,error:o};throw o}}async _deleteCustomProvider(t){try{return await me(this.fetch,"DELETE",`${this.url}/admin/custom-providers/${t}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(se(a))return{data:null,error:a};throw a}}async _adminListPasskeys(t){pn(t.userId);try{return await me(this.fetch,"GET",`${this.url}/admin/users/${t.userId}/passkeys`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(se(a))return{data:null,error:a};throw a}}async _adminDeletePasskey(t){pn(t.userId),pn(t.passkeyId);
438try{return await me(this.fetch,"DELETE",`${this.url}/admin/users/${t.userId}/passkeys/${t.passkeyId}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(se(a))return{data:null,error:a};throw a}}}function HR(e={}){return{getItem:t=>e[t]||null,setItem:(t,a)=>{e[t]=a},removeItem:t=>{delete e[t]}}}globalThis&&y6()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug");class AX extends Error{constructor(t){super(t),this.isAcquireTimeout=!0}}function EX(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function C6(e){if(!/^0x[a-fA-F0-9]{40}$/.test(e))throw new Error(`@supabase/auth-js: Address "${e}" is invalid.`);return e.toLowerCase()}function _X(e){return parseInt(e,16)}function TX(e){const t=new TextEncoder().encode(e);return"0x"+Array.from(t,o=>o.toString(16).padStart(2,"0")).join("")}function $X(e){var t;const{chainId:a,domain:o,expirationTime:r,issuedAt:n=new Date,nonce:i,notBefore:l,requestId:c,resources:d,scheme:u,uri:m,version:h}=e;{if(!Number.isInteger(a))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${a}`);if(!o)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(i&&i.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${i}`);if(!m)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(h!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${h}`);if(!((t=e.statement)===null||t===void 0)&&t.includes(` 439`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`)}const p=C6(e.address),f=u?`${u}://${o}`:o,g=e.statement?`${e.statement} 440`:"",b=`${f} wants you to sign in with your Ethereum account: 441${p} 442 443${g}`;let v=`URI: ${m} 444Version: ${h} 445Chain ID: ${a}${i?` 446Nonce: ${i}`:""} 447Issued At: ${n.toISOString()}`;if(r&&(v+=` 448Expiration Time: ${r.toISOString()}`),l&&(v+=` 449Not Before: ${l.toISOString()}`),c&&(v+=` 450Request ID: ${c}`),d){let y=` 451Resources:`;for(const k of d){if(!k||typeof k!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${k}`);y+=` 452- ${k}`}v+=y}return`${b} 453${v}`}class Zt extends Error{constructor({message:t,code:a,cause:o,name:r}){var n;super(t,{cause:o}),this.__isWebAuthnError=!0,this.name=(n=r??(o instanceof Error?o.name:void 0))!==null&&n!==void 0?n:"Unknown Error",this.code=a}toJSON(){return{name:this.name,message:this.message,code:this.code}}}class Ef extends Zt{constructor(t,a){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:a,message:t}),this.name="WebAuthnUnknownError",this.originalError=a}}function OX({error:e,options:t}){var a,o,r;const{publicKey:n}=t;if(!n)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Zt({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else if(e.name==="ConstraintError"){if(((a=n.authenticatorSelection)===null||a===void 0?void 0:a.requireResidentKey)===!0)return new Zt({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:e});if(t.mediation==="conditional"&&((o=n.authenticatorSelection)===null||o===void 0?void 0:o.userVerification)==="required")return new Zt({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:e});if(((r=n.authenticatorSelection)===null||r===void 0?void 0:r.userVerification)==="required")return new Zt({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:e})}else{if(e.name==="InvalidStateError")return new Zt({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:e});if(e.name==="NotAllowedError")return new Zt({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="NotSupportedError")return n.pubKeyCredParams.filter(l=>l.type==="public-key").length===0?new Zt({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:e}):new Zt({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:e});if(e.name==="SecurityError"){const i=window.location.hostname;if(P6(i)){if(n.rp.id!==i)return new Zt({message:`The RP ID "${n.rp.id}
453" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new Zt({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="TypeError"){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new Zt({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:e})}else if(e.name==="UnknownError")return new Zt({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return new Zt({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}function qX({error:e,options:t}){const{publicKey:a}=t;if(!a)throw Error("options was missing required publicKey property");if(e.name==="AbortError"){if(t.signal instanceof AbortSignal)return new Zt({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:e})}else{if(e.name==="NotAllowedError")return new Zt({message:e.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e});if(e.name==="SecurityError"){const o=window.location.hostname;if(P6(o)){if(a.rpId!==o)return new Zt({message:`The RP ID "${a.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:e})}else return new Zt({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:e})}else if(e.name==="UnknownError")return new Zt({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:e})}return new Zt({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:e})}class DX{createNewAbortSignal(){if(this.controller){const a=new Error("Cancelling existing WebAuthn API call for new one");a.name="AbortError",this.controller.abort(a)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}}const By=new DX;function KR(e){if(!e)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(e);const{challenge:t,user:a,excludeCredentials:o}=e,r=Fg(e,["challenge","user","excludeCredentials"]),n=ic(t).buffer,i=Object.assign(Object.assign({},a),{id:ic(a.id).buffer}),l=Object.assign(Object.assign({},r),{challenge:n,user:i});if(o&&o.length>0){l.excludeCredentials=new Array(o.length);for(let c=0;c<o.length;c++){const d=o[c];l.excludeCredentials[c]=Object.assign(Object.assign({},d),{id:ic(d.id).buffer,type:d.type||"public-key",transports:d.transports})}}return l}function QR(e){if(!e)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(e);const{challenge:t,allowCredentials:a}=e,o=Fg(e,["challenge","allowCredentials"]),r=ic(t).buffer,n=Object.assign(Object.assign({},o),{challenge:r});if(a&&a.length>0){n.allowCredentials=new Array(a.length);for(let i=0;i<a.length;i++){const l=a[i];n.allowCredentials[i]=Object.assign(Object.assign({},l),{id:ic(l.id).buffer,type:l.type||"public-key",transports:l.transports})}}return n}function WR(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const a=e;return{id:e.id,rawId:e.id,response:{attestationObject:ki(new Uint8Array(e.response.attestationObject)),clientDataJSON:ki(new Uint8Array(e.response.clientDataJSON))},type:"public-key",clientExtensionResults:e.getClientExtensionResults(),authenticatorAttachment:(t=a.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function JR(e){var t;if("toJSON"in e&&typeof e.toJSON=="function")return e.toJSON();const a=e,o=e.getClientExtensionResults(),r=e.response;return{id:e.id,rawId:e.id,response:{authenticatorData:ki(new Uint8Array(r.authenticatorData)),clientDataJSON:ki(new Uint8Array(r.clientDataJSON)),signature:ki(new Uint8Array(r.signature)),userHandle:r.userHandle?ki(new Uint8Array(r.userHandle)):void 0},type:"public-key",clientExtensionResults:o,authenticatorAttachment:(t=a.authenticatorAttachment)!==null&&t!==void 0?t:void 0}}function P6(e){return e==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}function _f(){var e,t;return!!(fa()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((e=navigator==null?void 0:navigator.credentials)===null||e===void 0?void 0:e.create)=="function"&&typeof((t=navigator==null?void 0:navigator.credentials)===null||t===void 0?void 0:t.get)=="function")}async function S6(e){try{const t=await navigator.credentials.create(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new Ef("Browser returned unexpected credential type",t)}:{data:null,error:new Ef("Empty credential response",t)}}
453catch(t){return{data:null,error:OX({error:t,options:e})}}}async function R6(e){try{const t=await navigator.credentials.get(e);return t?t instanceof PublicKeyCredential?{data:t,error:null}:{data:null,error:new Ef("Browser returned unexpected credential type",t)}:{data:null,error:new Ef("Empty credential response",t)}}catch(t){return{data:null,error:qX({error:t,options:e})}}}const IX={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"direct"},MX={userVerification:"preferred",hints:["security-key"],attestation:"direct"};function Tf(...e){const t=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),a=r=>r instanceof ArrayBuffer||ArrayBuffer.isView(r),o={};for(const r of e)if(r)for(const n in r){const i=r[n];if(i!==void 0)if(Array.isArray(i))o[n]=i;else if(a(i))o[n]=i;else if(t(i)){const l=o[n];t(l)?o[n]=Tf(l,i):o[n]=Tf(i)}else o[n]=i}return o}function LX(e,t){return Tf(IX,e,t||{})}function BX(e,t){return Tf(MX,e,t||{})}class VX{constructor(t){this.client=t,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(t){return this.client.mfa.enroll(Object.assign(Object.assign({},t),{factorType:"webauthn"}))}async _challenge({factorId:t,webauthn:a,friendlyName:o,signal:r},n){var i;try{const{data:l,error:c}=await this.client.mfa.challenge({factorId:t,webauthn:a});if(!l)return{data:null,error:c};const d=r??By.createNewAbortSignal();if(l.webauthn.type==="create"){const{user:u}=l.webauthn.credential_options.publicKey;if(!u.name){const m=o;if(m)u.name=`${u.id}:${m}`;else{const p=(await this.client.getUser()).data.user,f=((i=p==null?void 0:p.user_metadata)===null||i===void 0?void 0:i.name)||(p==null?void 0:p.email)||(p==null?void 0:p.id)||"User";u.name=`${u.id}:${f}`}}u.displayName||(u.displayName=u.name)}switch(l.webauthn.type){case"create":{const u=LX(l.webauthn.credential_options.publicKey,n==null?void 0:n.create),{data:m,error:h}=await S6({publicKey:u,signal:d});return m?{data:{factorId:t,challengeId:l.id,webauthn:{type:l.webauthn.type,credential_response:m}},error:null}:{data:null,error:h}}case"request":{const u=BX(l.webauthn.credential_options.publicKey,n==null?void 0:n.request),{data:m,error:h}=await R6(Object.assign(Object.assign({},l.webauthn.credential_options),{publicKey:u,signal:d}));return m?{data:{factorId:t,challengeId:l.id,webauthn:{type:l.webauthn.type,credential_response:m}},error:null}:{data:null,error:h}}}}catch(l){return se(l)?{data:null,error:l}:{data:null,error:new fr("Unexpected error in challenge",l)}}}async _verify({challengeId:t,factorId:a,webauthn:o}){return this.client.mfa.verify({factorId:a,challengeId:t,webauthn:o})}async _authenticate({factorId:t,webauthn:{rpId:a=typeof window<"u"?window.location.hostname:void 0,rpOrigins:o=typeof window<"u"?[window.location.origin]:void 0,signal:r}={}},n){if(!a)return{data:null,error:new Qu("rpId is required for WebAuthn authentication")};try{if(!_f())return{data:null,error:new fr("Browser does not support WebAuthn",null)};const{data:i,error:l}=await this.challenge({factorId:t,webauthn:{rpId:a,rpOrigins:o},signal:r},{request:n});if(!i)return{data:null,error:l};const{webauthn:c}=i;return this._verify({factorId:t,challengeId:i.challengeId,webauthn:{type:c.type,rpId:a,rpOrigins:o,credential_response:c.credential_response}})}catch(i){return se(i)?{data:null,error:i}:{data:null,error:new fr("Unexpected error in authenticate",i)}}}async _register({friendlyName:t,webauthn:{rpId:a=typeof window<"u"?window.location.hostname:void 0,rpOrigins:o=typeof window<"u"?[window.location.origin]:void 0,signal:r}={}},n){if(!a)return{data:null,error:new Qu("rpId is required for WebAuthn registration")};try{if(!_f())return{data:null,error:new fr("Browser does not support WebAuthn",null)};const{data:i,error:l}=await this._enroll({friendlyName:t});if(!i)return await this.client.mfa.listFactors().then(u=>{var m;return(m=u.data)===null||m===void 0?void 0:m.all.find(h=>h.factor_type==="webauthn"&&h.friendly_name===t&&h.status==="unverified")}).then(u=>u?this.client.mfa.unenroll({factorId:u==null?void 0:u.id}):void 0),{data:null,error:l};const{data:c,error:d}=await this._challenge({factorId:i.id,friendlyName:i.friendly_name,webauthn:{rpId:a,rpOrigins:o},signal:r},{create:n});return c?this._verify({factorId:i.id,challengeId:c.challengeId,webauthn:{rpId:a,rpOrigins:o,type:c.webauthn.type,credential_response:c.webauthn.credential_response}}):{data:null,error:d}}catch(i){return se(i)?{data:null,error:i}:{data:null,error:new fr("Unexpected error in register",i)}}}}EX();const FX={url:UJ,storageKey:GJ,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:zJ,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1,throwOnError:!1,lockAcquireTimeout:5e3,skipAutoInitialize:!1,experimental:{}},gl={};let XR=!1;class Ju{get jwks(){var t,a;return(a=(t=gl[this.storageKey])===null||t===void 0?void 0:t.jwks)!==null&&a!==void 0?a:{keys:[]}}set jwks(t){gl[this.storageKey]=Object.assign(Object.assign({},gl[this.storageKey]),{jwks:t})}get jwks_cached_at(){var t,a;return(a=(t=gl[this.storageKey])===null||t===void 0?void 0:t.cachedAt)!==null&&a!==void 0?a:Number.MIN_SAFE_INTEGER}set jwks_cached_at(t){gl[this.storageKey]=Object.assign(Object.assign({},gl[this.storageKey]),{cachedAt:t})}constructor(t){var a,o,r;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.autoRefreshTickTimeout=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.lastRefreshFailure=null,this._sessionRemovalEpoch=0,this.initializePromise=null,this._pendingInitNotifications=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lock=null,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log;const n=Object.assign(Object.assign({},FX),t);
453if(this.storageKey=n.storageKey,this.instanceID=(a=Ju.nextInstanceID[this.storageKey])!==null&&a!==void 0?a:0,Ju.nextInstanceID[this.storageKey]=this.instanceID+1,this.logDebugMessages=!!n.debug,typeof n.debug=="function"&&(this.logger=n.debug),this.instanceID>0&&fa()){const i=`${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;console.warn(i),this.logDebugMessages&&console.trace(i)}if(this.persistSession=n.persistSession,this.autoRefreshToken=n.autoRefreshToken,this.experimental=(o=n.experimental)!==null&&o!==void 0?o:{},this.admin=new NX({url:n.url,headers:n.headers,fetch:n.fetch,experimental:this.experimental}),this.url=n.url,this.headers=n.headers,this.fetch=k6(n.fetch),this.detectSessionInUrl=n.detectSessionInUrl,this.flowType=n.flowType,this.hasCustomAuthorizationHeader=n.hasCustomAuthorizationHeader,this.throwOnError=n.throwOnError,this.lockAcquireTimeout=n.lockAcquireTimeout,n.lock!=null&&(this.lock=n.lock,XR||(XR=!0,console.warn(`${this._logPrefix()} The "lock" option is deprecated and will be removed in v3. The client now coordinates session refreshes without a lock, so most apps can drop the option. See https://github.com/supabase/supabase-js/blob/master/packages/core/auth-js/migrations/lockless-coordination.md`))),this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new VX(this),recoveryCodes:{getStatus:this._getRecoveryCodesStatus.bind(this),generate:this._generateRecoveryCodes.bind(this),verify:this._verifyRecoveryCode.bind(this),regenerate:this._regenerateRecoveryCodes.bind(this),unenroll:this._unenrollRecoveryCodes.bind(this)}},this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this),listGrants:this._listOAuthGrants.bind(this),revokeGrant:this._revokeOAuthGrant.bind(this)},this.passkey={startRegistration:this._startPasskeyRegistration.bind(this),verifyRegistration:this._verifyPasskeyRegistration.bind(this),startAuthentication:this._startPasskeyAuthentication.bind(this),verifyAuthentication:this._verifyPasskeyAuthentication.bind(this),list:this._listPasskeys.bind(this),update:this._updatePasskey.bind(this),delete:this._deletePasskey.bind(this)},this.persistSession?(n.storage?this.storage=n.storage:y6()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=HR(this.memoryStorage)),n.userStorage&&(this.userStorage=n.userStorage)):(this.memoryStorage={},this.storage=HR(this.memoryStorage)),fa()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(i){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",i)}(r=this.broadcastChannel)===null||r===void 0||r.addEventListener("message",async i=>{this._debug("received broadcast notification from other tab or client",i),(i.data.event==="TOKEN_REFRESHED"||i.data.event==="SIGNED_IN")&&(this.lastRefreshFailure=null);try{await this._notifyAllSubscribers(i.data.event,i.data.session,!1)}catch(l){this._debug("#broadcastChannel","error",l)}})}n.skipAutoInitialize||this.initialize().catch(i=>{this._debug("#initialize()","error",i)})}isThrowOnErrorEnabled(){return this.throwOnError}_returnResult(t){if(this.throwOnError&&t&&t.error)throw t.error;return t}_logPrefix(){return`GoTrueClient@${this.storageKey}:${this.instanceID} (${g6}) ${new Date().toISOString()}`}_debug(...t){return this.logDebugMessages&&this.logger(this._logPrefix(),...t),this}async initialize(){var t;if(this.initializePromise)return await this.initializePromise;this._pendingInitNotifications=[],this.initializePromise=(async()=>this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._initialize()):await this._initialize())();
453const a=await this.initializePromise,o=(t=this._pendingInitNotifications)!==null&&t!==void 0?t:[];this._pendingInitNotifications=null;for(const r of o)await this._notifyAllSubscribers(r.event,r.session,r.broadcast);return a}async _initialize(){var t;try{let a={},o="none";if(fa()&&(a=BR(window.location.href),this._isImplicitGrantCallback(a)?o="implicit":await this._isPKCECallback(a)&&(o="pkce")),fa()&&this.detectSessionInUrl&&o!=="none"){const{data:r,error:n}=await this._getSessionFromURL(a,o);if(n){if(this._debug("#_initialize()","error detecting session from URL",n),JJ(n)){const c=(t=n.details)===null||t===void 0?void 0:t.code;if(c==="identity_already_exists"||c==="identity_not_found"||c==="single_identity_not_deletable")return{error:n}}return{error:n}}const{session:i,redirectType:l}=r;return this._debug("#_initialize()","detected session in URL",i,"redirect type",l),await this._saveSession(i),setTimeout(async()=>{l==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",i):await this._notifyAllSubscribers("SIGNED_IN",i)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(a){return se(a)?this._returnResult({error:a}):this._returnResult({error:new fr("Unexpected error during initialization",a)})}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(t){var a,o,r;try{const n=await me(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(o=(a=t==null?void 0:t.options)===null||a===void 0?void 0:a.data)!==null&&o!==void 0?o:{},gotrue_meta_security:{captcha_token:(r=t==null?void 0:t.options)===null||r===void 0?void 0:r.captchaToken}},xform:_o}),{data:i,error:l}=n;if(l||!i)return this._returnResult({data:{user:null,session:null},error:l});const c=i.session,d=i.user;return i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",c)),this._returnResult({data:{user:d,session:c},error:null})}catch(n){if(se(n))return this._returnResult({data:{user:null,session:null},error:n});throw n}}async signUp(t){var a,o,r;let n=null;try{let i;if("email"in t){const{email:m,password:h,options:p}=t;let f=null,g=null;this.flowType==="pkce"&&([f,g,n]=await this._getCodeChallengeAndMethod()),i=await me(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:this._maybeAppendFlowIdToRedirect(p==null?void 0:p.emailRedirectTo,n),body:{email:m,password:h,data:(a=p==null?void 0:p.data)!==null&&a!==void 0?a:{},gotrue_meta_security:{captcha_token:p==null?void 0:p.captchaToken},code_challenge:f,code_challenge_method:g},xform:_o})}else if("phone"in t){const{phone:m,password:h,options:p}=t;i=await me(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:m,password:h,data:(o=p==null?void 0:p.data)!==null&&o!==void 0?o:{},channel:(r=p==null?void 0:p.channel)!==null&&r!==void 0?r:"sms",gotrue_meta_security:{captcha_token:p==null?void 0:p.captchaToken}},xform:_o})}else throw new yp("You must provide either an email or phone number and a password");const{data:l,error:c}=i;if(c||!l)return await rr(this.storage,this.storageKey,n),this._returnResult({data:{user:null,session:null},error:c});const d=l.session,u=l.user;return l.session&&(await this._saveSession(l.session),await this._notifyAllSubscribers("SIGNED_IN",d)),this._returnResult({data:{user:u,session:d},error:null})}catch(i){if(await rr(this.storage,this.storageKey,n),se(i))return this._returnResult({data:{user:null,session:null},error:i});throw i}}async signInWithPassword(t){try{let a;if("email"in t){const{email:n,password:i,options:l}=t;a=await me(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:n,password:i,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:GR})}else if("phone"in t){const{phone:n,password:i,options:l}=t;a=await me(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:n,password:i,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:GR})}else throw new yp("You must provide either an email or phone number and a password");const{data:o,error:r}=a;if(r)return this._returnResult({data:{user:null,session:null},error:r});if(!o||!o.session||!o.user){const n=new fl;return this._returnResult({data:{user:null,session:null},error:n})}return o.session&&(await this._saveSession(o.session),await this._notifyAllSubscribers("SIGNED_IN",o.session)),this._returnResult({data:Object.assign({user:o.user,session:o.session},o.weak_password?{weakPassword:o.weak_password}:null),error:r})}catch(a){if(se(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signInWithOAuth(t){var a,o,r,n;return await this._handleProviderSignIn(t.provider,{redirectTo:(a=t.options)===null||a===void 0?void 0:a.redirectTo,scopes:(o=t.options)===null||o===void 0?void 0:o.scopes,queryParams:(r=t.options)===null||r===void 0?void 0:r.queryParams,skipBrowserRedirect:(n=t.options)===null||n===void 0?void 0:n.skipBrowserRedirect})}async exchangeCodeForSession(t,a){return await this.initializePromise,this.lock!=null?this._acquireLock(this.lockAcquireTimeout,async()=>this._exchangeCodeForSession(t,a)):this._exchangeCodeForSession(t,a)}async signInWithWeb3(t){const{chain:a}=t;switch(a){case"ethereum":return await this.signInWithEthereum(t);case"solana":return await this.signInWithSolana(t);default:throw new Error(`@supabase/auth-js: Unsupported chain "${a}"`)}}async signInWithEthereum(t){var a,o,r,n,i,l,c,d,u,m,h;let p,f;if("message"in t)p=t.message,f=t.signature;else{const{chain:g,wallet:b,statement:v,options:y}=t;let k;if(fa())if(typeof b=="object")k=b;else{const E=window;if("ethereum"in E&&typeof E.ethereum=="object"&&"request"in E.ethereum&&typeof E.ethereum.request=="function")k=E.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof b!="object"||!(y!=null&&y.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");k=b}const w=new URL((a=y==null?void 0:y.url)!==null&&a!==void 0?a:window.location.href),R=await k.request({method:"eth_requestAccounts"}).then(E=>E).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!R||R.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const C=C6(R[0]);let P=(o=y==null?void 0:y.signInWithEthereum)===null||o===void 0?void 0:o.chainId;if(!P){const E=await k.request({method:"eth_chainId"});P=_X(E)}const N={domain:w.host,address:C,statement:v,uri:w.href,version:"1",chainId:P,nonce:(r=y==null?void 0:y.signInWithEthereum)===null||r===void 0?void 0:r.nonce,issuedAt:(i=(n=y==null?void 0:y.signInWithEthereum)===null||n===void 0?void 0:n.issuedAt)!==null&&i!==void 0?i:new Date,expirationTime:(l=y==null?void 0:y.signInWithEthereum)===null||l===void 0?void 0:l.expirationTime,notBefore:(c=y==null?void 0:y.signInWithEthereum)===null||c===void 0?void 0:c.notBefore,requestId:(d=y==null?void 0:y.signInWithEthereum)===null||d===void 0?void 0:d.requestId,resources:(u=y==null?void 0:y.signInWithEthereum)===null||u===void 0?void 0:u.resources};p=$X(N),f=await k.request({method:"personal_sign",params:[TX(p),C]})}try{const{data:g,error:b}=await me(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:p,signature:f},!((m=t.options)===null||m===void 0)&&m.captchaToken?{gotrue_meta_security:{captcha_token:(h=t.options)===null||h===void 0?void 0:h.captchaToken}}:null),xform:_o});if(b)throw b;if(!g||!g.session||!g.user){const v=new fl;return this._returnResult({data:{user:null,session:null},error:v})}return g.session&&(await this._saveSession(g.session),await this._notifyAllSubscribers("SIGNED_IN",g.session)),this._returnResult({data:Object.assign({},g),error:b})}catch(g){if(se(g))return this._returnResult({data:{user:null,session:null},error:g});throw g}}async signInWithSolana(t){var a,o,r,n,i,l,c,d,u,m,h,p;let f,g;if("message"in t)f=t.message,g=t.signature;else{const{chain:b,wallet:v,statement:y,options:k}=t;let w;if(fa())if(typeof v=="object")w=v;else{const C=window;if("solana"in C&&typeof C.solana=="object"&&("signIn"in C.solana&&typeof C.solana.signIn=="function"||"signMessage"in C.solana&&typeof C.solana.signMessage=="function"))w=C.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof v!="object"||!(k!=null&&k.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");w=v}const R=new URL((a=k==null?void 0:k.url)!==null&&a!==void 0?a:window.location.href);if("signIn"in w&&w.signIn){const C=await w.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},k==null?void 0:k.signInWithSolana),{version:"1",domain:R.host,uri:R.href}),y?{statement:y}:null));let P;if(Array.isArray(C)&&C[0]&&typeof C[0]=="object")P=C[0];else if(C&&typeof C=="object"&&"signedMessage"in C&&"signature"in C)P=C;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in P&&"signature"in P&&(typeof P.signedMessage=="string"||P.signedMessage instanceof Uint8Array)&&P.signature instanceof Uint8Array)f=typeof P.signedMessage=="string"?P.signedMessage:new TextDecoder().decode(P.signedMessage),g=P.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in w)||typeof w.signMessage!="function"||!("publicKey"in w)||typeof w!="object"||!w.publicKey||!("toBase58"in w.publicKey)||typeof w.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");f=[`${R.host} wants you to sign in with your Solana account:`,w.publicKey.toBase58(),...y?["",y,""]:[""],"Version: 1",`URI: ${R.href}`,`Issued At: ${(r=(o=k==null?void 0:k.signInWithSolana)===null||o===void 0?void 0:o.issuedAt)!==null&&r!==void 0?r:new Date().toISOString()}`,...!((n=k==null?void 0:k.signInWithSolana)===null||n===void 0)&&n.notBefore?[`Not Before: ${k.signInWithSolana.notBefore}`]:[],...!((i=k==null?void 0:k.signInWithSolana)===null||i===void 0)&&i.expirationTime?[`Expiration Time: ${k.signInWithSolana.expirationTime}`]:[],...!((l=k==null?void 0:k.signInWithSolana)===null||l===void 0)&&l.chainId?[`Chain ID: ${k.signInWithSolana.chainId}`]:[],...!((c=k==null?void 0:k.signInWithSolana)===null||c===void 0)&&c.nonce?[`Nonce: ${k.signInWithSolana.nonce}`]:[],...!((d=k==null?void 0:k.signInWithSolana)===null||d===void 0)&&d.requestId?[`Request ID: ${
453k.signInWithSolana.requestId}`]:[],...!((m=(u=k==null?void 0:k.signInWithSolana)===null||u===void 0?void 0:u.resources)===null||m===void 0)&&m.length?["Resources",...k.signInWithSolana.resources.map(P=>`- ${P}`)]:[]].join(` 454`);const C=await w.signMessage(new TextEncoder().encode(f),"utf8");if(!C||!(C instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");g=C}}try{const{data:b,error:v}=await me(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:f,signature:ki(g)},!((h=t.options)===null||h===void 0)&&h.captchaToken?{gotrue_meta_security:{captcha_token:(p=t.options)===null||p===void 0?void 0:p.captchaToken}}:null),xform:_o});if(v)throw v;if(!b||!b.session||!b.user){const y=new fl;return this._returnResult({data:{user:null,session:null},error:y})}return b.session&&(await this._saveSession(b.session),await this._notifyAllSubscribers("SIGNED_IN",b.session)),this._returnResult({data:Object.assign({},b),error:v})}catch(b){if(se(b))return this._returnResult({data:{user:null,session:null},error:b});throw b}}async _exchangeCodeForSession(t,a){const o=(a==null?void 0:a.flowId)!=null,r=o?wh(a==null?void 0:a.flowId):fa()?wh(BR(window.location.href)[yi]):null;o&&!r&&this._debug("#_exchangeCodeForSession()","provided flowId is not a valid flow id",a==null?void 0:a.flowId);const{verifier:n,flowId:i}=o&&!r?{verifier:null,flowId:null}:await pX(this.storage,this.storageKey,r),[l,c]=(n??"").split("/");try{if(!l&&this.flowType==="pkce")throw new XJ;const{data:d,error:u}=await me(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:t,code_verifier:l},xform:_o});if(await rr(this.storage,this.storageKey,i),u)throw u;if(!d||!d.session||!d.user){const m=new fl;return this._returnResult({data:{user:null,session:null,redirectType:null},error:m})}return d.session&&(await this._saveSession(d.session),await this._notifyAllSubscribers(c==="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",d.session)),this._returnResult({data:Object.assign(Object.assign({},d),{redirectType:c??null}),error:u})}catch(d){if(await rr(this.storage,this.storageKey,i),se(d))return this._returnResult({data:{user:null,session:null,redirectType:null},error:d});throw d}}async signInWithIdToken(t){try{const{options:a,provider:o,token:r,access_token:n,nonce:i}=t,l=await me(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:o,id_token:r,access_token:n,nonce:i,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:_o}),{data:c,error:d}=l;if(d)return this._returnResult({data:{user:null,session:null},error:d});if(!c||!c.session||!c.user){const u=new fl;return this._returnResult({data:{user:null,session:null},error:u})}return c.session&&(await this._saveSession(c.session),await this._notifyAllSubscribers("SIGNED_IN",c.session)),this._returnResult({data:c,error:d})}catch(a){if(se(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async signInWithOtp(t){var a,o,r,n,i;let l=null;try{if("email"in t){const{email:c,options:d}=t;let u=null,m=null;this.flowType==="pkce"&&([u,m,l]=await this._getCodeChallengeAndMethod());const{error:h}=await me(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:c,data:(a=d==null?void 0:d.data)!==null&&a!==void 0?a:{},create_user:(o=d==null?void 0:d.shouldCreateUser)!==null&&o!==void 0?o:!0,gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},code_challenge:u,code_challenge_method:m},redirectTo:this._maybeAppendFlowIdToRedirect(d==null?void 0:d.emailRedirectTo,l)});return this._returnResult({data:{user:null,session:null},error:h})}if("phone"in t){const{phone:c,options:d}=t,{data:u,error:m}=await me(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:c,data:(r=d==null?void 0:d.data)!==null&&r!==void 0?r:{},create_user:(n=d==null?void 0:d.shouldCreateUser)!==null&&n!==void 0?n:!0,gotrue_meta_security:{captcha_token:d==null?void 0:d.captchaToken},channel:(i=d==null?void 0:d.channel)!==null&&i!==void 0?i:"sms"}});return this._returnResult({data:{user:null,session:null,messageId:u==null?void 0:u.message_id},error:m})}throw new yp("You must provide either an email or phone number.")}catch(c){if(await rr(this.storage,this.storageKey,l),se(c))return this._returnResult({data:{user:null,session:null},error:c});throw c}}async verifyOtp(t){var a,o;try{let r,n;
454"options"in t&&(r=(a=t.options)===null||a===void 0?void 0:a.redirectTo,n=(o=t.options)===null||o===void 0?void 0:o.captchaToken);const{data:i,error:l}=await me(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},t),{gotrue_meta_security:{captcha_token:n}}),redirectTo:r,xform:_o});if(l)throw l;if(!i)throw new Error("An error occurred on token verification.");const c=i.session,d=i.user;return c!=null&&c.access_token&&(await this._saveSession(c),await this._notifyAllSubscribers(t.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",c)),this._returnResult({data:{user:d,session:c},error:null})}catch(r){if(se(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}}async signInWithSSO(t){var a,o,r,n;let i=null;try{let l=null,c=null;this.flowType==="pkce"&&([l,c,i]=await this._getCodeChallengeAndMethod());const d=await me(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in t?{provider_id:t.providerId}:null),"domain"in t?{domain:t.domain}:null),{redirect_to:this._maybeAppendFlowIdToRedirect((a=t.options)===null||a===void 0?void 0:a.redirectTo,i)}),!((o=t==null?void 0:t.options)===null||o===void 0)&&o.captchaToken?{gotrue_meta_security:{captcha_token:t.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:l,code_challenge_method:c}),headers:this.headers,xform:SX});return!((r=d.data)===null||r===void 0)&&r.url&&fa()&&!(!((n=t.options)===null||n===void 0)&&n.skipBrowserRedirect)&&window.location.assign(d.data.url),this._returnResult(d)}catch(l){if(await rr(this.storage,this.storageKey,i),se(l))return this._returnResult({data:null,error:l});throw l}}async reauthenticate(){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._reauthenticate()):await this._reauthenticate()}async _reauthenticate(){try{return await this._useSession(async t=>{const{data:{session:a},error:o}=t;if(o)throw o;if(!a)throw new ca;const{error:r}=await me(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:a.access_token});return this._returnResult({data:{user:null,session:null},error:r})})}catch(t){if(se(t))return this._returnResult({data:{user:null,session:null},error:t});throw t}}async resend(t){let a=null;try{const o=`${this.url}/resend`;if("email"in t){const{email:r,type:n,options:i}=t;let l=null,c=null;this.flowType==="pkce"&&([l,c,a]=await this._getCodeChallengeAndMethod());const{error:d}=await me(this.fetch,"POST",o,{headers:this.headers,body:{email:r,type:n,gotrue_meta_security:{captcha_token:i==null?void 0:i.captchaToken},code_challenge:l,code_challenge_method:c},redirectTo:this._maybeAppendFlowIdToRedirect(i==null?void 0:i.emailRedirectTo,a)});return d&&await rr(this.storage,this.storageKey,a),this._returnResult({data:{user:null,session:null},error:d})}else if("phone"in t){const{phone:r,type:n,options:i}=t,{data:l,error:c}=await me(this.fetch,"POST",o,{headers:this.headers,body:{phone:r,type:n,gotrue_meta_security:{captcha_token:i==null?void 0:i.captchaToken}}});return this._returnResult({data:{user:null,session:null,messageId:l==null?void 0:l.message_id},error:c})}throw new yp("You must provide either an email or phone number and a type")}catch(o){if(await rr(this.storage,this.storageKey,a),se(o))return this._returnResult({data:{user:null,session:null},error:o});throw o}}async getSession(){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>this._useSession(async t=>t)):await this._useSession(async t=>t)}async _acquireLock(t,a){this._debug("#_acquireLock","begin",t);try{if(this.lockAcquired){const o=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),r=(async()=>(await o,await a()))();return this.pendingInLock.push((async()=>{try{await r}catch{}})()),r}return await this.lock(`lock:${this.storageKey}`,t,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const o=a();for(this.pendingInLock.push((async()=>{try{await o}catch{}})()),await o;this.pendingInLock.length;){const r=[...this.pendingInLock];await Promise.all(r),this.pendingInLock.splice(0,r.length)}return await o}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(t){this._debug("#_useSession","begin");try{const a=await this.__loadSession();return await t(a)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lock!=null&&!this.lockAcquired&&this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let t=null;const a=await Na(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",a),a!==null&&(this._isValidSession(a)?t=a:(this._debug("#getSession()","session from storage is not val
454id"),await this._removeSession())),!t)return{data:{session:null},error:null};const o=t.expires_at?t.expires_at*1e3-Date.now()<jv:!1;if(this._debug("#__loadSession()",`session has${o?"":" not"} expired`,"expires_at",t.expires_at),!o)return{data:{session:await this._hydrateSessionUser(t)},error:null};const{data:r,error:n}=await this._callRefreshToken(t.refresh_token);if(n){const i=await Na(this.storage,this.storageKey);return i&&this._isValidSession(i)&&i.expires_at&&i.expires_at*1e3>Date.now()?this._returnResult({data:{session:await this._hydrateSessionUser(i)},error:null}):this._returnResult({data:{session:null},error:n})}return this._returnResult({data:{session:r},error:null})}finally{this._debug("#__loadSession()","end")}}async _hydrateSessionUser(t){if(this.userStorage){const a=await Na(this.userStorage,this.storageKey+"-user");t.user=a!=null&&a.user?a.user:Nv()}if(this.storage.isServer&&t.user&&!t.user.__isUserNotAvailableProxy){const a={value:this.suppressGetSessionWarning};t.user=wX(t.user,a),a.value&&(this.suppressGetSessionWarning=!0)}return t}async getUser(t){if(t)return await this._getUser(t);await this.initializePromise;let a;return this.lock!=null?a=await this._acquireLock(this.lockAcquireTimeout,async()=>await this._getUser()):a=await this._getUser(),a.data.user&&(this.suppressGetSessionWarning=!0),a}async _getUser(t){try{return t?await me(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:t,xform:is}):await this._useSession(async a=>{var o,r,n;const{data:i,error:l}=a;if(l)throw l;return!(!((o=i.session)===null||o===void 0)&&o.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new ca}:await me(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(n=(r=i.session)===null||r===void 0?void 0:r.access_token)!==null&&n!==void 0?n:void 0,xform:is})})}catch(a){if(se(a))return bp(a)&&await this._removeSession(),this._returnResult({data:{user:null},error:a});throw a}}async updateUser(t,a={}){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._updateUser(t,a)):await this._updateUser(t,a)}async _updateUser(t,a={}){let o=null;try{return await this._useSession(async r=>{const{data:n,error:i}=r;if(i)throw i;if(!n.session)throw new ca;const l=n.session;let c=null,d=null;this.flowType==="pkce"&&t.email!=null&&([c,d,o]=await this._getCodeChallengeAndMethod());const{data:u,error:m}=await me(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:this._maybeAppendFlowIdToRedirect(a==null?void 0:a.emailRedirectTo,o),body:Object.assign(Object.assign({},t),{code_challenge:c,code_challenge_method:d}),jwt:l.access_token,xform:is});if(m)throw m;return l.user=u.user,await this._saveSession(l),await this._notifyAllSubscribers("USER_UPDATED",l),this._returnResult({data:{user:l.user},error:null})})}catch(r){if(await rr(this.storage,this.storageKey,o),se(r))return this._returnResult({data:{user:null},error:r});throw r}}async setSession(t){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._setSession(t)):await this._setSession(t)}async _setSession(t){try{if(!t.access_token||!t.refresh_token)throw new ca;const a=Date.now()/1e3;let o=a,r=!0,n=null;const{payload:i}=Cp(t.access_token);if(i.exp&&(o=i.exp,r=o<=a),r){const{data:l,error:c}=await this._callRefreshToken(t.refresh_token);if(c)return this._returnResult({data:{user:null,session:null},error:c});if(!l)return{data:{user:null,session:null},error:null};n=l}else{const{data:l,error:c}=await this._getUser(t.access_token);if(c)return this._returnResult({data:{user:null,session:null},error:c});n={access_token:t.access_token,refresh_token:t.refresh_token,user:l.user,token_type:"bearer",expires_in:o-a,expires_at:o},await this._saveSession(n),await this._notifyAllSubscribers("SIGNED_IN",n)}return this._returnResult({data:{user:n.user,session:n},error:null})}catch(a){if(se(a))return this._returnResult({data:{session:null,user:null},error:a});throw a}}async refreshSession(t){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._refreshSession(t)):await this._refreshSession(t)}async _refreshSession(t){try{return await this._useSession(async a=>{var o;if(!t){const{data:i,error:l}=a;if(l)throw l;t=(o=i.session)!==null&&o!==void 0?o:void 0}if(!(t!=null&&t.refresh_token))throw new ca;const{data:r,error:n}=await this._callRefreshToken(t.refresh_token);return n?this._returnResult({data:{user:null,session:null},error:n}):r?this._returnResult({data:{user:r.user,session:r},error:null}):this._returnResult({data:{user:null,session:null},error:null})})}catch(a){if(se(a))return this._returnResult({data:{user:null,session:null},error:a});throw a}}async _getSessionFromURL(t,a){var o;try{if(!fa())throw new kp("No browser detected.");
454if(t.error||t.error_description||t.error_code)throw new kp(t.error_description||"Error in URL with unspecified error_description",{error:t.error||"unspecified_error",code:t.error_code||"unspecified_code"});switch(a){case"implicit":if(this.flowType==="pkce")throw new $R("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new kp("Not a valid implicit grant flow url.");break;default:}if(a==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!t.code)throw new $R("No code detected.");const{data:k,error:w}=await this._exchangeCodeForSession(t.code,{flowId:t[yi]});if(w)throw w;const R=new URL(window.location.href);return R.searchParams.delete("code"),R.searchParams.delete(yi),window.history.replaceState(window.history.state,"",R.toString()),{data:{session:k.session,redirectType:(o=k.redirectType)!==null&&o!==void 0?o:null},error:null}}const{provider_token:r,provider_refresh_token:n,access_token:i,refresh_token:l,expires_in:c,expires_at:d,token_type:u}=t;if(!i||!c||!l||!u)throw new kp("No session defined in URL");const m=Math.round(Date.now()/1e3),h=parseInt(c);let p=m+h;d&&(p=parseInt(d));const f=p-m;f*1e3<=kn&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${f}s, should have been closer to ${h}s`);const g=p-h;m-g>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",g,p,m):m-g<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",g,p,m);const{data:b,error:v}=await this._getUser(i);if(v)throw v;const y={provider_token:r,provider_refresh_token:n,access_token:i,expires_in:h,expires_at:p,refresh_token:l,token_type:u,user:b.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),this._returnResult({data:{session:y,redirectType:t.type},error:null})}catch(r){if(se(r))return this._returnResult({data:{session:null,redirectType:null},error:r});throw r}}_isImplicitGrantCallback(t){return typeof this.detectSessionInUrl=="function"?this.detectSessionInUrl(new URL(window.location.href),t):!!(t.access_token||t.error||t.error_description||t.error_code)}async _isPKCECallback(t){if(!t.code)return!1;const a=wh(t[yi]);return a&&await Na(this.storage,Ic(this.storageKey,a))?!0:!!await Na(this.storage,`${this.storageKey}-code-verifier`)}async signOut(t={scope:"global"}){return await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>await this._signOut(t)):await this._signOut(t)}async _signOut({scope:t}={scope:"global"}){return await this._useSession(async a=>{var o;const r=async()=>{await this._removeSession()},{data:n,error:i}=a;if(i&&!bp(i))return this._returnResult({error:i});const l=(o=n.session)===null||o===void 0?void 0:o.access_token;if(l){const{error:c}=await this.admin.signOut(l,t);if(c&&!(TR(c)&&(c.status===404||c.status===401||c.status===403)||bp(c)))return t!=="others"&&await r(),this._returnResult({error:c})}return t!=="others"&&await r(),this._returnResult({error:null})})}onAuthStateChange(t){const a=oX(),o={id:a,callback:t,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",a),this.stateChangeEmitters.delete(a)}};return this._debug("#onAuthStateChange()","registered callback with id",a),this.stateChangeEmitters.set(a,o),(async()=>(await this.initializePromise,this.lock!=null?await this._acquireLock(this.lockAcquireTimeout,async()=>{this._emitInitialSession(a)}):await this._emitInitialSession(a)))(),{data:{subscription:o}}}async _emitInitialSession(t){return await this._useSession(async a=>{var o,r;try{const{data:{session:n},error:i}=a;if(i)throw i;await((o=this.stateChangeEmitters.get(t))===null||o===void 0?void 0:o.callback("INITIAL_SESSION",n)),this._debug("INITIAL_SESSION","callback id",t,"session",n)}catch(n){if(await((r=this.stateChangeEmitters.get(t))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",t,"error",n),qR(n))return;bp(n)||wp(n)||TR(n)&&(n.code==="refresh_token_not_found"||n.code==="refresh_token_already_used"||n.code==="session_expired")?console.warn(n):console.error(n)}})}async resetPasswordForEmail(t,a={}){let o=null,r=null,n=null;this.flowType==="pkce"&&([o,r,n]=await this._getCodeChallengeAndMethod(!0));try{return await me(this.fetch,"POST",`${this.url}
454/recover`,{body:{email:t,code_challenge:o,code_challenge_method:r,gotrue_meta_security:{captcha_token:a.captchaToken}},headers:this.headers,redirectTo:this._maybeAppendFlowIdToRedirect(a.redirectTo,n)})}catch(i){if(await rr(this.storage,this.storageKey,n),se(i))return this._returnResult({data:null,error:i});throw i}}async getUserIdentities(){var t;try{const{data:a,error:o}=await this.getUser();if(o)throw o;return this._returnResult({data:{identities:(t=a.user.identities)!==null&&t!==void 0?t:[]},error:null})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async linkIdentity(t){return"token"in t?this.linkIdentityIdToken(t):this.linkIdentityOAuth(t)}async linkIdentityOAuth(t){var a;let o=null;try{const{data:r,error:n}=await this._useSession(async i=>{var l,c,d,u,m;const{data:h,error:p}=i;if(p)throw p;const{url:f,flowId:g}=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,t.provider,{redirectTo:(l=t.options)===null||l===void 0?void 0:l.redirectTo,scopes:(c=t.options)===null||c===void 0?void 0:c.scopes,queryParams:(d=t.options)===null||d===void 0?void 0:d.queryParams,skipBrowserRedirect:!0});return o=g,await me(this.fetch,"GET",f,{headers:this.headers,jwt:(m=(u=h.session)===null||u===void 0?void 0:u.access_token)!==null&&m!==void 0?m:void 0})});if(n)throw n;return fa()&&!(!((a=t.options)===null||a===void 0)&&a.skipBrowserRedirect)&&window.location.assign(r==null?void 0:r.url),this._returnResult({data:{provider:t.provider,url:r==null?void 0:r.url,flowId:o},error:null})}catch(r){if(se(r))return this._returnResult({data:{provider:t.provider,url:null,flowId:o},error:r});throw r}}async linkIdentityIdToken(t){return await this._useSession(async a=>{var o;try{const{error:r,data:{session:n}}=a;if(r)throw r;const{options:i,provider:l,token:c,access_token:d,nonce:u}=t,m=await me(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(o=n==null?void 0:n.access_token)!==null&&o!==void 0?o:void 0,body:{provider:l,id_token:c,access_token:d,nonce:u,link_identity:!0,gotrue_meta_security:{captcha_token:i==null?void 0:i.captchaToken}},xform:_o}),{data:h,error:p}=m;return p?this._returnResult({data:{user:null,session:null},error:p}):!h||!h.session||!h.user?this._returnResult({data:{user:null,session:null},error:new fl}):(h.session&&(await this._saveSession(h.session),await this._notifyAllSubscribers("USER_UPDATED",h.session)),this._returnResult({data:h,error:p}))}catch(r){if(await rr(this.storage,this.storageKey,null),se(r))return this._returnResult({data:{user:null,session:null},error:r});throw r}})}async unlinkIdentity(t){try{return await this._useSession(async a=>{var o,r;const{data:n,error:i}=a;if(i)throw i;return await me(this.fetch,"DELETE",`${this.url}/user/identities/${t.identity_id}`,{headers:this.headers,jwt:(r=(o=n.session)===null||o===void 0?void 0:o.access_token)!==null&&r!==void 0?r:void 0})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _refreshAccessToken(t){const a="#_refreshAccessToken()";this._debug(a,"begin");try{const o=Date.now();return await sX(async r=>(r>0&&await nX(200*Math.pow(2,r-1)),this._debug(a,"refreshing attempt",r),await me(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:t},headers:this.headers,xform:_o})),(r,n)=>{const i=200*Math.pow(2,r);return n&&wp(n)&&Date.now()+i-o<kn})}catch(o){if(this._debug(a,"error",o),se(o))return this._returnResult({data:{session:null,user:null},error:o});throw o}finally{this._debug(a,"end")}}_isValidSession(t){return typeof t=="object"&&t!==null&&"access_token"in t&&"refresh_token"in t&&"expires_at"in t}async _handleProviderSignIn(t,a){const{url:o,flowId:r}=await this._getUrlForProvider(`${this.url}/authorize`,t,{redirectTo:a.redirectTo,scopes:a.scopes,queryParams:a.queryParams});return this._debug("#_handleProviderSignIn()","provider",t,"options",a,"url",o),fa()&&!a.skipBrowserRedirect&&window.location.assign(o),{data:{provider:t,url:o,flowId:r},error:null}}async _recoverAndRefresh(){var t,a;const o="#_recoverAndRefresh()";this._debug(o,"begin");try{const r=await Na(this.storage,this.storageKey);if(r&&this.userStorage){let i=await Na(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!i&&(i={user:r.user},await Pn(this.userStorage,this.storageKey+"-user",i)),r.user=(t=i==null?void 0:i.user)!==null&&t!==void 0?t:Nv()}else if(r&&!r.user&&!r.user){const i=await Na(this.storage,this.storageKey+"-user");i&&(i!=null&&i.user)?(r.user=i.user,await Ya(this.storage,this.storageKey+"-user"),await Pn(this.storage,this.storageKey,r)):r.user=Nv()}if(this._debug(o,"session from storage",r),!this._isValidSession(r)){this._debug(o,"session is not val
454id"),r!==null&&await this._removeSession();return}const n=((a=r.expires_at)!==null&&a!==void 0?a:1/0)*1e3-Date.now()<jv;if(this._debug(o,`session has${n?"":" not"} expired with margin of ${jv}s`),n){if(this.autoRefreshToken&&r.refresh_token){const{error:i}=await this._callRefreshToken(r.refresh_token);i&&(qR(i)?this._debug(o,"refresh discarded by commit guard",i):this._debug(o,"refresh failed",i))}}else if(r.user&&r.user.__isUserNotAvailableProxy===!0)try{const{data:i,error:l}=await this._getUser(r.access_token);!l&&(i!=null&&i.user)?(r.user=i.user,await this._saveSession(r),await this._notifyAllSubscribers("SIGNED_IN",r)):this._debug(o,"could not get user data, skipping SIGNED_IN notification")}catch(i){console.error("Error getting user data:",i),this._debug(o,"error getting user data, skipping SIGNED_IN notification",i)}else await this._notifyAllSubscribers("SIGNED_IN",r)}catch(r){this._debug(o,"error",r),wp(r)?console.warn(r):console.error(r);return}finally{this._debug(o,"end")}}async _callRefreshToken(t){var a,o;if(!t)throw new ca;if(this.refreshingDeferred)return this.refreshingDeferred.promise;if(this.lastRefreshFailure&&this.lastRefreshFailure.refreshToken===t&&Date.now()<this.lastRefreshFailure.expiresAt)return this._debug("#_callRefreshToken()","returning cached failure (cooldown active)"),this.lastRefreshFailure.result;const r="#_callRefreshToken()";this._debug(r,"begin");try{this.refreshingDeferred=new zg,this.refreshingDeferred.promise.then(void 0,()=>{});const n=await Na(this.storage,this.storageKey),{data:i,error:l}=await this._refreshAccessToken(t);if(l)throw l;if(!i.session)throw new ca;const c=await Na(this.storage,this.storageKey);if(n!==null&&(c===null||c.refresh_token!==n.refresh_token)){this._debug(r,"commit guard: storage changed since refresh started, discarding rotated tokens",{startedWith:"present",nowHolds:c?"replaced":"cleared"});const h={data:null,error:new OR};return this.refreshingDeferred.resolve(h),h}const u=this._sessionRemovalEpoch;if(await this._saveSession(i.session),this._sessionRemovalEpoch!==u){this._debug(r,"commit guard (post-save): _removeSession ran during _saveSession, undoing write"),await Ya(this.storage,this.storageKey),this.userStorage&&await Ya(this.userStorage,this.storageKey+"-user");const h={data:null,error:new OR};return this.refreshingDeferred.resolve(h),h}await this._notifyAllSubscribers("TOKEN_REFRESHED",i.session);const m={data:i.session,error:null};return this.lastRefreshFailure=null,this.refreshingDeferred.resolve(m),m}catch(n){if(this._debug(r,"error",n),se(n)){const i={data:null,error:n};if(!wp(n)){const l=await Na(this.storage,this.storageKey);!!(l!=null&&l.expires_at&&l.expires_at*1e3>Date.now())?this._debug(r,"proactive refresh failed, access token still valid â preserving session"):await this._removeSession()}return this.lastRefreshFailure={refreshToken:t,result:i,expiresAt:Date.now()+FJ},(a=this.refreshingDeferred)===null||a===void 0||a.resolve(i),i}throw(o=this.refreshingDeferred)===null||o===void 0||o.reject(n),n}finally{this.refreshingDeferred=null,this._debug(r,"end")}}async _notifyAllSubscribers(t,a,o=!0){if(this._pendingInitNotifications!==null&&o){this._pendingInitNotifications.push({event:t,session:a,broadcast:o});return}const r=`#_notifyAllSubscribers(${t})`;this._debug(r,"begin",a,`broadcast = ${o}`);try{this.broadcastChannel&&o&&this.broadcastChannel.postMessage({event:t,session:a});const n=[],i=Array.from(this.stateChangeEmitters.values()).map(async l=>{try{await l.callback(t,a)}catch(c){n.push(c)}});if(await Promise.all(i),n.length>0){for(let l=0;l<n.length;l+=1)console.error(n[l]);throw n[0]}}finally{this._debug(r,"end")}}async _saveSession(t){this._debug("#_saveSession()",t),this.suppressGetSessionWarning=!0;const a=Object.assign({},t),o=a.user&&a.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!o&&a.user&&await Pn(this.userStorage,this.storageKey+"-user",{user:a.user});const r=Object.assign({},a);delete r.user;const n=VR(r);await Pn(this.storage,this.storageKey,n)}else{const r=VR(a);await Pn(this.storage,this.storageKey,r)}}async _removeSession(){this._sessionRemovalEpoch+=1,this._debug("#_removeSession()"),this.lastRefreshFailure=null,this.suppressGetSessionWarning=!1,await Ya(this.storage,this.storageKey),await hX(this.storage,this.storageKey),await Ya(this.storage,this.storageKey+"-user"),this.userStorage&&await Ya(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const t=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{t&&fa()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",t)}
454catch(a){console.error("removing visibilitychange callback failed",a)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const t=setInterval(()=>this._autoRefreshTokenTick(),kn);this.autoRefreshTicker=t,t&&typeof t=="object"&&typeof t.unref=="function"?t.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(t);const a=setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0);this.autoRefreshTickTimeout=a,a&&typeof a=="object"&&typeof a.unref=="function"?a.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(a)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const t=this.autoRefreshTicker;this.autoRefreshTicker=null,t&&clearInterval(t);const a=this.autoRefreshTickTimeout;this.autoRefreshTickTimeout=null,a&&clearTimeout(a)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async dispose(){var t;this._removeVisibilityChangedCallback(),await this._stopAutoRefresh(),(t=this.broadcastChannel)===null||t===void 0||t.close(),this.broadcastChannel=null,this.stateChangeEmitters.clear()}async _autoRefreshTokenTick(){if(this._debug("#_autoRefreshTokenTick()","begin"),this.lock!=null){try{await this._acquireLock(0,async()=>{try{const t=Date.now();try{return await this._useSession(async a=>{const{data:{session:o}}=a;if(!o||!o.refresh_token||!o.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((o.expires_at*1e3-t)/kn);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${kn}ms, refresh threshold is ${Fd} ticks`),r<=Fd&&await this._callRefreshToken(o.refresh_token)})}catch(a){console.error("Auto refresh tick failed with error. This is likely a transient error.",a)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(t){if(t instanceof AX)this._debug("auto refresh token tick lock not available");else throw t}return}if(this.refreshingDeferred!==null){this._debug("#_autoRefreshTokenTick()","refresh already in flight, skipping");return}try{const t=Date.now();try{await this._useSession(async a=>{const{data:{session:o}}=a;if(!o||!o.refresh_token||!o.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((o.expires_at*1e3-t)/kn);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${kn}ms, refresh threshold is ${Fd} ticks`),r<=Fd&&await this._callRefreshToken(o.refresh_token)})}catch(a){console.error("Auto refresh tick failed with error. This is likely a transient error.",a)}}finally{this._debug("#_autoRefreshTokenTick()","end")}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!fa()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>{try{await this._onVisibilityChanged(!1)}catch(t){this._debug("#visibilityChangedCallback","error",t)}},window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(t){console.error("_handleVisibilityChange",t)}}async _onVisibilityChanged(t){const a=`#_onVisibilityChanged(${t})`;if(this._debug(a,"visibilityState",document.visibilityState),document.visibilityState==="visible"){if(this.autoRefreshToken&&this._startAutoRefresh(),!t)if(await this.initializePromise,this.lock!=null)await this._acquireLock(this.lockAcquireTimeout,async()=>{if(document.visibilityState!=="visible"){this._debug(a,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()});else{if(document.visibilityState!=="visible"){this._debug(a,"visibilityState is no longer visible, skipping recovery");return}await this._recoverAndRefresh()}}else document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(t,a,o){let r=o==null?void 0:o.redirectTo,n=null,i=null,l=null;this.flowType==="pkce"&&([n,i,l]=await this._getCodeChallengeAndMethod(),r=this._maybeAppendFlowIdToRedirect(r,l));const c=[`provider=${encodeURIComponent(a)}`];if(r&&c.push(`redirect_to=${encodeURIComponent(r)}`),o!=null&&o.scopes&&c.push(`scopes=${encodeURIComponent(o.scopes)}`),n!=null&&i!=null){const d=new URLSearchParams({code_challenge:`${encodeURIComponent(n)}`,code_challenge_method:`${encodeURIComponent(i)}`});c.push(d.toString())}if(o!=null&&o.queryParams){const d=new URLSearchParams(o.queryParams);c.push(d.toString())}return o!=null&&o.skipBrowserRedirect&&c.push(`skip_http_redirect=${o.skipBrowserRedirect}`),{url:`${t}?${c.join("&")}`,flowId:l}}_maybeAppendFlowIdToRedirect(t,a){return!t||!a||!this.experimental.appendPkceFlowIdToRedirects?t??void 0:fX(t,a)}async _getCodeChallengeAndMethod(t=!1){return gX(this.storage,this.storageKey,t,a=>this._debug("#_getCodeChallengeAndMethod()","evicted oldest pending PKCE verifier slot",a))}async _unenroll(t){try{return await this._useSession(async a=>{var o;const{data:r,error:n}=a;return n?this._returnResult({data:null,error:n}
454):await me(this.fetch,"DELETE",`${this.url}/factors/${t.factorId}`,{headers:this.headers,jwt:(o=r==null?void 0:r.session)===null||o===void 0?void 0:o.access_token})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _enroll(t){try{return await this._useSession(async a=>{var o,r;const{data:n,error:i}=a;if(i)return this._returnResult({data:null,error:i});const l=Object.assign({friendly_name:t.friendlyName,factor_type:t.factorType},t.factorType==="phone"?{phone:t.phone}:t.factorType==="totp"?{issuer:t.issuer}:{}),{data:c,error:d}=await me(this.fetch,"POST",`${this.url}/factors`,{body:l,headers:this.headers,jwt:(o=n==null?void 0:n.session)===null||o===void 0?void 0:o.access_token});return d?this._returnResult({data:null,error:d}):(t.factorType==="totp"&&c.type==="totp"&&(!((r=c==null?void 0:c.totp)===null||r===void 0)&&r.qr_code)&&(c.totp.qr_code=`data:image/svg+xml;utf-8,${c.totp.qr_code}`),this._returnResult({data:c,error:null}))})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _verify(t){const a=async()=>{try{return await this._useSession(async o=>{var r;const{data:n,error:i}=o;if(i)return this._returnResult({data:null,error:i});const l=Object.assign({challenge_id:t.challengeId},"webauthn"in t?{webauthn:Object.assign(Object.assign({},t.webauthn),{credential_response:t.webauthn.type==="create"?WR(t.webauthn.credential_response):JR(t.webauthn.credential_response)})}:{code:t.code}),{data:c,error:d}=await me(this.fetch,"POST",`${this.url}/factors/${t.factorId}/verify`,{body:l,headers:this.headers,jwt:(r=n==null?void 0:n.session)===null||r===void 0?void 0:r.access_token});return d?this._returnResult({data:null,error:d}):(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+c.expires_in},c)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",c),this._returnResult({data:c,error:d}))})}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}};return this.lock!=null?this._acquireLock(this.lockAcquireTimeout,a):a()}async _challenge(t){const a=async()=>{try{return await this._useSession(async o=>{var r;const{data:n,error:i}=o;if(i)return this._returnResult({data:null,error:i});const l=await me(this.fetch,"POST",`${this.url}/factors/${t.factorId}/challenge`,{body:t,headers:this.headers,jwt:(r=n==null?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(l.error)return l;const{data:c}=l;if(c.type!=="webauthn")return{data:c,error:null};switch(c.webauthn.type){case"create":return{data:Object.assign(Object.assign({},c),{webauthn:Object.assign(Object.assign({},c.webauthn),{credential_options:Object.assign(Object.assign({},c.webauthn.credential_options),{publicKey:KR(c.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},c),{webauthn:Object.assign(Object.assign({},c.webauthn),{credential_options:Object.assign(Object.assign({},c.webauthn.credential_options),{publicKey:QR(c.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}};return this.lock!=null?this._acquireLock(this.lockAcquireTimeout,a):a()}async _challengeAndVerify(t){const{data:a,error:o}=await this._challenge({factorId:t.factorId});return o?this._returnResult({data:null,error:o}):await this._verify({factorId:t.factorId,challengeId:a.id,code:t.code})}async _listFactors(){var t;const{data:{user:a},error:o}=await this.getUser();if(o)return{data:null,error:o};const r={all:[],phone:[],totp:[],webauthn:[],recovery_code:[]};for(const n of(t=a==null?void 0:a.factors)!==null&&t!==void 0?t:[])r.all.push(n),n.status==="verified"&&n.factor_type in r&&Array.isArray(r[n.factor_type])&&r[n.factor_type].push(n);return{data:r,error:null}}async _getAuthenticatorAssuranceLevel(t){var a,o,r,n;if(t)try{const{payload:p}=Cp(t);let f=null;p.aal&&(f=p.aal);let g=f;const{data:{user:b},error:v}=await this.getUser(t);if(v)return this._returnResult({data:null,error:v});((o=(a=b==null?void 0:b.factors)===null||a===void 0?void 0:a.filter(w=>w.status==="verified"))!==null&&o!==void 0?o:[]).length>0&&(g="aal2");const k=p.amr||[];return{data:{currentLevel:f,nextLevel:g,currentAuthenticationMethods:k},error:null}}catch(p){if(se(p))return this._returnResult({data:null,error:p});throw p}const{data:{session:i},error:l}
454=await this.getSession();if(l)return this._returnResult({data:null,error:l});if(!i)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:c}=Cp(i.access_token);let d=null;c.aal&&(d=c.aal);let u=d;((n=(r=i.user.factors)===null||r===void 0?void 0:r.filter(p=>p.status==="verified"))!==null&&n!==void 0?n:[]).length>0&&(u="aal2");const h=c.amr||[];return{data:{currentLevel:d,nextLevel:u,currentAuthenticationMethods:h},error:null}}async _getRecoveryCodesStatus(){jd(this.experimental);try{return await this._useSession(async t=>{var a;const{data:o,error:r}=t;if(r)return this._returnResult({data:null,error:r});const{data:n,error:i}=await me(this.fetch,"GET",`${this.url}/factors/recovery-codes`,{headers:this.headers,jwt:(a=o==null?void 0:o.session)===null||a===void 0?void 0:a.access_token});return i?this._returnResult({data:null,error:i}):this._returnResult({data:n,error:null})})}catch(t){if(se(t))return this._returnResult({data:null,error:t});throw t}}async _generateRecoveryCodes(t){jd(this.experimental);try{return await this._useSession(async a=>{var o;const{data:r,error:n}=a;if(n)return this._returnResult({data:null,error:n});const{data:i,error:l}=await me(this.fetch,"POST",`${this.url}/factors/recovery-codes`,{body:t!=null&&t.friendlyName?{friendly_name:t.friendlyName}:void 0,headers:this.headers,jwt:(o=r==null?void 0:r.session)===null||o===void 0?void 0:o.access_token});return l?this._returnResult({data:null,error:l}):this._returnResult({data:i,error:null})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _verifyRecoveryCode(t){jd(this.experimental);const a=async()=>{try{return await this._useSession(async o=>{var r;const{data:n,error:i}=o;if(i)return this._returnResult({data:null,error:i});const{data:l,error:c}=await me(this.fetch,"POST",`${this.url}/factors/recovery-codes/verify`,{body:{code:t.code},headers:this.headers,jwt:(r=n==null?void 0:n.session)===null||r===void 0?void 0:r.access_token});if(c)return this._returnResult({data:null,error:c});const d=Object.assign({expires_at:b6(l.expires_in)},l);return await this._saveSession(d),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",d),this._returnResult({data:l,error:null})})}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}};return this.lock!=null?this._acquireLock(this.lockAcquireTimeout,a):a()}async _regenerateRecoveryCodes(){jd(this.experimental);try{return await this._useSession(async t=>{var a;const{data:o,error:r}=t;if(r)return this._returnResult({data:null,error:r});const{data:n,error:i}=await me(this.fetch,"POST",`${this.url}/factors/recovery-codes/regenerate`,{headers:this.headers,jwt:(a=o==null?void 0:o.session)===null||a===void 0?void 0:a.access_token});return i?this._returnResult({data:null,error:i}):this._returnResult({data:n,error:null})})}catch(t){if(se(t))return this._returnResult({data:null,error:t});throw t}}async _unenrollRecoveryCodes(){jd(this.experimental);try{return await this._useSession(async t=>{var a;const{data:o,error:r}=t;if(r)return this._returnResult({data:null,error:r});const{data:n,error:i}=await me(this.fetch,"DELETE",`${this.url}/factors/recovery-codes`,{headers:this.headers,jwt:(a=o==null?void 0:o.session)===null||a===void 0?void 0:a.access_token});return i?this._returnResult({data:null,error:i}):this._returnResult({data:n,error:null})})}catch(t){if(se(t))return this._returnResult({data:null,error:t});throw t}}async _getAuthorizationDetails(t){try{return await this._useSession(async a=>{const{data:{session:o},error:r}=a;return r?this._returnResult({data:null,error:r}):o?await me(this.fetch,"GET",`${this.url}/oauth/authorizations/${t}`,{headers:this.headers,jwt:o.access_token,xform:n=>({data:n,error:null})}):this._returnResult({data:null,error:new ca})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _approveAuthorization(t,a){try{return await this._useSession(async o=>{const{data:{session:r},error:n}=o;if(n)return this._returnResult({data:null,error:n});if(!r)return this._returnResult({data:null,error:new ca});const i=await me(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"approve"},xform:l=>({data:l,error:null})});return i.data&&i.data.redirect_url&&fa()&&!(a!=null&&a.skipBrowserRedirect)&&window.location.assign(i.data.redirect_url),i})}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}}async _denyAuthorization(t,a){try{return await this._useSession(async o=>{const{data:{session:r},error:n}=o;if(n)return this._returnResult({data:null,error:n});if(!r)return this._returnResult({data:null,error:new ca});const i=await me(this.fetch,"POST",`${this.url}/oauth/authorizations/${t}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"deny"},xform:l=>({data:l,error:null})});return i.data&&i.data.redirect_url&&fa()&&!(a!=null&&a.skipBrowserRedirect)&&window.location.assign(i.data.redirect_url),i})}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}}async _listOAuthGrants(){try{return await this._useSession(async t=>{const{data:{session:a},error:o}=t;return o?this._returnResult({data:null,error:o}):a?await me(this.fetch,"GET",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:a.access_token,xform:r=>({data:r,error:null})}):this._returnResult({data:null,error:new ca})})}catch(t){if(se(t))return this._returnResult({data:null,error:t});throw t}}async _revokeOAuthGrant(t){try{return await this._useSession(async a=>{const{data:{session:o},error:r}=a;return r?this._returnResult({data:null,error:r}
454):o?(await me(this.fetch,"DELETE",`${this.url}/user/oauth/grants`,{headers:this.headers,jwt:o.access_token,query:{client_id:t.clientId},noResolveJson:!0}),{data:{},error:null}):this._returnResult({data:null,error:new ca})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async fetchJwk(t,a={keys:[]}){let o=a.keys.find(l=>l.kid===t);if(o)return o;const r=Date.now();if(o=this.jwks.keys.find(l=>l.kid===t),o&&this.jwks_cached_at+QJ>r)return o;const{data:n,error:i}=await me(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(i)throw i;return!n.keys||n.keys.length===0||(this.jwks=n,this.jwks_cached_at=r,o=n.keys.find(l=>l.kid===t),!o)?null:o}async getClaims(t,a={}){try{let o=t;if(!o){const{data:p,error:f}=await this.getSession();if(f||!p.session)return this._returnResult({data:null,error:f});o=p.session.access_token}const{header:r,payload:n,signature:i,raw:{header:l,payload:c}}=Cp(o);if(!(a!=null&&a.allowExpired))try{bX(n.exp)}catch(p){throw new Nf(p instanceof Error?p.message:"JWT validation failed")}const d=!r.alg||r.alg.startsWith("HS")||!r.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(r.kid,a!=null&&a.keys?{keys:a.keys}:a==null?void 0:a.jwks);if(!d){const{error:p}=await this.getUser(o);if(p)throw p;return{data:{claims:n,header:r,signature:i},error:null}}const u=yX(r.alg),m=await crypto.subtle.importKey("jwk",d,u,!0,["verify"]);if(!await crypto.subtle.verify(u,m,i,aX(`${l}.${c}`)))throw new Nf("Invalid JWT signature");return{data:{claims:n,header:r,signature:i},error:null}}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}}async signInWithPasskey(t){var a,o,r,n;try{if(!_f())return this._returnResult({data:null,error:new fr("Browser does not support WebAuthn",null)});const{data:i,error:l}=await this._startPasskeyAuthentication({options:{captchaToken:(a=t==null?void 0:t.options)===null||a===void 0?void 0:a.captchaToken}});if(l||!i)return this._returnResult({data:null,error:l});const c=QR(i.options),d=(r=(o=t==null?void 0:t.options)===null||o===void 0?void 0:o.signal)!==null&&r!==void 0?r:By.createNewAbortSignal(),{data:u,error:m}=await R6({publicKey:c,signal:d,mediation:(n=t==null?void 0:t.options)===null||n===void 0?void 0:n.mediation});if(m||!u)return this._returnResult({data:null,error:m??new fr("WebAuthn ceremony failed",null)});const h=JR(u);return this._verifyPasskeyAuthentication({challengeId:i.challenge_id,credential:h})}catch(i){if(se(i))return this._returnResult({data:null,error:i});throw i}}async registerPasskey(t){var a,o;try{if(!_f())return this._returnResult({data:null,error:new fr("Browser does not support WebAuthn",null)});const{data:r,error:n}=await this._startPasskeyRegistration();if(n||!r)return this._returnResult({data:null,error:n});const i=KR(r.options),l=(o=(a=t==null?void 0:t.options)===null||a===void 0?void 0:a.signal)!==null&&o!==void 0?o:By.createNewAbortSignal(),{data:c,error:d}=await S6({publicKey:i,signal:l});if(d||!c)return this._returnResult({data:null,error:d??new fr("WebAuthn ceremony failed",null)});const u=WR(c);return this._verifyPasskeyRegistration({challengeId:r.challenge_id,credential:u})}catch(r){if(se(r))return this._returnResult({data:null,error:r});throw r}}async _startPasskeyRegistration(){try{return await this._useSession(async t=>{const{data:{session:a},error:o}=t;if(o)return this._returnResult({data:null,error:o});if(!a)return this._returnResult({data:null,error:new ca});const{data:r,error:n}=await me(this.fetch,"POST",`${this.url}/passkeys/registration/options`,{headers:this.headers,jwt:a.access_token,body:{}});return n?this._returnResult({data:null,error:n}):this._returnResult({data:r,error:null})})}catch(t){if(se(t))return this._returnResult({data:null,error:t});throw t}}async _verifyPasskeyRegistration(t){try{return await this._useSession(async a=>{const{data:{session:o},error:r}=a;if(r)return this._returnResult({data:null,error:r});if(!o)return this._returnResult({data:null,error:new ca});const{data:n,error:i}=await me(this.fetch,"POST",`${this.url}/passkeys/registration/verify`,{headers:this.headers,jwt:o.access_token,body:{challenge_id:t.challengeId,credential:t.credential}});return i?this._returnResult({data:null,error:i}):this._returnResult({data:n,error:null})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _startPasskeyAuthentication(t){var a;try{const{data:o,error:r}=await me(this.fetch,"POST",`${this.url}/passkeys/authentication/options`,{headers:this.headers,body:{gotrue_meta_security:{captcha_token:(a=t==null?void 0:t.options)===null||a===void 0?void 0:a.captchaToken}}});return r?this._returnResult({data:null,error:r}):this._returnResult({data:o,error:null})}catch(o){if(se(o))return this._returnResult({data:null,error:o});throw o}}async _verifyPasskeyAuthentication(t){try{const{data:a,error:o}=await me(this.fetch,"POST",`${this.url}/passkeys/authentication/verify`,{headers:this.headers,body:{challenge_id:t.challengeId,credential:t.credential},xform:_o});return o?this._returnResult({data:null,error:o}):(a.session&&(await this._saveSession(a.session),await this._notifyAllSubscribers("SIGNED_IN",a.session)),this._returnResult({data:a,error:null}))}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _listPasskeys(){try{return await this._useSession(async t=>{const{data:{session:a},error:o}=t;if(o)return this._returnResult({data:null,error:o});if(!a)return this._returnResult({data:null,error:new ca});const{data:r,error:n}=await me(this.fetch,"GET",`${this.url}/passkeys`,{headers:this.headers,jwt:a.access_token,xform:i=>({data:i,error:null})});return n?this._returnResult({data:null,error:n}):this._returnResult({data:r,error:null})})}catch(t){if(se(t))return this._returnResult({data:null,error:t});throw t}}async _updatePasskey(t){try{return await this._useSession(async a=>{const{data:{session:o},error:r}=a;if(r)return this._returnResult({data:null,error:r});if(!o)return this._returnResult({data:null,error:new ca});const{data:n,error:i}=await me(this.fetch,"PATCH",`${this.url}/passkeys/${t.passkeyId}`,{headers:this.headers,jwt:o.access_token,body:{friendly_name:t.friendlyName}});return i?this._returnResult({data:null,error:i}):this._returnResult({data:n,error:null})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}async _deletePasskey(t){try{return await this._useSession(async a=>{const{data:{session:o},error:r}=a;if(r)return this._returnResult({data:null,error:r});if(!o)return this._returnResult({data:null,error:new ca});const{error:n}
454=await me(this.fetch,"DELETE",`${this.url}/passkeys/${t.passkeyId}`,{headers:this.headers,jwt:o.access_token,noResolveJson:!0});return n?this._returnResult({data:null,error:n}):this._returnResult({data:null,error:null})})}catch(a){if(se(a))return this._returnResult({data:null,error:a});throw a}}}Ju.nextInstanceID={};const UX=Ju,GX="2.117.2";let Ud="",$f;if(typeof Deno<"u"){var Ev;Ud="deno",$f=(Ev=Deno.version)===null||Ev===void 0?void 0:Ev.deno}else if(typeof document<"u")Ud="web";else if(typeof navigator<"u"&&navigator.product==="ReactNative")Ud="react-native";else{var _v;Ud="node";const e=globalThis.process;$f=e==null||(_v=e.version)===null||_v===void 0?void 0:_v.replace(/^v/,"")}const j6=[`runtime=${Ud}`];$f&&j6.push(`runtime-version=${$f}`);const zX={"X-Client-Info":`supabase-js/${GX}; ${j6.join("; ")}`},HX={headers:zX},KX={schema:"public"},QX={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},WX={},JX={enabled:!1,respectSamplingDecision:!0};function XX(e){if(!e||typeof e!="string")return null;const t=e.split("-");if(t.length!==4)return null;const[a,o,r,n]=t;if(a.length!==2||o.length!==32||r.length!==16||n.length!==2)return null;const i=/^[0-9a-f]+$/i;return!i.test(a)||!i.test(o)||!i.test(r)||!i.test(n)||o==="00000000000000000000000000000000"||r==="0000000000000000"?null:{version:a,traceId:o,parentId:r,traceFlags:n,isSampled:(parseInt(n,16)&1)===1}}function YX(e,t){if(!e||!t||t.length===0)return!1;let a;if(e instanceof URL)a=e;else try{a=new URL(e)}catch{return!1}for(const o of t)try{if(typeof o=="string"){if(ZX(a.hostname,o))return!0}else if(o instanceof RegExp){if(o.test(a.hostname))return!0}else if(typeof o=="function"&&o(a))return!0}catch{continue}return!1}function ZX(e,t){if(t===e)return!0;if(t.startsWith("*.")){const a=t.slice(2);if(e.endsWith(a)&&(e===a||e.endsWith("."+a)))return!0}return!1}function eY(e){const t=[];try{const a=new URL(e);t.push(a.hostname)}catch{}return t.push("*.supabase.co","*.supabase.in"),t.push("localhost","127.0.0.1","[::1]"),t}function Xu(e){"@babel/helpers - typeof";return Xu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xu(e)}function tY(e,t){if(Xu(e)!="object"||!e)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var o=a.call(e,t||"default");if(Xu(o)!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function aY(e){var t=tY(e,"string");return Xu(t)=="symbol"?t:t+""}function oY(e,t,a){return(t=aY(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function YR(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),a.push.apply(a,o)}return a}function Ft(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?YR(Object(a),!0).forEach(function(o){oY(e,o,a[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):YR(Object(a)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(a,o))})}return e}const rY=e=>e?(...t)=>e(...t):(...t)=>fetch(...t),nY=()=>Headers,N6=e=>e.startsWith("sb_publishable_")||e.startsWith("sb_secret_"),sY="sb_temp_",ZR=new Set,iY=e=>{var t,a;if(!e.startsWith("sb_")||N6(e)||e.startsWith(sY))return;const o=(t=(a=e.match(/^sb_[a-zA-Z0-9]+_/))===null||a===void 0?void 0:a[0])!==null&&t!==void 0?t:"unknown";ZR.has(o)||(ZR.add(o),console.warn("@supabase/supabase-js: Unrecognized Supabase API key format. The client will proceed and send this key as-is; if you see authentication errors you may need to upgrade @supabase/supabase-js to a version that recognizes this key type."))},ej=(e,t,a,o,r,n)=>{const i=rY(o),l=nY(),c=(r==null?void 0:r.enabled)===!0,d=(r==null?void 0:r.respectSamplingDecision)!==!1,u=c?eY(t):null,m=!(n!=null&&n.omitApiKeyAsBearer&&N6(e));return async(h,p)=>{const f=await a();let g=new l(p==null?void 0:p.headers);if(g.has("apikey")||g.set("apikey",e),!g.has("Authorization")){const b=f??(m?e:null);b&&g.set("Authorization",`Bearer ${b}`)}if(u){const b=lY(h,u,d);b&&(b.traceparent&&!g.has("traceparent")&&g.set("traceparent",b.traceparent),b.tracestate&&!g.has("tracestate")&&g.set("tracestate",b.tracestate),b.baggage&&!g.has("baggage")&&g.set("baggage",b.baggage))}return i(h,Ft(Ft({},p),{},{headers:g}))}};let tj=!1,aj=!1;function lY(e,t,a){const o=sW();if(!o)return tj||(tj=!0,console.warn("@supabase/supabase-js: tracePropagation is enabled but the tracing runtime is not loaded, so trace headers will not be attached. Add `import '@supabase/supabase-js/tracing'` at your application entry point (requires the OpenTelemetry API package to be installed). The CDN/UMD build does not support trace propagation.")),null;if(!YX(typeof e=="string"||e instanceof URL?e:e.url,t))return null;const r=o();if(!r||!r.traceparent){var n;if(!(r==null||(n=r.carrierKeys)===null||n===void 0)&&n.length&&!aj){aj=!0;const i=r.carrierKeys.includes("sentry-trace")?" Sentry detected: set `propagateTraceparent: true` in Sentry.init() to emit it."
454:" Configure your tracing SDK to emit W3C trace context on outgoing requests.";console.warn(`@supabase/supabase-js: tracePropagation is enabled and a tracing SDK is active, but its propagator wrote [${r.carrierKeys.join(", ")}] and no W3C traceparent header, so trace headers will not be attached.`+i)}return null}if(a){const i=XX(r.traceparent);if(i&&!i.isSampled)return{traceparent:r.traceparent}}return r}function oj(e){return typeof e=="boolean"?{enabled:e}:e}function cY(e){return e.endsWith("/")?e:e+"/"}let rj=!1;function dY(e){rj||typeof e!="object"||e===null||!("schema"in e)||e.schema===void 0||(rj=!0,console.warn(`@supabase/supabase-js: The "schema" option must be nested under "db", e.g. createClient(url, key, { db: { schema: 'myschema' } }). A top-level "schema" is ignored and queries go to the default schema.`))}function uY(e,t){var a,o,r,n,i,l;const{db:c,auth:d,realtime:u,global:m}=e,{db:h,auth:p,realtime:f,global:g}=t,b=oj(e.tracePropagation),v=oj(t.tracePropagation),y={db:Ft(Ft({},h),c),auth:Ft(Ft({},p),d),realtime:Ft(Ft({},f),u),storage:{},global:Ft(Ft(Ft({},g),m),{},{headers:Ft(Ft({},(a=g==null?void 0:g.headers)!==null&&a!==void 0?a:{}),(o=m==null?void 0:m.headers)!==null&&o!==void 0?o:{})}),tracePropagation:{enabled:(r=(n=b==null?void 0:b.enabled)!==null&&n!==void 0?n:v==null?void 0:v.enabled)!==null&&r!==void 0?r:!1,respectSamplingDecision:(i=(l=b==null?void 0:b.respectSamplingDecision)!==null&&l!==void 0?l:v==null?void 0:v.respectSamplingDecision)!==null&&i!==void 0?i:!0},accessToken:async()=>""};return e.accessToken?y.accessToken=e.accessToken:delete y.accessToken,y}function mY(e){const t=e==null?void 0:e.trim();if(!t)throw new Error("supabaseUrl is required.");if(!t.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(cY(t))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}var pY=class extends UX{constructor(e){super(e)}},hY=class{constructor(e,t,a){var o,r;this.supabaseUrl=e,this.supabaseKey=t;const n=mY(e);if(!t)throw new Error("supabaseKey is required.");iY(t),dY(a),this.realtimeUrl=new URL("realtime/v1",n),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",n),this.storageUrl=new URL("storage/v1",n),this.functionsUrl=new URL("functions/v1",n);const i=`sb-${n.hostname.split(".")[0]}-auth-token`,l={db:KX,realtime:WX,auth:Ft(Ft({},QX),{},{storageKey:i}),global:HX,tracePropagation:JX},c=uY(a??{},l);if(this.settings=c,this.storageKey=(o=c.auth.storageKey)!==null&&o!==void 0?o:"",this.headers=(r=c.global.headers)!==null&&r!==void 0?r:{},c.accessToken)this.accessToken=c.accessToken,this.auth=new Proxy({},{get:(u,m)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(m)} is not possible`)}});else{var d;this.auth=this._initSupabaseAuthClient((d=c.auth)!==null&&d!==void 0?d:{},this.headers,c.global.fetch)}this.fetch=ej(t,e,this._getSessionToken.bind(this),c.global.fetch,c.tracePropagation),this.functionsFetch=ej(t,e,this._getSessionToken.bind(this),c.global.fetch,c.tracePropagation,{omitApiKeyAsBearer:!0}),this.realtime=this._initRealtimeClient(Ft({headers:this.headers,accessToken:this._getAccessToken.bind(this),fetch:this.fetch},c.realtime)),this.accessToken&&Promise.resolve(this.accessToken()).then(u=>this.realtime.setAuth(u)).catch(u=>console.warn("Failed to set initial Realtime auth token:",u)),this.rest=new yW(new URL("rest/v1",n).href,{headers:this.headers,schema:c.db.schema,fetch:this.fetch,timeout:c.db.timeout,urlLengthLimit:c.db.urlLengthLimit,retry:c.db.retry}),this.storage=new VJ(this.storageUrl.href,this.headers,this.fetch,a==null?void 0:a.storage),c.accessToken||this._listenForAuthEvents()}get functions(){return new dW(this.functionsUrl.href,{headers:this.headers,customFetch:this.functionsFetch})}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}getOpenApiSpec(){return this.rest.getOpenApiSpec()}rpc(e,t={},a={head:!1,get:!1,count:void 0}){return this.rest.rpc(e,t,a)}
454channel(e,t={config:{}}){return this.realtime.channel(e,t)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getSessionToken(){var e=this,t,a;if(e.accessToken)return await e.accessToken();const{data:o}=await e.auth.getSession();return(t=(a=o.session)===null||a===void 0?void 0:a.access_token)!==null&&t!==void 0?t:null}async _getAccessToken(){var e=this,t;return(t=await e._getSessionToken())!==null&&t!==void 0?t:e.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:t,detectSessionInUrl:a,storage:o,userStorage:r,storageKey:n,flowType:i,lock:l,debug:c,throwOnError:d,experimental:u,lockAcquireTimeout:m,skipAutoInitialize:h},p,f){const g={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new pY({url:this.authUrl.href,headers:Ft(Ft({},g),p),storageKey:n,autoRefreshToken:e,persistSession:t,detectSessionInUrl:a,storage:o,userStorage:r,flowType:i,lock:l,debug:c,throwOnError:d,experimental:u,fetch:f,lockAcquireTimeout:m,skipAutoInitialize:h,hasCustomAuthorizationHeader:Object.keys(this.headers).some(b=>b.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new uJ(this.realtimeUrl.href,Ft(Ft({},e),{},{params:Ft(Ft({},{apikey:this.supabaseKey}),e==null?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((e,t)=>{this._handleTokenChanged(e,"CLIENT",t==null?void 0:t.access_token)})}_handleTokenChanged(e,t,a){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN"||e==="INITIAL_SESSION")&&this.changedAccessToken!==a?(this.changedAccessToken=a,this.realtime.setAuth(a)):e==="SIGNED_OUT"&&(this.realtime.setAuth(),t=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}};const fY=(e,t,a)=>new hY(e,t,a);function gY(){if(typeof window<"u"||globalThis.Deno!==void 0)return!1;const e=globalThis.process;if(!e)return!1;const t=e.version;if(t==null)return!1;const a=t.match(/^v(\d+)\./);return a?parseInt(a[1],10)<=20:!1}gY()&&console.warn("â ï¸ Node.js 20 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 22 or later. For more information, visit: https://github.com/orgs/supabase/discussions/45715");function vY(){var b,v;if(typeof window>"u")return;const e=location.hostname,a=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(y=>e===y||e.endsWith("."+y)),o="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",r=a?((b=e.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+o+")(?:-dev)?(?=\\.|$)","i")))==null?void 0:b[1])??((v=e.match(new RegExp("^("+o+")(?=[.-])","i")))==null?void 0:v[1]):void 0,n=window.parent&&window.parent!==window;if(!r||!n)return localStorage;const i=e.endsWith(".lovableproject-dev.com")||e.endsWith(".gpt-eng.com"),l=i?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,c=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),d=c&&l.test(c)?[c]:i?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],u="lovable-preview-auth:result",m=2e3,h=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),p=(y,k,w)=>new Promise(R=>{const C=h();let P=!1,N;const E=O=>{P||(P=!0,clearTimeout(N),window.removeEventListener("message",A),R(O))},A=O=>{if(d.indexOf(O.origin)<0)return;const V=O.data;V&&V.type===u&&V.requestId===C&&E(V)};window.addEventListener("message",A);const $={type:y,requestId:C,projectId:r,key:k};w!==void 0&&($.value=w);for(const O of d)window.parent.postMessage($,O);N=setTimeout(()=>E(null),m)});let f=!0;const g=250;return{getItem:async y=>{let k=await p("lovable-preview-auth:get",y);return!k&&f&&(await new Promise(w=>setTimeout(w,g)),k=await p("lovable-preview-auth:get",y)),f=!1,k&&k.ok&&typeof k.value=="string"?k.value===""?(localStorage.removeItem(y),null):k.value:localStorage.getItem(y)},setItem:(y,k)=>(localStorage.setItem(y,k),p("lovable-preview-auth:set",y,k).then(w=>
454{w&&w.ok&&typeof w.value=="string"&&localStorage.getItem(y)===k&&(w.value===""?localStorage.removeItem(y):localStorage.setItem(y,w.value))})),removeItem:y=>(localStorage.removeItem(y),p("lovable-preview-auth:remove",y).then(()=>{}))}}const xY="https://gwrbggntxhlstutxtywj.supabase.co",bY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Imd3cmJnZ250eGhsc3R1dHh0eXdqIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Nzc5Mjg0MjUsImV4cCI6MjA5MzUwNDQyNX0.ocXJVOQaNTF-tYtE3AnQ26FBZEfjqNEur1eavE9vSwo",ze=fY(xY,bY,{auth:{storage:vY(),persistSession:!0,autoRefreshToken:!0}}),Sl=new Map;function nj(){Sl.clear()}function Xge(){const{user:e,loading:t}=sn(),[a,o]=x.useState(()=>e?Sl.get(e.id)??!1:!1),[r,n]=x.useState(()=>e?!Sl.has(e.id):!1);return x.useEffect(()=>{if(t)return;if(!e){o(!1),n(!1);return}if(Sl.has(e.id)){o(Sl.get(e.id)),n(!1);return}let i=!0;return n(!0),(async()=>{const{data:l}=await ze.from("user_roles").select("role").eq("user_id",e.id).eq("role","xpark_admin").maybeSingle();if(!i)return;const c=!!l;Sl.set(e.id,c),o(c),n(!1)})(),()=>{i=!1}},[e,t]),{isAdmin:a,loading:t||r}}const A6=x.createContext(void 0);function yY({children:e}){const[t,a]=x.useState(null),[o,r]=x.useState(!0);x.useEffect(()=>{const{data:i}=ze.auth.onAuthStateChange((l,c)=>{a(c),(l==="SIGNED_OUT"||l==="SIGNED_IN"||l==="USER_UPDATED")&&nj()});return ze.auth.getSession().then(({data:l})=>{a(l.session),r(!1)}),()=>i.subscription.unsubscribe()},[]);const n=async()=>{nj(),await ze.auth.signOut()};return s.jsx(A6.Provider,{value:{user:(t==null?void 0:t.user)??null,session:t,loading:o,signOut:n},children:e})}function sn(){const e=x.useContext(A6);if(!e)throw new Error("useAuth must be used within AuthProvider");return e}const vl=new Map;function kY(){const{user:e,loading:t}=sn(),[a,o]=x.useState(()=>e?vl.get(e.id)??!1:!1),[r,n]=x.useState(()=>e?!vl.has(e.id):!1),[i,l]=x.useState(()=>e&&vl.has(e.id)?e.id:null);x.useEffect(()=>{if(t)return;if(!e){o(!1),n(!1),l(null);return}if(vl.has(e.id)){o(vl.get(e.id)),n(!1),l(e.id);return}let d=!0;return n(!0),(async()=>{const[{data:u},{data:m}]=await Promise.all([ze.from("user_roles").select("role").eq("user_id",e.id).eq("role","xpark_admin").maybeSingle(),ze.from("memberships").select("organization_id, organizations!inner(status)").eq("user_id",e.id).eq("organizations.status","active").limit(1).maybeSingle()]);if(!d)return;const h=!!u||!!m;
454vl.set(e.id,h),o(h),n(!1),l(e.id)})(),()=>{d=!1}},[e,t]);const c=t||r||!!e&&i!==e.id;return{hasAccess:a,loading:c}}const wY=[{slug:"estapar",hubSlug:"estacionamento-aeroporto-santos-dumont",iata:"SDU",name:"Estapar",address:{street:"Av. Alm. Silvio de Noronha",number:"365",district:"Centro",city:"Rio de Janeiro",state:"RJ",postalCode:"20021-340",country:"BR",formatted:"Av. Alm. Silvio de Noronha, 365, Centro, Rio de Janeiro - RJ, 20021-340"},geo:{lat:-22.9147918,lng:-43.1661906},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Alm.%20Silvio%20de%20Noronha%2C%20365%2C%20Centro%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2020021-340",mapEmbedQuery:"Av. Alm. Silvio de Noronha, 365, Centro, Rio de Janeiro - RJ, 20021-340",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.55}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,55 km do terminal."],cons:["Nota 2,6 no Google, com 182 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estapar?",a:"O endereço é Av. Alm. Silvio de Noronha, 365, Centro, Rio de Janeiro - RJ, 20021-340. Fica a 0,55 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.zuldigital.com.br/estapar-reserva/aeroportos/16."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=5822702195003436080",officialUrl:"https://www.zuldigital.com.br/estapar-reserva/aeroportos/16"},{slug:"base-santos-dumont",hubSlug:"estacionamento-aeroporto-santos-dumont",iata:"SDU",name:"Base Santos Dumont",address:{street:"R. Jardel Jércolis",number:"291",district:"Glória",city:"Rio de Janeiro",state:"RJ",postalCode:"20021-150",country:"BR",formatted:"R. Jardel Jércolis, 291, Glória, Rio de Janeiro - RJ, 20021-150"},geo:{lat:-22.913443599999997,lng:-43.1708069},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Jardel%20J%C3%A9rcolis%2C%20291%2C%20Gl%C3%B3ria%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2020021-150",mapEmbedQuery:"R. Jardel Jércolis, 291, Glória, Rio de Janeiro - RJ, 20021-150",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.83}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,83 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Base Santos Dumont?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Base Santos Dumont?",a:"O endereço é R. Jardel Jércolis, 291, Glória, Rio de Janeiro - RJ, 20021-150. Fica a 0,83 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.stopclub.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=10067965686991017841",officialUrl:"https://www.stopclub.com.br/"},{slug:"parebem",hubSlug:"estacionamento-aeroporto-santos-dumont",iata:"SDU",name:"PareBem",address:{street:"Av. Pres. Wilson",number:"231",district:"Centro",city:"Rio de Janeiro",state:"RJ",postalCode:"20030-021",country:"BR",formatted:"Av. Pres. Wilson, 231, Centro, Rio de Janeiro - RJ, 20030-021"}
454,geo:{lat:-22.910226299999998,lng:-43.1726226},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Pres.%20Wilson%2C%20231%2C%20Centro%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2020030-021",mapEmbedQuery:"Av. Pres. Wilson, 231, Centro, Rio de Janeiro - RJ, 20030-021",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.96}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,96 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no PareBem?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o PareBem?",a:"O endereço é Av. Pres. Wilson, 231, Centro, Rio de Janeiro - RJ, 20030-021. Fica a 0,96 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=13760491317668531737",officialUrl:"https://www.parebem.com.br/unidade/presidente-wilson/"},{slug:"estapar-terminal-2",hubSlug:"estacionamento-aeroporto-galeao",iata:"GIG",name:"Estapar Terminal 2",address:{street:"Av. Vinte de Janeiro",number:"S/N",district:"Galeão",city:"Rio de Janeiro",state:"RJ",postalCode:"21941-900",country:"BR",formatted:"Av. Vinte de Janeiro, S/N, Galeão, Rio de Janeiro - RJ, 21941-900"},geo:{lat:-22.8137652,lng:-43.245393799999995},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Vinte%20de%20Janeiro%2C%20S%2FN%2C%20Gale%C3%A3o%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2021941-900",mapEmbedQuery:"Av. Vinte de Janeiro, S/N, Galeão, Rio de Janeiro - RJ, 21941-900",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.57}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,57 km do terminal."],cons:["Nota 3,5 no Google, com 381 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estapar Terminal 2?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estapar Terminal 2?",a:"O endereço é Av. Vinte de Janeiro, S/N, Galeão, Rio de Janeiro - RJ, 21941-900. Fica a 0,57 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.riogaleao.com/passageiros/como-chegar-e-sair/estacionamento/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=13312282813165409881",officialUrl:"https://www.riogaleao.com/passageiros/como-chegar-e-sair/estacionamento/"},{slug:"nationpark",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Nationpark",address:{street:"Av. Rocha Pombo",number:"2853",district:"Ãguas Belas",city:"São José dos Pinhais",state:"PR",postalCode:"83010-620",country:"BR",formatted:"Av. Rocha Pombo, 2853, Ãguas Belas, São José dos Pinhais - PR, 83010-620"},geo:{lat:-25.5339669,lng:-49.1888085},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Rocha%20Pombo%2C%202853%2C%20%C3%81guas%20Belas%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR%2C%2083010-620",mapEmbedQuery:"Av. Rocha Pombo, 2853, Ãguas Belas, São José dos Pinhais - PR, 83010-620",phone:"+5541999546637",email:"[email protected]",hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"SaÃdas a cada 15 minutos",included:!0},terminals:[{code:"Terminal",distanceKm:1.44,minutes:5,via:"traslado da operadora"}],priceRows:[{label:"Diária descoberta (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias descoberta",perDay:19.9,total:139.3,originalPerDay:22.11,note:"reserva online"},{label:"15 dias descoberta",perDay:18.9,total:283.5,originalPerDay:21,note:"reserva online"},{label:"30 dias descoberta",perDay:18.9,total:567,originalPerDay:21,note:"reserva online"},{label:"Diária coberta (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias coberta",perDay:24.9,total:174.3,note:"reserva online"},{label:"15 dias coberta",perDay:23.9,total:358.5,note:"reserva online"},{label:"30 dias coberta",perDay:23.9,total:717,note:"reserva online"},{label:"Diária premium (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias premium",perDay:25.9,total:181.3,originalPerDay:26.9,note:"reserva online"},{label:"15 dias premium",perDay:24.9,total:373.5,originalPerDay:25.9,note:"reserva online"},{label:"30 dias premium",perDay:24.9,total:747,originalPerDay:25.9,note:"reserva online"}],priceCollectedAt:"27 de setembro de 2026",priceNote:"Fonte do preço: tabela de reserva online do parceiro publicada por terceiro. Referência 27 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Traslado gratuito até o terminal, com saÃdas a cada 15 minutos.","Funciona 24 horas, todos os dias.","Fica a 1,44 km do terminal.","Nota 4,5 no Google, com 599 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não vende diária avulsa na reserva online."],faq:[{q:"Quanto custa estacionar no Nationpark?",a:"Pelo levantamento de preços de terceiro (27 de setembro de 2026), o menor valor por dia é R$ 18,90 (15 dias descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Nationpark?",a:"O endereço é Av. Rocha Pombo, 2853, Ãguas Belas, São José dos Pinhais - PR, 83010-620. Fica a 1,44 km do terminal, por medição de terceiro."},{q:"Tem traslado até o terminal?",a:"Sim. A operadora declara traslado gratuito até o terminal, com saÃdas a cada 15 minutos e cerca de 5 minutos de trajeto."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.nationpark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; tabela de reserva online do parceiro publicada por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,legalName:"Nation Park Estacionamentos Ltda",taxId:"25.183.378/0001-07",mapsProfileUrl:"https://maps.google.com/?cid=8183556457993721896&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYASAA",amenities:["Câmeras 24h","Banheiros","Transfer gratuito","Atendimento 24 horas","Portaria controlada","Ãrea de espera","Self-park","Estacionamento segurado","Capa de proteção","Manutenção de bateria"],officialUrl:"https://www.nationpark.com.br/"},{slug:"abbapark",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Abbapark",address:{street:"R. Norberto de Brito",number:"574",district:"Centro",city:"São José dos Pinhais",state:"PR",postalCode:"83005-290",country:"BR",formatted:"R. Norberto de Brito, 574, Centro, São José dos Pinhais - PR, 83005-290"},geo:{lat:-25.531506,lng:-49.201125},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Norberto%20de%20Brito%2C%20574%2C%20Centro%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR%2C%2083005-290",mapEmbedQuery:"R. Norberto de Brito, 574, Centro, São José dos Pinhais - PR, 83005-290",phone:"+5541999333672",hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"ambos",valet:!1,transfer:{type:"van",included:!0},terminals:[{code:"Terminal",distanceKm:2.57,minutes:5,via:"traslado da operadora"}],priceRows:[{label:"Diária descoberta (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias descoberta",perDay:16.9,total:118.3,originalPerDay:18.78,note:"reserva online"},{label:"15 dias descoberta",perDay:15.9,total:238.5,originalPerDay:17.67,note:"reserva online"},{label:"30 dias descoberta",perDay:15.9,total:477,originalPerDay:17.67,note:"reserva online"},{label:"Diária coberta (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias coberta",perDay:21.9,total:153.3,note:"reserva online"},{label:"15 dias coberta",perDay:20.9,total:313.5,note:"reserva online"},{label:"30 dias coberta",perDay:20.9,total:627,note:"reserva online"},{label:"Diária premium (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias premium",perDay:23.9,total:167.3,originalPerDay:24.9,note:"reserva online"},{label:"15 dias premium",perDay:22.9,total:343.5,originalPerDay:23.9,
454note:"reserva online"},{label:"30 dias premium",perDay:22.9,total:687,originalPerDay:23.9,note:"reserva online"}],priceCollectedAt:"27 de setembro de 2026",priceNote:"Fonte do preço: tabela de reserva online do parceiro publicada por terceiro. Referência 27 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Traslado gratuito até o terminal.","Funciona 24 horas, todos os dias.","Nota 4,9 no Google, com 1.032 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não vende diária avulsa na reserva online."],faq:[{q:"Quanto custa estacionar no Abbapark?",a:"Pelo levantamento de preços de terceiro (27 de setembro de 2026), o menor valor por dia é R$ 15,90 (15 dias descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Abbapark?",a:"O endereço é R. Norberto de Brito, 574, Centro, São José dos Pinhais - PR, 83005-290. Fica a 2,57 km do terminal, por medição de terceiro."},{q:"Tem traslado até o terminal?",a:"Sim. A operadora declara traslado gratuito até o terminal e cerca de 5 minutos de trajeto."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.abbapark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; tabela de reserva online do parceiro publicada por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,legalName:"Nation Park Estacionamentos Ltda",taxId:"25.183.378/0001-07",mapsProfileUrl:"https://maps.google.com/?cid=9843837586039298756&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYASAA",amenities:["Câmeras 24h","Banheiros","Transfer gratuito","Atendimento 24 horas","Portaria controlada","Ãrea de espera","Self-park","Estacionamento segurado","Capa de proteção","Manutenção de bateria"],officialUrl:"https://www.abbapark.com.br/"},{slug:"hangar-vip",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Hangar VIP",address:{street:"Av. Cmte. Aviador José Paulo Lepinski",number:"1281",district:"Centro",city:"São José dos Pinhais",state:"PR",postalCode:"83010-710",country:"BR",formatted:"Av. Cmte. Aviador José Paulo Lepinski, 1281, Centro, São José dos Pinhais - PR, 83010-710"},geo:{lat:-25.537268,lng:-49.18309},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Cmte.%20Aviador%20Jos%C3%A9%20Paulo%20Lepinski%2C%201281%2C%20Centro%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR%2C%2083010-710",mapEmbedQuery:"Av. Cmte. Aviador José Paulo Lepinski, 1281, Centro, São José dos Pinhais - PR, 83010-710",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.22}],priceRows:[{label:"Diária",perDay:15.9,total:15.9,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 1,22 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Hangar VIP?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 15,90 (diária). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Hangar VIP?",a:"O endereço é Av. Cmte. Aviador José Paulo Lepinski, 1281, Centro, São José dos Pinhais - PR, 83010-710. Fica a 1,22 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.hangarvip.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJSeajXbXw3JQRCSed6H98tB8",officialUrl:"https://www.hangarvip.com.br/"},{slug:"nikkey",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Nikkey Estacionamento",address:{street:"R. Cmte-Aviador José P. Lepinski",number:"582",district:"Cruzeiro",city:"São José dos Pinhais",state:"PR",country:"BR",formatted:"R. Cmte-Aviador José P. Lepinski, 582, Cruzeiro, São José dos Pinhais - PR"},geo:{lat:-25.534666,lng:-49.186268},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Cmte-Aviador%20Jos%C3%A9%20P.%20Lepinski%2C%20582%2C%20Cruzeiro%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR",mapEmbedQuery:"R. Cmte-Aviador José P. Lepinski, 582, Cruzeiro, São José dos Pinhais - PR",hours:"Horário não informado pela fonte",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:1.25}],priceRows:[{label:"Diária coberta",perDay:25.6,total:25.6,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 1,25 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Nikkey Estacionamento?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 25,60 (diária coberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Nikkey Estacionamento?",a:"O endereço é R. Cmte-Aviador José P. Lepinski, 582, Cruzeiro, São José dos Pinhais - PR. Fica a 1,25 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.nikkeyestacionamento.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJqbU_lMrw3JQRU2CK873jIzI",officialUrl:"https://www.nikkeyestacionamento.com.br/"},{slug:"best-park",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Best Park Estacionamentos",address:{street:"Rua Cmte. Av. José P. Lepinski",number:"450 e 875",city:"São José dos Pinhais",state:"PR",country:"BR",formatted:"Rua Cmte. Av. José P. Lepinski, 450 e 875, São José dos Pinhais - PR"},geo:{lat:-25.535541,lng:-49.18902},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Cmte.%20Av.%20Jos%C3%A9%20P.%20Lepinski%2C%20450%20e%20875%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR",mapEmbedQuery:"Rua Cmte. Av. José P. Lepinski, 450 e 875, São José dos Pinhais - PR",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.54}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,54 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Best Park Estacionamentos?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Best Park Estacionamentos?",a:"O endereço é Rua Cmte. Av. José P. Lepinski, 450 e 875, São José dos Pinhais - PR. Fica a 1,54 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.bestparkestacionamentos.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJP-Qe57Pw3JQRgVy43UdTZsU",officialUrl:"https://www.bestparkestacionamentos.com.br/"},{slug:"vagas-brb",hubSlug:"estacionamento-aeroporto-brasilia",iata:"BSB",name:"Vagas BRB",address:{street:"Aeroporto de BrasÃlia",district:"Lago Sul",city:"BrasÃlia",state:"DF",postalCode:"71608-900",country:"BR",formatted:"Aeroporto de BrasÃlia, Lago Sul, BrasÃlia - DF, 71608-900"},geo:{lat:-15.86971,lng:-47.9220938},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Aeroporto%20de%20Bras%C3%ADlia%2C%20Lago%20Sul%2C%20Bras%C3%ADlia%20-%20DF%2C%2071608-900",mapEmbedQuery:"Aeroporto de BrasÃlia, Lago Sul, BrasÃlia - DF, 71608-900",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.14}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,14 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Vagas BRB?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Vagas BRB?",a:"O endereço é Aeroporto de BrasÃlia, Lago Sul, BrasÃlia - DF, 71608-900. Fica a 0,14 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.brbcard.com.br/vagas-exclusivas-brb/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=4041779649410936975",officialUrl:"https://www.brbcard.com.br/vagas-exclusivas-brb/"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-brasilia",iata:"BSB",name:"Estapar",address:{street:"Area Especial",number:"S/N",district:"Lago Sul",city:"BrasÃlia",state:"DF",postalCode:"71608-900",country:"BR",formatted:"Area
454Especial, S/N, Lago Sul, BrasÃlia - DF, 71608-900"},geo:{lat:-15.8713725,lng:-47.9224891},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Area%20Especial%2C%20S%2FN%2C%20Lago%20Sul%2C%20Bras%C3%ADlia%20-%20DF%2C%2071608-900",mapEmbedQuery:"Area Especial, S/N, Lago Sul, BrasÃlia - DF, 71608-900",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.26}],priceRows:[{label:"Bolsão B online",perDay:51.9,total:51.9,originalPerDay:66,note:"reserva online"},{label:"Bolsão B balcão",perDay:66,total:66},{label:"Bolsão A online",perDay:61.9,total:61.9,originalPerDay:71,note:"reserva online"},{label:"Bolsão A balcão",perDay:71,total:71},{label:"Bolsão Premium online",perDay:99.9,total:99.9,originalPerDay:105,note:"reserva online; 168 vagas cobertas"},{label:"Bolsão Premium balcão",perDay:105,total:105}],priceCollectedAt:"27 de setembro de 2026",priceNote:"Estacionamento oficial: 2.968 vagas (Premium 168, A 900, B 1.900). Bolsão A a 400 m e B a menos de 800 m do terminal. Tarifas online sujeitas à s condições do site oficial.",pros:["Fica a 0,26 km do terminal.","Bolsão A a 400 m; bolsão B a menos de 800 m do terminal."],cons:["Nota 3,4 no Google, com 896 avaliações (consulta de 20 de setembro de 2026)."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"No site oficial do aeroporto, consultado em 27/09/2026: diária online no bolsão B R$ 51,90, A R$ 61,90 e Premium R$ 99,90. No balcão: B R$ 66,00, A R$ 71,00 e Premium R$ 105,00. Consulte as condições da tarifa online antes de reservar."},{q:"Onde fica o Estapar?",a:"O endereço é Area Especial, S/N, Lago Sul, BrasÃlia - DF, 71608-900. Fica a 0,26 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.estapar.com.br/unidades/aeroporto-de-brasilia-df-bsb/2517."}],fonteCitacao:"site oficial do Aeroporto de BrasÃlia (https://www.bsb.aero/passageiros/estacionamento), consultado em 27/09/2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=5326401604381310083",officialUrl:"https://www.estapar.com.br/unidades/aeroporto-de-brasilia-df-bsb/2517"},{slug:"big",hubSlug:"estacionamento-aeroporto-brasilia",iata:"BSB",name:"Big Estacionamento",address:{street:"Guará I",number:"QE 11 (Urban Mall)",city:"BrasÃlia",state:"DF",postalCode:"71020-115",country:"BR",formatted:"Guará I, QE 11 (Urban Mall), BrasÃlia - DF, 71020-115"},geo:{lat:-15.8387773,lng:-47.9594027},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Guar%C3%A1%20I%2C%20QE%2011%20%28Urban%20Mall%29%2C%20Bras%C3%ADlia%20-%20DF%2C%2071020-115",mapEmbedQuery:"Guará I, QE 11 (Urban Mall), BrasÃlia - DF, 71020-115",hours:"Traslado 24 horas",coverage:"coberto",valet:!1,transfer:{type:"van",included:!0,note:"Traslado 24 horas incluÃdo para até 4 passageiros."},terminals:[{code:"Terminal",distanceKm:5.37}],priceRows:[{label:"5+ dias coberta (Pix ou dinheiro)",perDay:50,total:250,note:"mÃnimo de 5 diárias desde 17/08/2026"},{label:"5+ dias coberta (débito ou crédito)",perDay:55,total:275,note:"mÃnimo de 5 diárias desde 17/08/2026"}],priceCollectedAt:"27 de setembro de 2026",priceNote:"MÃnimo de 5 diárias desde 17/08/2026. Traslado 24 horas incluÃdo para até 4 passageiros. Fonte: site oficial da operadora, consultado em 27/09/2026.",pros:["Vaga coberta e traslado 24 horas incluÃdo para até 4 passageiros."],cons:[],faq:[{q:"Quanto custa estacionar no Big Estacionamento?",a:"A diária coberta custa R$ 50,00 no Pix ou dinheiro e R$ 55,00 no débito ou crédito, com mÃnimo de 5 diárias desde 17/08/2026. Fonte: site oficial da operadora, consultado em 27/09/2026."},{q:"Onde fica o Big Estacionamento?",a:"O endereço é Guará I, QE 11 (Urban Mall), BrasÃlia - DF, 71020-115. Fica a 5,37 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://bigestacionamentobsb.com.br/."}],fonteCitacao:"site oficial do Big Estacionamento (https://bigestacionamentobsb.com.br/), consultado em 27/09/2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://bigestacionamentobsb.com.br/"},{slug:"aero-park",hubSlug:"estacionamento-aeroporto-brasilia",iata:"BSB",name:"Aero Park (Park Way)",address:{street:"St. SMPW",number:"Qd. 06, Conj. 01, Lote 01",city:"BrasÃlia",state:"DF",postalCode:"71740-601",country:"BR",formatted:"St. SMPW, Qd. 06, Conj. 01, Lote 01, BrasÃlia - DF, 71740-601"},geo:{lat:-15.7939869,lng:-47.8828},mapsUrl:"https://www.google.com/maps/search/?api=1&query=St.%20SMPW%2C%20Qd.%2006%2C%20Conj.%2001%2C%20Lote%2001%2C%20Bras%C3%ADlia%20-%20DF%2C%2071740-601",mapEmbedQuery:"St. SMPW, Qd. 06, Conj. 01, Lote 01, BrasÃlia - DF, 71740-601",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!1,terminals:[{code:"Terminal",distanceKm:9.31}],priceRows:[{label:"Diária descoberta",perDay:20,total:20,note:"ref. agosto de 2026"},{label:"7 dias descoberta",perDay:20,total:140,note:"ref. agosto de 2026"},{label:"15 dias descoberta",perDay:20,total:300,note:"ref. agosto de 2026"},{label:"30 dias descoberta",perDay:20,total:600,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:[],cons:[],faq:[{q:"Quanto custa estacionar no Aero Park (Park Way)?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 20,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Aero Park (Park Way)?",a:"O endereço é St. SMPW, Qd. 06, Conj. 01, Lote 01, BrasÃlia - DF, 71740-601. Fica a 9,31 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://estacionamentoaeroparkbsb.webnode.page/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://estacionamentoaeroparkbsb.webnode.page/"},{slug:"keep-parking",hubSlug:"estacionamento-aeroporto-porto-alegre",iata:"POA",name:"Keep Parking",address:{street:"Av. das Indústrias",number:"1344",district:"Anchieta",city:"Porto Alegre",state:"RS",country:"BR",formatted:"Av. das Indústrias, 1344, Anchieta, Porto Alegre - RS"},geo:{lat:-29.987371,lng:-51.169968},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20das%20Ind%C3%BAstrias%2C%201344%2C%20Anchieta%2C%20Porto%20Alegre%20-%20RS",mapEmbedQuery:"Av. das Indústrias, 1344, Anchieta, Porto Alegre - RS",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:.73}],priceRows:[{label:"Diária coberta",perDay:28,total:28,note:"ref. abril de 2025"},{label:"Diária descoberta",perDay:18,total:18,note:"ref. abril de 2025"},{label:"7 dias coberta",perDay:28,total:196,note:"ref. abril de 2025"},{label:"7 dias descoberta",perDay:18,total:126,note:"ref. abril de 2025"},{label:"15 dias coberta",perDay:28,total:420,note:"ref. abril de 2025"},{label:"15 dias descoberta",perDay:18,total:270,note:"ref. abril de 2025"},{label:"30 dias descoberta",perDay:18,total:540,note:"ref. abril de 2025"}],priceCollectedAt:"abril de 2025",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência abril de 2025; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,73 km do terminal.","Nota 4,7 no Google, com 1.479 avaliações (consulta de 20 de setembro de 2026)."],cons:[],faq:[{q:"Quanto custa estacionar no Keep Parking?",a:"Pelo levantamento de preços de terceiro (abril de 2025), a diária parte de R$ 18,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Keep Parking?",a:"O endereço é Av. das Indústrias, 1344, Anchieta, Porto Alegre - RS. Fica a 0,73 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.keepparking.com.br/br/home."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJtSUq6FF3GZUR9jVWtIMGl1c",officialUrl:"https://www.keepparking.com.br/br/home"},{slug:"estapar-off-site",hubSlug:"estacionamento-aeroporto-porto-alegre",iata:"POA",name:"Estapar Off Site",address:{street:"Av. dos Estados",number:"747",district:"Anchieta",city:"Porto Alegre",state:"RS",postalCode:"90200-001",country:"BR",formatted:"Av. dos Estados, 747, Anchieta, Porto Alegre - RS, 90200-001"},geo:{lat:-29.9871667,lng:-51.174935999999995},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20dos%20Estados%2C%20747%2C%20Anchieta%2C%20Porto%20Alegre%20-%20RS%2C%2090200-001",mapEmbedQuery:"Av. dos Estados, 747, Anchieta, Porto Alegre - RS, 90200-001",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.83}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,83 km do terminal."],cons:["Nota 3,8 no Google, com 238 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estapar Off Site?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estapar Off Site?",a:"O endereço é Av. dos Estados, 747, Anchieta, Porto Alegre - RS, 90200-001. Fica a 0,83 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.zuldigital.com.br/estapar-reserva/aeroportos/119."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=114423607887134734",officialUrl:"https://www.zuldigital.com.br/estapar-reserva/aeroportos/119"},{slug:"ve-parking",hubSlug:"estacionamento-aeroporto-porto-alegre",iata:"POA",name:"VE Parking Estacionamentos",address:{street:"Av. Severo Dullius",number:"2125",district:"São João",city:"Porto Alegre",state:"RS",postalCode:"90200-310",country:"BR",formatted:"Av. Severo Dullius, 2125, São João, Porto Alegre - RS, 90200-310"},geo:{lat:-29.987371,lng:-51.180346},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Severo%20Dullius%2C%202125%2C%20S%C3%A3o%20Jo%C3%A3o%2C%20Porto%20Alegre%20-%20RS%2C%2090200-310",mapEmbedQuery:"Av. Severo Dullius, 2125, São João, Porto Alegre - RS, 90200-310",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.15}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,15 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no VE Parking Estacionamentos?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o VE Parking Estacionamentos?",a:"O endereço é Av. Severo Dullius, 2125, São João, Porto Alegre - RS, 90200-310. Fica a 1,15 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://veparking.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJ_cGFr9R5GZURMJTZc4j4Tzc",officialUrl:"https://veparking.com.br/"}
454,{slug:"estapar",hubSlug:"estacionamento-aeroporto-maceio",iata:"MCZ",name:"Estapar",address:{street:"Rodovia BR 104",number:"Km 91",district:"S/N",city:"Maceió",state:"AL",postalCode:"57100-971",country:"BR",formatted:"Rodovia BR 104, Km 91, S/N, Maceió - AL, 57100-971"},geo:{lat:-9.516233999999999,lng:-35.7927266},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rodovia%20BR%20104%2C%20Km%2091%2C%20S%2FN%2C%20Macei%C3%B3%20-%20AL%2C%2057100-971",mapEmbedQuery:"Rodovia BR 104, Km 91, S/N, Maceió - AL, 57100-971",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.61}],priceRows:[{label:"Diária (online) (a partir de)",perDay:19.9,total:19.9,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,61 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Estapar?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 19,90 (diária (online) (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Estapar?",a:"O endereço é Rodovia BR 104, Km 91, S/N, Maceió - AL, 57100-971. Fica a 0,61 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.zuldigital.com.br/estapar-reserva/aeroportos/4."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=8171552984685494277",officialUrl:"https://www.zuldigital.com.br/estapar-reserva/aeroportos/4"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-joao-pessoa",iata:"JPA",name:"Estapar",address:{street:"Aeroporto Internacional Presidente Castro Pinto S/N",district:"Aeroporto",city:"Bayeux",state:"PB",postalCode:"58308-901",country:"BR",formatted:"Aeroporto Internacional Presidente Castro Pinto S/N, Aeroporto, Bayeux - PB, 58308-901"},geo:{lat:-7.145053700000001,lng:-34.9478471},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Aeroporto%20Internacional%20Presidente%20Castro%20Pinto%20S%2FN%2C%20Aeroporto%2C%20Bayeux%20-%20PB%2C%2058308-901",mapEmbedQuery:"Aeroporto Internacional Presidente Castro Pinto S/N, Aeroporto, Bayeux - PB, 58308-901",hours:"Horário não informado pela fonte",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.47}],priceRows:[{label:"Diária coberta (online) (a partir de)",perDay:19.97,total:19.97,note:"ref. agosto de 2026"},{label:"7 dias coberta",perDay:19.97,total:139.79,note:"online; ref. agosto de 2026"},{label:"15 dias coberta",perDay:19.97,total:299.55,note:"online; ref. agosto de 2026"},{label:"30 dias coberta",perDay:19.97,total:599.1,note:"online; ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,47 km do terminal."],cons:["Nota 3,1 no Google, com 90 avaliações (consulta de 20 de setembro de 2026)."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 19,97 (diária coberta (online) (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Estapar?",a:"O endereço é Aeroporto Internacional Presidente Castro Pinto S/N, Aeroporto, Bayeux - PB, 58308-901. Fica a 0,47 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.zuldigital.com.br/estapar-reserva/aeroportos/2."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=14668258911822072632",officialUrl:"https://www.zuldigital.com.br/estapar-reserva/aeroportos/2"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-londrina",iata:"LDB",name:"Estapar",address:{street:"R. Ten. João MaurÃcio Medeiros",number:"71",district:"San Conrado",city:"Londrina",state:"PR",postalCode:"86039-100",country:"BR",formatted:"R. Ten. João MaurÃcio Medeiros, 71, San Conrado, Londrina - PR, 86039-100"},geo:{lat:-23.3283323,lng:-51.136808099999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Ten.%20Jo%C3%A3o%20Maur%C3%ADcio%20Medeiros%2C%2071%2C%20San%20Conrado%2C%20Londrina%20-%20PR%2C%2086039-100",mapEmbedQuery:"R. Ten. João MaurÃcio Medeiros, 71, San Conrado, Londrina - PR, 86039-100",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.22}],priceRows:[{label:"Diária descoberta (online) (a partir de)",perDay:24.9,total:24.9,note:"ref. agosto de 2026"},{label:"7 dias descoberta",perDay:24.9,total:174.3,note:"online; ref. agosto de 2026"},{label:"15 dias descoberta",perDay:24.9,total:373.5,note:"online; ref. agosto de 2026"},{label:"30 dias descoberta",perDay:24.9,total:747,note:"online; ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,22 km do terminal."],cons:["Nota 3,8 no Google, com 82 avaliações (consulta de 20 de setembro de 2026)."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 24,90 (diária descoberta (online) (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Estapar?",a:"O endereço é R. Ten. João MaurÃcio Medeiros, 71, San Conrado, Londrina - PR, 86039-100. Fica a 0,22 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.zuldigital.com.br/estapar-reserva/aeroportos/31."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=852272185137332222",officialUrl:"https://www.zuldigital.com.br/estapar-reserva/aeroportos/31"},{slug:"estacenter",hubSlug:"estacionamento-aeroporto-londrina",iata:"LDB",name:"Estacenter",address:{street:"Av. Ayrton Senna da Silva",number:"500",district:"Palhano 1",city:"Londrina",state:"PR",postalCode:"86050-460",country:"BR",formatted:"Av. Ayrton Senna da Silva, 500, Palhano 1, Londrina - PR, 86050-460"},geo:{lat:-23.329703199999997,lng:-51.1778438},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Ayrton%20Senna%20da%20Silva%2C%20500%2C%20Palhano%201%2C%20Londrina%20-%20PR%2C%2086050-460",mapEmbedQuery:"Av. Ayrton Senna da Silva, 500, Palhano 1, Londrina - PR, 86050-460",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:4.21}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacenter?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacenter?",a:"O endereço é Av. Ayrton Senna da Silva, 500, Palhano 1, Londrina - PR, 86050-460. Fica a 4,21 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: http://www.estacenter.com/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=4770678879314634103",officialUrl:"http://www.estacenter.com/"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"Estapar",address:{street:"Praça Min. Salgado Filho",number:"S/N",district:"Imbiribeira",city:"Recife",state:"PE",postalCode:"51210-010",country:"BR",formatted:"Praça Min. Salgado Filho, S/N, Imbiribeira, Recife - PE, 51210-010"},geo:{lat:-8.1310167,lng:-34.9167451},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Pra%C3%A7a%20Min.%20Salgado%20Filho%2C%20S%2FN%2C%20Imbiribeira%2C%20Recife%20-%20PE%2C%2051210-010",mapEmbedQuery:"Praça Min. Salgado Filho, S/N, Imbiribeira, Recife - PE, 51210-010",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.91}],priceRows:[{label:"Diária descoberta (balcão)",perDay:24,total:24,note:"ref. agosto de 2026"},{label:"Diária descoberta (online) (a partir de)",perDay:19.9,total:19.9,note:"ref. agosto de 2026"},{label:"7 dias",perDay:24,total:168,note:"balcão; ref. agosto de 2026"},{label:"7 dias",perDay:19.9,total:139.3,note:"online; ref. agosto de 2026"},{label:"15 dias",perDay:24,total:360,note:"balcão; ref. agosto de 2026"},{label:"15 dias",perDay:19.9,total:298.5,note:"online; ref. agosto de 2026"},{label:"30 dias",perDay:19.9,total:597,note:"online; ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,91 km do terminal."],cons:["Nota 3,4 no Google, com 290 avaliações (consulta de 20 de setembro de 2026)."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 19,90 (diária descoberta (online) (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Estapar?",a:"O endereço é Praça Min. Salgado Filho, S/N, Imbiribeira, Recife - PE, 51210-010. Fica a 0,91 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.zuldigital.com.br/estapar-reserva/aeroportos/34."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=377556895549446648",officialUrl:"https://www.zuldigital.com.br/estapar-reserva/aeroportos/34"},{slug:"recife-rent-a-car",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"Estacionamento Recife (grupo Recife Rent a Car)",address:{street:"Av. Mal. Mascarenhas de Moraes",number:"5293",district:"Boa Viagem",city:"Recife",state:"PE",country:"BR",formatted:"Av. Mal. Mascarenhas de Moraes, 5293, Boa Viagem, Recife - PE"},geo:{lat:-8.131449,lng:-34.915689},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Mal.%20Mascarenhas%20de%20Moraes%2C%205293%2C%20Boa%20Viagem%2C%20Recife%20-%20PE",mapEmbedQuery:"Av. Mal. Mascarenhas de Moraes, 5293, Boa Viagem, Recife - PE",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.04}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,04 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Recife (grupo Recife Rent a Car)?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Recife (grupo Recife Rent a Car)?",a:"O endereço é Av. Mal. Mascarenhas de Moraes, 5293, Boa Viagem, Recife - PE. Fica a 1,04 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.estacionamentorecife.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJc6O3hpIfqwcROb1Lz6LKbEc",officialUrl:"https://www.estacionamentorecife.com.br/"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-navegantes",iata:"NVT",name:"Estapar",address:{street:"R. Manoel Leopoldo Rocha",number:"470",district:"Meia Praia",city:"Navegantes",state:"SC",postalCode:"88375-000",country:"BR",formatted:"R. Manoel Leopoldo Rocha, 470, Meia Praia, Navegantes - SC, 88375-000"},geo:{lat:-26.8811976,lng:-48.6491117},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Manoel%20Leopoldo%20Rocha%2C%20470%2C%20Meia%20Praia%2C%20Navegantes%20-%20SC%2C%2088375-000",mapEmbedQuery:"R. Manoel Leopoldo Rocha, 470, Meia Praia, Navegantes - SC, 88375-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.26}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,26 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estapar?",a:"O endereço é R. Manoel Leopoldo Rocha, 470, Meia Praia, Navegantes - SC, 88375-000. Fica a 0,26 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://aeroportos.motiva.com.br/navegantes-sc/o-aeroporto/como-chegar-e-sair."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=2833951205845901115",officialUrl:"https://aeroportos.motiva.com.br/navegantes-sc/o-aeroporto/como-chegar-e-sair"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-salvador",iata:"SSA",name:"Estapar",address:{street:"Pr. Gago Coutinho",number:"S/N",district:"Aeroporto",city:"Salvador",state:"BA",postalCode:"41520-970",country:"BR",formatted:"Pr. Gago Coutinho, S/N, Aeroporto, Salvador - BA, 41520-970"},geo:{lat:-12.9137208,lng:-38.336659999999995},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Pr.%20Gago%20Coutinho%2C%20S%2FN%2C%20Aeroporto%2C%20Salvador%20-%20BA%2C%2041520-970",mapEmbedQuery:"Pr. Gago Coutinho, S/N, Aeroporto, Salvador - BA, 41520-970",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.64}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,64 km do terminal."],cons:["Nota 3,3 no Google, com 55 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estapar?",a:"O endereço é Pr. Gago Coutinho, S/N, Aeroporto, Salvador - BA, 41520-970. Fica a 1,64 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.salvador-airport.com.br/pt-br/servico/estacionamento."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=12532601567651566284",officialUrl:"https://www.salvador-airport.com.br/pt-br/servico/estacionamento"},{slug:"bambuzal",hubSlug:"estacionamento-aeroporto-salvador",iata:"SSA",name:"Estacionamento Bambuzal",address:{street:"1ª Travessa Santos Dumont",number:"431",district:"Centro",city:"Lauro de Freitas",state:"BA",postalCode:"42703-440",country:"BR",formatted:"1ª Travessa Santos Dumont, 431, Centro, Lauro de Freitas - BA, 42703-440"},geo:{lat:-12.904369,lng:-38.340442},mapsUrl:"https://www.google.com/maps/search/?api=1&query=1%C2%AA%20Travessa%20Santos%20Dumont%2C%20431%2C%20Centro%2C%20Lauro%20de%20Freitas%20-%20BA%2C%2042703-440",mapEmbedQuery:"1ª Travessa Santos Dumont, 431, Centro, Lauro de Freitas - BA, 42703-440",hours:"Horário não informado pela fonte",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:2}],p
454riceRows:[{label:"Diária coberta",perDay:40,total:40,note:"ref. 10 de setembro de 2026"},{label:"7 dias coberta",perDay:40,total:280,note:"ref. 10 de setembro de 2026"},{label:"15 dias coberta",perDay:40,total:600,note:"ref. 10 de setembro de 2026"},{label:"30 dias coberta",perDay:40,total:1200,note:"ref. 10 de setembro de 2026"}],priceCollectedAt:"10 de setembro de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência 10 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 2 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Estacionamento Bambuzal?",a:"Pelo levantamento de preços de terceiro (10 de setembro de 2026), a diária parte de R$ 40,00 (diária coberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Estacionamento Bambuzal?",a:"O endereço é 1ª Travessa Santos Dumont, 431, Centro, Lauro de Freitas - BA, 42703-440. Fica a 2 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://estacionamentobambuzal.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-10",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJ2elDHkcWFgcRgQ5tlXrUwLU",officialUrl:"https://estacionamentobambuzal.com.br/"},{slug:"executive-park",hubSlug:"estacionamento-aeroporto-salvador",iata:"SSA",name:"Executive Park",address:{street:"Rua Maria Luiza Alves",number:"107",district:"Jardim das Margaridas",city:"Salvador",state:"BA",postalCode:"41502-320",country:"BR",formatted:"Rua Maria Luiza Alves, 107, Jardim das Margaridas, Salvador - BA, 41502-320"},geo:{lat:-12.9048266,lng:-38.349027},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Maria%20Luiza%20Alves%2C%20107%2C%20Jardim%20das%20Margaridas%2C%20Salvador%20-%20BA%2C%2041502-320",mapEmbedQuery:"Rua Maria Luiza Alves, 107, Jardim das Margaridas, Salvador - BA, 41502-320",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:2.91}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Executive Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Executive Park?",a:"O endereço é Rua Maria Luiza Alves, 107, Jardim das Margaridas, Salvador - BA, 41502-320. Fica a 2,91 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"confort-park",hubSlug:"estacionamento-aeroporto-fortaleza",iata:"FOR",name:"Confort Park Estacionamento",address:{street:"R. Jorge Acúrcio",number:"550",district:"Vila União",city:"Fortaleza",state:"CE",postalCode:"60410-600",country:"BR",formatted:"R. Jorge Acúrcio, 550, Vila União, Fortaleza - CE, 60410-600"},geo:{lat:-3.785541,lng:-38.545053},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Jorge%20Ac%C3%BArcio%2C%20550%2C%20Vila%20Uni%C3%A3o%2C%20Fortaleza%20-%20CE%2C%2060410-600",mapEmbedQuery:"R. Jorge Acúrcio, 550, Vila União, Fortaleza - CE, 60410-600",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:1.72}],priceRows:[{label:"Diária coberta",perDay:37,total:37,note:"ref. 10 de setembro de 2026"},{label:"Diária descoberta",perDay:27,total:27,note:"ref. 10 de setembro de 2026"},{label:"7 dias coberta",perDay:37,total:259,note:"ref. 10 de setembro de 2026"},{label:"7 dias descoberta",perDay:27,total:189,note:"ref. 10 de setembro de 2026"},{label:"15 dias coberta",perDay:37,total:555,note:"ref. 10 de setembro de 2026"},{label:"15 dias descoberta",perDay:27,total:405,note:"ref. 10 de setembro de 2026"},{label:"30 dias descoberta",perDay:27,total:810,note:"ref. 10 de setembro de 2026"}],priceCollectedAt:"10 de setembro de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência 10 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 1,72
454km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Confort Park Estacionamento?",a:"Pelo levantamento de preços de terceiro (10 de setembro de 2026), a diária parte de R$ 27,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Confort Park Estacionamento?",a:"O endereço é R. Jorge Acúrcio, 550, Vila União, Fortaleza - CE, 60410-600. Fica a 1,72 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.estacionamentofortaleza.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-10",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJT3gqlRxPxwcR7Wk4tqeKwIM",officialUrl:"https://www.estacionamentofortaleza.com.br/"},{slug:"oficial-do-aeroporto",hubSlug:"estacionamento-aeroporto-florianopolis",iata:"FLN",name:"Oficial do Aeroporto",address:{street:"Rod. Ac. ao Aeroporto",district:"Base Aérea",city:"Florianópolis",state:"SC",postalCode:"88047-902",country:"BR",formatted:"Rod. Ac. ao Aeroporto, Base Aérea, Florianópolis - SC, 88047-902"},geo:{lat:-27.6762494,lng:-48.545266399999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rod.%20Ac.%20ao%20Aeroporto%2C%20Base%20A%C3%A9rea%2C%20Florian%C3%B3polis%20-%20SC%2C%2088047-902",mapEmbedQuery:"Rod. Ac. ao Aeroporto, Base Aérea, Florianópolis - SC, 88047-902",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:.68}],priceRows:[{label:"Diária coberta",perDay:58,total:58,note:"ref. agosto de 2026"},{label:"Diária descoberta (a partir de)",perDay:48,total:48,note:"ref. agosto de 2026"},{label:"7 dias coberta",perDay:58,total:406,note:"ref. agosto de 2026"},{label:"7 dias descoberta",perDay:48,total:336,note:"ref. agosto de 2026"},{label:"15 dias coberta",perDay:58,total:870,note:"ref. agosto de 2026"},{label:"15 dias descoberta",perDay:48,total:720,note:"ref. agosto de 2026"},{label:"30 dias descoberta",perDay:48,total:1440,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,68 km do terminal."],cons:["Nota 2,9 no Google, com 176 avaliações (consulta de 20 de setembro de 2026)."],faq:[{q:"Quanto custa estacionar no Oficial do Aeroporto?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 48,00 (diária descoberta (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Oficial do Aeroporto?",a:"O endereço é Rod. Ac. ao Aeroporto, Base Aérea, Florianópolis - SC, 88047-902. Fica a 0,68 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://floripa-airport.com/estacionamento."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3643964423552674916",officialUrl:"https://floripa-airport.com/estacionamento"},{slug:"portal",hubSlug:"estacionamento-aeroporto-florianopolis",iata:"FLN",name:"Portal Estacionamento",address:{street:"Rod. AparÃcio Ramos Cordeiro",number:"361",district:"Campeche/Autódromo",city:"Florianópolis",state:"SC",postalCode:"88065-500",country:"BR",formatted:"Rod. AparÃcio Ramos Cordeiro, 361, Campeche/Autódromo, Florianópolis - SC, 88065-500"},geo:{lat:-27.682665,lng:-48.513731},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rod.%20Apar%C3%ADcio%20Ramos%20Cordeiro%2C%20361%2C%20Campeche%2FAut%C3%B3dromo%2C%20Florian%C3%B3polis%20-%20SC%2C%2088065-500",mapEmbedQuery:"Rod. AparÃcio Ramos Cordeiro, 361, Campeche/Autódromo, Florianópolis - SC, 88065-500",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.61}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Nota 4,6 no Google, com 649 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Portal Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Portal Estacionamento?",a:"O endereço é Rod. AparÃcio Ramos Cordeiro, 361, Campeche/Autódromo, Florianópolis - SC, 88065-500. Fica a 3,61 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.portalestacionamento.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJE8QikxQ6J5URjbINrdW729g",officialUrl:"https://www.portalestacionamento.com.br/"},{slug:"mjr",hubSlug:"estacionamento-aeroporto-goiania",iata:"GYN",name:"MJR",address:{street:"Rua Marabás 568",district:"Esq - Alameda Aeroporto, Q. 27A - L. 22 - Jardim Guanabara",city:"Goiânia",state:"GO",postalCode:"74675-840",country:"BR",formatted:"Rua Marabás 568, Esq - Alameda Aeroporto, Q. 27A - L. 22 - Jardim Guanabara, Goiânia - GO, 74675-840"},geo:{lat:-16.6242423,lng:-49.2186563},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Marab%C3%A1s%20568%2C%20Esq%20-%20Alameda%20Aeroporto%2C%20Q.%2027A%20-%20L.%2022%20-%20Jardim%20Guanabara%2C%20Goi%C3%A2nia%20-%20GO%2C%2074675-840",mapEmbedQuery:"Rua Marabás 568, Esq - Alameda Aeroporto, Q. 27A - L. 22 - Jardim Guanabara, Goiânia - GO, 74675-840",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.89}],priceRows:[{label:"Diária descoberta (a partir de)",perDay:20,total:20,note:"ref. 10 de setembro de 2026"},{label:"7 dias",perDay:20,total:140,note:"ref. 10 de setembro de 2026"},{label:"15 dias",perDay:20,total:300,note:"ref. 10 de setembro de 2026"},{label:"30 dias",perDay:20,total:600,note:"ref. 10 de setembro de 2026"}],priceCollectedAt:"10 de setembro de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência 10 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,89 km do terminal.","Nota 5 no Google, com 731 avaliações (consulta de 20 de setembro de 2026)."],cons:[],faq:[{q:"Quanto custa estacionar no MJR?",a:"Pelo levantamento de preços de terceiro (10 de setembro de 2026), a diária parte de R$ 20,00 (diária descoberta (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o MJR?",a:"O endereço é Rua Marabás 568, Esq - Alameda Aeroporto, Q. 27A - L. 22 - Jardim Guanabara, Goiânia - GO, 74675-840. Fica a 0,89 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://mjrestacionamento.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-10",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=17439599173895554912",officialUrl:"https://mjrestacionamento.com.br/"},{slug:"dr-park",hubSlug:"estacionamento-aeroporto-goiania",iata:"GYN",name:"DR Park",address:{street:"Alameda Aeroporto",number:"Qd. 51",district:"Lt. 1 - Jardim Guanabara",city:"Goiânia",state:"GO",postalCode:"74675-020",country:"BR",formatted:"Alameda Aeroporto, Qd. 51, Lt. 1 - Jardim Guanabara, Goiânia - GO, 74675-020"},geo:{lat:-16.6245463,lng:-49.216837},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Alameda%20Aeroporto%2C%20Qd.%2051%2C%20Lt.%201%20-%20Jardim%20Guanabara%2C%20Goi%C3%A2nia%20-%20GO%2C%2074675-020",mapEmbedQuery:"Alameda Aeroporto, Qd. 51, Lt. 1 - Jardim Guanabara, Goiânia - GO, 74675-020",hours:"Horário não informado pela fonte",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.92}],priceRows:[{label:"Diária coberta",perDay:30,total:30,note:"ref. dezembro de 2025"}],priceCollectedAt:"dezembro de 2025",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência dezembro de 2025; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,92 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no DR Park?",a:"Pelo levantamento de preços de terceiro (dezembro de 2025), a diária parte de R$ 30,00 (diária coberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o DR Park?",a:"O endereço é Alameda Aeroporto, Qd. 51, Lt. 1 - Jardim Guanabara, Goiânia - GO, 74675-020. Fica a 0,92 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://drpar
454k.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=1407538457735645509",officialUrl:"https://drpark.com.br/"},{slug:"karlog-parking",hubSlug:"estacionamento-aeroporto-goiania",iata:"GYN",name:"Karlog Parking",address:{street:"Alameda Aeroporto Q 1",number:"1685",district:"Jardim Guanabara",city:"Goiânia",state:"GO",postalCode:"74675-020",country:"BR",formatted:"Alameda Aeroporto Q 1, 1685, Jardim Guanabara, Goiânia - GO, 74675-020"},geo:{lat:-16.6248418,lng:-49.2151597},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Alameda%20Aeroporto%20Q%201%2C%201685%2C%20Jardim%20Guanabara%2C%20Goi%C3%A2nia%20-%20GO%2C%2074675-020",mapEmbedQuery:"Alameda Aeroporto Q 1, 1685, Jardim Guanabara, Goiânia - GO, 74675-020",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:.99}],priceRows:[{label:"Diária coberta",perDay:30,total:30,note:"ref. 10 de setembro de 2026"},{label:"Diária descoberta",perDay:25,total:25,note:"ref. 10 de setembro de 2026"},{label:"7 dias coberta",perDay:30,total:210,note:"ref. 10 de setembro de 2026"},{label:"7 dias descoberta",perDay:25,total:175,note:"ref. 10 de setembro de 2026"},{label:"15 dias coberta",perDay:30,total:450,note:"ref. 10 de setembro de 2026"},{label:"15 dias descoberta",perDay:25,total:375,note:"ref. 10 de setembro de 2026"}],priceCollectedAt:"10 de setembro de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência 10 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,99 km do terminal.","Nota 4,8 no Google, com 63 avaliações (consulta de 20 de setembro de 2026)."],cons:[],faq:[{q:"Quanto custa estacionar no Karlog Parking?",a:"Pelo levantamento de preços de terceiro (10 de setembro de 2026), a diária parte de R$ 25,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Karlog Parking?",a:"O endereço é Alameda Aeroporto Q 1, 1685, Jardim Guanabara, Goiânia - GO, 74675-020. Fica a 0,99 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://karlogparking.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-10",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=14449694196164773488",officialUrl:"https://karlogparking.com.br/"},{slug:"aero-parking",hubSlug:"estacionamento-aeroporto-goiania",iata:"GYN",name:"Estacionamento Aero Parking",address:{street:"Alameda Aeroporto",number:"1817",district:"Jardim Guanabara",city:"Goiânia",state:"GO",postalCode:"74675-020",country:"BR",formatted:"Alameda Aeroporto, 1817, Jardim Guanabara, Goiânia - GO, 74675-020"},geo:{lat:-16.62534,lng:-49.21329},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Alameda%20Aeroporto%2C%201817%2C%20Jardim%20Guanabara%2C%20Goi%C3%A2nia%20-%20GO%2C%2074675-020",mapEmbedQuery:"Alameda Aeroporto, 1817, Jardim Guanabara, Goiânia - GO, 74675-020",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.08}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,08 km do terminal.","Nota 4,6 no Google, com 143 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Aero Parking?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Aero Parking?",a:"O endereço é Alameda Aeroporto, 1817, Jardim Guanabara, Goiânia - GO, 74675-020. Fica a 1,08 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://aeroparkingestacionamento.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJzzsKW33yXpMR4_lITNycK6s",officialUrl:"https://aeroparkingestacionamento.com.br/"},{slug:"vitoria-airport",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Vitória Airport",address:{street:"Av. Roza Helena Schorling Albuquerque",number:"856",district:"Aeroporto",city:"Vitória",state:"ES",postalCode:"29075-685",country:"BR",formatted:"Av. Roza Helena Schorling Albuquerque, 856, Aeroporto, Vitória - ES, 29075-685"},geo:{lat:-20.266725299999997,lng:-40.284260499999995},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20
454Roza%20Helena%20Schorling%20Albuquerque%2C%20856%2C%20Aeroporto%2C%20Vit%C3%B3ria%20-%20ES%2C%2029075-685",mapEmbedQuery:"Av. Roza Helena Schorling Albuquerque, 856, Aeroporto, Vitória - ES, 29075-685",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.98}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,98 km do terminal."],cons:["Nota 2,4 no Google, com 61 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Vitória Airport?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Vitória Airport?",a:"O endereço é Av. Roza Helena Schorling Albuquerque, 856, Aeroporto, Vitória - ES, 29075-685. Fica a 0,98 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://vitoria-airport.com.br/estacionamento."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=2366876312388787113",officialUrl:"https://vitoria-airport.com.br/estacionamento"},{slug:"braspark",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Braspark Vitória",address:{street:"Av. Raul Oliveira Neves",number:"266",district:"Jardim Camburi",city:"Vitória",state:"ES",postalCode:"29092-220",country:"BR",formatted:"Av. Raul Oliveira Neves, 266, Jardim Camburi, Vitória - ES, 29092-220"},geo:{lat:-20.249361,lng:-40.270516},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Raul%20Oliveira%20Neves%2C%20266%2C%20Jardim%20Camburi%2C%20Vit%C3%B3ria%20-%20ES%2C%2029092-220",mapEmbedQuery:"Av. Raul Oliveira Neves, 266, Jardim Camburi, Vitória - ES, 29092-220",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.92}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,92 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Braspark Vitória?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Braspark Vitória?",a:"O endereço é Av. Raul Oliveira Neves, 266, Jardim Camburi, Vitória - ES, 29092-220. Fica a 1,92 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: http://www.braspark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJSYA0v30ZuAAReq2E-gC3NJQ",officialUrl:"http://www.braspark.com.br/"},{slug:"estapar",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Estapar",address:{street:"Rod. BR-101 Norte",district:"Carapina",city:"Serra",state:"ES",postalCode:"29176-798",country:"BR",formatted:"Rod. BR-101 Norte, Carapina, Serra - ES, 29176-798"},geo:{lat:-20.237858199999998,lng:-40.278655799999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rod.%20BR-101%20Norte%2C%20Carapina%2C%20Serra%20-%20ES%2C%2029176-798",mapEmbedQuery:"Rod. BR-101 Norte, Carapina, Serra - ES, 29176-798",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:2.38}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Nota 3,5 no Google, com 1.165 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estapar?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estapar?",a:"O endereço é Rod. BR-101 Norte, Carapina, Serra - ES, 29176-798. Fica a 2,38 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=5926418807643484399",officialUrl:"https://www.estapar.com.br/"},{slug:"athena-park",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Athena Park",address:{street:"Av. Des. Dermeval Lyrio",number:"75",district:"Mata da Praia",city:"Vitória",state:"ES",postalCode:"29065-340",country:"BR",formatted:"Av. Des. Dermeval Lyrio, 75, Mata da Praia, Vitória - ES, 29065-340"},geo:{lat:-20.2939008,lng:-40.3041014},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Des.%20Dermeval%20Lyrio%2C%2075%2C%20Mata%20da%20Praia%2C%20Vit%C3%B3ria%20-%20ES%2C%2029065-340",mapEmbedQuery:"Av. Des. Dermeval Lyrio, 75, Mata da Praia, Vitória - ES, 29065-340",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:4.37}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Athena Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Athena Park?",a:"O endereço é Av. Des. Dermeval Lyrio, 75, Mata da Praia, Vitória - ES, 29065-340. Fica a 4,37 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: http://athenapark.com/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=9502195111508625712",officialUrl:"http://athenapark.com/"},{slug:"vcm-park",hubSlug:"estacionamento-aeroporto-campo-grande",iata:"CGR",name:"VCM Park",address:{street:"Rua dos CaiabÃs",number:"323",city:"Campo Grande",state:"MS",country:"BR",formatted:"Rua dos CaiabÃs, 323, Campo Grande - MS"},geo:{lat:-20.455872,lng:-54.667953},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20dos%20Caiab%C3%ADs%2C%20323%2C%20Campo%20Grande%20-%20MS",mapEmbedQuery:"Rua dos CaiabÃs, 323, Campo Grande - MS",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.5}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,5 km do terminal.","Nota 4,7 no Google, com 109 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no VCM Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o VCM Park?",a:"O endereço é Rua dos CaiabÃs, 323, Campo Grande - MS. Fica a 1,5 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://vcmpark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJARLtwx3nhpQRwyWmLmFZAqI",officialUrl:"https://vcmpark.com.br/"},{slug:"cgr-park",hubSlug:"estacionamento-aeroporto-campo-grande",iata:"CGR",name:"CGR Park",address:{street:"Av. Duque de Caxias",number:"4198",district:"Jardim Ima",city:"Campo Grande",state:"MS",postalCode:"79102-270",country:"BR",formatted:"Av. Duque de Caxias, 4198, Jardim Ima, Campo Grande - MS, 79102-270"},geo:{lat:-20.4560085,lng:-54.666810999999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Duque%20de%20Caxias%2C%204198%2C%20Jardim%20Ima%2C%20Campo%20Grande%20-%20MS%2C%2079102-270",mapEmbedQuery:"Av. Duque de Caxias, 4198, Jardim Ima, Campo Grande - MS, 79102-270",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!1,terminals:[{code:"Terminal",distanceKm:1.53}],priceRows:[{label:"Diária",perDay:29,total:29}],priceCollectedAt:"20 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 20 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 1,53 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no CGR Park?",a:"Pelo levantamento de preços de terceiro (20 de setembro de 2026), a diária parte de R$ 29,00 (diária
454). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o CGR Park?",a:"O endereço é Av. Duque de Caxias, 4198, Jardim Ima, Campo Grande - MS, 79102-270. Fica a 1,53 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://cgrpark.com.br/home/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-20",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=7797216828669945673",officialUrl:"https://cgrpark.com.br/home/"},{slug:"smartpark",hubSlug:"estacionamento-aeroporto-teresina",iata:"THE",name:"Smartpark Teresina",address:{street:"Av. Centenário",number:"Praça Santos Dumont",district:"Aeroporto",city:"Teresina",state:"PI",postalCode:"64006-970",country:"BR",formatted:"Av. Centenário, Praça Santos Dumont, Aeroporto, Teresina - PI, 64006-970"},geo:{lat:-5.063312,lng:-42.820769},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Centen%C3%A1rio%2C%20Pra%C3%A7a%20Santos%20Dumont%2C%20Aeroporto%2C%20Teresina%20-%20PI%2C%2064006-970",mapEmbedQuery:"Av. Centenário, Praça Santos Dumont, Aeroporto, Teresina - PI, 64006-970",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.48}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,48 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Smartpark Teresina?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Smartpark Teresina?",a:"O endereço é Av. Centenário, Praça Santos Dumont, Aeroporto, Teresina - PI, 64006-970. Fica a 0,48 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://aeroportos.motiva.com.br/teresina-pi/o-aeroporto/como-chegar-e-sair/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJTZfiOu05jgcRdRD_5KnxmTg",officialUrl:"https://aeroportos.motiva.com.br/teresina-pi/o-aeroporto/como-chegar-e-sair/"},{slug:"bhpark",hubSlug:"estacionamento-aeroporto-santos-dumont",iata:"SDU",name:"BHPark",address:{street:"Aeroporto Santos Dumont",number:"110",district:"Centro",city:"Rio de Janeiro",state:"RJ",postalCode:"20021-340",country:"BR",formatted:"Aeroporto Santos Dumont, 110, Centro, Rio de Janeiro - RJ, 20021-340"},geo:{lat:-22.913705999999998,lng:-43.1674953},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Aeroporto%20Santos%20Dumont%2C%20110%2C%20Centro%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2020021-340",mapEmbedQuery:"Aeroporto Santos Dumont, 110, Centro, Rio de Janeiro - RJ, 20021-340",hours:"Horário não informado pela fonte",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.55}],priceRows:[{label:"Diária coberta (online) (a partir de)",perDay:29.9,total:29.9,note:"ref. agosto de 2026"},{label:"7 dias coberta",perDay:105,total:735,note:"balcão; ref. agosto de 2026"},{label:"7 dias coberta",perDay:29.9,total:209.3,note:"online; ref. agosto de 2026"},{label:"15 dias coberta",perDay:105,total:1575,note:"balcão; ref. agosto de 2026"},{label:"15 dias coberta",perDay:29.9,total:448.5,note:"online; ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,55 km do terminal."],cons:["Nota 2,9 no Google, com 140 avaliações (consulta de 20 de setembro de 2026)."],faq:[{q:"Quanto custa estacionar no BHPark?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 29,90 (diária coberta (online) (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o BHPark?",a:"O endereço é Aeroporto Santos Dumont, 110, Centro, Rio de Janeiro - RJ, 20021-340. Fica a 0,55 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=7433486149871208672"},{slug:"beira-mar-park",hubSlug:"estacionamento-aeroporto-santos-dumont",i
454ata:"SDU",name:"Beira Mar Park",address:{street:"Av. Beira Mar",number:"s/n",district:"Centro",city:"Rio de Janeiro",state:"RJ",postalCode:"20021-060",country:"BR",formatted:"Av. Beira Mar, s/n, Centro, Rio de Janeiro - RJ, 20021-060"},geo:{lat:-22.9127893,lng:-43.17348810000001},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Beira%20Mar%2C%20s%2Fn%2C%20Centro%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2020021-060",mapEmbedQuery:"Av. Beira Mar, s/n, Centro, Rio de Janeiro - RJ, 20021-060",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.07}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,07 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Beira Mar Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Beira Mar Park?",a:"O endereço é Av. Beira Mar, s/n, Centro, Rio de Janeiro - RJ, 20021-060. Fica a 1,07 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=10657580048310857660"},{slug:"peter-park",hubSlug:"estacionamento-aeroporto-galeao",iata:"GIG",name:"Peter Park Estacionamento",address:{street:"R. República Ãrabe da SÃria",number:"383",district:"Jardim Guanabara",city:"Rio de Janeiro",state:"RJ",postalCode:"21931-370",country:"BR",formatted:"R. República Ãrabe da SÃria, 383, Jardim Guanabara, Rio de Janeiro - RJ, 21931-370"},geo:{lat:-22.806002,lng:-43.209419},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Rep%C3%BAblica%20%C3%81rabe%20da%20S%C3%ADria%2C%20383%2C%20Jardim%20Guanabara%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2021931-370",mapEmbedQuery:"R. República Ãrabe da SÃria, 383, Jardim Guanabara, Rio de Janeiro - RJ, 21931-370",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.52}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Peter Park Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Peter Park Estacionamento?",a:"O endereço é R. República Ãrabe da SÃria, 383, Jardim Guanabara, Rio de Janeiro - RJ, 21931-370. Fica a 3,52 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJIwdEt6x5mQARPoTkrna0568"},{slug:"rl",hubSlug:"estacionamento-aeroporto-galeao",iata:"GIG",name:"Rl Estacionamentos",address:{street:"Estrada do Galeão",number:"2700",district:"Jardim Guanabara",city:"Rio de Janeiro",state:"RJ",postalCode:"21931-003",country:"BR",formatted:"Estrada do Galeão, 2700, Jardim Guanabara, Rio de Janeiro - RJ, 21931-003"},geo:{lat:-22.803916,lng:-43.207338},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Estrada%20do%20Gale%C3%A3o%2C%202700%2C%20Jardim%20Guanabara%2C%20Rio%20de%20Janeiro%20-%20RJ%2C%2021931-003",mapEmbedQuery:"Estrada do Galeão, 2700, Jardim Guanabara, Rio de Janeiro - RJ, 21931-003",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!0,terminals:[{code:"Terminal",distanceKm:3.76}],priceRows:[{label:"Diária descoberta",perDay:48,total:48,note:"ref. agosto de 2026"},{label:"Diária valet",perDay:48,total:48,note:"ref. 2025"},{label:"7 dias valet",perDay:48,total:336,note:"ref. agosto de 2026"},{label:"15 dias valet",perDay:48,total:720,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:[],cons:[],faq:[{q:"Quanto custa estacionar no Rl Estacionamentos?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 48,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Rl Estacionamentos?",a:"O endereço é Estrada do Galeão, 2700, Jardim Guanabara, Rio de Janeiro - RJ, 21931-003. Fica a 3,76 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJIR5ocyx4mQARfQ7jNUUFkis"},{slug:"connect-park",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Connect Park",address:{street:"Rua Arapoti",number:"123",district:"Cruzeiro",city:"São José dos Pinhais",state:"PR",postalCode:"83010-020",country:"BR",formatted:"Rua Arapoti, 123, Cruzeiro, São José dos Pinhais - PR, 83010-020"},geo:{lat:-25.535578,lng:-49.180807},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Arapoti%2C%20123%2C%20Cruzeiro%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR%2C%2083010-020",mapEmbedQuery:"Rua Arapoti, 123, Cruzeiro, São José dos Pinhais - PR, 83010-020",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.93}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,93 km do terminal.","Nota 5 no Google, com 962 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Connect Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Connect Park?",a:"O endereço é Rua Arapoti, 123, Cruzeiro, São José dos Pinhais - PR, 83010-020. Fica a 0,93 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJt3FTnsXx3JQR0MWQFUwu-DE"},{slug:"express-park",hubSlug:"estacionamento-aeroporto-curitiba",iata:"CWB",name:"Express Park Aeroporto",address:{street:"Av. Rocha Pombo",number:"3247",district:"Cruzeiro",city:"São José dos Pinhais",state:"PR",postalCode:"83010-620",country:"BR",formatted:"Av. Rocha Pombo, 3247, Cruzeiro, São José dos Pinhais - PR, 83010-620"},geo:{lat:-25.534887,lng:-49.184749},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20
454Rocha%20Pombo%2C%203247%2C%20Cruzeiro%2C%20S%C3%A3o%20Jos%C3%A9%20dos%20Pinhais%20-%20PR%2C%2083010-620",mapEmbedQuery:"Av. Rocha Pombo, 3247, Cruzeiro, São José dos Pinhais - PR, 83010-620",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.14}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,14 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Express Park Aeroporto?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Express Park Aeroporto?",a:"O endereço é Av. Rocha Pombo, 3247, Cruzeiro, São José dos Pinhais - PR, 83010-620. Fica a 1,14 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJh0iCpLPw3JQRALkQhNtGAzk"},{slug:"vs-park",hubSlug:"estacionamento-aeroporto-brasilia",iata:"BSB",name:"VS Park",address:{street:"SHCS EQS 414/415 BL A",district:"Asa Sul",city:"BrasÃlia",state:"DF",postalCode:"70297-400",country:"BR",formatted:"SHCS EQS 414/415 BL A, Asa Sul, BrasÃlia - DF, 70297-400"},geo:{lat:-15.835513100000002,lng:-47.9163249},mapsUrl:"https://www.google.com/maps/search/?api=1&query=SHCS%20EQS%20414%2F415%20BL%20A%2C%20Asa%20Sul%2C%20Bras%C3%ADlia%20-%20DF%2C%2070297-400",mapEmbedQuery:"SHCS EQS 414/415 BL A, Asa Sul, BrasÃlia - DF, 70297-400",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.81}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no VS Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o VS Park?",a:"O endereço é SHCS EQS 414/415 BL A, Asa Sul, BrasÃlia - DF, 70297-400. Fica a 3,81 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=5416037558767668075"},{slug:"df-park",hubSlug:"estacionamento-aeroporto-brasilia",iata:"BSB",name:"DF Park Estacionamento",address:{street:"SRTVS Qd. 701",number:"Bl. O, sala 520",district:"Asa Sul",city:"BrasÃlia",state:"DF",postalCode:"70340-000",country:"BR",formatted:"SRTVS Qd. 701, Bl. O, sala 520, Asa Sul, BrasÃlia - DF, 70340-000"},geo:{lat:-15.7982344,lng:-47.8930872},mapsUrl:"https://www.google.com/maps/search/?api=1&query=SRTVS%20Qd.%20701%2C%20Bl.%20O%2C%20sala%20520%2C%20Asa%20Sul%2C%20Bras%C3%ADlia%20-%20DF%2C%2070340-000",mapEmbedQuery:"SRTVS Qd. 701, Bl. O, sala 520, Asa Sul, BrasÃlia - DF, 70340-000",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:8.45}],priceRows:[{label:"Diária coberta",perDay:30,total:30,note:"ref. agosto de 2026"},{label:"Diária descoberta",perDay:20,total:20,note:"ref. agosto de 2026"},{label:"7 dias descoberta",perDay:20,total:140,note:"ref. agosto de 2026"},{label:"15 dias descoberta",perDay:20,total:300,note:"ref. agosto de 2026"},{label:"30 dias descoberta",perDay:20,total:600,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:[],cons:[],faq:[{q:"Quanto custa estacionar no DF Park Estacionamento?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 20,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o DF Park Estacionamento?",a:"O endereço é SRTVS Qd. 701, Bl. O, sala 520, Asa Sul, BrasÃlia - DF, 70340-000. Fica a 8,45 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"industrias-park",hubSlug:"estacionamento-aeroporto-porto-alegre",iata:"POA",name:"Indústrias Park",address:{street:"Av. das Indústrias",number:"1132",district:"Anchieta",city:"Porto Alegre",state:"RS",postalCode:"90200-290",country:"BR",formatted:"Av. das Indústrias, 1132, Anchieta, Porto Alegre - RS, 90200-290"},geo:{lat:-29.987175599999997,lng:-51.1678522},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20das%20Ind%C3%BAstrias%2C%201132%2C%20Anchieta%2C%20Porto%20Alegre%20-%20RS%2C%2090200-290",mapEmbedQuery:"Av. das Indústrias, 1132, Anchieta, Porto Alegre - RS, 90200-290",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.81}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,81 km do terminal.","Nota 4,5 no Google, com 158 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Indústrias Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Indústrias Park?",a:"O endereço é Av. das Indústrias, 1132, Anchieta, Porto Alegre - RS, 90200-290. Fica a 0,81 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3441668677808069735"},{slug:"aeropark-varzea-grande",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"Aeropark Várzea Grande",address:{street:"Av. João Ponce de Arruda",number:"1034",district:"Jardim Aeroporto",city:"Várzea Grande",state:"MT",postalCode:"78110-375",country:"BR",formatted:"Av. João Ponce de Arruda, 1034, Jardim Aeroporto, Várzea Grande - MT, 78110-375"},geo:{lat:-15.6507949,lng:-56.1221939},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jo%C3%A3o%20Ponce%20de%20Arruda%2C%201034%2C%20Jardim%20Aeroporto%2C%20V%C3%A1rzea%20Grande%20-%20MT%2C%2078110-375",mapEmbedQuery:"Av. João Ponce de Arruda, 1034, Jardim Aeroporto, Várzea Grande - MT, 78110-375",hours:"Horário não informado pela fonte",coverage:"descoberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.55}],priceRows:[{label:"Diária descoberta",perDay:35,total:35,note:"ref. agosto de 2026"},{label:"7 dias descoberta",perDay:35,total:245,note:"ref. agosto de 2026"},{label:"15 dias descoberta",perDay:35,total:525,note:"ref. agosto de 2026"},{label:"30 dias descoberta",perDay:35,total:1050,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,55 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Aeropark Várzea Grande?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 35,00 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Aeropark Várzea Grande?",a:"O endereço é Av. João Ponce de Arruda, 1034, Jardim Aeroporto, Várzea Grande - MT, 78110-375. Fica a 0,55 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.instagram.com/aeroparkvg/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=2028034895806315086"},{slug:"estacione-aki",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"Estacione Aki",address:{street:"Av. João Ponce de Arruda",number:"1015",city:"Várzea Grande",state:"MT",country:"BR",formatted:"Av. João Ponce de Arruda, 1015, Várzea Grande - MT"},geo:{lat:-15.650669,lng:-56.122249},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jo%C3%A3o%20Ponce%20de%20Arruda%2C%201015%2C%20V%C3%A1rzea%20Grande%20-%20MT",mapEmbedQuery:"Av. João Ponce de Arruda, 1015, Várzea Grande - MT",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.57}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,57 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacione Aki?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacione Aki?",a:"O endereço é Av. João Ponce de Arruda, 1015, Várzea Grande - MT. Fica a 0,57 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJld-Fe9ytnZMRoqvSLgpoJrQ"},{slug:"ebr",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"EBr Estacionamento",address:{street:"Av. João Ponce de Arruda",number:"1000",district:"Centro Norte",city:"Várzea Grande",state:"MT",country:"BR",formatted:"Av. João Ponce de Arruda, 1000, Centro Norte, Várzea Grande - MT"},geo:{lat:-15.650498,lng:-56.12251},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jo%C3%A3o%20Ponce%20de%20Arruda%2C%201000%2C%20Centro%20Norte%2C%20V%C3%A1rzea%20Grande%20-%20MT",mapEmbedQuery:"Av. João Ponce de Arruda, 1000, Centro Norte, Várzea Grande - MT",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.6}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,6 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no EBr Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o EBr Estacionamento?",a:"O endereço é Av. João Ponce de Arruda, 1000, Centro Norte, Várzea Grande - MT. Fica a 0,6 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJJ4OUfNytnZMRkbg-oMwpwkE"},{slug:"gj-park",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"GJ Park",address:{street:"Av. João Ponce de Arruda",number:"s/n",city:"Jangada",state:"MT",postalCode:"78110-000",country:"BR",formatted:"Av. João Ponce de Arruda, s/n, Jangada - MT, 78110-000"},geo:{lat:-15.650281999999999,lng:-56.1225418},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jo%C3%A3o%20Ponce%20de%20Arruda%2C%20s%2Fn%2C%20Jangada%20-%20MT%2C%2078110-000",mapEmbedQuery:"Av. João Ponce de Arruda, s/n, Jangada - MT, 78110-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.61}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,61 km do terminal."],cons:["Nota 3,7 no Google, com 67 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no GJ Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o GJ Park?",a:"O endereço é Av. João Ponce de Arruda, s/n, Jangada - MT, 78110-000. Fica a 0,61 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=15310251960566319527"},{slug:"aviacao-park",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"Aviação Park",address:{street:"Av. João Ponce de Arruda",number:"900",district:"Centro Norte",city:"Várzea Grande",state:"MT",country:"BR",formatted:"Av. João Ponce de Arruda, 900, Centro Norte, Várzea Grande - MT"},geo:{lat:-15.64965,lng:-56.12278},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jo%C3%A3o%20Ponce%20de%20Arruda%2C%20900%2C%20Centro%20Norte%2C%20V%C3%A1rzea%20Grande%20-%20MT",mapEmbedQuery:"Av. João Ponce de Arruda, 900, Centro Norte, Várzea Grande - MT",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.67}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,67 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Aviação Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Aviação Park?",a:"O endereço é Av. João Ponce de Arruda, 900, Centro Norte, Várzea Grande - MT. Fica a 0,67 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJh8KvSgCtnZMRf3AdHGxrlbE"},{slug:"estet-car",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"Estet C
454ar",address:{street:"Av. João Ponce de Arruda",number:"900",district:"Jardim Aeroporto",city:"Várzea Grande",state:"MT",country:"BR",formatted:"Av. João Ponce de Arruda, 900, Jardim Aeroporto, Várzea Grande - MT"},geo:{lat:-15.649714,lng:-56.122792},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jo%C3%A3o%20Ponce%20de%20Arruda%2C%20900%2C%20Jardim%20Aeroporto%2C%20V%C3%A1rzea%20Grande%20-%20MT",mapEmbedQuery:"Av. João Ponce de Arruda, 900, Jardim Aeroporto, Várzea Grande - MT",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.67}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,67 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estet Car?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estet Car?",a:"O endereço é Av. João Ponce de Arruda, 900, Jardim Aeroporto, Várzea Grande - MT. Fica a 0,67 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJzb4Uj9utnZMRzzGzgHqxSMw"},{slug:"jr",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"Jr Estacionamento",address:{street:"Rua GravataÃ",number:"100",district:"Centro Sul",city:"Várzea Grande",state:"MT",country:"BR",formatted:"Rua GravataÃ, 100, Centro Sul, Várzea Grande - MT"},geo:{lat:-15.652453,lng:-56.123828},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Gravata%C3%AD%2C%20100%2C%20Centro%20Sul%2C%20V%C3%A1rzea%20Grande%20-%20MT",mapEmbedQuery:"Rua GravataÃ, 100, Centro Sul, Várzea Grande - MT",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.68}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,68 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Jr Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Jr Estacionamento?",a:"O endereço é Rua GravataÃ, 100, Centro Sul, Várzea Grande - MT. Fica a 0,68 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJzRiDuhWtnZMRIcjdmpnthis"},{slug:"vision-park",hubSlug:"estacionamento-aeroporto-cuiaba",iata:"CGB",name:"Vision Park",address:{street:"Rua Holanda",number:"47",district:"Santa Rosa",city:"Cuiabá",state:"MT",postalCode:"78040-225",country:"BR",formatted:"Rua Holanda, 47, Santa Rosa, Cuiabá - MT, 78040-225"},geo:{lat:-15.5861947,lng:-56.1191616},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Holanda%2C%2047%2C%20Santa%20Rosa%2C%20Cuiab%C3%A1%20-%20MT%2C%2078040-225",mapEmbedQuery:"Rua Holanda, 47, Santa Rosa, Cuiabá - MT, 78040-225",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:7.38}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Vision Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Vision Park?",a:"O endereço é Rua Holanda, 47, Santa Rosa, Cuiabá - MT, 78040-225. Fica a 7,38 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"royal-park",hubSlug:"estacionamento-aeroporto-londrina",iata:"LDB",name:"Royal Park",address:{street:"R. Mato Grosso",number:"407",district:"Centro",city:"Londrina",state:"PR",postalCode:"86010-180",country:"BR",formatted:"R. Mato Grosso, 407, Centro, Londrina - PR, 86010-180"},geo:{lat:-23.3122971,lng:-51.1563498},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Mato%20Grosso%2C%20407%2C%20Centro%2C%20Londrina%20-%20PR%2C%2086010-180",mapEmbedQuery:"R. Mato Grosso, 407, Centro, Londrina - PR, 86010-180",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:2.83}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Royal Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Royal Park?",a:"O endereço é R. Mato Grosso, 407, Centro, Londrina - PR, 86010-180. Fica a 2,83 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.instagram.com/royal.park.londrina/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=11510690690370598438"},{slug:"leste-oeste",hubSlug:"estacionamento-aeroporto-londrina",iata:"LDB",name:"Leste Oeste",address:{street:"Av. Arcebispo Dom Geraldo Fernandes",number:"1170",district:"Centro",city:"Londrina",state:"PR",postalCode:"86026-720",country:"BR",formatted:"Av. Arcebispo Dom Geraldo Fernandes, 1170, Centro, Londrina - PR, 86026-720"},geo:{lat:-23.3074935,lng:-51.159587699999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Arcebispo%20Dom%20Geraldo%20Fernandes%2C%201170%2C%20Centro%2C%20Londrina%20-%20PR%2C%2086026-720",mapEmbedQuery:"Av. Arcebispo Dom Geraldo Fernandes, 1170, Centro, Londrina - PR, 86026-720",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.44}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Nota 4,8 no Google, com 156 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Leste Oeste?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Leste Oeste?",a:"O endereço é Av. Arcebispo Dom Geraldo Fernandes, 1170, Centro, Londrina - PR, 86026-720. Fica a 3,44 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.instagram.com/estacionamentoleste/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=2545232873640540845"},{slug:"central-park",hubSlug:"estacionamento-aeroporto-londrina",iata:"LDB",name:"Central Park",address:{street:"R. Pernambuco",number:"143",district:"Centro",city:"Londrina",state:"PR",postalCode:"86020-120",country:"BR",formatted:"R. Pernambuco, 143, Centro, Londrina - PR, 86020-120"},geo:{lat:-23.3093282,lng:-51.1626866},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Pernambuco%2C%20143%2C%20Centro%2C%20Londrina%20-%20PR%2C%2086020-120",mapEmbedQuery:"R. Pernambuco, 143, Centro, Londrina - PR, 86020-120",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.53}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Central Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Central Park?",a:"O endereço é R. Pernambuco, 143, Centro, Londrina - PR, 86020-120. Fica a 3,53 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3189527770726065101"},{slug:"talentos-park",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"Talentos Park",address:{street:"R. Projetada",number:"169",district:"Boa Viagem",city:"Recife",state:"PE",postalCode:"51150-650",country:"BR",formatted:"R. Projetada, 169, Boa Viagem, Recife - PE, 51150-650"},geo:{lat:-8.1309368,lng:-34.9156297},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Projetada%2C%20169%2C%20Boa%20Viagem%2C%20Recife%20-%20PE%2C%2051150-650",mapEmbedQuery:"R. Projetada, 169, Boa Viagem, Recife - PE, 51150-650",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.01}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,01 km do terminal.","Nota 5 no Google, com 281 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Talentos Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Talentos Park?",a:"O endereço é R. Projetada, 169, Boa Viagem, Recife - PE, 51150-650. Fica a 1,01 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJyRH1jmMfqwcRV4eeOvGS0j8"},{slug:"foco-park",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"Foco Park Estacionamento",address:{street:"Av. Mal. Mascarenhas de Morais",number:"6133",district:"Imbiribeira",city:"Recife",state:"PE",postalCode:"51210-902",country:"BR",formatted:"Av. Mal. Mascarenhas de Morais, 6133, Imbiribeira, Recife - PE, 51210-902"},geo:{lat:-8.13732,lng:-34.916778},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Mal.%20Mascarenhas%20de%20Morais%2C%206133%2C%20Imbiribeira%2C%20Recife%20-%20PE%2C%2051210-902",mapEmbedQuery:"Av. Mal. Mascarenhas de Morais, 6133, Imbiribeira, Recife - PE, 51210-902",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.42}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,42 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Foco Park Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Foco Park Estacionamento?",a:"O endereço é Av. Mal. Mascarenhas de Morais, 6133, Imbiribeira, Recife - PE, 51210-902. Fica a 1,42 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJUSmm7y8eqwcRK6m-n1ov1lo"},{slug:"all-park",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"All Park Estacionamentos",address:{street:"R. Ribeiro de Brito",number:"1250",district:"Boa Viagem",city:"Recife",state:"PE",postalCode:"51021-110",country:"BR",formatted:"R. Ribeiro de Brito, 1250, Boa Viagem, Recife - PE, 51021-110"},geo:{lat:-8.123484,lng:-34.907946},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Ribeiro%20de%20Brito%2C%201250%2C%20Boa%20Viagem%2C%20Recife%20-%20PE%2C%2051021-110",mapEmbedQuery:"R. Ribeiro de Brito, 1250, Boa Viagem, Recife - PE, 51021-110",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.76}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,76 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no All Park Estacionamentos?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o All Park Estacionamentos?",a:"O endereço é R. Ribeiro de Brito, 1250, Boa Viagem, Recife - PE, 51021-110. Fica a 1,76 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJbaSHokweqwcRuSuVGxogy3Y"},{slug:"carcara",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"Estacionamento Carcará",address:{street:"R. Gen. Americano Freire",number:"S/N",district:"Boa Viagem",city:"Recife",state:"PE",postalCode:"51021-120",country:"BR",formatted:"R. Gen. Americano Freire, S/N, Boa Viagem, Recife - PE, 51021-120"},geo:{lat:-8.122392,lng:-34.906468},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Gen.%20Americano%20Freire%2C%20S%2FN%2C%20Boa%20Viagem%2C%20Recife%20-%20PE%2C%2051021-120",mapEmbedQuery:"R. Gen. Americano Freire, S/N, Boa Viagem, Recife - PE, 51021-120",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.94}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,94 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Carcará?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Carcará?",a:"O endereço é R. Gen. Americano Freire, S/N, Boa Viagem, Recife - PE, 51021-120. Fica a 1,94 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJqcPfNLMfqwcRWs3R40QSVD0"},{slug:"auto-park",hubSlug:"estacionamento-aeroporto-recife",iata:"REC",name:"Auto Park",address:{street:"R. Prof. AloÃsio Pessoa de Araújo",number:"75",district:"Boa Viagem",city:"Recife",state:"PE",postalCode:"51021-410",country:"BR",formatted:"R. Prof. AloÃsio Pessoa de Araújo, 75, Boa Viagem, Recife - PE, 51021-410"}
454,geo:{lat:-8.1291102,lng:-34.901309999999995},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Prof.%20Alo%C3%ADsio%20Pessoa%20de%20Ara%C3%BAjo%2C%2075%2C%20Boa%20Viagem%2C%20Recife%20-%20PE%2C%2051021-410",mapEmbedQuery:"R. Prof. AloÃsio Pessoa de Araújo, 75, Boa Viagem, Recife - PE, 51021-410",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:2.47}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Auto Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Auto Park?",a:"O endereço é R. Prof. AloÃsio Pessoa de Araújo, 75, Boa Viagem, Recife - PE, 51021-410. Fica a 2,47 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=929625967296548968"},{slug:"zunino",hubSlug:"estacionamento-aeroporto-navegantes",iata:"NVT",name:"Zunino",address:{street:"Centro",district:"R. Alice Hostim, 74 - São Domingos",city:"Navegantes",state:"SC",postalCode:"88375-000",country:"BR",formatted:"Centro, R. Alice Hostim, 74 - São Domingos, Navegantes - SC, 88375-000"},geo:{lat:-26.8819457,lng:-48.6503875},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Centro%2C%20R.%20Alice%20Hostim%2C%2074%20-%20S%C3%A3o%20Domingos%2C%20Navegantes%20-%20SC%2C%2088375-000",mapEmbedQuery:"Centro, R. Alice Hostim, 74 - São Domingos, Navegantes - SC, 88375-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.24}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,24 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Zunino?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Zunino?",a:"O endereço é Centro, R. Alice Hostim, 74 - São Domingos, Navegantes - SC, 88375-000. Fica a 0,24 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3223596881801323029"},{slug:"econo-park",hubSlug:"estacionamento-aeroporto-navegantes",iata:"NVT",name:"Econo Park",address:{street:"R. Ver. Osmar Inacio da Silva",number:"471",district:"Centro",city:"Navegantes",state:"SC",postalCode:"88370-240",country:"BR",formatted:"R. Ver. Osmar Inacio da Silva, 471, Centro, Navegantes - SC, 88370-240"},geo:{lat:-26.8828186,lng:-48.6500475},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Ver.%20Osmar%20Inacio%20da%20Silva%2C%20471%2C%20Centro%2C%20Navegantes%20-%20SC%2C%2088370-240",mapEmbedQuery:"R. Ver. Osmar Inacio da Silva, 471, Centro, Navegantes - SC, 88370-240",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.34}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,34 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Econo Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Econo Park?",a:"O endereço é R. Ver. Osmar Inacio da Silva, 471, Centro, Navegantes - SC, 88370-240. Fica a 0,34 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=6816703050208196530"},{slug:"litoral",hubSlug:"estacionamento-aeroporto-navegantes",iata:"NVT",name:"Litoral",address:{street:"R. Ver. Nereu Liberato Nunes",number:"1511",district:"Centro",city:"Navegantes",state:"SC",postalCode:"88370-232",country:"BR",formatted:"R. Ver. Nereu Liberato Nunes, 1511, Centro, Navegantes - SC, 88370-232"},geo:{lat:-26.8831511,lng:-48.6513377},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Ver.%20Nereu%2
4540Liberato%20Nunes%2C%201511%2C%20Centro%2C%20Navegantes%20-%20SC%2C%2088370-232",mapEmbedQuery:"R. Ver. Nereu Liberato Nunes, 1511, Centro, Navegantes - SC, 88370-232",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.35}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,35 km do terminal.","Nota 4,5 no Google, com 72 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Litoral?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Litoral?",a:"O endereço é R. Ver. Nereu Liberato Nunes, 1511, Centro, Navegantes - SC, 88370-232. Fica a 0,35 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3406666802391682463"},{slug:"park-sul",hubSlug:"estacionamento-aeroporto-navegantes",iata:"NVT",name:"Park Sul",address:{street:"R. Osmar Gaya",number:"765",district:"Meia Praia",city:"Navegantes",state:"SC",postalCode:"88370-208",country:"BR",formatted:"R. Osmar Gaya, 765, Meia Praia, Navegantes - SC, 88370-208"},geo:{lat:-26.880412099999997,lng:-48.6479508},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Osmar%20Gaya%2C%20765%2C%20Meia%20Praia%2C%20Navegantes%20-%20SC%2C%2088370-208",mapEmbedQuery:"R. Osmar Gaya, 765, Meia Praia, Navegantes - SC, 88370-208",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.35}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,35 km do terminal."],cons:["Nota 3,5 no Google, com 68 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Park Sul?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Park Sul?",a:"O endereço é R. Osmar Gaya, 765, Meia Praia, Navegantes - SC, 88370-208. Fica a 0,35 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=8728174653131139468"},{slug:"atacadao",hubSlug:"estacionamento-aeroporto-fortaleza",iata:"FOR",name:"Estacionamento Atacadão",address:{street:"Av. Senador Carlos Jereissati",number:"3001",district:"Serrinha",city:"Fortaleza",state:"CE",country:"BR",formatted:"Av. Senador Carlos Jereissati, 3001, Serrinha, Fortaleza - CE"},geo:{lat:-3.781692,lng:-38.540408},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Senador%20Carlos%20Jereissati%2C%203001%2C%20Serrinha%2C%20Fortaleza%20-%20CE",mapEmbedQuery:"Av. Senador Carlos Jereissati, 3001, Serrinha, Fortaleza - CE",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.05}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,05 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Atacadão?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Atacadão?",a:"O endereço é Av. Senador Carlos Jereissati, 3001, Serrinha, Fortaleza - CE. Fica a 1,05 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJZbrxbQBPxwcR7yfkygx5gAo"},{slug:"prime",hubSlug:"estacionamento-aeroporto-fortaleza",iata:"FOR",name:"Estacionamento Prime",address:{street:"R. Alberto Montezuma",number:"276",district:"Vila União",city:"Fortaleza",state:"CE",country:"BR",formatted:"R. Alberto Montezuma, 276, Vila União, Fortaleza - CE"},geo:{lat:-3.762363,lng:-38.532162},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Alberto%20Montezuma%2C%20276%2C%20Vila%20Uni%C3%A3o%2C%20Fortaleza%20-%20CE",mapEmbedQuery:"R. Alberto Montezuma, 276, Vila União, Fortaleza - CE",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.54}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,54 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Prime?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Prime?",a:"O endereço é R. Alberto Montezuma, 276, Vila União, Fortaleza - CE. Fica a 1,54 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJHR70VClJxwcRhTwLzuyFCDE"},{slug:"level-one",hubSlug:"estacionamento-aeroporto-fortaleza",iata:"FOR",name:"Level One",address:{street:"R. João Facundo Lopes",number:"68",district:"Dias Macêdo",city:"Fortaleza",state:"CE",postalCode:"60860-070",country:"BR",formatted:"R. João Facundo Lopes, 68, Dias Macêdo, Fortaleza - CE, 60860-070"},geo:{lat:-3.782969,lng:-38.517173199999995},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Jo%C3%A3o%20Facundo%20Lopes%2C%2068%2C%20Dias%20Mac%C3%AAdo%2C%20Fortaleza%20-%20CE%2C%2060860-070",mapEmbedQuery:"R. João Facundo Lopes, 68, Dias Macêdo, Fortaleza - CE, 60860-070",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.87}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,87 km do terminal.","Nota 4,9 no Google, com 124 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Level One?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Level One?",a:"O endereço é R. João Facundo Lopes, 68, Dias Macêdo, Fortaleza - CE, 60860-070. Fica a 1,87 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3849066966618841752"},{slug:"garagem-floripa",hubSlug:"estacionamento-aeroporto-florianopolis",iata:"FLN",name:"Garagem Floripa",address:{street:"R. Antônio Domingos de Souza",number:"30",district:"Carianos",city:"Florianópolis",state:"SC",postalCode:"88047-585",country:"BR",formatted:"R. Antônio Domingos de Souza, 30, Carianos, Florianópolis - SC, 88047-585"},geo:{lat:-27.663252699999997,lng:-48.54354740000001},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Ant%C3%B4nio%20Domingos%20de%20Souza%2C%2030%2C%20Carianos%2C%20Florian%C3%B3polis%20-%20SC%2C%2088047-585",mapEmbedQuery:"R. Antônio Domingos de Souza, 30, Carianos, Florianópolis - SC, 88047-585",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.9}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,9 km do terminal.","Nota 4,8 no Google, com 87 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Garagem Floripa?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Garagem Floripa?",a:"O endereço é R. Antônio Domingos de Souza, 30, Carianos, Florianópolis - SC, 88047-585. Fica a 0,9 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=16317314248182594342"},{slug:"atalaia",hubSlug:"estacionamento-aeroporto-goiania",iata:"GYN",name:"Atalaia",address:{street:"R. Belo Horizonte",number:"Quadra 31",district:"Lote 10 - Jardim Guanabara",city:"Goiânia",state:"GO",postalCode:"74675-080",country:"BR",formatted:"R. Belo Horizonte, Quadra 31, Lote 10 - Jardim Guanabara, Goiânia - GO, 74675-080"},geo:{lat:-16.6239331,lng:-49.2199327},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Belo%20Horizonte%2C%20Quadra%2031%2C%20Lote%2010%20-%20Jardim%20Guanabara%2C%20Goi%C3%A2nia%20-%20GO%2C%2074675-080",mapEmbedQuery:"R. Belo Horizonte, Quadra 31, Lote 10 - Jardim Guanabara, Goiânia - GO, 74675-080",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.9}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,9 km do terminal.","Nota 5 no Google, com 381 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Atalaia?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Atalaia?",a:"O endereço é R. Belo Horizonte, Quadra 31, Lote 10 - Jardim Guanabara, Goiânia - GO, 74675-080. Fica a 0,9 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=11192011507726038668"},{slug:"market-park",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Market Park Estacionamento",address:{street:"Av. Adalberto Simão Nader",number:"605",district:"República",city:"Vitória",state:"ES",postalCode:"29066-370",country:"BR",formatted:"Av. Adalberto Simão Nader, 605, República, Vitória - ES, 29066-370"},geo:{lat:-20.2707365,lng:-40.2888755},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Adalberto%20Sim%C3%A3o%20Nader%2C%20605%2C%20Rep%C3%BAblica%2C%20Vit%C3%B3ria%20-%20ES%2C%2029066-370",mapEmbedQuery:"Av. Adalberto Simão Nader, 605, República, Vitória - ES, 29066-370",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.42}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,42 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Market Park Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Market Park Estacionamento?",a:"O endereço é Av. Adalberto Simão Nader, 605, República, Vitória - ES, 29066-370. Fica a 1,42 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"day-by-day",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Park | Day by Day",address:{street:"Estacionamento",number:"Day by Day",district:"R. Victorino Cardoso, N°235 - Jardim Camburi",city:"Vitória",state:"ES",postalCode:"29090-820",country:"BR",formatted:"Estacionamento, Day by Day, R. Victorino Cardoso, N°235 - Jardim Camburi, Vitória - ES, 29090-820"},geo:{lat:-20.2519452,lng:-40.270035},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Estacionamento%2C%20Day%20by%20Day%2C%20R.%2
4540Victorino%20Cardoso%2C%20N%C2%B0235%20-%20Jardim%20Camburi%2C%20Vit%C3%B3ria%20-%20ES%2C%2029090-820",mapEmbedQuery:"Estacionamento, Day by Day, R. Victorino Cardoso, N°235 - Jardim Camburi, Vitória - ES, 29090-820",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.84}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,84 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Park | Day by Day?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Park | Day by Day?",a:"O endereço é Estacionamento, Day by Day, R. Victorino Cardoso, N°235 - Jardim Camburi, Vitória - ES, 29090-820. Fica a 1,84 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"perim",hubSlug:"estacionamento-aeroporto-vitoria",iata:"VIX",name:"Perim",address:{street:"Mata da Praia",city:"Vitória",state:"ES",postalCode:"29062-585",country:"BR",formatted:"Mata da Praia, Vitória - ES, 29062-585"},geo:{lat:-20.273874,lng:-40.2941985},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Mata%20da%20Praia%2C%20Vit%C3%B3ria%20-%20ES%2C%2029062-585",mapEmbedQuery:"Mata da Praia, Vitória - ES, 29062-585",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.93}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,93 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Perim?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Perim?",a:"O endereço é Mata da Praia, Vitória - ES, 29062-585. Fica a 1,93 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=5413854271696734999"},{slug:"duque",hubSlug:"estacionamento-aeroporto-campo-grande",iata:"CGR",name:"Duque",address:{street:"Rua Ceasa",number:"70",district:"Santo Antonio",city:"Campo Grande",state:"MS",postalCode:"79102-270",country:"BR",formatted:"Rua Ceasa, 70, Santo Antonio, Campo Grande - MS, 79102-270"},geo:{lat:-20.4566595,lng:-54.6657096},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Ceasa%2
454C%2070%2C%20Santo%20Antonio%2C%20Campo%20Grande%20-%20MS%2C%2079102-270",mapEmbedQuery:"Rua Ceasa, 70, Santo Antonio, Campo Grande - MS, 79102-270",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.51}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,51 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Duque?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Duque?",a:"O endereço é Rua Ceasa, 70, Santo Antonio, Campo Grande - MS, 79102-270. Fica a 1,51 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.instagram.com/duque.estacionamento/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=15923762993870513860"},{slug:"titos",hubSlug:"estacionamento-aeroporto-campo-grande",iata:"CGR",name:"Titos",address:{street:"R. dos GuaranÃs",number:"96",district:"Jardim Petropolis",city:"Campo Grande",state:"MS",postalCode:"79102-070",country:"BR",formatted:"R. dos GuaranÃs, 96, Jardim Petropolis, Campo Grande - MS, 79102-070"},geo:{lat:-20.4549505,lng:-54.6673927},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20dos%20Guaran%C3%ADs%2C%2096%2C%20Jardim%20Petropolis%2C%20Campo%20Grande%20-%20MS%2C%2079102-070",mapEmbedQuery:"R. dos GuaranÃs, 96, Jardim Petropolis, Campo Grande - MS, 79102-070",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.61}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,61 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Titos?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Titos?",a:"O endereço é R. dos GuaranÃs, 96, Jardim Petropolis, Campo Grande - MS, 79102-070. Fica a 1,61 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=5650789040905175150"},{slug:"forno-brasa",hubSlug:"estacionamento-aeroporto-teresina",iata:"THE",name:"Estacionamento Forno & Brasa",address:{street:"Av. Centenário",number:"2536",district:"Aeroporto",city:"Teresina",state:"PI",postalCode:"64006-700",country:"BR",formatted:"Av. Centenário, 2536, Aeroporto, Teresina - PI, 64006-700"},geo:{lat:-5.058242,lng:-42.821935},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Centen%C3%A1rio%2C%202536%2C%20Aeroporto%2C%20Teresina%20-%20PI%2C%2064006-700",mapEmbedQuery:"Av. Centenário, 2536, Aeroporto, Teresina - PI, 64006-700",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.26}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,26 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Forno & Brasa?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Forno & Brasa?",a:"O endereço é Av. Centenário, 2536, Aeroporto, Teresina - PI, 64006-700. Fica a 0,26 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.instagram.com/fornoebrasachurrascaria/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJ62pWtQE5jgcREJBZtFDzDpg"}],CY=90;function PY(e,t=new Date){const a=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!a)return 0;const o=Date.UTC(+a[1],+a[2]-1,+a[3]),r=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate());return Math.floor((r-o)/864e5)}function nl(e,t=new Date){return e.bookable?!1:PY(e.dataColeta,t)>CY}const E6="Preço não conferido recentemente, consulte a operadora.",SY=[{slug:"decolar-park",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Decolar Park Estacionamento",address:{street:"Av. Natália Zarif",number:"2915",district:"Jardim São Geraldo",city:"Guarulhos",state:"SP",postalCode:"07140-040",country:"BR",formatted:"Av. Natália Zarif, 2915, Jardim São Geraldo, Guarulhos - SP, 07140-040"},geo:{lat:-23.435566,lng:-46.495811},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Nat%C3%A1li
454a%20Zarif%2C%202915%2C%20Jardim%20S%C3%A3o%20Geraldo%2C%20Guarulhos%20-%20SP%2C%2007140-040",mapEmbedQuery:"Av. Natália Zarif, 2915, Jardim São Geraldo, Guarulhos - SP, 07140-040",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Vans a cada 20 minutos",included:!0,note:"Traslado grátis 24h"},terminals:[{code:"T1",distanceKm:1.57}],priceRows:[{label:"Descoberta: diária de 24h (1 a 18 diárias)",perDay:20.9,total:20.9},{label:"Descoberta: de 18 diárias até 30 dias (720 horas)",perDay:null,total:376.2,note:"total fixo"},{label:"Coberta: diária de 24h (1 a 17 diárias)",perDay:28.9,total:28.9},{label:"Coberta: de 17 diárias até 30 dias (720 horas)",perDay:null,total:491.3,note:"total fixo"}],totalForDays:e=>Math.round(Math.min(e,18)*20.9*100)/100,undisclosedFrom:{minDays:31,reason:"A tabela da operadora termina em 30 dias (720 horas)."},priceCollectedAt:"28 de setembro de 2026",priceNote:"Totais da linha principal: vaga descoberta. Pagamento na saÃda.",pros:["Fica a 1,57 km do Terminal 1.","Traslado grátis 24h, com vans a cada 20 minutos.","Total congela no 18º dia (descoberta) e vale até 720 horas."],cons:["Nota 3,9 no Google, com 2.513 avaliações (consulta de 20 de setembro de 2026).","Acima de 30 dias a tabela não publica valor."],faq:[{q:"Quanto custa estacionar no Decolar Park Estacionamento?",a:"Pela tabela oficial conferida em 28/09/2026, a vaga descoberta custa R$ 20,90 por diária de 24 horas até 18 diárias (R$ 376,20) e fica em R$ 376,20 fixo até 30 dias. A coberta custa R$ 28,90 por diária até 17 diárias e R$ 491,30 fixo até 30 dias."},{q:"Onde fica o Decolar Park Estacionamento?",a:"O endereço é Av. Natália Zarif, 2915, Jardim São Geraldo, Guarulhos - SP, 07140-040. Fica a 1,57 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.decolarpark.com.br/."}],fonteCitacao:"tabela oficial da operadora em https://www.decolarpark.com.br/, conferida em 28/09/2026",dataColeta:"2026-09-28",reservationUrl:"",bookable:!1,officialUrl:"https://www.decolarpark.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJUSHyXeiKzpQRCa2O4xFKEhE"},{slug:"flypark",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"FlyPark",address:{street:"R. Pedro de Toledo",number:"917",district:"Jardim São Geraldo",city:"Guarulhos",state:"SP",country:"BR",formatted:"R. Pedro de Toledo, 917, Jardim São Geraldo, Guarulhos - SP"},geo:{lat:-23.437494,lng:-46.497083},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Pedro%20de%20Toledo%2C%20917%2C%20Jardim%20S%C3%A3o%20Geraldo%2C%20Guarulhos%20-%20SP",mapEmbedQuery:"R. Pedro de Toledo, 917, Jardim São Geraldo, Guarulhos - SP",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"T1",distanceKm:1.74}],priceRows:[{label:"Diária coberta",perDay:28,total:28,note:"ref. agosto de 2026"},{label:"Diária descoberta",perDay:21.6,total:21.6,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 1,74 km do Terminal 1."],cons:[],faq:[{q:"Quanto custa estacionar no FlyPark?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 21,60 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o FlyPark?",a:"O endereço é R. Pedro de Toledo, 917, Jardim São Geraldo, Guarulhos - SP. Fica a 1,74 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://flypark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://flypark.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJwWtKC8KKzpQRCcM5VBJa9_s"},{slug:"callpark",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"CallPark Estacionamentos",address:{street:"R. Pedro de Toledo",number:"777",district:"Jardim Santa LÃdia",city:"Guarulhos",state:"SP",postalCode:"07140-000",country:"BR",formatted:"R. Pedro de Toledo, 777, Jardim Santa LÃdia, Guarulhos - SP, 07140-000"},geo:{lat:-23.437327,lng:-46.497987},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Pedro%20de%20Toledo%2C%20777%2C%20Jardim%20Santa%20L%C3%ADdia%2C%20Guarulhos%20-%20SP%2C%2007140-000",mapEmbedQuery:"R. Pedro de Toledo, 777, Jardim Santa LÃdia, Guarulhos - SP, 07140-000",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,transfer:{type:"van",included:!0,note:"Transfer ida e volta 24h incluso"},terminals:[{code:"T1",distanceKm:1.82}],priceRows:[{label:"Descoberta: 1 diária",perDay:22,total:22},{label:"Descoberta: 2 diárias",perDay:24,total:48},{label:"Descoberta: 3 a 12 diárias",perDay:22,note:"R$ 66,00 (3) a R$ 264,00 (12)"},{label:"Descoberta: 14 a 30 dias (promoção)",perDay:null,total:308,note:"total fixo"},{label:"Coberta: 1 a 12 diárias",perDay:27,note:"R$ 27,00 (1) a R$ 324,00 (12)"},{label:"Coberta: 14 a 30 dias",perDay:null,total:378,note:"total fixo"},{label:"13 diárias",perDay:null,note:"não divulgado publicamente"}],totalForDays:e=>{const t=[22,48,66,88,110,132,154,176,198,220,242,264];return e>=1&&e<=12?t[e-1]:e>=14&&e<=30?308:null},undisclosedFrom:{minDays:31,reason:"Acima de 30 dias, a operadora orienta falar com a equipe."},priceCollectedAt:"28 de setembro de 2026",priceNote:"Totais da linha principal: vaga descoberta. PerÃodo mÃnimo de 2 diárias, sem hora adicional, só diárias. Pagamento por Pix ou cartão pelo Mercado Pago.",pros:["Fica a 1,82 km do Terminal 1.","Nota 4,7 no Google, com 883 avaliações (consulta de 20 de setembro de 2026).","Transfer ida e volta 24h incluso."],cons:["PerÃodo mÃnimo de 2 diárias.","Acima de 30 dias, valor só com a equipe."],faq:[{q:"Quanto custa estacionar no CallPark Estacionamentos?",a:"Pela tabela oficial conferida em 28/09/2026, a vaga descoberta custa R$ 22,00 por 1 diária, R$ 154,00 por 7 e R$ 308,00 fixo de 14 a 30 dias (promoção). A coberta custa R$ 27,00 por diária até 12 e R$ 378,00 fixo de 14 a 30 dias."},{q:"Onde fica o CallPark Estacionamentos?",a:"O endereço é R. Pedro de Toledo, 777, Jardim Santa LÃdia, Guarulhos - SP, 07140-000. Fica a 1,82 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://callpark.com.br/. Pagamento por Pix ou cartão pelo Mercado Pago."}],fonteCitacao:"tabela oficial da operadora em https://callpark.com.br/precos, conferida em 28/09/2026",dataColeta:"2026-09-28",reservationUrl:"",bookable:!1,officialUrl:"https://callpark.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJBZk1NSCLzpQRTG0RadDssGc"},{slug:"econopark",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Econopark Aeroporto de Guarulhos",address:{street:"Av. Monteiro Lobato",number:"4.250",district:"Cumbica",city:"Guarulhos",state:"SP",postalCode:"07180-000",country:"BR",formatted:"Av. Monteiro Lobato, 4.250, Cumbica, Guarulhos - SP, 07180-000"},geo:{lat:-23.458355,lng:-46.489125},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Monteiro%20Lobato%2C%204.250%2C%20Cumbica%2
454C%20Guarulhos%20-%20SP%2C%2007180-000",mapEmbedQuery:"Av. Monteiro Lobato, 4.250, Cumbica, Guarulhos - SP, 07180-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"T1",distanceKm:2.88}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Nota 3,9 no Google, com 1.666 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Econopark Aeroporto de Guarulhos?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Econopark Aeroporto de Guarulhos?",a:"O endereço é Av. Monteiro Lobato, 4.250, Cumbica, Guarulhos - SP, 07180-000. Fica a 2,88 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.econoparkaeroporto.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://www.econoparkaeroporto.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJK3i9HYOKzpQR-I0SuspdjTo"},{slug:"servparking",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"ServParking",address:{street:"R. Areial",number:"115",district:"Cidade Industrial Satélite",city:"Guarulhos",state:"SP",postalCode:"07224-020",country:"BR",formatted:"R. Areial, 115, Cidade Industrial Satélite, Guarulhos - SP, 07224-020"},geo:{lat:-23.460504,lng:-46.484603},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Areial%2C%20115%2C%20Cidade%20Industrial%20Sat%C3%A9lite%2C%20Guarulhos%20-%20SP%2C%2007224-020",mapEmbedQuery:"R. Areial, 115, Cidade Industrial Satélite, Guarulhos - SP, 07224-020",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"T1",distanceKm:3.01}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no ServParking?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o ServParking?",a:"O endereço é R. Areial, 115, Cidade Industrial Satélite, Guarulhos - SP, 07224-020. Fica a 3,01 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://servparking.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://servparking.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJyU_cCilgzpQRBgpgrzk2FRc"},{slug:"gopark",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"GoPark",address:{street:"Rua Guilherme Lino dos Santos",number:"1418",city:"Guarulhos",state:"SP",country:"BR",formatted:"Rua Guilherme Lino dos Santos, 1418, Guarulhos - SP"},geo:{lat:-23.460277,lng:-46.501021},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Guilherme%20Lino%20dos%20Santos%2C%201418%2C%20Guarulhos%20-%20SP",mapEmbedQuery:"Rua Guilherme Lino dos Santos, 1418, Guarulhos - SP",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"T1",distanceKm:3.62}],priceRows:[{label:"Diária coberta",perDay:38.9,total:38.9,note:"ref. agosto de 2026"},{label:"Diária descoberta",perDay:24.9,total:24.9,note:"ref. agosto de 2026"}],priceCollectedAt:"agosto de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência agosto de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Nota 5 no Google, com 609 avaliações (consulta de 20 de setembro de 2026)."],cons:[],faq:[{q:"Quanto custa estacionar no GoPark?",a:"Pelo levantamento de preços de terceiro (agosto de 2026), a diária parte de R$ 24,90 (diária descoberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o GoPark?",a:"O endereço é Rua Guilherme Lino dos Santos, 1418, Guarulhos - SP. Fica a 3,62 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: http://www.gopark.gru.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"http://www.gopark.gru.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJfX5hRACLzpQR7S_yvuna7P8"},{slug:"ponce-park",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Ponce Park",address:{street:"Av. Pres. Tancredo de Almeida Neves",number:"2081",district:"São Roque",city:"Guarulhos",state:"SP",postalCode:"07112-070",country:"BR",formatted:"Av. Pres. Tancredo de Almeida Neves, 2081, São Roque, Guarulhos - SP, 07112-070"},geo:{lat:-23.464129,lng:-46.499831},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Pres.%20Tancredo%20de%20Almeida%20Neves%2C%202081%2C%20S%C3%A3o%20Roque%2C%20Guarulhos%20-%20SP%2C%2007112-070",mapEmbedQuery:"Av. Pres. Tancredo de Almeida Neves, 2081, São Roque, Guarulhos - SP, 07112-070",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"T1",distanceKm:3.91}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Nota 4,9 no Google, com 16.740 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Ponce Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Ponce Park?",a:"O endereço é Av. Pres. Tancredo de Almeida Neves, 2081, São Roque, Guarulhos - SP, 07112-070. Fica a 3,91 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://poncepark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://poncepark.com.br/",legalName:"Ponce Park Garagem Ltda",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJna433-eKzpQRb5C3kd2feqg"},{slug:"park-222",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Park 222",address:{street:"R. Luiz Rodrigues de Freitas",number:"03",district:"Porto da Igreja",city:"Guarulhos",state:"SP",postalCode:"07034-050",country:"BR",formatted:"R. Luiz Rodrigues de Freitas, 03, Porto da Igreja, Guarulhos - SP, 07034-050"},geo:{lat:-23.476472,lng:-46.524496},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Luiz%20Rodrigues%20de%20Freitas%2C%2003%2C%20Porto%20da%20Igreja%2C%20Guarulhos%20-%20SP%2C%2007034-050",mapEmbedQuery:"R. Luiz Rodrigues de Freitas, 03, Porto da Igreja, Guarulhos - SP, 07034-050",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"T1",distanceKm:6.53}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Nota 4,7 no Google, com 1.602 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Park 222?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Park 222?",a:"O endereço é R. Luiz Rodrigues de Freitas, 03, Porto da Igreja, Guarulhos - SP, 07034-050. Fica a 6,53 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://park222.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://park222.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJm3tQj1z1zpQRGiEkecKdnEg"},{slug:"br-parking-express",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"BR Parking Express",address:{street:"Rodovia Presidente Dutra",number:"km 219",city:"Guarulhos",state:"SP",country:"BR",formatted:"Rodovia Presidente Dutra, km 219, Guarulhos - SP"},geo:{lat:-23.4897125,lng:-46.5475031},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rodovia%20Presidente%20Dutra%2C%20km%20219%2C%20Guarulhos%20-%20SP",mapEmbedQuery:"Rodovia Presidente Dutra, km 219, Guarulhos - SP",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"T1",distanceKm:9.24}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no BR Parking Express?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o BR Parking Express?",a:"O endereço é Rodovia Presidente Dutra, km 219, Guarulhos - SP. Fica a 9,24 km do Terminal 1, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://brparking.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://brparking.com.br/"},{slug:"eco22",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Eco22",address:{street:"Av. Embarque",number:"290",district:"Jardim Chapadão",city:"Campinas",state:"SP",postalCode:"13070-051",country:"BR",formatted:"Av. Embarque, 290, Jardim Chapadão, Campinas - SP, 13070-051"},geo:{lat:-23.009895,lng:-47.144644899999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Embarque%2C%20290%2C%20Jardim%20Chapad%C3%A3o%2C%20Campinas%20-%20SP%2C%2013070-051",mapEmbedQuery:"Av. Embarque, 290, Jardim Chapadão, Campinas - SP, 13070-051",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.07}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,07 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Eco22?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Eco22?",a:"O endereço é Av. Embarque, 290, Jardim Chapadão, Campinas - SP, 13070-051. Fica a 1,07 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=3035831894953404896"},{slug:"aero-viracopos",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Aero Viracopos",address:{street:"Av. Desembarque",district:"Jardim Aeroporto de Campinas, Campinas - SP, 13055",city:"Campinas",state:"SP",country:"BR",formatted:"Av. Desembarque, Jardim Aeroporto de Campinas, Campinas - SP, 13055, Campinas - SP"},geo:{lat:-23.009882899999997,lng:-47.1467794},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Desembarque%2C%20Jardim%20Aeroporto%20de%20Campinas%2C%20Campinas%20-%20SP%2C%2013055%2C%20Campinas%20-%20SP",mapEmbedQuery:"Av. Desembarque, Jardim Aeroporto de Campinas, Campinas - SP, 13055, Campinas - SP",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.28}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,28 km do terminal.","Nota 4,7 no Google, com 221 avaliações (consulta de 20 de setembro de 2026)."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Aero Viracopos?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Aero Viracopos?",a:"O endereço é Av. Desembarque, Jardim Aeroporto de Campinas, Campinas - SP, 13055, Campinas - SP. Fica a 1,28 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=11626302596213131866"},{slug:"portico",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Pórtico",address:{street:"Av. José Amgarten",district:"Cidade Singer",city:"Campinas",state:"SP",postalCode:"13053-090",country:"BR",formatted:"Av. José Amgarten, Cidade Singer, Campinas - SP, 13053-090"},geo:{lat:-23.021483399999997,lng:-47.130391599999996},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Jos%C3%A9%20Amgarten%2C%20Cidade%20Singer%2C%20Campinas%20-%20SP%2C%2013053-090",mapEmbedQuery:"Av. José Amgarten, Cidade Singer, Campinas - SP, 13053-090",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.64}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,64 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Pórtico?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Pórtico?",a:"O endereço é Av. José Amgarten, Cidade Singer, Campinas - SP, 13053-090. Fica a 1,64 km do terminal, por medição de terceiro."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://maps.google.com/?cid=16728847774517984381"},{slug:"viracopos-aeroparking",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Viracopos Aeroparking",address:{street:"R. AlaÃde Macedo da Silva",number:"442",district:"Jardim Nova America",city:"Campinas",state:"SP",postalCode:"13053-040",country:"BR",formatted:"R. AlaÃde Macedo da Silva, 442, Jardim Nova America, Campinas - SP, 13053-040"},geo:{lat:-23.0031009,lng:-47.1108173},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Ala%C3%ADde%20Macedo%20da%20Silva%2C%20442%2C%20Jardim%20Nova%20America%2C%20Campinas%20-%20SP%2C%2013053-040",mapEmbedQuery:"R. AlaÃde Macedo da Silva, 442, Jardim Nova America, Campinas - SP, 13053-040",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:2.48}],priceRows:[{label:"Diária",perDay:34.7,total:34.7},{label:"7 dias",perDay:34.7,total:242.9},{label:"15 dias",perDay:34.7,total:520.5},{label:"30 dias",perDay:34.7,total:1041}],priceCollectedAt:"9 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 9 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:[],cons:[],faq:[{q:"Quanto custa estacionar no Viracopos Aeroparking?",a:"Pelo levantamento de preços de terceiro (9 de setembro de 2026), a diária parte de R$ 34,70 (diária
454). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Viracopos Aeroparking?",a:"O endereço é R. AlaÃde Macedo da Silva, 442, Jardim Nova America, Campinas - SP, 13053-040. Fica a 2,48 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.viracoposaeroparking.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-09",reservationUrl:"",bookable:!1,officialUrl:"https://www.viracoposaeroparking.com.br/",mapsProfileUrl:"https://maps.google.com/?cid=14282223934120953579"},{slug:"bepark",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"BePark",address:{street:"Av. Paulo Ferreira da Costa",number:"445",district:"Vista Alegre",city:"Lagoa Santa",state:"MG",postalCode:"33240-152",country:"BR",formatted:"Av. Paulo Ferreira da Costa, 445, Vista Alegre, Lagoa Santa - MG, 33240-152"},geo:{lat:-19.675743,lng:-43.9110781},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Paulo%20Ferreira%20da%20Costa%2C%20445%2C%20Vista%20Alegre%2C%20Lagoa%20Santa%20-%20MG%2C%2033240-152",mapEmbedQuery:"Av. Paulo Ferreira da Costa, 445, Vista Alegre, Lagoa Santa - MG, 33240-152",phone:"+5531995590090",email:"[email protected]",hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"coberto",valet:!1,transfer:{type:"van",included:!0},terminals:[{code:"Terminal",distanceKm:7.63,minutes:10,via:"traslado da operadora"}],priceRows:[{label:"Diária coberta (online)",perDay:45,total:45},{label:"7 dias coberta",perDay:28.57,total:200,originalPerDay:45,note:"reserva online"},{label:"15 dias coberta",perDay:26.67,total:400,originalPerDay:45,note:"reserva online"},{label:"30 dias coberta",perDay:13.33,total:400,originalPerDay:45,note:"reserva online"}],priceCollectedAt:"18 de setembro de 2026",priceNote:"Fonte do preço: tabela de reserva online do parceiro publicada por terceiro. Referência 18 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Traslado gratuito até o terminal.","Funciona 24 horas, todos os dias."],cons:[],faq:[{q:"Quanto custa estacionar no BePark?",a:"Pelo levantamento de preços de terceiro (18 de setembro de 2026), a diária parte de R$ 45,00 (diária coberta (online)), e em estadias longas o valor cai para R$ 13,33 por dia (30 dias coberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o BePark?",a:"O endereço é Av. Paulo Ferreira da Costa, 445, Vista Alegre, Lagoa Santa - MG, 33240-152. Fica a 7,63 km do terminal, por medição de terceiro."},{q:"Tem traslado até o terminal?",a:"Sim. A operadora declara traslado gratuito até o terminal e cerca de 10 minutos de trajeto."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://bepark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; tabela de reserva online do parceiro publicada por terceiro",dataColeta:"2026-09-18",reservationUrl:"",bookable:!1,officialUrl:"https://bepark.com.br/",legalName:"PARK HUB ESTACIONAMENTOS LTDA",taxId:"68.680.270/0001-24",mapsProfileUrl:"https://maps.google.com/?cid=9683835355736244200&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYASAA",amenities:["Banheiros","Transfer gratuito","Atendimento 24 horas","Wi-Fi gratuito","Portaria controlada","Ãrea de espera","Acessibilidade PCD","Self-park"]},{slug:"ipo-park",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"IPO Park",address:{street:"Rua Lindonor Ribeiro",number:"127",district:"Alto Santa Cruz",city:"Confins",state:"MG",postalCode:"33500-000",country:"BR",formatted:"Rua Lindonor Ribeiro, 127, Alto Santa Cruz, Confins - MG, 33500-000"},geo:{lat:-19.624687,lng:-43.996411},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Lindonor%20Ribeiro%2C%20127%2C%20Alto%20Santa%20Cruz%2C%20Confins%20-%20MG%2C%2033500-000",mapEmbedQuery:"Rua Lindonor Ribeiro, 127, Alto Santa Cruz, Confins - MG, 33500-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.08}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no IPO Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o IPO Park?",a:"O endereço é Rua Lindonor Ribeiro, 127, Alto Santa Cruz, Confins - MG, 33500-000. Fica a 3,08 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://ipopark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://ipopark.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJl9DFeXVjpgARMaIdgDMtsIQ"},{slug:"auto-park-brasil",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Auto Park Brasil",address:{street:"Rua Gumercino Ribeiro dos Santos",number:"1100",district:"Alto dos Ribeiros",city:"Confins",state:"MG",country:"BR",formatted:"Rua Gumercino Ribeiro dos Santos, 1100, Alto dos Ribeiros, Confins - MG"},geo:{lat:-19.629829,lng:-43.998212},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Gumercino%20Ribeiro%20dos%20Santos%2C%201100%2C%20Alto%20dos%20Ribeiros%2C%20Confins%20-%20MG",mapEmbedQuery:"Rua Gumercino Ribeiro dos Santos, 1100, Alto dos Ribeiros, Confins - MG",hours:"Horário não informado pela fonte",coverage:"ambos",valet:!1,terminals:[{code:"Terminal",distanceKm:3.13}],priceRows:[{label:"Diária",perDay:20,total:20},{label:"7 dias",perDay:18,total:126},{label:"30 dias",perDay:10,total:300}],priceCollectedAt:"8 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 8 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Nota 4,7 no Google, com 504 avaliações (consulta de 20 de setembro de 2026)."],cons:[],faq:[{q:"Quanto custa estacionar no Auto Park Brasil?",a:"Pelo levantamento de preços de terceiro (8 de setembro de 2026), a diária parte de R$ 20,00 (diária
454), e em estadias longas o valor cai para R$ 10,00 por dia (30 dias). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Auto Park Brasil?",a:"O endereço é Rua Gumercino Ribeiro dos Santos, 1100, Alto dos Ribeiros, Confins - MG. Fica a 3,13 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://autoparkbrasil.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-08",reservationUrl:"",bookable:!1,officialUrl:"https://autoparkbrasil.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJXZXv7JZjpgARUezf2W5Ztvg"},{slug:"patio",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Estacionamento Pátio",address:{street:"Rua Lapa Vermelha",number:"180",district:"Centro",city:"Confins",state:"MG",postalCode:"33500-000",country:"BR",formatted:"Rua Lapa Vermelha, 180, Centro, Confins - MG, 33500-000"},geo:{lat:-19.622742,lng:-43.996122},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Lapa%20Vermelha%2C%20180%2C%20Centro%2C%20Confins%20-%20MG%2C%2033500-000",mapEmbedQuery:"Rua Lapa Vermelha, 180, Centro, Confins - MG, 33500-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.13}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:[],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Estacionamento Pátio?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Estacionamento Pátio?",a:"O endereço é Rua Lapa Vermelha, 180, Centro, Confins - MG, 33500-000. Fica a 3,13 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://estacionamentopatioconfins.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,officialUrl:"https://estacionamentopatioconfins.com.br/",mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJUf7gKrdjpgAR6J0vvlKlY5c"},{slug:"premium-park",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Premium Park",address:{street:"LMG",number:"800",district:"Nº 250 - Chácara Asa Branca",city:"Confins",state:"MG",postalCode:"33500-000",country:"BR",formatted:"LMG, 800, Nº 250 - Chácara Asa Branca, Confins - MG, 33500-000"},geo:{lat:-19.655444,lng:-43.9421269},mapsUrl:"https://www.google.com/maps/search/?api=1&query=LMG%2C%20800%2C%20N%C2%BA%20250%20-%20Ch%C3%A1cara%20Asa%20Branca%2C%20Confins%20-%20MG%2C%2033500-000",mapEmbedQuery:"LMG, 800, Nº 250 - Chácara Asa Branca, Confins - MG, 33500-000",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:3.68}],priceRows:[{label:"Diária",perDay:45,total:45},{label:"7 dias",perDay:25.71,total:180}],priceCollectedAt:"25 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 25 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Nota 4,9 no Google, com 771 avaliações (consulta de 27 de setembro de 2026)."],cons:[],faq:[{q:"Quanto custa estacionar no Premium Park?",a:"Pelo levantamento de preços de terceiro (25 de setembro de 2026), a diária parte de R$ 45,00 (diária), e em estadias longas o valor cai para R$ 25,71 por dia (7 dias). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Premium Park?",a:"O endereço é LMG, 800, Nº 250 - Chácara Asa Branca, Confins - MG, 33500-000. Fica a 3,68 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://premiumpark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-25",reservationUrl:"",bookable:!1,officialUrl:"https://premiumpark.com.br/"}],RY=[{code:"GRU",label:"Bandeira Park Guarulhos (GRU)",shortName:"Guarulhos (GRU)",address:"Av. Novo Brasil, 954, Guarulhos / SP",phone:"+55 11 94772-4436",whatsapp:"+55 11 94772-4436",email:"[email protected]",services:["3,5 km do aeroporto (GRU), acesso pela pista local da Rod. Ayrton Senna","Traslado gratuito 24h, ~7 min até o terminal","Vagas cobertas e descobertas","Serviço Valet disponÃvel (reserva 24h antes)","Seguro Tokio Marine, cobertura de até R$ 1.000.000","Atendimento 24h"],available:!0,insurance:"Seguro Tokio Marine, cobertura de até R$ 1.000.000",vagas:[{key:"gru-desc",label:"Descoberta",rate1_6:24.99,rate7_12:17.99,fixed13_17:233.87,fixed18_30:323.82,rate31plus:10.79},{key:"gru-cob",label:"Coberta",rate1_6:29.99,rate7_12:19.99,fixed13_17:259.87,fixed18_30:359.82,rate31plus:11.99},{key:"gru-valet",label:"Valet Aeroporto",rate1_6:99,rate7_12:80,fixed13_17:924,fixed18_30:1056,rate31plus:35.2}]}
454,{code:"CGH",label:"Bandeira Park Congonhas (CGH)",shortName:"Congonhas (CGH)",address:"Rua Vieira de Morais, 2110, Campo Belo / São Paulo / SP",phone:"+55 11 3582-2007",email:"[email protected]",services:["600 m do aeroporto · ~10 min a pé","Vagas 100% cobertas","Atendimento 24h","Esta unidade não oferece traslado"],available:!0,vagas:[{key:"cgh-cob",label:"Coberta",rate1_6:43.98,rate7_12:38.48,fixed13_17:500.35,fixed18_30:692.8,rate31plus:23.1}]},{code:"VCP",label:"Bandeira Park Viracopos (VCP)",shortName:"Viracopos (VCP)",address:"Rua Antônio Luchiari, 1100, Distrito Industrial / Campinas / SP",phone:"+55 19 3265-5208",whatsapp:"+55 19 97829-2777",email:"[email protected]",services:["5 km do aeroporto (VCP), sem desvio, sem semáforo, sem pedágio","Traslado gratuito 24h, ~7 min até o terminal","2.000 vagas, cobertas e descobertas, com opção de vaga VIP com tranque","Seguro Tokio Marine, cobertura de até R$ 1.000.000","Pagamento: PIX, Visa e Mastercard, em até 18x","Atendimento 24h"],available:!0,insurance:"Seguro Tokio Marine, cobertura de até R$ 1.000.000",vagas:[{key:"vcp-desc",label:"Descoberta",rate1_6:24.99,rate7_12:17.99,fixed13_17:233.87,fixed18_30:323.82,rate31plus:10.79},{key:"vcp-cob",label:"Coberta",rate1_6:29.99,rate7_12:19.99,fixed13_17:259.87,fixed18_30:359.82,rate31plus:11.99}]},{code:"TIE",label:"Bandeira Park Tietê",shortName:"Tietê",address:"Rua Voluntários da Pátria, 654, Santana / São Paulo / SP",phone:"+55 11 3562-1549",email:"[email protected]",services:["Próximo à Rodoviária Tietê","Acesso rápido ao Expo Center Norte e Anhembi","Metrô Santana/Tietê","Atendimento 24h monitorado"],available:!0,vagas:[{key:"tie-std",label:"Vaga padrão",rate1_6:24.99,rate7_12:21.99,fixed13_17:285.87,fixed18_30:395.82,rate31plus:13.19}]}],jY=1,NY="162b1a3a-cf6b-4d8e-bcc4-84bac7c64ea9",AY="386e8409-a3d6-4603-9e31-4b97b7d57e01",EY="/__l5e/assets-v1/162b1a3a-cf6b-4d8e-bcc4-84bac7c64ea9/bandeira-park-confins-fast.webp",_Y="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/162b1a3a-cf6b-4d8e-bcc4-84bac7c64ea9/bandeira-park-confins-fast.webp",TY="bandeira-park-confins-fast.webp",$Y=154952,OY="image/webp",qY="2026-09-26T20:17:50Z",DY={version:jY,asset_id:NY,project_id:AY,url:EY,r2_key:_Y,original_filename:TY,size:$Y,content_type:OY,created_at:qY},IY=1,MY="87ebae84-9665-4cc7-9c6f-d9ecb9fa3975",LY="386e8409-a3d6-4603-9e31-4b97b7d57e01",BY="/__l5e/assets-v1/87ebae84-9665-4cc7-9c6f-d9ecb9fa3975/bandeira-park-guarulhos-fast.webp",VY="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/87ebae84-9665-4cc7-9c6f-d9ecb9fa3975/bandeira-park-guarulhos-fast.webp",FY="bandeira-park-guarulhos-fast.webp",UY=154298,GY="image/webp",zY="2026-09-26T20:17:52Z",HY={version:IY,asset_id:MY,project_id:LY,url:BY,r2_key:VY,original_filename:FY,size:UY,content_type:GY,created_at:zY},KY=1,QY="acd3e02e-48b5-4dec-8673-addba9d04276",WY="386e8409-a3d6-4603-9e31-4b97b7d57e01",JY="/__l5e/assets-v1/acd3e02e-48b5-4dec-8673-addba9d04276/bandeira-park-viracopos-fast.webp",XY="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/acd3e02e-48b5-4dec-8673-addba9d04276/bandeira-park-viracopos-fast.webp",YY="bandeira-park-viracopos-fast.webp",ZY=86302,eZ="image/webp",tZ="2026-09-26T20:17:54Z",aZ={version:KY,asset_id:QY,project_id:WY,url:JY,r2_key:XY,original_filename:YY,size:ZY,content_type:eZ,created_at:tZ},oZ=1,rZ="d4b2daac-ed0f-49ce-b0b5-b0d22f5b6408",nZ="386e8409-a3d6-4603-9e31-4b97b7d57e01",sZ="/__l5e/assets-v1/d4b2daac-ed0f-49ce-b0b5-b0d22f5b6408/bandeira-park-congonhas.webp",iZ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/d4b2daac-ed0f-49ce-b0b5-b0d22f5b6408/bandeira-park-congonhas.webp",lZ="bandeira-park-congonhas.webp",cZ=123406,dZ="image/webp",uZ="2026-09-27T06:26:53Z",mZ={version:oZ,asset_id:rZ,project_id:nZ,url:sZ,r2_key:iZ,original_filename:lZ,size:cZ,content_type:dZ,created_at:uZ},pZ="painel",hZ="2026-10-04T16:01:32.642Z",fZ={VCP:{coberta:{rate_1_6:29.99,rate_7_12:21.59,fixed_13_17:280.6,fixed_18_30:388.6,rate_31_plus:12.95},descoberta:{rate_1_6:24.99,rate_7_12:17.99,fixed_13_17:233.87,fixed_18_30:323.82,rate_31_plus:10.79}},CNF:{descoberta:{rate_1_6:24.99,rate_7_12:17.99,fixed_13_17:233.87,fixed_18_30:323.82,rate_31_plus:10.79},coberta:{rate_1_6:29.99,rate_7_12:21.59,fixed_13_17:280.6,fixed_18_30:388.6,rate_31_plus:12.95}},GRU:{valet:{rate_1_6:79,rate_7_12:57,fixed_13_17:554,fixed_18_30:634,rate_31_plus:35.2},coberta:{rate_1_6:29.99,rate_7_12:21.59,fixed_13_17:280.6,fixed_18_30:388.6,rate_31_plus:12.95},descoberta:{rate_1_6:24.99,rate_7_12:17.99,fixed_13_17:233.87,fixed_18_30:323.82,rate_31_plus:10.79}},CGH:{coberta:{rate_1_6:43.98,rate_7_12:38.48,fixed_13_17:500.35,fixed_18_30:692.8,rate_31_plus:23.1}}},gZ={source:pZ,fetchedAt:hZ,units:fZ};function gr(e){return Math.round(e*100)/100}const vZ=.26,zt=e=>gr(gr(e)-gr(gr(e)*vZ));function ge(e,t,a){return zt(je(At(e,a),t))}const xZ=gZ.units;function At(e,t){const a=xZ[e];if(!a)throw new Error(`Bandeira Park sem tarifa para ${e}`);const o=t&&a[t]||a.descoberta||Object.values(a)[0];if(!o)throw new Error(`Bandeira Park sem tarifa para ${e}/${t}`);return o}function je(e,t){return t<=0?0:t<=6?gr(e.rate_1_6*t):t<=12?gr(e.rate_7_12*t):t<=17?gr(e.fixed_13_17):t<=30?gr(e.fixed_18_30):gr(e.rate_31_plus*t)}function Ch(e="GRU"){const t=At(e),a=zt(t.rate_1_6),o=zt(t.rate_7_12),r=zt(t.fixed_13_17);return[{label:"Diária avulsa (1 dia)",perDay:a,total:a,originalPerDay:t.rate_1_6},{label:"7 a 12 dias",perDay:o,total:zt(t.rate_7_12*7),originalPerDay:t.rate_7_12},{label:"13 a 17 dias",perDay:null,total:r,note:"valor fixo do perÃodo"},{label:"18 a 30 dias",perDay:null,total:zt(t.fixed_18_30),note:"valor fixo do perÃodo"},{label:"31+ dias",perDay:zt(t.rate_31_plus),total:zt(t.rate_31_plus*31),originalPerDay:t.rate_31_plus}]}function jk(e="GRU"){const t=At(e),a=Ch(e),[o,r]=a;return{dailyFrom:o.perDay,dailyFull:o.originalPerDay,dailyTotal1:o.total,weekPerDay:r.perDay,weekTotal:r.total,weekTotalCharged:zt(t.rate_7_12*7),d17PerDay:gr(zt(t.fixed_13_17)/17),d17Total:zt(t.fixed_13_17),longStayDaily:zt(t.rate_31_plus),longStayTotal:zt(t.fixed_18_30),weekPerDayFull:t.rate_7_12,weekTotalFull:gr(t.rate_7_12*7),longStayDailyFull:t.rate_31_plus,longStayTotalFull:t.fixed_18_30}}const q=jk("GRU"),le=jk("VCP"),Be=jk("CNF");
454function Je(e){return e.toLocaleString("pt-BR",{style:"currency",currency:"BRL"})}function S(e){return"R$ "+e.toLocaleString("pt-BR",{minimumFractionDigits:2,maximumFractionDigits:2})}const Nk={CNF:"2026-10-01"},bZ=["GRU","VCP","CNF","CGH"],yZ={GRU:"Guarulhos (GRU)",VCP:"Viracopos (VCP)",CNF:"Confins (CNF)",CGH:"Congonhas (CGH)"};function Ph(e){return yZ[String(e).toUpperCase()]??e}function _6(e){return bZ.includes(String(e).toUpperCase())}const kZ=()=>new Date().toISOString().slice(0,10);function Of(e){const t=Nk[String(e).toUpperCase()],a=kZ();return t&&t>a?t:a}function T6(e,t){if(!t)return!1;const a=Nk[String(e).toUpperCase()];return a?t>=a:!0}function cd(e){return Nk[String(e).toUpperCase()]??null}function Yu(e){const t=cd(e);if(!t)return"";const[a,o,r]=t.split("-");return`${r}/${o}/${a.slice(2)}`}function Vy(e){const t=cd(e);if(!t)return"";const[a,o,r]=t.split("-");return`${r}/${o}/${a.slice(2)}`}function Ak(e){return cd(e)?`A unidade de ${Ph(e)} inaugura em ${Yu(e)}. As reservas já estão liberadas para entradas a partir dessa data.`:null}function $6(e){const t=RY.find(a=>a.code===e);if(!t)throw new Error(`Bandeira Park unit not found: ${e}`);return t}const Sh="Preços com cupom XPK26 (26% de desconto) aplicado, conforme tabela pública do Bandeira Park.";function Pp(e){return Math.round(e*100)/100}function wZ(){const e=At("CGH","coberta"),t={rate1_6:e.rate_1_6,rate7_12:e.rate_7_12,rate31plus:e.rate_31_plus},a=zt(e.rate_1_6),o=zt(e.rate_7_12),r=zt(e.fixed_13_17),n=zt(e.fixed_18_30),i=zt(e.rate_31_plus);return[{label:"1 a 6 diárias",perDay:a,total:a,originalPerDay:t.rate1_6},{label:"7 a 12 diárias",perDay:o,total:zt(e.rate_7_12*7),originalPerDay:t.rate7_12},{label:"13 a 17 diárias",perDay:null,total:r,note:"valor fixo do perÃodo"},{label:"18 a 30 diárias",perDay:null,total:n,note:"valor fixo do perÃodo"},{label:"31+ diárias",perDay:i,total:zt(e.rate_31_plus*31),originalPerDay:t.rate31plus}]}const Sp=wZ();function Rh(e){return`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(e.formatted)}`}const Tv=$6("GRU"),$v={street:"Avenida Novo Brasil",number:"954",district:void 0,city:"Guarulhos",state:"SP",postalCode:"07221-010",country:"BR",formatted:"Av. Novo Brasil, 954, Guarulhos - SP, 07221-010"},Ov=$6("VCP"),qv={street:"Rua Antônio Luchiari",number:"1100",district:"Distrito Industrial",city:"Campinas",state:"SP",postalCode:"13030-150",country:"BR",formatted:"Rua Antônio Luchiari, 1100, Distrito Industrial, Campinas - SP, 13030-150"},Rp={street:"Rodovia MG-010",number:"Km 26,5",district:"Zona Rural",city:"Vespasiano",state:"MG",postalCode:"33200-000",country:"BR",formatted:"Rodovia MG-010, Km 26,5, Zona Rural, Vespasiano - MG, 33200-000"},jh="O Bandeira Park é parceiro operado pelo mesmo grupo do xpark. O ranking editorial segue a metodologia pública e independe da parceria.",Kt=[{slug:"bandeira-park",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Bandeira Park",brandGroup:"Grupo Bandeira Park",partnershipDisclosure:jh,address:$v,geo:{lat:-23.4792437,lng:-46.4691295},mapsUrl:Rh($v),mapEmbedQuery:$v.formatted,phone:Tv.phone,email:Tv.email,hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"ambos",valet:!0,transfer:{type:"van",frequency:"Van gratuita 24h, ~7 min ao terminal",included:!0},terminals:[{code:"T1",distanceKm:3.5,minutes:7,via:"Rod. Ayrton Senna (pista local)"},{code:"T2",distanceKm:3.5,minutes:7,via:"Rod. Ayrton Senna (pista local)"},{code:"T3",distanceKm:3.5,minutes:8,via:"Rod. Ayrton Senna (pista local)"}],priceRows:Ch("GRU"),totalForDays:e=>ge("GRU",e),priceCollectedAt:"julho de 2026",priceNote:Sh,insurance:Tv.insurance,fonteCitacao:"bandeirapark.com.br (tabela oficial)",dataColeta:"2026-07-10",pros:[`Diária a partir de ${S(q.dailyFrom)} com cupom XPK26; ${S(q.longStayDaily)}/dia no plano de 30+ dias.`,"Traslado 24h gratuito, ~7 min até os três terminais pela pista local da Ayrton Senna.","Vagas cobertas e descobertas, com opção de Valet Aeroporto (entrega e retirada no terminal).","Seguro Tokio Marine com cobertura de até R$ 1.000.000."],cons:[`Preço cheio (${S(q.dailyFull)}/dia) para quem não aplica o cupom XPK26 na reserva.`,"Valet exige reserva com 24 horas de antecedência."],faq:[{q:"Quanto custa estacionar no Bandeira Park GRU?",a:`Com o cupom XPK26 (26% de desconto) a diária avulsa fica em ${S(q.dailyFrom)} e cai para ${S(q.longStayDaily)}/dia no plano de 30+ dias. Sem cupom, a diária avulsa cheia é ${S(q.dailyFull)}. Tabela completa e condições nesta página, coletadas em julho de 2026.`},{q:"Tem traslado gratuito até o terminal?",a:"Sim. Van gratuita 24 horas por dia, com deslocamento médio de 7 minutos entre o pátio e os terminais 1, 2 e 3 do Aeroporto de Guarulhos, pela pista local da Rodovia Ayrton Senna."},{q:"à seguro?",a:"Sim. Monitoramento 24h por câmeras, controle de acesso na entrada e saÃda de veÃculos e seguro Tokio Marine com cobertura de até R$ 1.000.000 por veÃculo."},{q:"Como faço a reserva?",a:"Pelo xpark você compara e reserva em menos de um minuto: informe as datas, escolha a categoria de vaga (descoberta, coberta ou Valet Aeroporto) e finalize com Pix ou cartão."},{q:"Onde fica exatamente?",a:"Av. Novo Brasil, 954, Guarulhos - SP, CEP 07221-010. A ~3,5 km do Aeroporto de Guarulhos, com acesso pela pista local da Rodovia Ayrton Senna."}],reservationUrl:"/escolher?airport=GRU",bookable:!0,heroImage:HY.url,legalName:"Bandeirapark Estacionamentos LTDA",taxId:"64.608.556/0014-62",mapsProfileUrl:"https://maps.app.goo.gl/UXcEqLKhe3WJsJ7R9",amenities:["Traslado gratuito ao terminal 24h","Serviço Valet","Vaga coberta","Câmeras 24h","Controle de acesso","Seguro Tokio Marine","Atendimento 24 horas"]},{slug:"bandeira-park",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Bandeira Park",brandGroup:"Grupo Bandeira Park",partnershipDisclosure:jh,address:qv,geo:{lat:-22.9923177,lng:-47.1119023},mapsUrl:Rh(qv),mapEmbedQuery:qv.formatted,phone:Ov.phone,email:Ov.email,hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Van gratuita 24h, ~7 min ao terminal (sem desvio, sem semáforo, sem pedágio)",included:!0},terminals:[{code:"Terminal único",distanceKm:5,minutes:7,via:"Rodovia Santos Dumont (SP-075)"}],priceRows:Ch("VCP"),totalForDays:e=>ge("VCP",e),priceCollectedAt:"julho de 2026",priceNote:Sh,insurance:Ov.insurance,fonteCitacao:"bandeirapark.com.br (tabela oficial)",dataColeta:"2026-07-10",pros:[`Diária a partir de ${S(le.dailyFrom)} com cupom XPK26; ${S(le.longStayDaily)}/dia no plano de 30+ dias.`,"Traslado 24h gratuito, ~7 min até o terminal, sem desvio, semáforo ou pedágio no trajeto.","2.000 vagas cobertas e descobertas, com opção de vaga VIP com tranque.","Seguro Tokio Marine com cobertura de até R$ 1.000.000."],cons:["Não oferece Valet Aeroporto nesta unidade (disponÃvel apenas em Guarulhos).",`Preço cheio (${S(le.dailyFull)}/dia) para quem não aplica o cupom XPK26 na reserva.`],faq:[{q:"Quanto custa estacionar no Bandeira Park VCP?",a:`Com o cupom XPK26 (26% de desconto) a diária avulsa fica em ${S(le.dailyFrom)} e cai para ${S(le.longStayDaily)}/dia no plano de 30+ dias. Sem cupom, a diária avulsa cheia é ${S(le.dailyFull)}. Tabela completa nesta página, coletada em julho de 2026.`},{q:"Tem traslado gratuito até o terminal?",a:"Sim. Van gratuita 24 horas por dia, com ~7 minutos entre o pátio e o terminal do Aeroporto de
454Viracopos. Trajeto sem desvio, sem semáforo e sem pedágio."},{q:"à seguro?",a:"Sim. Monitoramento 24h por câmeras, controle de acesso e seguro Tokio Marine com cobertura de até R$ 1.000.000 por veÃculo. Há também a opção de vaga VIP com tranque."},{q:"Como faço a reserva?",a:"No xpark você compara opções, escolhe categoria de vaga e reserva em menos de um minuto, com PIX, Visa ou Mastercard (em até 18x)."},{q:"Onde fica exatamente?",a:"Rua Antônio Luchiari, 1100, Distrito Industrial, Campinas - SP, CEP 13030-150. A ~5 km do Aeroporto de Viracopos."}],reservationUrl:"/escolher?airport=VCP",bookable:!0,heroImage:aZ.url,legalName:"Bandeirapark Estacionamentos LTDA",taxId:"64.608.556/0012-09",mapsProfileUrl:"https://maps.app.goo.gl/LVLMQtC3PSaXfgB38",amenities:["Traslado gratuito ao terminal 24h","Vaga coberta","Câmeras 24h","Controle de acesso","Seguro Tokio Marine","Atendimento 24 horas"]},{slug:"bandeira-park",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Bandeira Park",brandGroup:"Grupo Bandeira Park",partnershipDisclosure:jh,address:Rp,mapsUrl:Rh(Rp),mapEmbedQuery:Rp.formatted,phone:"+55 11 3017-5808",email:"[email protected]",legalName:"Bandeirapark Estacionamentos LTDA",taxId:"64.608.556/0001-48",mapsProfileUrl:"https://maps.app.goo.gl/4Y2aPxD2uKtbAQ9q9",amenities:["Van até o terminal","Vaga coberta","Atendimento 24 horas"],hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"ambos",valet:!1,transfer:{type:"van",included:!0,note:"Van até o terminal"},terminals:[],priceRows:Ch("CNF"),totalForDays:e=>ge("CNF",e),priceCollectedAt:"25 de agosto de 2026",priceNote:Sh,fonteCitacao:"bandeirapark.com.br (tabela oficial)",dataColeta:"2026-08-25",pros:[`Diária a partir de ${X(q.dailyFrom)} com cupom XPK26; ${X(q.longStayDaily)}/dia no plano de 30+ dias, o menor valor de Confins.`,"Vagas cobertas e descobertas, com 1.500 vagas na unidade.","Van até o terminal.","Serviços adicionais disponÃveis: Seguro, Vaga VIP e Tranca e Leve a Chave."],cons:[`Unidade nova: inÃcio de operação em ${Yu("CNF")}. As reservas já estão abertas para entradas a partir dessa data.`,`Preço cheio (${X(q.dailyFull)}/dia) para quem não aplica o cupom XPK26 na reserva.`],faq:[{q:"Quanto custa estacionar no Bandeira Park Confins?",a:`Com o cupom XPK26 (26% de desconto) a diária avulsa fica em ${X(q.dailyFrom)} e cai para ${X(q.longStayDaily)}/dia no plano de 30+ dias, o que dá ${X(q.longStayTotal)} em 30 diárias. Sem cupom, a diária avulsa cheia é ${X(q.dailyFull)}. A tabela completa está nesta página.`},{q:"A unidade de Confins já está aberta?",a:`A operação começa em ${Yu("CNF")}. As reservas já estão abertas e a data de entrada precisa ser igual ou posterior a esse dia.`},{q:"Quais tipos de vaga a unidade tem?",a:"Vagas cobertas e descobertas, em uma unidade de 1.500 vagas. Não há serviço de valet em Confins. Como serviços adicionais, estão disponÃveis Seguro, Vaga VIP e Tranca e Leve a Chave."},{q:"Tem transporte até o terminal?",a:"Sim, a unidade tem van até o terminal do Aeroporto de Confins. O trajeto leva cerca de 15 minutos. A frequência exata será divulgada na abertura da operação."},{q:"Onde fica exatamente?",a:`${Rp.formatted}. Para dúvidas antes da abertura, escreva para [email protected].`}],reservationUrl:"/escolher?airport=CNF",bookable:!0,heroImage:DY.url},...CZ(),...SZ(),...SY,...wY];function pt(e){return nl(e)?1/0:e.priceRows.reduce((t,a)=>a.perDay==null||/\bhora\b/i.test(a.label)||a.total==null?t:Math.min(t,a.perDay),1/0)}function X(e){return e.toLocaleString("pt-BR",{style:"currency",currency:"BRL"})}function Nh(e,t){return Kt.find(a=>a.hubSlug===e&&a.slug===t)}function sl(e){return Kt.filter(t=>t.hubSlug===e)}const to={CGH:"Aeroporto de São Paulo / Congonhas",GRU:"Aeroporto Internacional de São Paulo / Guarulhos",VCP:"Aeroporto Internacional de Viracopos / Campinas",CNF:"Aeroporto Internacional de Belo Horizonte / Confins",SDU:"Aeroporto Santos Dumont",GIG:"Aeroporto do Galeão",CWB:"Aeroporto Afonso Pena",BSB:"Aeroporto de BrasÃlia",POA:"Aeroporto Salgado Filho",MCZ:"Aeroporto de Maceió",JPA:"Aeroporto de João Pessoa",LDB:"Aeroporto de Londrina",REC:"Aeroporto Internacional do Recife/Guararapes",NVT:"Aeroporto Internacional de Navegantes",SSA:"Aeroporto Internacional de Salvador",FOR:"Aeroporto Internacional de Fortaleza",FLN:"Aeroporto Internacional de Florianópolis",GYN:"Aeroporto Internacional de Goiânia",VIX:"Aeroporto Internacional de Vitória",CGR:"Aeroporto Internacional de Campo Grande",THE:"Aeroporto de Teresina",CGB:"Aeroporto Internacional Marechal Rondon (Cuiabá)"};function Pa(e,t,a,o,r,n){const i=[`${e}${t?", "+t:""}`,a,`${o} - ${r}
454`,n].filter(Boolean).join(", ");return{street:e,number:t,district:a,city:o,state:r,postalCode:n,country:"BR",formatted:i}}function Ot(e,t){return{label:t,perDay:e,total:e}}function Sa(e){const t=e.address;return{editorialUrl:void 0,editorialLabel:void 0,mapsUrl:Rh(t),mapEmbedQuery:t.formatted,priceCollectedAt:"10 de julho de 2026",dataColeta:"2026-07-10",hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",reservationUrl:"",bookable:!1,...e}}function CZ(){const e=Pa("Avenida Ministro Evandro Lins e Silva","140","Parque Cecap","Guarulhos","SP","07190-017"),t=Pa("Avenida Monteiro Lobato","4250",void 0,"Guarulhos","SP","07180-000"),a=Pa("Rodovia Hélio Smidt","s/n","Ãrea do Aeroporto","Guarulhos","SP","07190-100"),o=Pa("Antiga Rodovia Santos Dumont","Km 64","Jardim Santa Maria II","Campinas","SP","13053-701"),r=Pa("Rodovia Santos Dumont","Km 66","Ãrea do Aeroporto","Campinas","SP","13052-900"),n=Pa("Rua Laviere Pereira da Silva","1305","Parque Vista Alegre","Campinas","SP","13055-609"),i=Pa("Rua Waldemar Amstalden","400",void 0,"Campinas","SP",""),l=Pa("Rua Antônio Luchiari","1000","Distrito Industrial","Campinas","SP",""),c=Pa("Rodovia Santos Dumont","Km 66","CambuÃ","Campinas","SP","13024-020"),d=Pa("Avenida Adélia Issa","999","Zumbi","Lagoa Santa","MG","33230-000"),u=Pa("Rua Gumercino Ribeiro dos Santos","910","Alto dos Ribeiros","Confins","MG","33500-000"),m=Pa("Rua Lapa Vermelha","201","Pedro Henrique","Confins","MG","33500-000"),h=Pa("Rodovia LMG-800","Km 11,5",void 0,"Confins","MG","33500-000"),p=Pa("Rua Milton Teodoro","115",void 0,"Confins","MG","33500-000"),f=Pa("Rodovia LMG-800","3800","Chácara Asa Branca","Lagoa Santa","MG","33400-000"),g=Pa("Rodovia LMG-800","Km 7,9 s/n","Ãrea do Aeroporto","Confins","MG","33500-900");return[Sa({slug:"urban-park",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Urban Park",address:e,geo:{lat:-23.4318,lng:-46.5062},phone:"0800 333 0014",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Traslado gratuito 24h",included:!0},terminals:[{code:"T1",distanceKm:4,minutes:12,via:"Rodovia Hélio Smidt (SP-019)"},{code:"T2",distanceKm:4.5,minutes:13,via:"Rodovia Hélio Smidt (SP-019)"},{code:"T3",distanceKm:4.8,minutes:15,via:"Rodovia Hélio Smidt (SP-019)"}],priceRows:[Ot(26.9,"Diária descoberta (online)"),Ot(36.9,"Diária coberta (online)"),Ot(43.9,"Diária balcão")],pros:["Traslado gratuito 24 horas incluso na diária.","Vagas cobertas e descobertas; seguro Tokio Marine declarado.","Sala VIP para embarque disponÃvel na unidade."],cons:["Diária de balcão significativamente mais alta que a tarifa online."],faq:[{q:"Quanto custa a diária no Urban Park GRU?",a:"A tarifa online publicada em 10/07/2026 é de R$ 26,90 (vaga descoberta) e R$ 36,90 (coberta). O balcão praticava R$ 43,90 na mesma data."},{q:"Tem traslado até o terminal?",a:"Sim, o traslado 24 horas está incluso na diária, com atendimento aos terminais 1, 2 e 3 do Aeroporto de Guarulhos."},{q:"Oferece valet?",a:"Consulte a operadora pelos canais oficiais."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"airport-park",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Airport Park",address:t,geo:{lat:-23.4404,lng:-46.4885},phone:"(11) 2462-5558",coverage:"coberto",valet:!0,transfer:{type:"van",frequency:"Van 24h · T1/T2/T3",included:!0},terminals:[{code:"T1",distanceKm:3.2,minutes:10,via:"Rodovia Hélio Smidt (SP-019)"},{code:"T2",distanceKm:3.5,minutes:11,via:"Rodovia Hélio Smidt (SP-019)"},{code:"T3",distanceKm:3.8,minutes:13,via:"Rodovia Hélio Smidt (SP-019)"}],priceRows:[{label:"Diária",perDay:null,note:"sob consulta na reserva online"}],pros:["Vagas cobertas por sombrite e opção de valet.","Traslado gratuito 24 horas para os três terminais.","Seguro total declarado pela operadora."],cons:["Não publica tabela de preços no site oficial; consulta obrigatória na reserva."],faq:[{q:"Quanto custa estacionar no Airport Park?",a:"A operadora não publica tabela pública. Consulte o valor vigente diretamente no canal oficial da operadora antes de reservar."},{q:"Tem valet?",a:"Sim, a unidade oferece valet além do estacionamento self-park."},{q:"Onde fica?",a:"Av. Monteiro Lobato, 4250, Guarulhos - SP. A cerca de 3â4 km dos terminais."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"estacionamento-oficial-gru-indigo",hubSlug:"estacionamento-aeroporto-guarulhos",iata:"GRU",name:"Estacionamento Oficial GRU (Indigo)",address:a,geo:{lat:-23.4356,lng:-46.4731},phone:"0800 644 0407",coverage:"ambos",valet:!1,transfer:{type:"a-pe",included:!1,note:"Acesso direto aos terminais; T3 com edifÃcio-garagem coberto ligado por passarela."},terminals:[{code:"T1",distanceKm:.2,minutes:3,via:"passarela interna"},{code:"T2",distanceKm:.2,minutes:3,via:"passarela interna"},{code:"T3",distanceKm:.05,minutes:1,via:"edifÃcio-garagem T3 (coberto)"}],priceRows:[{label:"Standard (T1 e T2): até 1 diária",perDay:76,total:76},{label:"Standard: até 2 diárias",perDay:75,total:150},{label:"Standard: até 3 diárias",perDay:71.67,total:215},{label:"Standard: até 4 diárias",perDay:70,total:280},{label:"Standard: até 5 diárias",perDay:70,total:350},{label:"Standard: de 6 a 10 diárias",perDay:null,total:450,note:"total fixo da faixa"},{label:"Standard: de 11 a 17 diárias",perDay:null,total:480,note:"total fixo da faixa"},{label:"Standard: de 18 a 30 diárias",perDay:null,total:505,note:"total fixo da faixa"},{label:"Standard: acima de 30 diárias",perDay:19.9,note:"R$ 505,00 mais R$ 19,90 por diária extra"},{label:"Premium / EdifÃcio Garagem (T2 e T3) e Flex (T3): até 1 diária",perDay:104,total:104},{label:"Premium: até 2 diárias",perDay:100,total:200},{label:"Premium: até 3 diárias",perDay:90,total:270},{label:"Premium: até 4 diárias",perDay:87.5,total:350},{label:"Premium: até 5 diárias",perDay:88,total:440},{label:"Premium: de 6 a 10 diárias",perDay:null,total:540,note:"total fixo da faixa"},{label:"Premium: de 11 a 17 diárias",perDay:null,total:610,note:"total fixo da faixa"},{label:"Premium: de 18 a 30 diárias",perDay:null,total:690,note:"total fixo da faixa"},{label:"Premium: acima de 30 diárias",perDay:22.9,note:"R$ 690,00 mais R$ 22,90 por diária extra"},{label:"Frações por hora (Standard)",perDay:null,note:"até 1h R$ 29,00; até 2h R$ 52,00; até 3h R$ 60,00; até 4h R$ 69,00"},{label:"Frações por hora (Premium)",perDay:null,note:"até 1h R$ 36,00; até 2h R$ 65,00; até 3h R$ 77,00; até 4h R$ 88,00"}],totalForDays:v=>v<=5?[76,150,215,280,350][Math.max(1,v)-1]:v<=10?450:v<=17?480:v<=30?505:Math.round((505+(v-30)*19.9)*100)/100,priceCollectedAt:"28 de setembro de 2026",dataColeta:"2026-09-28",priceNote:"Totais da linha principal: setor Standard. Reserva antecipada pela Indigo Neo (https://paginas.indigoneo.com.br/estacionamento-oficial-aeroporto-guarulhos): diárias a partir de R$ 33,60 no Standard e R$ 42,70 no EdifÃcio Garagem T3, em reservas de 15 dias e sujeitas a disponibilidade; é preço de pacote de 15 dias, não diária avulsa. Em 28/09/2026, o site do aeroporto informava vagas de reserva esgotadas.",pros:["Dentro do aeroporto: acesso direto ao terminal, sem traslado.","EdifÃcio-garagem coberto no T3, ligado por passarela.","VeÃculos segurados contra roubo e furto, conforme a Lei Municipal 13.912/2010."],cons:["Canal de Relacionamento Mensalista ([email protected]), sem valor publicado."],faq:[{q:"Qual o valor do estacionamento oficial do GRU?",a:"Pela tabela oficial conferida em 28/09/2026, no setor Standard (T1 e T2): R$ 76,00 por 1 diária, R$ 450,00 de 6 a 10 diárias, R$ 480,00 de 11 a 17 e R$ 505,00 de 18 a 30. No Premium e EdifÃcio Garagem, R$ 104,00 por 1 diária e R$ 690,00 de 18 a 30."},{q:"E acima de 30 dias?",a:"O pacote de 30 diárias mais R$ 19,90 por diária extra no Standard, ou R$ 22,90 no Premium, EdifÃcio Garagem e Flex."},{q:"A reserva antecipada sai mais barata?",a:"A Indigo Neo anuncia diárias a partir de R$ 33,60 no Standard em reservas de 15 dias, sujeitas a disponibilidade. Em 28/09/2026, o site do aeroporto informava vagas de reserva esgotadas."},{q:"Tem traslado?",a:"Não é necessário: os pátios ficam dentro do aeroporto, com acesso a pé ou por passarela."}],fonteCitacao:"tabela de valores oficial publicada em https://www.gru.com.br/pt/estacionamento (Tabela de Valores_pt_2024_16_12), conferida em 28/09/2026"}),Sa({slug:"virapark",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Virapark",address:o,geo:{lat:-23.04056,lng:-47.13393},phone:"+55 19 98801-3420",email:"[email protected]",legalName:"Traces Estacionamentos e Participações Ltda",taxId:"59.075.010/0003-09",coverage:"coberto",valet:!1,transfer:{type:"van",frequency:"Van a cada 15 minutos",included:!0},terminals:[{code:"Terminal único",distanceKm:3.7,minutes:10,via:"Rodovia Santos Dumont (SP-075)"}],amenities:["Vagas cobertas","Cliente leva a chave","Transfer gratuito","Câmeras 24h","Portaria controlada","Ãrea de espera","Banheiros","Acessibilidade PCD","Wi-Fi gratuito"],priceRows:[Ot(40,"Diária avulsa"),{label:"7 dias (reserva online)",perDay:24.9,total:174.3,note:"7+ dias, reserva online"}],priceCollectedAt:"27 de setembro de 2026",dataColeta:"2026-09-27",pros:["100% de vagas cobertas em regime self-park.","Traslado 24 horas incluso na diária."],cons:["Promoção do plano longo condicionada a estadia de 7 dias ou mais."],faq:[{q:"Quanto custa estacionar no Virapark VCP?",a:"A diária avulsa é R$ 40,00; em estadias de 7 dias ou mais, cai para R$ 24,90/dia (consulta em 27/09/2026)."},{q:"As vagas são cobertas?",a:"Sim, a operadora declara 100% de vagas cobertas."},{q:"Tem traslado?",a:"Sim, traslado gratuito com saÃdas a cada 15 minutos, conforme informação de terceiro publicada em setembro de 2026."}],fonteCitacao:"preços no site oficial da operadora; dados operacionais publicados por terceiro em setembro de 2026"}),Sa({slug:"estacionamento-oficial-vcp-estapar",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Estacionamento Oficial VCP (Estapar)",address:r,geo:{lat:-23.0089,lng:-47.1345},phone:"(19) 3725-5000",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Ãnibus interno no Bolsão Econômico",included:!0,note:"EdifÃcio-garagem com passarela direta ao terminal."},terminals:[{code:"Terminal único",distanceKm:.1,minutes:2,via:"passarela interna (Garagem) / ônibus interno (Bolsão)"}
454],priceRows:[Ot(83,"Garagem coberta (diária)"),Ot(31,"Bolsão Econômico (diária)"),Ot(25,"Reserva online (a partir de)")],pros:["Dentro do aeroporto, com passarela direta na garagem coberta.","Opção econômica (Bolsão) com ônibus interno gratuito."],cons:["Diária de balcão do edifÃcio-garagem é a mais alta do comparativo."],faq:[{q:"Qual o preço do estacionamento oficial de Viracopos?",a:"Em 10/07/2026: R$ 83,00/dia no edifÃcio-garagem coberto e R$ 31,00/dia no Bolsão Econômico. Com reserva online, a partir de R$ 25,00/dia."},{q:"Como faço a reserva online?",a:"Pelo canal oficial Estapar/Zul+ ou pelo Portal Viracopos."}],fonteCitacao:"canal oficial de reservas Estapar/Zul+ e portal oficial do aeroporto"}),Sa({slug:"km64",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"KM64",address:n,geo:{lat:-23.01,lng:-47.118},phone:"(19) 99242-7441",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Traslado gratuito 24h",included:!0},terminals:[{code:"Terminal único",distanceKm:4.5,minutes:6,via:"Rodovia Santos Dumont (SP-075)"}],priceRows:[{label:"Diária descoberta",perDay:23.99,total:23.99},{label:"Diária coberta",perDay:27.99,total:27.99}],priceCollectedAt:"17 de julho de 2026",dataColeta:"2026-07-17",pros:["Vaga descoberta a R$ 23,99/dia e coberta por toldo a R$ 27,99/dia, com traslado gratuito 24h.","Operadora distinta do Virapark, a cerca de 6 minutos do terminal de Viracopos."],cons:["Não publica tabela fechada de 7 ou 30 dias; consulte para estadias longas.","Seguro e valet não informados nos canais oficiais."],faq:[{q:"Quanto custa estacionar no KM64 (VCP)?",a:"A diária é R$ 23,99 (vaga descoberta) e R$ 27,99 (vaga coberta por toldo), conforme o site oficial em 17/07/2026. Valores de 7 e 30 dias não são divulgados publicamente."},{q:"Tem traslado até o terminal?",a:"Sim, traslado gratuito 24 horas até o terminal do Aeroporto de Viracopos, a cerca de 6 minutos."},{q:"à o mesmo que o Virapark?",a:"Não. O KM64 é uma operadora distinta, em endereço próprio (Rua Laviere Pereira da Silva, 1305, Campinas)."}],fonteCitacao:"site oficial da operadora (km64.com.br)"}),Sa({slug:"yellow-parking",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Yellow Parking",address:i,geo:{lat:-23.005,lng:-47.125},phone:"(19) 99592-2925",email:"[email protected]",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Van gratuita a cada ~30 min, ~5 min ao terminal",included:!0},insurance:"Seguro garagista BMG",terminals:[{code:"Terminal único",distanceKm:4,minutes:5,via:"Rodovia Santos Dumont (SP-075)"}],priceRows:[{label:"Diária descoberta",perDay:24.99,total:24.99,note:"mÃnimo 2 diárias"},{label:"Diária coberta",perDay:29.99,total:29.99,note:"mÃnimo 2 diárias"},{label:"30 dias descoberta (pacote 18â30 dias)",perDay:9.5,total:285},{label:"30 dias coberta (pacote 18â30 dias)",perDay:13.17,total:395}],priceCollectedAt:"17 de julho de 2026",dataColeta:"2026-07-17",pros:["Vagas cobertas e descobertas, com traslado gratuito a cada ~30 min, a ~5 min do terminal.","Pacote de 18 a 30 dias a partir de R$ 285 (descoberta) no total."],cons:["Diária exige mÃnimo de 2 diárias; não há tarifa de 1 dia isolado.","Não há pacote de 7 dias (o menor começa em 13 dias)."],faq:[{q:"Quanto custa no Yellow Parking Viracopos?",a:"Diária de R$ 24,99 (descoberta) e R$ 29,99 (coberta), com mÃnimo de 2 diárias. Para 18 a 30 dias há pacote de R$ 285 (descoberta) e R$ 395 (coberta) no total. Coleta em 17/07/2026 no site oficial."},{q:"Tem traslado?",a:"Sim, van gratuita a cada cerca de 30 minutos, a aproximadamente 5 minutos do terminal de Viracopos."},{q:"As vagas têm seguro?",a:"A operadora declara seguro garagista BMG; o valor de cobertura não é divulgado publicamente."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"br-parking",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"BR Parking",address:l,geo:{lat:-22.993,lng:-47.113},phone:"(19) 99885-7937",email:"[email protected]",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Van gratuita ao terminal",included:!0},terminals:[{code:"Terminal único",distanceKm:4.5,minutes:10,via:"Rodovia Santos Dumont (SP-075)"}],priceRows:[{label:"Diária descoberta (online)",perDay:30,total:30},{label:"Diária coberta (online)",perDay:35,total:35},{label:"Diária descoberta (balcão)",perDay:35,total:35},{label:"Diária coberta (balcão)",perDay:40,total:40}],priceCollectedAt:"17 de julho de 2026",dataColeta:"2026-07-17",pros:["Desconto na reserva online: descoberta R$ 30/dia (vs R$ 35 no balcão).","Van gratuita ao terminal; vizinho do Bandeira Park na Rua Antônio Luchiari."],cons:["Cobra por diária multiplicada pelos dias; sem pacote fechado de 7 ou 30 dias.","Seguro não declarado nos canais oficiais."],faq:[{q:"Qual o pre
454ço do BR Parking Viracopos?",a:"Na reserva online: R$ 30/dia (descoberta) e R$ 35/dia (coberta). No balcão: R$ 35 e R$ 40/dia. Coleta em 17/07/2026 no site oficial. Não há pacote fechado de 7 ou 30 dias."},{q:"Tem traslado?",a:"Sim, sistema gratuito de vans ao terminal de Viracopos; a frequência não é divulgada."},{q:"Onde fica?",a:"Rua Antônio Luchiari, 1000, Distrito Industrial, Campinas, na mesma via do Bandeira Park (nº 1100)."}],fonteCitacao:"site oficial da operadora (calcule-a-tarifa)"}),Sa({slug:"garage-inn",hubSlug:"estacionamento-aeroporto-viracopos",iata:"VCP",name:"Garage Inn",address:c,geo:{lat:-23.006,lng:-47.127},phone:"(19) 99110-4651",coverage:"ambos",valet:!0,transfer:{type:"van",frequency:"Traslado gratuito 24h, a cada 20â30 min",included:!0},insurance:"Seguro Porto Seguro",terminals:[{code:"Terminal único",distanceKm:4,minutes:8,via:"Rodovia Santos Dumont (SP-075)"}],priceRows:[{label:"Diária (online)",perDay:45.9,total:45.9},{label:"Diária (balcão)",perDay:59.99,total:59.99},{label:"30 dias",perDay:45.9,total:1377}],priceCollectedAt:"17 de julho de 2026",dataColeta:"2026-07-17",pros:["Traslado gratuito 24h (a cada 20â30 min) e serviço de valet.","Seguro Porto Seguro declarado pela operadora."],cons:["Tarifa plana (R$ 45,90/dia online), sem desconto por permanência longa.","Diária de balcão a R$ 59,99."],faq:[{q:"Quanto custa o Garage Inn Viracopos?",a:"Diária online de R$ 45,90 (R$ 59,99 no balcão), em tarifa plana. 30 dias somam R$ 1.377 (R$ 45,90/dia). Coleta em 17/07/2026 no site oficial."},{q:"Tem traslado e valet?",a:"Sim: traslado gratuito 24h (a cada 20â30 min) e serviço de valet, conforme a página oficial da unidade."},{q:"Tem seguro?",a:"A operadora declara cobertura Porto Seguro; o valor não é divulgado publicamente."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"multipark-aero-confins",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"MultiPark Aero Confins",address:d,geo:{lat:-19.6205,lng:-43.9885},phone:"(31) 97157-2365",coverage:"coberto",valet:!1,transfer:{type:"van",frequency:"Traslado 24h incluso",included:!0},terminals:[{code:"Terminal único",distanceKm:6,minutes:12,via:"Rodovia LMG-800"}],priceRows:[Ot(34.9,"Diária (1ª a 4ª)"),Ot(9.9,"Diária (a partir da 5ª)")],pros:["Desconto acentuado a partir da 5ª diária.","Vagas cobertas com traslado incluso."],cons:["Diária inicial acima da média de Confins."],faq:[{q:"Quanto custa a diária no MultiPark Aero Confins?",a:"R$ 34,90 nas quatro primeiras diárias e R$ 9,90 a partir da quinta, conforme coleta em 10/07/2026."},{q:"Tem traslado?",a:"Sim, traslado gratuito 24 horas até o terminal do Aeroporto de Confins."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"aeropark-confins",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"AeroPark Confins",address:u,geo:{lat:-19.626,lng:-43.97},phone:"(31) 99352-0969",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Traslado 24h, 4 min ao terminal",included:!0},terminals:[{code:"Terminal único",distanceKm:4.5,minutes:4,via:"Rodovia LMG-800"}],priceRows:[Ot(20,"Vaga descoberta"),Ot(26.9,"Vaga coberta"),Ot(30,"Vaga em galpão"),Ot(17,"7+ dias descoberta"),Ot(18,"7+ dias coberta"),Ot(25,"7+ dias galpão")],pros:["Três categorias de vaga (descoberta, coberta e galpão).","Seguro Porto Seguro e vistoria fotográfica declarados.","Traslado gratuito 24 horas."],cons:["Consulte a operadora sobre polÃtica de reserva e cancelamento."],faq:[{q:"Qual o preço no AeroPark Confins?",a:"Diária avulsa: R$ 20,00 (descoberta), R$ 26,90 (coberta) e R$ 30,00 (galpão). Em estadias de 7 dias ou mais, cai para R$ 17,00/dia (descoberta), R$ 18,00/dia (coberta) e R$ 25,00/dia (galpão). Coleta em 10/07/2026."},{q:"Como é a segurança?",a:"A operadora declara seguro Porto Seguro e vistoria fotográfica na entrada e saÃda."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"space-park",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Space Park",address:m,geo:{lat:-19.6265,lng:-43.9682},phone:"(31) 3665-9990",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Van · ~4 min ao terminal",included:!0},terminals:[{code:"Terminal único",distanceKm:2.5,minutes:4,via:"vias internas de Confins"}],priceRows:[Ot(24,"Vaga descoberta"),Ot(32,"Vaga coberta"),Ot(40,"Tarifa mÃnima 24h"),{label:"Semana descoberta",perDay:20,total:140},{label:"Semana coberta",perDay:24,total:168}],pros:["Van gratuita com deslocamento estimado de 4 minutos ao terminal.","Seguro Porto Seguro Auto declarado pela operadora."],cons:["Cobrança mÃnima de 24 horas mesmo em estadia curta."],faq:[{q:"Quanto custa a diária no Space Park?",a:"R$ 24,00 (descoberta) e R$ 32,00 (coberta). Tarifa mÃnima de 24 horas fica em R$ 40,00 (coleta em 10/07/2026)."},{q:"Qual o tempo até o terminal?",a:"Cerca de 4 minutos de van até o terminal do Aeroporto de Confins."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"park-confins",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Park Confins",address:h,geo:{lat:-19.625,lng:-43.982},phone:"(31) 3686-0630",coverage:"coberto",valet:!1,transfer:{type:"van",frequency:"Vans gratuitas",included:!0},terminals:[{code:"Terminal único",distanceKm:3,minutes:6,via:"Rodovia LMG-800"}],priceRows:[Ot(35,"Diária (a partir de)"),{label:"Semanal (a partir de)",perDay:Pp(149/7),total:149}],pros:["Vagas cobertas em regime self-parking.","Sala VIP e estacionamento segurado declarados."],
454cons:["Tarifa avulsa acima da média das opções próximas."],faq:[{q:"Qual o preço do Park Confins?",a:"A diária parte de R$ 35,00 e o pacote semanal, de R$ 149,00, conforme coleta em 10/07/2026."},{q:"Tem sala VIP?",a:"Sim, a unidade oferece sala VIP para os clientes."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"central-park-confins",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"Central Park Confins",address:p,geo:{lat:-19.632,lng:-43.972},phone:"(31) 98423-9182",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Ida e volta gratuitos, 3 min ao terminal",included:!0},terminals:[{code:"Terminal único",distanceKm:2.8,minutes:3,via:"vias internas de Confins"}],priceRows:[Ot(22,"Vaga descoberta"),Ot(29,"Vaga coberta"),{label:"7+ dias descoberta",perDay:20,total:140},{label:"7+ dias coberta",perDay:24,total:168}],undisclosedFrom:{minDays:16,reason:"A tabela publicada para o perÃodo de 16 a 30 dias é ambÃgua nos nossos registros de coleta."},pros:["Traslado gratuito de ida e volta ao terminal.","Seguro Porto Seguro declarado pela operadora."],cons:["Consulte a operadora sobre horários da van fora do pico."],faq:[{q:"Quanto custa a diária no Central Park Confins?",a:"Diária avulsa: R$ 22,00 (descoberta) e R$ 29,00 (coberta). Semana (7+ dias): R$ 20,00/dia (descoberta) e R$ 24,00/dia (coberta). Coleta em 10/07/2026."},{q:"Tem seguro?",a:"A operadora declara cobertura Porto Seguro."},{q:"Quanto custa 30 dias?",a:"A tabela publicada para o perÃodo de 16º ao 30º dia é ambÃgua entre nossos registros. Consulte a operadora diretamente para o valor vigente de 30 dias antes de reservar."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"superpark",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"SuperPark",address:f,geo:{lat:-19.62,lng:-43.99},phone:"(31) 99503-0368",coverage:"ambos",valet:!1,transfer:{type:"van",frequency:"Traslado 24h",included:!0},terminals:[{code:"Terminal único",distanceKm:5.2,minutes:10,via:"Rodovia LMG-800"}],priceRows:[Ot(45,"Diária"),{label:"Semanal",perDay:Pp(180/7),total:180},{label:"Mensal",perDay:Pp(400/30),total:400},{label:"Hora adicional",perDay:2,note:"após a diária"}],pros:["750 vagas (620 cobertas), com traslado 24h e sala VIP."],cons:["Diária cheia acima da média das opções de Confins."],faq:[{q:"Qual o preço no SuperPark?",a:"Diária avulsa R$ 45,00, semanal R$ 180,00 (R$ 25,71/dia) e mensal R$ 400,00 (R$ 13,33/dia). Hora adicional R$ 2,00. Coleta em 10/07/2026."},{q:"Quantas vagas cobertas?",a:"A operadora declara 620 vagas cobertas em um total de 750."}],fonteCitacao:"site oficial da operadora"}),Sa({slug:"bh-airport-oficial-economico-e3",hubSlug:"estacionamento-aeroporto-confins",iata:"CNF",name:"BH Airport Oficial (Econômico E3)",address:g,geo:{lat:-19.6335,lng:-43.9686},phone:"0800 037 1547",coverage:"descoberto",valet:!1,transfer:{type:"a-pe",included:!1,note:"280 m a pé até o terminal."},terminals:[{code:"Terminal único",distanceKm:.28,minutes:5,via:"passeio interno (a pé)"}],priceRows:[Ot(60,"Diária"),{label:"Pacote 7 diárias (reserva 72h antes)",perDay:Pp(189/7),total:189,note:"reserva com 72h de antecedência"}],pros:["Dentro do aeroporto: 280 m a pé até o terminal, sem traslado.","Pacote de 7 diárias com desconto para reservas com 72h de antecedência."],cons:["Vagas descobertas.","Diária cheia é a mais alta entre as opções de Confins."],faq:[{q:"Qual o preço do estacionamento oficial de Confins (E3)?",a:"A diária é R$ 60,00 e o pacote de 7 diárias parte de R$ 189,00 com reserva feita 72 horas antes (coleta em 10/07/2026)."},{q:"Tem traslado?",a:"Não é necessário. O E3 fica a 280 metros a pé do terminal."}],fonteCitacao:"site oficial da concessionária do aeroporto"})]}function PZ(e,t="https://www.xpark.ai",a){var w,R,C;const o=pt(e),r=`${t}/aeroportos/${e.hubSlug}/${e.slug}`,n={GRU:"Guarulhos",VCP:"Viracopos",CNF:"Confins",CGH:"Congonhas",SDU:"Santos Dumont",GIG:"Galeão",CWB:"Curitiba",BSB:"BrasÃlia",POA:"Porto Alegre",MCZ:"Maceió",JPA:"João Pessoa",LDB:"Londrina",REC:"Recife",NVT:"Navegantes",SSA:"Salvador",FOR:"Fortaleza",FLN:"Florianópolis",GYN:"Goiânia",VIX:"Vitória",CGR:"Campo Grande",THE:"Teresina",CGB:"Cuiabá"},i=`${e.name} - Estacionamento Aeroporto de ${n[e.iata]} (${e.iata})`,l=e.slug==="bandeira-park"&&e.bookable,c=e.heroImage?[e.heroImage.startsWith("http")?e.heroImage:`${t}${e.heroImage}`]:[],d={"@type":["ParkingFacility","LocalBusiness"],"@id":`${r}#parking`,name:i,url:r,description:`Estacionamento próximo ao ${to[e.iata]}${(w=e.transfer)!=null&&w.included?", com traslado até o terminal":""}.${l?" A reserva é feita pelo xpark e o atendimento no pátio é do Bandeira Park.":""}`,...c.length?{image:c}:{}
454,...e.phone?{telephone:e.phone}:{},...e.email?{email:e.email}:{},...e.legalName?{legalName:e.legalName}:{},...e.taxId?{taxID:e.taxId}:{},...e.mapsProfileUrl?{hasMap:e.mapsProfileUrl,sameAs:[e.mapsProfileUrl]}:{},address:{"@type":"PostalAddress",streetAddress:`${e.address.street}${e.address.number?", "+e.address.number:""}`,addressLocality:e.address.city,addressRegion:e.address.state,postalCode:e.address.postalCode,addressCountry:e.address.country},...e.geo?{geo:{"@type":"GeoCoordinates",latitude:e.geo.lat,longitude:e.geo.lng}}:{},containedInPlace:{"@type":"Airport",name:to[e.iata],iataCode:e.iata},...e.hoursSchemaOrg==="Mo-Su 00:00-23:59"?{openingHoursSpecification:{"@type":"OpeningHoursSpecification",dayOfWeek:["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],opens:"00:00",closes:"23:59"}}:e.hoursSchemaOrg?{openingHours:e.hoursSchemaOrg}:{}},u=e.amenities??[...(R=e.transfer)!=null&&R.included?["Traslado gratuito ao terminal"]:[],...e.valet?["Serviço Valet"]:[],...e.insurance?[e.insurance]:[]];u.length&&(d.amenityFeature=u.map(P=>({"@type":"LocationFeatureSpecification",name:P,value:!0})));const m=e.priceRows.filter(P=>P.perDay!=null&&P.total!=null&&!/\bhora\b/i.test(P.label)).map(P=>({row:P,min:Number((P.label.match(/(\d+)/)??[])[1]??1),open:/\+/.test(P.label)})).sort((P,N)=>P.min-N.min),h=m.map(P=>P.row.perDay),p=h.length?Math.max(...h):NaN;Number.isFinite(o)&&Number.isFinite(p)&&(d.priceRange=`${X(o)} - ${X(p)} por diária`);const f={"@type":"WebPage","@id":`${r}#webpage`,url:r,name:i,isPartOf:{"@id":`${t}/#website`},about:{"@id":`${r}#parking`},inLanguage:"pt-BR"},g=[d,f],b=m.filter(P=>P.row.perDay!=null);if(e.bookable&&b.length){const P=cd(e.iata),N=new Date().toISOString().slice(0,10),E=P!=null&&P>N,A=E?"https://schema.org/PreOrder":"https://schema.org/InStock",$={"@type":"Product","@id":`${r}#product`,name:i,description:`Diária de estacionamento ${e.name} ${e.iata}${(C=e.transfer)!=null&&C.included?" com traslado até o terminal":""}.`,brand:{"@type":"Brand",name:e.name},...c.length?{image:c}:{},url:r,offers:{"@type":"AggregateOffer",priceCurrency:"BRL",lowPrice:Math.min(...b.map(O=>O.row.perDay)).toFixed(2),highPrice:Math.max(...b.map(O=>O.row.perDay)).toFixed(2),offerCount:b.length,availability:A,...E?{availabilityStarts:P}:{},priceValidUntil:`${new Date().getFullYear()}-12-31`,offers:b.map((O,V)=>{const T=b[V+1],D=Number((O.row.label.match(/\d+\s+a\s+(\d+)/)??[])[1]),F=Number.isFinite(D)&&D>0?D:O.open||!T?void 0:T.min-1;return{"@type":"Offer",name:O.row.label,url:e.iata==="CGH"&&l?`${t}${e.reservationUrl}`:r,availability:A,priceSpecification:{"@type":"UnitPriceSpecification",price:O.row.perDay.toFixed(2),priceCurrency:"BRL",unitText:"dia",eligibleQuantity:{"@type":"QuantitativeValue",minValue:O.min,...F!=null&&F>=O.min?{maxValue:F}:{},unitText:"dias"}}}})}};a&&a.ratingCount>=3&&($.aggregateRating={"@type":"AggregateRating",ratingValue:a.ratingValue,ratingCount:a.ratingCount,reviewCount:a.reviewCount,bestRating:5,worstRating:1},$.review=a.reviews.map(O=>({"@type":"Review",reviewRating:{"@type":"Rating",ratingValue:O.rating,bestRating:5,worstRating:1},author:{"@type":"Person",name:O.author},reviewBody:O.body,datePublished:O.date}))),g.push($)}const v={"@context":"https://schema.org","@graph":g},y={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"InÃcio",item:`${t}/`},{"@type":"ListItem",position:2,name:"Aeroportos",item:`${t}/aeroportos`},{"@type":"ListItem",position:3,name:e.address.city,item:`${t}/aeroportos/${e.hubSlug}`},{"@type":"ListItem",position:4,name:e.name,item:r}]},k=e.faq.length?{"@context":"https://schema.org","@type":"FAQPage",mainEntity:e.faq.map(P=>({"@type":"Question",name:P.q,acceptedAnswer:{"@type":"Answer",text:P.a}}))}:null;return k?[v,y,k]:[v,y]}function SZ(){return[{slug:"bandeira-park",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Bandeira Park",brandGroup:"Grupo Bandeira Park",partnershipDisclosure:jh,address:{street:"R. Vieira de Morais",number:"2110",district:"Campo Belo",city:"São Paulo",state:"SP",postalCode:"04617-007",country:"BR",formatted:"R. Vieira de Morais, 2110, Campo Belo, São Paulo - SP, 04617-007"},geo:{lat:-23.6278588,lng:-46.6633789},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Vieira%20de%20Morais%2C%202110%2C%20Campo%20Belo%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004617-007",mapEmbedQuery:"R. Vieira de Morais, 2110, Campo Belo, São Paulo - SP, 04617-007",phone:"+551135822007",email:"[email protected]",hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.3,minutes:5,via:"a pé pelo túnel coberto ou pela passarela"}],priceRows:Sp,totalForDays:e=>zt(je(At("CGH","coberta"),e)),priceCollectedAt:"26 de setembro de 2026",priceNote:Sh,pros:["Opera com o nome comercial Aerovalet em Congonhas (Aerovalet Congonhas), operação do Grupo Bandeira Park.","Funciona 24 horas, todos os dias.","Fica a cerca de 300 metros do terminal, com acesso a pé em aproximadamente 5 minutos."],cons:[],faq:[{q:"O estacionamento em Congonhas tem traslado ou van até o terminal?",a:"Não. Em Congonhas não há traslado nem van. O acesso ao terminal é a pé, em cerca de 5 minutos, aproximadamente 300 metros."},{q:"O Aerovalet Congonhas é o Bandeira Park?",a:"Sim. O pátio da R. Vieira de Morais, 2110, em Campo Belo, funciona com o nome comercial Aerovalet e é operação do Grupo Bandeira Park. Quem procura Aerovalet Congonhas está nesta ficha."},{q:"Quanto custa estacionar no Aerovalet Congonhas?",a:`Com o cupom XPK26 (26% de desconto), a diária coberta fica em ${X(Sp[0].perDay)} de 1 a 6 diárias e cai para ${X(Sp[Sp.length-1].perDay)} por dia a partir de 31 diárias. A tabela completa está nesta página.`},{q:"Onde fica o Aerovalet Congonhas?",a:"O endereço é R. Vieira de Morais, 2110, Campo Belo, São Paulo - SP, 04617-007. Fica a cerca de 300 metros do terminal, com acesso a pé em aproximadamente 5 minutos. Não há traslado nem van em Congonhas."},{q:"Quanto tempo leva do estacionamento até o terminal?",a:"Cerca de 5 minutos a pé. O Bandeira Park CGH fica na R. Vieira de Morais, 2110, no Campo Belo, a cerca de 300 metros do terminal do Aeroporto de Congonhas. O caminho é feito por túnel coberto, com escadas rolantes, ao lado da estação Aeroporto de Congonhas do Metrô e Monotrilho. O acesso pelo túnel funciona das 9h à s 16h, de segunda a sexta-feira; fora desse horário, o acesso é feito pela passarela sobre a Av. Washington
454LuÃs. A pé: saia do estacionamento no subsolo, entre no túnel de pedestres em direção ao aeroporto e suba pelas escadas rolantes até o nÃvel de embarque. Metrô: conexão direta com a estação Aeroporto de Congonhas do Metrô e Monotrilho. Pátio auxiliar: R. dos Chanés, 621. A recepção e a entrega acontecem sempre no endereço principal."},{q:"Tem traslado ou van em Congonhas?",a:"Não. Em Congonhas não há traslado nem van. O terminal fica a cerca de 5 minutos a pé, por túnel coberto em dias úteis das 9h à s 16h ou pela passarela fora desse horário."},{q:"Como reservar?",a:"Pelo xpark: escolha as datas e reserve online a vaga coberta em Congonhas, com pagamento por Pix ou cartão."}],fonteCitacao:"bandeirapark.com.br (tabela oficial)",dataColeta:"2026-09-26",heroImage:mZ.url,reservationUrl:"/escolher?airport=CGH",bookable:!0,mapsProfileUrl:"https://maps.google.com/?cid=14976891516973418569&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYASAA",amenities:["Câmeras 24h","Banheiros","Atendimento 24 horas","Portaria controlada","Self-park","Máquina de snacks e bebidas","Seguro voo","Estacionamento segurado","Próximo ao terminal"]},{slug:"plenty-park",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Plenty Park",address:{street:"R. Nhu-Guaçu",number:"211",district:"Vila Congonhas",city:"São Paulo",state:"SP",postalCode:"04626-911",country:"BR",formatted:"R. Nhu-Guaçu, 211, Vila Congonhas, São Paulo - SP, 04626-911"},geo:{lat:-23.6280877,lng:-46.6645746},mapsUrl:"https://www.google.com/maps/search/?api=1&query=R.%20Nhu-Gua%C3%A7u%2C%20211%2C%20Vila%20Congonhas%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004626-911",mapEmbedQuery:"R. Nhu-Guaçu, 211, Vila Congonhas, São Paulo - SP, 04626-911",phone:"+5511960220027",email:"[email protected]",hours:"Atendimento 24 horas, todos os dias",hoursSchemaOrg:"Mo-Su 00:00-23:59",coverage:"coberto",valet:!1,terminals:[{code:"Terminal",distanceKm:.86}],priceRows:[{label:"Diária coberta (online)",perDay:null,note:"não vendida avulsa na reserva online"},{label:"7 dias coberta",perDay:26.9,total:188.3,originalPerDay:38,note:"reserva online"},{label:"15 dias coberta",perDay:25.9,total:388.5,originalPerDay:35,note:"reserva online"},{label:"30 dias coberta",perDay:25.9,total:777,originalPerDay:35,note:"reserva online"}],priceCollectedAt:"26 de setembro de 2026",priceNote:"Fonte do preço: tabela de reserva online do parceiro publicada por terceiro. Referência 26 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Funciona 24 horas, todos os dias.","Fica a 0,86 km do terminal."],cons:["Não vende diária avulsa na reserva online."],faq:[{q:"Quanto custa estacionar no Plenty Park?",a:"Pelo levantamento de preços de terceiro (26 de setembro de 2026), o menor valor por dia é R$ 25,90 (15 dias coberta). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Plenty Park?",a:"O endereço é R. Nhu-Guaçu, 211, Vila Congonhas, São Paulo - SP, 04626-911. Fica a 0,86 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://plentyparkcongonhas.com.br/."}],fonteCitacao:"bandeirapark.com.br (tabela oficial)",dataColeta:"2026-09-26",reservationUrl:"",bookable:!1,taxId:"52.794.990/0001-80",mapsProfileUrl:"https://maps.google.com/?cid=5536157953399415448&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYASAA",amenities:["Câmeras 24h","Banheiros","Atendimento 24 horas","Portaria controlada","Seguro voo","Estacionamento segurado","Manutenção de bateria"]},{slug:"congonhas-park",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Congonhas Park",address:{street:"Av. Washington LuÃs",number:"6915",district:"Campo Belo",city:"São Paulo",state:"SP",country:"BR",formatted:"Av. Washington LuÃs, 6915, Campo Belo, São Paulo - SP"},geo:{lat:-23.623323,lng:-46.661947},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Washington%20Lu%C3%ADs%2C%206915%2C%20Campo%20Belo%2C%20S%C3%A3o%20Paulo%20-%20SP",mapEmbedQuery:"Av. Washington
454LuÃs, 6915, Campo Belo, São Paulo - SP",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.64}],priceRows:[{label:"Diária (a partir de)",perDay:29.9,total:29.9}],priceCollectedAt:"setembro de 2026",priceNote:"Fonte do preço: preço citado em texto por terceiro. Referência ; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,64 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Congonhas Park?",a:"Pelo levantamento de preços de terceiro (setembro de 2026), a diária parte de R$ 29,90 (diária (a partir de)). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Congonhas Park?",a:"O endereço é Av. Washington LuÃs, 6915, Campo Belo, São Paulo - SP. Fica a 0,64 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://congonhaspark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJua0LFXBazpQR3TgnvFEV23Q"},{slug:"facility",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Facility Estacionamento",address:{street:"Vila Congonhas",city:"São Paulo",state:"SP",postalCode:"04626-911",country:"BR",formatted:"Vila Congonhas, São Paulo - SP, 04626-911"},geo:{lat:-23.6253174,lng:-46.6626227},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Vila%20Congonhas%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004626-911",mapEmbedQuery:"Vila Congonhas, São Paulo - SP, 04626-911",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.64}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,64 km do terminal."],cons:["Nota 3,9 no Google, com 197 avaliações (consulta de 20 de setembro de 2026).","Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Facility Estacionamento?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Facility Estacionamento?",a:"O endereço é Vila Congonhas, São Paulo - SP, 04626-911. Fica a 0,64 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://facilityestacionamento.com.br/app.site_unidades."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"one-parking",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"One Parking Congonhas",address:{street:"Av. Washington LuÃs",number:"6901",district:"Campo Belo",city:"São Paulo",state:"SP",postalCode:"04627-005",country:"BR",formatted:"Av. Washington LuÃs, 6901, Campo Belo, São Paulo - SP, 04627-005"},geo:{lat:-23.623508,lng:-46.661972},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Washington%20Lu%C3%ADs%2C%206901%2C%20Campo%20Belo%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004627-005",mapEmbedQuery:"Av. Washington LuÃs, 6901, Campo Belo, São Paulo - SP, 04627-005",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.64}],priceRows:[{label:"Diária",perDay:45,total:45}],priceCollectedAt:"5 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 5 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,64 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no One Parking Congonhas?",a:"Pelo levantamento de preços de terceiro (5 de setembro de 2026), a diária parte de R$ 45,00 (diária). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o One Parking Congonhas?",a:"O endereço é Av. Washington LuÃs, 6901, Campo Belo, São Paulo - SP, 04627-005. Fica a 0,64 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.oneparkingcongonhas.com/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-05",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJMVtCFnBazpQRfp9bVgnrbd8"},{slug:"multipark",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"MultiPark (unidade Congonhas)",address:{street:"Rua Baronesa de Bela Vista",number:"499",city:"São Paulo",state:"SP",postalCode:"04612-002",country:"BR",formatted:"Rua Baronesa de Bela Vista, 499, São Paulo - SP, 04612-002"},geo:{lat:-23.62229,lng:-46.662772},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Baronesa%20de%20Bela%20Vista%2C%20499%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004612-002",mapEmbedQuery:"Rua Baronesa de Bela Vista, 499, São Paulo - SP, 04612-002",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.78}],priceRows:[{label:"Diária",perDay:40,total:40}],priceCollectedAt:"5 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 5 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,78 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no MultiPark (unidade Congonhas)?",a:"Pelo levantamento de preços de terceiro (5 de setembro de 2026), a diária parte de R$ 40,00 (diária
454). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o MultiPark (unidade Congonhas)?",a:"O endereço é Rua Baronesa de Bela Vista, 499, São Paulo - SP, 04612-002. Fica a 0,78 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.multipark.com.br/aeroporto-congonhas-multipark."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-05",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJe3AXs3FazpQR9JUlpF5CMqU"},{slug:"the-parking",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"The Parking Estacionamento",address:{street:"Av. Washington LuÃs",number:"7135",district:"Santo Amaro",city:"São Paulo",state:"SP",postalCode:"04627-006",country:"BR",formatted:"Av. Washington LuÃs, 7135, Santo Amaro, São Paulo - SP, 04627-006"},geo:{lat:-23.621293,lng:-46.662167},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Av.%20Washington%20Lu%C3%ADs%2C%207135%2C%20Santo%20Amaro%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004627-006",mapEmbedQuery:"Av. Washington LuÃs, 7135, Santo Amaro, São Paulo - SP, 04627-006",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.79}],priceRows:[{label:"Diária",perDay:30,total:30}],priceCollectedAt:"5 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 5 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 0,79 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no The Parking Estacionamento?",a:"Pelo levantamento de preços de terceiro (5 de setembro de 2026), a diária parte de R$ 30,00 (diária). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o The Parking Estacionamento?",a:"O endereço é Av. Washington LuÃs, 7135, Santo Amaro, São Paulo - SP, 04627-006. Fica a 0,79 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.theparking.com.br/aeroporto-congonhas/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-05",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJ_2EZ7H9bzpQRZOD-lpFEg40"},{slug:"grand-parking",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Grand Parking",address:{street:"Rua Baronesa de Bela Vista",number:"228",district:"Vila Congonhas",city:"São Paulo",state:"SP",postalCode:"04612-001",country:"BR",formatted:"Rua Baronesa de Bela Vista, 228, Vila Congonhas, São Paulo - SP, 04612-001"},geo:{lat:-23.619924,lng:-46.663211},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Baronesa%20de%20Bela%20Vista%2C%20228%2C%20Vila%20Congonhas%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004612-001",mapEmbedQuery:"Rua Baronesa de Bela Vista, 228, Vila Congonhas, São Paulo - SP, 04612-001",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:.98}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 0,98 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Grand Parking?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Grand Parking?",a:"O endereço é Rua Baronesa de Bela Vista, 228, Vila Congonhas, São Paulo - SP, 04612-001. Fica a 0,98 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://www.grandparking.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; preço citado em texto por terceiro",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJ-56J1XNazpQRaTZLVDPSb_U"},{slug:"arai-park",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Arai Park",address:{street:"Rua Barão de SuruÃ",number:"46",district:"Campo Belo",city:"São Paulo",state:"SP",country:"BR",formatted:"Rua Barão de SuruÃ, 46, Campo Belo, São Paulo - SP"},geo:{lat:-23.619231,lng:-46.6631743},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Bar%C3%A3o%20de%20Suru%C3%AD%2C%2046%2C%20Campo%20Belo%2C%20S%C3%A3o%20Paulo%20-%20SP",mapEmbedQuery:"Rua Barão de SuruÃ, 46, Campo Belo, São Paulo - SP",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.03}],priceRows:[{label:"Diária",perDay:null,note:"não divulgado publicamente"}],priceCollectedAt:"setembro de 2026",pros:["Fica a 1,03 km do terminal."],cons:["Não encontramos preço publicado em fonte pública consultada."],faq:[{q:"Quanto custa estacionar no Arai Park?",a:"A operadora não publica tabela de preços nas fontes que consultamos. Consulte o valor vigente diretamente com o estacionamento."},{q:"Onde fica o Arai Park?",a:"O endereço é Rua Barão de SuruÃ, 46, Campo Belo, São Paulo - SP. Fica a 1,03 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://araipark.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026",dataColeta:"2026-09-27",reservationUrl:"",bookable:!1},{slug:"express-parking",hubSlug:"estacionamento-aeroporto-congonhas",iata:"CGH",name:"Express Parking",address:{street:"Rua Zacarias de Góis",number:"1859",city:"São Paulo",state:"SP",postalCode:"04610-005",country:"BR",formatted:"Rua Zacarias de Góis, 1859, São Paulo - SP, 04610-005"}
454,geo:{lat:-23.618126,lng:-46.666974},mapsUrl:"https://www.google.com/maps/search/?api=1&query=Rua%20Zacarias%20de%20G%C3%B3is%2C%201859%2C%20S%C3%A3o%20Paulo%20-%20SP%2C%2004610-005",mapEmbedQuery:"Rua Zacarias de Góis, 1859, São Paulo - SP, 04610-005",hours:"Horário não informado pela fonte",coverage:"nao-informado",valet:!1,terminals:[{code:"Terminal",distanceKm:1.39}],priceRows:[{label:"Diária",perDay:40,total:40},{label:"15 dias",perDay:40,total:600},{label:"30 dias",perDay:20,total:600}],priceCollectedAt:"5 de setembro de 2026",priceNote:"Fonte do preço: pesquisa de preço de terceiro. Referência 5 de setembro de 2026; coletado pelo xpark em 27 de setembro de 2026.",pros:["Fica a 1,39 km do terminal."],cons:[],faq:[{q:"Quanto custa estacionar no Express Parking?",a:"Pelo levantamento de preços de terceiro (5 de setembro de 2026), a diária parte de R$ 40,00 (diária), e em estadias longas o valor cai para R$ 20,00 por dia (30 dias). Confirme o valor vigente no canal oficial antes de reservar."},{q:"Onde fica o Express Parking?",a:"O endereço é Rua Zacarias de Góis, 1859, São Paulo - SP, 04610-005. Fica a 1,39 km do terminal, por medição de terceiro."},{q:"Como reservar?",a:"Pelos canais oficiais da operadora: https://expressestacionamento.com.br/."}],fonteCitacao:"levantamento de preços de terceiro, coletado em setembro de 2026; pesquisa de preço de terceiro",dataColeta:"2026-09-05",reservationUrl:"",bookable:!1,mapsProfileUrl:"https://www.google.com/maps/place/?q=place_id:ChIJA570WHNazpQR0QIKD7iKPLs"}]}const RZ=1,jZ="cfa77ca1-9bac-4364-a807-3833e318e269",NZ="386e8409-a3d6-4603-9e31-4b97b7d57e01",AZ="/__l5e/assets-v1/cfa77ca1-9bac-4364-a807-3833e318e269/aeroporto-brasilia-bsb.webp",EZ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/cfa77ca1-9bac-4364-a807-3833e318e269/aeroporto-brasilia-bsb.webp",_Z="aeroporto-brasilia-bsb.webp",TZ=178508,$Z="image/webp",OZ="2026-09-28T00:30:40Z",O6={version:RZ,asset_id:jZ,project_id:NZ,url:AZ,r2_key:EZ,original_filename:_Z,size:TZ,content_type:$Z,created_at:OZ},qZ=1,DZ="7d6cd3eb-6648-4634-ae55-f85e3e4d82b6",IZ="386e8409-a3d6-4603-9e31-4b97b7d57e01",MZ="/__l5e/assets-v1/7d6cd3eb-6648-4634-ae55-f85e3e4d82b6/aeroporto-confins-cnf-patios.webp",LZ="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/7d6cd3eb-6648-4634-ae55-f85e3e4d82b6/aeroporto-confins-cnf-patios.webp",BZ="aeroporto-confins-cnf-patios.webp",VZ=325004,FZ="image/webp",UZ="2026-09-28T01:01:33Z",GZ={version:qZ,asset_id:DZ,project_id:IZ,url:MZ,r2_key:LZ,original_filename:BZ,size:VZ,content_type:FZ,created_at:UZ},zZ=new URL("/assets/voo-atrasou-estacionamento-hero-3M_NeUj_.jpg",import.meta.url).href,HZ=new URL("/assets/e-seguro-deixar-carro-aeroporto-confins-BKBWhU5S.webp",import.meta.url).href,KZ=new URL("/assets/estacionamento-mensal-aeroporto-guarulhos-Bb6x3-8k.webp",import.meta.url).href,QZ=new URL("/assets/primeira-vez-aeroporto-guarulhos-bRZBdCIV.webp",import.meta.url).href,WZ=new URL("/assets/primeira-vez-aeroporto-viracopos-pknV7y0r.webp",import.meta.url).href,JZ=new URL("/assets/lista-de-viagem-guarulhos-viracopos-DZI6cHxL.webp",import.meta.url).href,XZ="/estacionamento-aeroporto-congonhas-guia-precos-2026.webp",YZ=new URL("/assets/aeroporto-internacional-de-confins-D1fmEHBG.webp",import.meta.url).href,ZZ=new URL("/assets/melhor-estacionamento-aeroporto-confins-natural-CzO5-fzH.webp",import.meta.url).href,eee=new URL("/assets/estacionamento-coberto-confins-b9KE_MJN.webp",import.meta.url).href,tee=new URL("/assets/voo-azul-viracopos-estacionamento-DOWHLUCd.webp",import.meta.url).href,aee=new URL("/assets/melhor-estacionamento-aeroporto-congonhas-DpV79Fsw.webp",import.meta.url).href,nr=At("CNF","coberta"),Eo=At("CGH","coberta"),za=At("VCP"),hn=At("GRU"),oee=new URL("/assets/bate-volta-trabalho-aeroporto-CAMtR6RK.webp",import.meta.url).href,ree=new URL("/assets/estacionamento-guarulhos-15-dias-BzQ_ToBh.webp",import.meta.url).href,nee=[{slug:"voo-atrasou-carro-estacionamento-aeroporto-o-que-fazer",publishedAt:"2026-09-27",title:"Voo atrasou: como fica o estacionamento do aeroporto",label:"Guia · Imprevistos de voo",image:zZ,excerpt:"Sem reserva, um dia a mais no oficial de Guarulhos pode custar R$ 100,00 ou nada. Vej
454a como os oficiais de GRU, VCP, CNF e CGH e o xpark tratam atraso, volta antecipada e cancelamento.",dek:"Regras publicadas pelos oficiais de GRU, VCP, CNF e CGH e pelo xpark para excedente, volta antecipada, cancelamento e alteração de reserva.",readTime:"11 min de leitura",byline:"João G.",pullQuote:"Num voo fora do horário, três regras fazem a conta do estacionamento: a tabela do excedente, a devolução de quem volta antes e o prazo para cancelar.",body:[{kind:"p",text:"Passou do horário da reserva porque o voo atrasou? Nos estacionamentos oficiais de Guarulhos (GRU), Viracopos (VCP), Confins (CNF) e Congonhas (CGH), você paga o tempo extra antes de sair, pela tabela de quem chega sem reserva, sem o desconto do preço online. Sem reserva, quem decide a conta é a faixa: no oficial de Guarulhos, categoria Standard, 5 diárias custam R$ 360,00 e de 6 a 10, R$ 460,00. O sexto dia sai por R$ 100,00, e do sétimo ao décimo não há acréscimo (tabela do site oficial do GRU Airport, consultada em 27/09/2026)."},{kind:"p",text:"Voltar antes quase nunca devolve dinheiro, e o reembolso de um voo cancelado depen
454de do prazo do canal onde você reservou: de 3 horas antes da entrada, na Estapar Reserva, a 3 dias antes, para ter 90% de volta pela [polÃtica de cancelamento do xpark](/politica-cancelamento). Nos pátios particulares, cada operadora tem a sua regra; confirme com ela antes de reservar. A ficha dela fica na página do aeroporto."},{kind:"h2",text:"Excedente: como cada canal cobra o tempo a mais"},{kind:"p",text:"Nos oficiais, o que passa da reserva é cobrado à parte. Os termos do oficial de Guarulhos, operado pela Indigo, mandam cobrar a hora excedente pela tabela vigente, e o FAQ da reserva avisa que o preço do site vale só para quem reserva. No BH Airport, em Confins, a cancela não abre até você pagar a diferença, calculada pela tabela do atendimento presencial. Na Estapar Reserva, canal dos oficiais de Congonhas e de Viracopos, o tempo além do horário sai pela tabela do rotativo, e a tolerância para entrar e sair vem escrita na reserva."},{kind:"p",text:"Na reserva feita pelo xpark, cada diária tem 24 horas a partir do horário de entrada informado, sem tolerância na primeira hora, segundo a [polÃtica de cancelamento](/politica-cancelamento). O que passar do último bloco de 24 horas fica fora do que você pagou, e a polÃtica não detalha como esse excedente é cobrado: pergunte à unidade antes de ir ao caixa."},{kind:"h2",text:"Quanto custa o tempo extra nas tabelas oficiais"},{kind:"p",text:"Um atraso pode durar horas ou dias, então a tabela mostra as duas coisas, com os valores de quem entra sem reserva. Com reserva, os termos mandam cobrar o excede
454nte por essas tabelas, mas nenhum operador publica o cálculo exato."},{kind:"table",headers:["Oficial","Poucas horas","Diárias","O que um dia a mais faz"],rows:[["GRU Standard (Terminais 1 e 2)","Até 1 h: R$ 31,00. Até 4 h: R$ 70,00","1 diária: R$ 79,00. 5: R$ 360,00. De 6 a 10: R$ 460,00","De 5 para 6: mais R$ 100,00. De 6 a 10: nada muda"],["GRU Premium, EdifÃcio Garagem e Flex","Até 1 h: R$ 38,00. Até 4 h: R$ 89,00","1 diária: R$ 107,00. 4: R$ 390,00. 5: R$ 535,00. De 6 a 10: R$ 565,00","De 4 para 5: mais R$ 145,00. De 5 para 6: mais R$ 30,00"],["VCP EdifÃcio Garagem (Estapar)","Até 1 h: R$ 25,00. Até 8 h: R$ 81,00","R$ 83,00 cada, até R$ 830,00 por 10","Cada diária custa igual"],["VCP bolsão econômico F","Não publicado","R$ 31,00","Só a diária é publicada"],["CNF BH Airport Econômico 3 (E3)","30 min: R$ 18,00","R$ 60,00","Só a diária é publicada"],["CNF BH Airport Premium 1 (P1)","Hora: R$ 35,00","R$ 85,00","Só a diária é publicada"],["CGH oficial (Estapar)","Não divulgado","Só com reserva: a partir de R$ 44,90 (1), R$ 85,90 (2 a 5) e R$ 149,90 (6 a 10)","Excedente pela tabela rotativa, não divulgada"]],caption:"Tabelas oficiais do GRU Airport (versão de 03/12/2025), de Viracopos e do BH Airport, e página da Estapar Reserva para Congonhas, consultadas em 27/09/2026. Valores 'a partir de' variam conforme a data."},{kind:"p",text:"Em Guarulhos, a tabela anda por pacotes: o maior salto fica entre 5 e 6 diárias na Standard e entre 4 e 5 na Premium. Se o novo perÃodo cai na mesma faixa, o dia extra pode sair de graça. Em atrasos curtos, 4 horas na Standard já custam quase uma diária. Em Viracopos, no EdifÃcio Garagem, 8 horas ficam perto de uma diária inteira."},{kind:"p",text:"Para comparar com os pátios do entorno, veja as fichas do [oficial de Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos/estacionamento-oficial-gru-indigo), do [oficial de Viracopos](/aeroportos/estacionamento-aeroporto-viracopos/estacionamento-oficial-vcp-estapar) e do [BH Airport Econômico E3](/aeroportos/estacionamento-aeroporto-confins/bh-airport-oficial-economico-e3)."},{kind:"h2",text:"Voltou antes: quando sobra devolução"},{kind:"p",text:"Na polÃtica do xpark, o perÃodo contratado é cobrado por inteiro: diárias não utilizadas não são reembolsadas, e sair antes não gera crédito. Nos oficiais de Guarulhos e de Confins há uma exceção estreita: pelos termos do GRU Airport e do BH Airport, você pode pedir devolução proporcional se usou até 50% do perÃodo reservado, e qualquer pedaço de dia com o carro no pátio conta como diária inteira. No GRU, o valor devolvido desconta custos de reprocessamento. O pedido não é automático; no BH Airport, vai por e-mail, em até 30 dias da saÃda programada. Os termos da Estapar Reserva não preveem devolução por uso parcial."},{kind:"p",text:"Um exemplo: você reservou 10 dias e voltou no quinto. Mesmo tirando o carro de manhã, o quinto dia conta inteiro: são 5 diárias, exatamente a metade, e você ainda pode pedir a devolução. No sexto dia, já teria passado dos 50%. Quem entra sem reserva paga só o tempo usado, mas pelo pre
454ço de balcão; se a viagem pode encurtar, compare os dois cenários na [calculadora do xpark](/calculadora-estacionamento-aeroporto)."},{kind:"h2",text:"Voo cancelado: prazos para cancelar ou remarcar"},{kind:"p",text:"Se o voo foi cancelado antes de você sair de casa, o que importa é o prazo de cancelamento de cada canal."},{kind:"table",headers:["Onde você reservou","Com antecedência","Em cima da hora ou sem aviso","Para mudar a data"],rows:[["xpark","90% de volta com 3 dias ou mais","40% com menos de 72 horas; 0% sem aviso. Com o Seguro Cancelamento, 100% menos o seguro, até a entrada","Não tratado na polÃtica"],["GRU oficial (Indigo)","Até 24 horas antes do inÃcio, pelos termos; até 23h59 da véspera, pelo FAQ. Sem taxa","Após o inÃcio, em até 7 dias da reserva: análise e, se aceito, voucher com multa de uma diária. Sem aparecer nem cancelar, sem estorno","Cancelar e comprar de novo, sem taxa"],["BH Airport (CNF)","Até 5 horas antes da entrada, pelo site; o FAQ cita taxa de 5%","Termos: pedido por e-mail, com cobrança da primeira diária. FAQ: vira não comparecimento, sem reembolso","Termos: até 5 horas antes. FAQ: 24 horas para estender ou reduzir, com taxa de 5%"],["Estapar Reserva (CGH e VCP)","Até 3 horas antes do inÃcio","Pacote promocional não cancela. Sem comparecer, só com caso fortuito ou força maior comprovado","Não detalhado nos termos"]],caption:"PolÃtica do xpark e termos e FAQ de reserva dos operadores, consultados em 27/09/2026."},{kind:"p",text:"Em Congonhas, a Estapar anuncia os preços de reserva como vagas promocionais, e pacote promocional não aceita cancelamento: veja na tela de compra se a sua pode ser cancelada. Nos termos da Estapar, que valem também em Viracopos, a exceção para quem não comparece é o impedimento comprovado de acesso ao local, com pedido analisado pelo SAC."},{kind:"p",text:"Se o voo foi cancelado depois que o carro entrou, a reserva já começou. No GRU e no BH Airport, a regra mais próxima é a do uso parcial: tirando o carro no mesmo dia, você usou uma diária e pode pedir devolução proporcional, se isso não passar da metade do perÃodo. A polÃtica do xpark diz que o Seguro Cancelamento protege em cancelamento de voo ou atraso significativo, com comprovante no balcão da unidade, mas descreve o reembolso de 100% para antes da entrada; confirme a cobertura com o xpark. Em qualquer canal, peça à companhia aérea um comprovante do cancelamento."}
454,{kind:"h2",text:"Na saÃda: como acertar o excedente sem surpresa"},{kind:"p",text:"Nos oficiais, o excedente se paga antes da cancela. No GRU, a reserva libera um tÃquete na entrada: guarde-o, porque o pagamento no caixa automático ou pelo celular usa o QR Code dele. No BH Airport, você paga com o QR Code da reserva ou com a placa, se ela foi cadastrada na compra. Em qualquer caso, peça a conta detalhada, com as horas ou diárias cobradas e a tabela usada."},{kind:"p",text:"Não saia para voltar depois. Nos termos do GRU, do BH Airport e da Estapar, a reserva vale para uma entrada e uma saÃda, mesmo dentro do perÃodo pago."},{kind:"p",text:"Nos pátios particulares com traslado, o horário da van pesa tanto quanto a tarifa. Se o pouso foi para a madrugada, confirme com a operadora se a recepção funciona 24 horas e mande pelo canal da reserva a placa, o código e o novo horário previsto."},{kind:"h2",text:"Como reservar pensando no imprevisto"},{kind:"p",text:"Marque a saÃda pelo horário previsto de pouso mais o tempo de desembarque, esteira e, em voo internacional, imigração. Colocar o horário exato do pouso é pedir para pagar excedente."},{kind:"p",text:"Se a data pode mudar, compare um dia de folga na reserva com um dia de excedente no balcão; em tabelas com faixa, a folga pode sair barata ou de graça. Em Confins, o pacote Premium de 7 diárias reservado com 72 horas de antecedência parte de R$ 229,00, menos que três diárias de balcão no Premium 1. Para ver as opções, use a busca do [xpark](/) e as páginas de [Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos), [Viracopos](/aeroportos/estacionamento-aeroporto-viracopos), [Confins](/aeroportos/estacionamento-aeroporto-confins) e [Congonhas](/aeroportos/estacionamento-aeroporto-congonhas)."},{kind:"h2",text:"Perguntas frequentes sobre atraso de voo e estacionamento"},{kind:"faq",question:"Meu carro pode ficar preso ou ser removido se eu passar do horário?",answer:"As regras do GRU Airport, do BH Airport e da Estapar não falam em remover o veÃculo: o tempo além do reservado vira cobrança adicional. No BH Airport, a cancela só abre depois que você paga a diferença."},{kind:"faq",question:"Tenho tolerância para sair alguns minutos depois?",answer:"Depende do canal. Na reserva pelo xpark, não há tolerância na primeira hora, e cada diária tem 24 horas a partir da entrada informada. No GRU, a tolerância publicada é só para entrar, 1 hora antes do horário reservado. Na Estapar Reserva, o limite vem na própria reserva. O BH Airport não publica tolerância."},{kind:"faq",question:"Voltei dois dias antes. Recebo alguma coisa de volta?",answer:"Pela [polÃtica do xpark](/politica-cancelamento), não: diárias não utilizadas não são reembolsadas. No GRU e no BH Airport, só se você usou até 50% do perÃodo reservado, contando qualquer parte de um dia como diária usada. Os termos da Estapar Reserva não preveem devolução."},{kind:"faq",question:"Consigo estender a reserva quando já estou viajando?",answer:"Nos oficiais, em geral não. No BH Airport, a extensão pelo site precisa ser pedida 24 horas antes da entrada prevista, com taxa de 5%. No GRU, mudar é cancelar e comprar de novo, e o prazo termina na véspera. Com o carro no pátio, resta pagar o excedente na saÃda. A polÃtica do xpark não trata de mudança de datas; pergunte pelo canal em que você reservou."},{kind:"faq",question:"Meu voo foi cancelado e eu já tinha deixado o carro. E agora?",answer:"Se for tirar o carro, peça a devolução pela regra de uso parcial, se usou até metade do perÃodo no GRU ou no BH Airport. Com o Seguro Cancelamento do xpark, leve o comprovante da companhia aérea ao balcão da unidade e confirme a cobertura."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"Preços e regras vêm dos sites oficiais do GRU Airport, do Aeroporto de Viracopos, do BH Airport e da Estapar Reserva (tabelas, termos e FAQ de reserva) e da polÃtica de cancelamento do xpark, consultados em 27/09/2026. No GRU, vale a tabela de 03/12/2025, da página de estacionamento do site oficial; uma página antiga do mesmo site ainda mostra a de 2024. Quando dois documentos do mesmo operador divergem, mostramos os dois. Ficaram como não divulgados a tabela rotativa do oficial de Congonhas, o cálculo exato do excedente de reserva, as regras dos pátios particulares e a mudança de datas no xpark. Nenhum valor deste guia vem de levantamento de terceiro; nas fichas e páginas de aeroporto linkadas, o preço de operadora sem tabela conferida por nós vem de levantamento de preços de terceiro, coletado na data indicada. Critérios gerais na [metodologia do x
454park](/metodologia)."},{kind:"quote",text:"Num voo fora do horário, três regras fazem a conta do estacionamento: a tabela do excedente, a devolução de quem volta antes e o prazo para cancelar."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, coletadas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Atraso de voo","Cancelamento","Guarulhos","Viracopos","Confins","Congonhas"]},{slug:"estacionamento-aeroporto-brasilia-guia-precos-2026",publishedAt:"2026-09-28",title:"Estacionamento no Aeroporto de BrasÃlia (BSB): guia de preços 2026",label:"Guia · BrasÃlia BSB",image:O6.url,imageAlt:"Vista aérea do Aeroporto Internacional de BrasÃlia (BSB)",excerpt:"No Aeroporto de BrasÃlia, a diária de tabela mais barata é a do Bolsão B online, R$ 51,90. Fora dele, um levantamento de preços de terceiro de agosto de 2026 aponta R$ 20,00 em pátios a mais de 8 km, e um coberto com traslado cobra R$ 50,00, a partir de 5 diárias.",dek:"Onde fica cada opção, preço publicado com fonte e data, tabela por hora, custo para 1, 7, 15 e 30 dias e como escolher.",readTime:"11 min de leitura",byline:"João G.",pullQuote:"Em BrasÃlia, os dias decidem a conta: num bate e volta, o oficial é o mais prático; a partir de 5 diárias, o Big, coberto e com traslado, cobra menos que a tabela do bolsão oficial mais barato.",body:[{kind:"p",text:"Se você vai deixar o carro no Aeroporto de BrasÃlia, a diária de tabela mais barata lá dentro é a do Bolsão B comprada pela internet: R$ 51,90, contra R$ 66,00 no balcão ([site do aeroporto](https://www.bsb.aero/passageiros/estacionamento), 27/09/2026). Fora dele, a menor referência é de R$ 20,00 por dia em vaga descoberta, a 8 ou 9 km do terminal (levantamento de preços de terceiro, coletado em agosto de 2026; esses pátios não publicam tabela). No meio do caminho fica o Big, coberto e com traslado, a R$ 50,00 no Pix, só para 5 diárias ou mais."},{kind:"p",text:"Abaixo você vê onde cada opção fica, quanto publica e quanto soma em 1, 7, 15 e 30 dias. Em BrasÃlia o xpark não faz reservas: a gente compara o que cada operador divulga. Mapa e fichas estão na [página do Aeroporto de BrasÃlia no xpark](/aeroportos/estacionamento-aeroporto-brasilia)."},{kind:"h2",text:"Três faixas de distância, três jeitos de chegar ao embarque"},{kind:"p",text:"Dentro da área do aeroporto estão o estacionamento oficial, administrado pela Estapar, e as Vagas BRB, um benefÃcio de cartão que não está à venda. Nos dois casos você estaciona e segue a pé até o terminal."},{kind:"p",text:"Por medição de terceiro, entre 3 e 6 km do terminal ficam o [VS Park](/aeroportos/estacionamento-aeroporto-brasilia/vs-park), na Asa Sul, e o [Big Estacionamento](/aeroportos/estacionamento-aeroporto-brasilia/big), no Guará I; entre 8 e 9,5 km, o [DF Park](/aeroportos/estacionamento-aeroporto-brasilia/df-park), na Asa Sul, e o [Aero Park (Park Way)](/aeroportos/estacionamento-aeroporto-brasilia/aero-park). Aà você depende de traslado: Big e Aero Park anunciam o serviço no site; VS Park e DF Park não publicam essa informação, então pergunte antes."},{kind:"table",headers:["Opção","Onde fica","Distância","Vaga","Diária"],rows:[["Oficial, bolsão B","Ãrea do aeroporto","Menos de 800 m","1.900 vagas, cobertura não informada","R$ 51,90 online; R$ 66,00 no balcão"],["Oficial, bolsão A","Ãrea do aeroporto","400 m","900 vagas, cobertura não informada","R$ 61,90 online; R$ 71,00 no balcão"],["Oficial, bolsão Premium","Ãrea do aeroporto","Próximo ao terminal","Coberta, 168 vagas","R$ 99,90 online; R$ 105,00 no balcão"],["Vagas BRB","Dentro do aeroporto","0,14 km","BenefÃcio de cartão","Sem venda avulsa"],["VS Park","Asa Sul","3,81 km","Não informado","Não divulgado"],["Big","Guará I","5,37 km","Coberta, traslado 24 horas","R$ 50,00 no Pix ou dinheiro; R$ 55,00 no cartão; mÃnimo de 5 diárias"],["DF Park","Asa Sul","8,45 km","Coberta e descoberta; traslado não informado","R$ 20,00 descoberta; R$ 30,00 coberta (ref. agosto de 2026)"],["Aero Park (Park Way)","Park Way","9,31 km","Descoberta, traslado gratuito anunciado","R$ 20,00 descoberta (ref. agosto de 2026)"]],caption:"Oficial e Big: sites oficiais, 27/09/2026. DF Park e Aero Park: levantamento de preços de terceiro, coletado em agosto de 2026; não publicam tabela. Distâncias fora do oficial: por medição de terceiro, coletada em 27/09/2026."},{kind:"h2",text:"Estacionamento oficial: quanto muda do balcão para o site"},{kind:"p",text:"O estacionamento do aeroporto tem 2.968 vagas em três bol
454sões, segundo o [site do aeroporto](https://www.bsb.aero/passageiros/estacionamento); endereço e mapa estão na [ficha da Estapar](/aeroportos/estacionamento-aeroporto-brasilia/estapar). O que mais pesa é o canal de compra: pelo site, com no mÃnimo quatro horas de antecedência, a diária do Bolsão B cai de R$ 66,00 para R$ 51,90, e a do A, de R$ 71,00 para R$ 61,90. No Premium, R$ 105,00 viram R$ 99,90."},{kind:"p",text:"Três regras mexem na conta. As vagas com preço online são limitadas. O preço promocional vale para uma única entrada e saÃda do bolsão: se tirar o carro no meio da viagem, a volta não está coberta. E o que passar da diária comprada é cobrado por hora."},{kind:"p",text:"No [canal de reservas da Estapar](https://www.zuldigital.com.br/estapar-reserva/aeroportos/24), para onde o site do aeroporto encaminha a compra, havia em 27/09/2026 diárias a partir de R$ 35,90 no Bolsão B, com vagas limitadas por dia. à preço de campanha, não de tabela: simule as suas datas."},{kind:"h2",text:"Menos de um dia no aeroporto: olhe a tabela por hora"},{kind:"p",text:"Se você vai e volta no mesmo dia, olhe a tabela por hora. Até 6 horas, o preço online é o mesmo do balcão; a diferença começa em 7 horas. No balcão, depois de 7 horas, soma-se R$ 1,00 por hora nos bolsões A e B e R$ 2,00 no Premium."},{kind:"table",headers:["Bolsão","Até 1 hora","Até 7 horas no balcão","Até 7 horas online","8 a 23 horas online"],rows:[["B","R$ 24,00","R$ 42,00","R$ 40,90","R$ 40,90"],["A","R$ 26,00","R$ 45,00","R$ 50,90","R$ 50,90"],["Premium","R$ 35,00","R$ 70,00","R$ 62,90","R$ 62,90 mais R$ 2,00 por hora"]],caption:"Site do Aeroporto de BrasÃlia, tabela regular desde 01/07/2026 e online desde julho de 2026, consultado em 27/09/2026."},{kind:"p",text:"Dois detalhes saem dessa tabela. No Bolsão A, até 7 horas, o balcão (R$ 45,00) sai mais barato que o online (R$ 50,90). Num dia longo, o online vence: 14 horas no Bolsão B custam R$ 49,00 no balcão (R$ 42,00 mais 7 horas a R$ 1,00) e R$ 40,90 online."},{kind:"h2",text:"Quanto a conta soma em 1, 7, 15 e 30 dias"},{kind:"p",text:"A tabela abaixo multiplica a diária de cada opção pelos dias, sem promoção. O site oficial não mostra pacote para estadias longas; nos pátios particulares, peça a cotação das suas datas."},{kind:"table",headers:["PerÃodo","Bolsão B online","Bolsão A online","Premium online","Big (Pix ou dinheiro)","DF Park e Aero Park, descoberta (ref. ago/2026)"],rows:[["1 dia","R$ 51,90","R$ 61,90","R$ 99,90","MÃnimo de 5 diárias","R$ 20,00"],["7 dias","R$ 363,30","R$ 433,30","R$ 699,30","R$ 350,00","R$ 140,00"],["15 dias","R$ 778,50","R$ 928,50","R$ 1.498,50","R$ 750,00","R$ 300,00"],["30 dias","R$ 1.557,00","R$ 1.857,00","R$ 2.997,00","R$ 1.500,00","R$ 600,00"]],caption:"Cálculo do xpark: diária vezes os dias. Oficial e Big: sites oficiais, 27/09/2026; DF Park e Aero Park: levantamento de preços de terceiro, coletado em agosto de 2026. No balcão, o Bolsão B soma R$ 462,00 em 7 dias, R$ 990,00 em 15 e R$ 1.980,00 em 30. VS Park e Vagas BRB ficam de fora por não terem preço público de diária."},{kind:"p",text:"Duas leituras saem daÃ. Pela tabela, o Big coberto fica abaixo do Bolsão B online desde o mÃnimo de 5 diárias: R$ 350,00 contra R$ 363,30 numa semana e R$ 57,00 a menos em 30 dias (com a promoção do Bolsão B, a conta muda). Na ponta de baixo, os pátios de R$ 20,00 fecham o mês em R$ 600,00, menos que 15 dias no bolsão oficial mais barato (R$ 778,50), em troca de 8 a 9 km de traslado e de um preço a confirmar."},{kind:"h2",text:"Como escolher em quatro perguntas"},{kind:"p",text:"1. Quantos dias? Para ir e voltar no mesmo dia ou dormir uma noite fora, o oficial comprado online é o mais prático: você deixa o carro a 400 ou 800 metros do terminal. O Big fica de fora, porque desde 17/08/2026 só aceita agendamentos de 5 diárias ou mais ([site da operadora](https://bigestacionamentobsb.com.br/))."},{kind:"p",text:"2. Você aceita traslado? O Big pede a confirmação da reserva e cerca de meia hora de processamento no local antes da ida ao aeroporto, e na volta pode pedir que você ligue depois de pegar as malas. Pergunte a qualquer pátio como o traslado funciona no horário do seu voo."},{kind:"p",text:"3. Precisa de vaga coberta? No aeroporto, só o Premium é anunciado como coberto; fora dele, o Big e parte do DF Park. Veja [quando o estacionamento coberto vale a pena](/estacionamento-coberto-aeroporto-vale-a-pena)."},{kind:"p",text:"4. Tem cartão BRB elegÃvel? Confira as Vagas BRB primeiro. E compare com ir de aplicativo na [calculadora de estacionamento](/calculadora-estacionamento-aeroporto) e no comparativo [Uber ou estacionamento no aeroporto](/uber-ou-estacionamento-aeroporto), com a sua distância e os seus dias."},{kind:"h2",text:"Vagas BRB: o estacionamento que não está à venda"},{kind:"p",text:"As [Vagas BRB](/aeroportos/estacionamento-aeroporto-brasilia/vagas-brb) atendem titulares dos cartões BRB Visa Dux, Visa Infinite e Mastercard Black com gasto de pelo menos R$ 5.000 no último ciclo de fatura, c
454om reserva no app BRBCARD por até 4 dias ([regulamento da BRBCARD](https://www.brbcard.com.br/vagas-exclusivas-brb/)). As regras são rÃgidas: passou do perÃodo (tolerância de 1 hora), você paga R$ 150,00 por diária de 24 horas; não apareceu e não cancelou até 1 hora antes, fica 12 meses sem o benefÃcio."},{kind:"h2",text:"O que confirmar antes de sair de casa"},{kind:"p",text:"O VS Park não divulga diária. O Aero Park anuncia traslado gratuito, mas o [site dele](https://estacionamentoaeroparkbsb.webnode.page/) não mostra tabela e faz pré-reserva por formulário ou WhatsApp. Para o DF Park não achamos site oficial. Nesses casos, peça o valor por escrito."},{kind:"p",text:"Pergunte também até quantas pessoas o traslado leva (no Big, até 4 passageiros; grupos maiores pagam adicional) e quem responde pelo carro em caso de dano: Big e Aero Park dizem ter seguro, então peça as condições. O guia [estacionamento de aeroporto é seguro?](/estacionamento-de-aeroporto-e-seguro) mostra o que conferir. No oficial, o site informa vigilância 24 horas e 25 câmeras."},{kind:"h2",text:"Perguntas frequentes sobre estacionamento no Aeroporto de BrasÃlia"},{kind:"faq",question:"Qual é o estacionamento mais barato perto do Aeroporto de BrasÃlia?",answer:"Fora do aeroporto, a menor referência é de R$ 20,00 por dia em vaga descoberta no DF Park e no Aero Park (levantamento de preços de terceiro, coletado em agosto de 2026; não há tabela pública), ambos a mais de 8 km do terminal por medição de terceiro. Perto do embarque, o menor preço de tabela é o do Bolsão B online, R$ 51,90 (site oficial, 27/09/2026); o canal da Estapar mostrava promoção a partir de R$ 35,90, com vagas limitadas."},{kind:"faq",question:"Quanto custa a diária do estacionamento oficial do Aeroporto de BrasÃlia?",answer:"No balcão, R$ 66,00 no Bolsão B, R$ 71,00 no A e R$ 105,00 no Premium. Comprando pelo site no mÃnimo quatro horas antes da entrada, os valores caem para R$ 51,90, R$ 61,90 e R$ 99,90. Tabela do site do aeroporto, consultada em 27/09/2026."},{kind:"faq",question:"Dá para deixar o carro só um ou dois dias no Big Estacionamento?",answer:"Não. Desde 17/08/2026, o Big só aceita agendamentos de no mÃnimo 5 diárias, segundo o site da operadora. Para uma ou duas noites, olhe o estacionamento oficial ou um pátio sem mÃnimo."},{kind:"faq",question:"Posso reservar estacionamento no Aeroporto de BrasÃlia pelo xpark?",answer:"Não. O xpark vende reservas só em Guarulhos, Viracopos, Confins e Congonhas. Em BrasÃlia, a gente compara as opções com fonte e data. Consulte a [página do Aeroporto de BrasÃlia](/aeroportos/estacionamento-aeroporto-brasilia) e as fichas, e reserve pelo canal oficial da operadora escolhida."},{kind:"faq",question:"O estacionamento oficial do Aeroporto de BrasÃlia tem vaga coberta?",answer:"Só o bolsão Premium, com 168 vagas cobertas perto do terminal, a R$ 99,90 online ou R$ 105,00 no balcão. O site do aeroporto não informa cobertura nos bolsões A e B. Fora do aeroporto, o Big é coberto e o DF Park tem vagas cobertas (R$ 30,00 em levantamento de preços de terceiro, coletado em agosto de 2026)."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"Estacionamento oficial: site do Aeroporto de BrasÃlia (tabela regular desde 01/07/2026; online desde julho de 2026). Promoção: canal de reservas da Estapar. Vagas BRB: site da BRBCARD. Big: site da operadora. Tudo consultado em 27/09/2026. Dados de operadoras sem tabela conferida por nós vêm de levantamento de preços de terceiro, coletado na data indicada: DF Park e Aero Park não publicam tabela, e os preços deles saem de um levantamento de preços de terceiro, coletado em agosto de 2026. Distâncias fora do oficial: por medição de terceiro, coletada em 27/09/2026; os endereços de VS Park e DF Park vêm dos mesmos dados de terceiro. Totais e exemplos por hora são cálculo nosso. O que não era público ficou como não divulgado, sem estimativa. Critérios gerais na [metodologia do xpark](/metodologia); este guia não recomenda operador."},{kind:"quote",text:"Em BrasÃlia, os dias decidem a conta: num bate e volta, o oficial é o mais prático; a partir de 5 diárias, o Big, coberto e com traslado, cobra menos que a tabela do bolsão oficial mais barato."}],closing:"Conteúdo informativo com base em informações públicas dos operadores e em levantamento de preços de terceiro, nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["BrasÃlia","BSB","Guia","Preços 2026","Distrito Federal"]},{slug:"estacionamento-dentro-aeroporto-confins-e3-p1-p3",publishedAt:"2026-09-28",title:"Estacionar dentro do Aeroporto de Confins (CNF): pátios e preços 2026",label:"Guia · Confins CNF",image:GZ.url,imageAlt:"Vista aérea do terminal e dos estacionamentos do Aeroporto de Confins (CNF)",excerpt:"No pátio oficial de Confins, a diária de carro vai de R$ 60,00 no E3 a R$ 105,00 no P+. Veja qual pátio fica mais perto do seu terminal, quando o pacote de 72 horas compensa e quanto custa a semana fora.",dek:"Os seis pátios da BH Airport pela caminhada, as regras da reserva online e a semana contra os pátios com van.",readTime:"11 min de leitura",byline:"João G.",pullQuote:"Em Confins, o pátio oficial vale pela caminhada curta. Para mais de três dias, reserve com 72 horas ou compare com os pátios com van.",body:[{kind:"p",text:"Dentro do Aeroporto de Confins, a diária mais barata para carro é a do pátio Econômico 3 (E3): R$ 60,00 no balcão, em vaga descoberta a 280 metros do terminal (site oficial do BH Airport, consultado em 27/09/2026). Se você reservar com 72 horas de antecedência, sete diárias no Econômico saem a partir de R$ 189,00, menos do que quatro diárias de balcão. Fora do aeroporto, com van gratuita, a diária avulsa sem cupom começa em R$ 20,00, na vaga descoberta do [AeroPark Confins](/aeroportos/estacionamento-aeroporto-confins/aeropark-confins)."},{kind:"p",text:"Com cupom, a diária avulsa mais baixa do entorno é a do [Bandeira Park](/aeroportos/estacionamento-aeroporto-confins/bandeira-park), parceiro do xpark: R$ 18,49 com o XPK26. Ele abre em Confins em 1º de outubro de 2026 e entra
454nesta comparação pelos mesmos critérios dos demais. As fichas de todos os estacionamentos estão na [página de Confins no xpark](/aeroportos/estacionamento-aeroporto-confins)."},{kind:"h2",text:"Os seis pátios oficiais, do mais perto ao mais longe"},{kind:"p",text:"Quem opera o estacionamento é a BH Airport, concessionária do aeroporto, na Rodovia LMG-800, km 7,9, em Confins. São cinco pátios para carro e um só para motos, aqui em ordem de caminhada; o E3 também tem [ficha no xpark](/aeroportos/estacionamento-aeroporto-confins/bh-airport-oficial-economico-e3)."},{kind:"table",headers:["Pátio","A pé até o terminal","Vaga","1ª cobrança","Diária"],rows:[["Premium Plus (P+)","50 m do Terminal 2","Coberta","R$ 45,00 por hora","R$ 105,00"],["Premium 2 (P2)","75 m do Terminal 1","Descoberta","R$ 40,00 por hora","R$ 95,00"],["Premium 3 (P3)","170 m do Terminal 1","Coberta","R$ 23,00 por 30 min","R$ 85,00"],["Econômico 3 (E3)","280 m do terminal","Descoberta","R$ 18,00 por 30 min","R$ 60,00"],["Premium 1 (P1)","300 m do Terminal 2","Coberta e descoberta","R$ 35,00 por hora","R$ 85,00"],["Motos (M)","perto do P1 e do desembarque","Coberta","R$ 10,00 por 30 min","R$ 30,00"]],caption:"Tabela padrão (balcão) e descrição dos pátios no site do BH Airport, 27/09/2026. Para o E3, o site não diz qual terminal."},{kind:"p",text:"Preço e distância não andam juntos. O E3 e o P1 pedem caminhada parecida, 280 e 300 metros, mas o P1 custa R$ 25,00 a mais por dia, em troca de parte das vagas com teto. Cobertura completa, só no P3 e no P+. Olhe também o terminal do seu voo: o P3 fica perto do check-in da Azul, no Terminal 1, e o P+ dá acesso ao check-in internacional, no Terminal 2."},{kind:"h2",text:"Parada curta: o que pesa é a primeira fração"},{kind:"p",text:"Se você só vai deixar ou buscar alguém, meia hora custa R$ 18,00 no E3 e R$ 23,00 no P3. No P1, no P2 e no P+ a cobrança começa pela hora cheia: R$ 35,00, R$ 40,00 e R$ 45,00. Os pátios com van cobram por dia: o Space Park, por exemplo, tem tarifa mÃnima de R$ 40,00 por 24 horas."},{kind:"p",text:"A página não mostra quanto custa a segunda meia hora ou a segunda hora; se o voo atrasar, pergunte no caixa antes de estender a espera. De moto, o pátio M, coberto e ao lado do P1, sai por R$ 10,00 a meia hora e R$ 30,00 a diária."},{kind:"h2",text:"Reserva online: a partir de quantos dias o pacote compensa"},{kind:"p",text:"O site da BH Airport exibe três pacotes de 7 diárias para quem reserva com 72 horas de antecedência. Como cada um custa menos que poucos dias de balcão, pode valer mesmo numa viagem menor que uma semana."},{kind:"table",headers:["Pacote (reserva com 72h)","7 diárias, a partir de","Mesmo pátio no balcão","Já sai mais barato com"],rows:[["Econômico (E3)","R$ 189,00","R$ 60,00 por dia","4 diárias (R$ 240,00 no balcão)"],["Premium (P1, P2 ou P3)","R$ 229,00","R$ 85,00 a R$ 95,00 por dia","3 diárias (R$ 255,00 a R$ 285,00)"],["Premium Plus (P+)","R$ 384,00","R$ 105,00 por dia","4 diárias (R$ 420,00)"]],caption:"Site do BH Airport, 27/09/2026; o site não diz em qual pátio Premium vale o preço mÃnimo. Balcão: diária da tabela padrão vezes os dias."},{kind:"p",text:"Na semana inteira, o preço mÃnimo corta de 48% a 66% das sete diárias de balcão, conforme o pátio; a página anuncia até 70%, sem dizer em que caso. Para outras datas, o preço só aparece quando você simula entrada e saÃda no site; o plano especial do E3 para 5 a 7 dias também não tem valor publicado."},{kind:"p",text:"Antes de pagar, leia os termos da reserva. Estes são os pontos que mais pegam:"},{kind:"p",text:"Prazo e pagamento. A reserva, e qualquer mudança de data, horário ou pátio, só é aceita até 5 horas antes da entrada, com pagamento na hora no cartão de crédito. Até esse limite, você cancela pelo próprio site; depois dele, o pedido vai por e-mail e a concessionária fica com a primeira diária."},{kind:"p",text:"Entrada e saÃda. A vaga é qualquer uma livre no pátio reservado, e não dá para sair e voltar com a mesma reserva. Sem o QR Code na cancela, vale o preço de balcão. Se você sair depois do previsto, paga a diferença pela tabela de balcão; se sair antes, só recebe parte de volta quando usou até metade do perÃodo reservado."},{kind:"h2",text:"A semana dentro e fora, lado a lado"},{kind:"p",text:"Sete dias é o único perÃodo com preço reservado publicado no oficial, então a comparação justa é essa. Os pátios de fora abaixo publicam preço de semana e têm van gratuita; outros perÃodos estão no [comparativo de preços de Confins](/quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026)."},{kind:"table",headers:["Onde","Vaga","Até o terminal","7 diárias"],rows:[["Bandeira Park (parceiro do xpark), cupom XPK26","Descoberta","van, cerca de 15 min","R$ 93,19"],["AeroPark Confins","Descoberta","van, 4 min","R$ 119,00"],["AeroPark Confins","Coberta","van, 4 min","R$ 126,00"],["Central Park Confins ou Space Park","Descoberta","van, 3 ou 4 min","R$ 140,00"],["Park Confins","Coberta","van, cerca de 4 min","a partir de R$ 149,00"],["Central Park Confins ou Space Park","Coberta","van, 3 ou 4 min","R$ 168,00"],["BH Airport, pacote Econômico (72h)","Descoberta","a pé, 280 m","a partir de R$ 189,00"],["BH Airport, pacote Premium (72h)","Varia por pátio","a pé, 75 a 300 m","a partir de R$ 229,00"],["BH Airport, E3 no balcão","Descoberta","a pé, 280 m","R$ 420,00"]],caption:"Preços e tempos de van conferidos nos sites oficiais das operadoras e do BH Airport, 27/09/2026. Bandeira Park, parceiro do xpark: tabela oficial com cupom XPK26; abre em 1º/10/2026."},{kind:"p",text:"Sem reserva, a semana no E3 sai de R$ 280,00 a R$ 301,00 mais cara que a vaga descoberta de AeroPark Confins, Central Park Confins ou Space Park. Com o pacote de 72 horas, a diferença cai para R$ 49,00 a R$ 70,00: é o preço de uma semana sem depender de van. Quem quer teto paga de R$ 126,00 a R$ 168,00 fora, abaixo do pacote Premium oficial; dentro, a coberta mais barata é o P3, a R$ 85,00 por dia. Se a cobertura faz diferença para o seu carro, leia [estacionamento coberto vale a pena?](/estacionamento-coberto-aeroporto-vale-a-pena)."},{kind:"p",text:"O Bandeira Park, parceiro do xpark, tem a semana mais barata da tabela, mas também o trajeto mais longo: fica na MG-010, em Vespasiano, e a operadora anuncia cerca de 15 minutos de van. Veja também as fichas do [Central Park Confins](/aeroportos/estacionamento-aeroporto-confins/central-park-confins), do [Space Park](/aeroportos/estacionamento-aeroporto-confins/space-park) e do [Park Confins](/aeroportos/estacionamento-aeroporto-confins/park-confins)."},{kind:"h2",text:"A conta pelo tamanho da viagem"},{kind:"p",text:"Um a três dias. Cada diária no E3 custa R$ 38,00 a R$ 40,00 a mais que a vaga descoberta do Central Park Confins ou da AeroPark Confins, ou R$ 114,00 a R$ 120,00 em três dias. Em troca, você segue a pé, sem esperar van na ida nem na volta; com horário apertado, pode valer."},{kind:"p",text:"Quatro a seis dias. O pacote de 7 diárias entra na conta se você reservar com 72 horas: no E3, ele já custa menos que quatro diárias de balcão, e o carro pode sair antes do fim do pacote, sem devolução, porque você terá usado mais da metade. Mesmo assim, fica acima das semanas de fora da tabela."},{kind:"p",text:"Quinze dias ou mais. A página oficial não publica pacote acima de 7 diárias, e no balcão o E3 soma R$ 900,00 em 15 dias e R$ 1.800,00 em 30. Fora, a vaga descoberta da AeroPark Confins custa R$ 17,00 por dia em estadias de 7 dias ou mais (R$ 510,00 em 30 dias), e o Bandeira Park, parceiro do xpark, cobra R$ 7,98 por dia a partir de 30 dias com o cupom XPK26. Mais contas no guia [estacionamento mensal em Confins](/estacionamento-mensal-aeroporto-confins-semana-ou-mes)."},{kind:"h2",text:"Na cancela: QR Code, tag e pagamento"},{kind:"p",text:"Os pátios oficiais abrem a cancela e cobram direto na tag Sem Parar, ConectCar, Veloe ou Taggy. Se você reservou online e tem tag, mostre o QR Code na entrada: pelos termos, se o código não for validado, a reserva não é ativada, a estadia vai para a conta da tag e o estorno depen
454de de contestação no serviço da tag, com o número da reserva."},{kind:"p",text:"Sem tag, pague antes de voltar ao carro: há caixa com atendente junto à entrada do terminal e totens no saguão e nos próprios pátios. A página lista crédito, débito e Pix; cheque e American Express não são aceitos."},{kind:"p",text:"A BH Airport informa ronda 24 horas, ajuda com bateria e pneu e trava nas rodas de Hilux e SW4. Pelos termos, ela responde pela guarda do carro, mas não por objetos de valor deixados dentro dele; se notar algum dano, avise a concessionária na hora, antes de sair. Quem cobre o quê está no guia [estacionamento de aeroporto é seguro?](/estacionamento-de-aeroporto-e-seguro)."},{kind:"h2",text:"Perguntas frequentes sobre estacionar dentro do Aeroporto de Confins"},{kind:"faq",question:"Com quanta antecedência preciso reservar o estacionamento oficial?",answer:"No mÃnimo 5 horas antes da entrada. Os pacotes de 7 diárias com preço reduzido, a partir de R$ 189,00 no Econômico, exigem 72 horas (site do BH Airport, 27/09/2026)."},{kind:"faq",question:"Posso cancelar ou alterar a reserva?",answer:"Até 5 horas antes da entrada, sim, pelo site de vendas. Depois disso não há alteração, e o cancelamento é pedido por e-mail, com cobrança da primeira diária e estorno do restante no cartão. O prazo para pedir é de 30 dias corridos após a saÃda programada."},{kind:"faq",question:"O que acontece se eu voltar antes ou depois do horário reservado?",answer:"Se voltar depois, você paga a diferença pela tabela de balcão, no guichê ou no caixa automático. Se voltar antes, só há devolução proporcional quando o uso fica em até metade do perÃodo reservado, com pedido por e-mail."},{kind:"faq",question:"Moto pode usar a reserva online?",answer:"Não. A reserva vale só para carros de passeio. A moto paga no pátio M: R$ 10,00 por 30 minutos ou R$ 30,00 por dia."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"Pátios oficiais: preços, distâncias e descrições do [site do BH Airport](https://www.bh-airport.com.br/pt-BR/parking) e regras dos [termos da reserva online](https://vendasonline.bh-airport.com.br/pt/terms-and-conditions/), consultados em 27/09/2026. Pátios de fora: preços e tempos de van conferidos no site oficial de cada operadora, na mesma data, então nenhum preço desta página vem de levantamento de terceiro; operadoras sem tabela conferida em canal oficial ficaram fora da comparação. Totais e percentuais são cálculos sobre as diárias publicadas. Ficaram como não divulgados a cobrança após a primeira fração, o preço reservado fora dos pacotes de 7 diárias, o plano de 5 a 7 dias do E3 e o intervalo das vans. O Bandeira Park, parceiro do xpark, seguiu os critérios da [metodologia](/metodologia), e os preços dele vêm da tabela oficial do Bandeira Park com o cupom XPK26, publicada no xpark, com os mesmos valores por dia exibidos no site da operadora em 27/09/2026."},{kind:"quote",text:"Em Confins, o pátio oficial vale pela caminhada curta. Para mais de três dias, reserve com 72 horas ou compare com os pátios com van."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, coletadas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Confins","CNF","BH Airport","Estacionamento oficial","Reserva antecipada","Belo Horizonte"]},{slug:"estacionamento-perto-aeroporto-confins-distancia",publishedAt:"2026-09-28",title:"Estacionamento perto do Aeroporto de Confins (CNF): km e van em 2026",label:"Guia · Confins CNF",image:YZ,imageAlt:"Aeroporto Internacional de Belo Horizonte, em Confins (CNF)",excerpt:"Só o estacionamento oficial deixa você ir a pé até o terminal de Confins, a uma distância de 50 a 300 metros. Os pátios privados ficam de 2,5 km a 7,63 km, com 3 a 15 minutos de van, e a espera pela saÃda pode pesar mais que o trajeto.",dek:"Quilômetros até o terminal, tempo de van e regra de saÃda publicados por cada estacionamento de Confins (CNF), com a conta do tempo real até o embarque.",readTime:"11 min de leitura",byline:"João G.",pullQuote:"Se a van sai a cada 20 minutos, a espera pode durar o dobro do trajeto. Em Confins, pergunte primeiro quando a van sai; a distância vem depois.",body:[{kind:"p",text:"Para ir andando até o terminal de Confins, só o estacionamento oficial da BH Airport resolve: o pátio P+ fica a 50 metros do Terminal 2, e o Econômico E3, o mais barato para carro (R$ 60,00 por diária), a 280 metros (site oficial da BH Airport, consultado em 27/09/2026). O
454s pátios privados ficam de 2,5 km a 7,63 km e anunciam de 3 a 15 minutos de van. Para o seu horário, porém, pesa mais outro número: quanto tempo você espera a van sair."},{kind:"p",text:"Abaixo estão os dois números de cada opção, com a fonte de cada um. Os pátios privados e o E3 têm ficha na [página do Aeroporto de Confins no xpark](/aeroportos/estacionamento-aeroporto-confins)."},{kind:"h2",text:"Distância e tempo de van, pátio por pátio"},{kind:"p",text:"A ordem segue a distância até o terminal, e a legenda diz de onde vem cada medida. Tempo e transporte são os que cada operadora anuncia no próprio site, conferidos em 27/09/2026."},{kind:"table",headers:["Estacionamento","Distância até o terminal","Tempo anunciado","Transporte"],rows:[["BH Airport Oficial, pátios Premium (P+, P2, P3 e P1)","50 m a 300 m","a pé","Sem van"],["BH Airport Oficial, Econômico E3","280 m","a pé","Sem van"],["Space Park","2,5 km","4 min","Van gratuita, saÃda imediata, 24 horas"],["Central Park Confins","2,8 km","3 min","Van gratuita, translado imediato, 24 horas"],["Park Confins","3,0 km","cerca de 4 min","Van gratuita, 24 horas"],["IPO Park","3,08 km","3 min","Frota própria, sem horário publicado"],["Auto Park Brasil","3,13 km","não divulgado","Traslado gratuito, 24 horas"],["Estacionamento Pátio","3,13 km","3 a 5 min","Traslado gratuito, saÃda imediata, 24 horas"],["Premium Park","3,68 km","não divulgado","Van gratuita, 24 horas"],["AeroPark Confins","4,5 km","4 min","Traslado gratuito, 24 horas"],["SuperPark","5,2 km","10 min","Traslado, 24 horas"],["MultiPark Aero Confins","6,0 km","12 min","Traslado incluso, 24 horas"],["BePark","7,63 km","10 min","Van gratuita, 24 horas, saÃda a cada 20 min"],["Bandeira Park (parceiro do xpark)","não confirmada","cerca de 15 min","Van gratuita, 24 horas; abre em 01/10/2026"]],caption:"Distâncias: pátios oficiais, site da BH Airport, 27/09/2026; Estacionamento Pátio, IPO Park, Auto Park Brasil, Premium Park e BePark, por medição de terceiro em linha reta, publicada em setembro de 2026; demais pátios privados, coleta de 10/07/2026 registrada nas fichas do xpark. Tempo e transporte: sites oficiais, 27/09/2026; SuperPark e MultiPark Aero Confins, fichas, coleta de 10/07/2026. A distância do Bandeira Park, parceiro do xpark, ainda não foi confirmada."},{kind:"p",text:"Do Space Park ao Premium Park, sete pátios privados ficam entre 2,5 km e 3,68 km do terminal, e os que informam o tempo falam em 3 a 5 minutos de van."},{kind:"h2",text:"Quando a distância publicada engana"},{kind:"p",text:"Veja o AeroPark Confins e o Space Park: a distância publicada de um é quase o dobro da do outro, 4,5 km contra 2,5 km, e mesmo assim os dois anunciam 4 minutos de van. O que decide o tempo é o caminho até o terminal, não o número em quilômetros. Os pátios da faixa dos 3 km ficam concentrados em poucas ruas de Confins, perto uns dos outros, e chegam ao embarque em tempo parecido."},{kind:"p",text:"As distâncias da tabela vêm de fontes e datas diferentes: parte foi registrada em julho de 2026 e parte vem de medição de terceiro em linha reta, publicada em setembro de 2026. As operadoras também arredondam do seu jeito: o Space Park anuncia 3 km, o Estacionamento Pátio fala em cerca de 4 km e o Premium Park, em 3 km. Por isso, use a distância para saber a faixa em que o pátio está, e o tempo de van anunciado para planejar a saÃda de casa."},{kind:"p",text:"Para planejar, trate como equivalentes os pátios entre 2,5 km e 4,5 km: a diferença em quilômetros não mudou os 4 minutos anunciados por AeroPark Confins e Space Park. A distância só aparece no relógio acima disso, nos 10 a 15 minutos de SuperPark, MultiPark Aero Confins, BePark e Bandeira Park, este parceiro do xpark."},{kind:"h2",text:"O tempo que quase ninguém anuncia: a espera pela van"},{kind:"p",text:"Entre estacionar e descer na porta do embarque, você gasta dois tempos: a espera até a van partir e o trajeto. O trajeto aparece em quase todo site. A espera quase nunca, e é ela que pode dobrar ou triplicar a conta."},{kind:"p",text:"O BePark é o único que publica os dois números: 10 minutos até o terminal e saÃdas a cada 20 minutos, 24 horas por dia. O site acrescenta que, se a van já estiver pronta quando você chega, ela sai na hora. No pior caso, logo depois de uma partida, são 30 minutos entre parar o carro e chegar ao terminal; no melhor, 10."},{kind:"p",text:"Na faixa dos 3 km, quatro pátios prometem saÃda sem tabela de horário: Space Park e Estacionamento Pátio falam em saÃda imediata, o Central Park Confins anuncia translado imediato 24 horas e o Park Confins diz que a van sai com um único cliente, se for preciso. São promessas sem intervalo publicado; confirme para o horário do seu voo, sobretudo de madrugada."},{kind:"table",headers:["Estacionamento","Tempo anunciado","Regra de saÃda publicada"],rows:[["BePark","10 min","a cada 20 min, 24 horas; sai na hora se a van estiver pronta"],["Space Park","4 min","saÃda imediata, 24 horas"],["Estacionamento Pátio","3 a 5 min","saÃda imediata na chegada, 24 horas"],["Central Park Confins","3 min","translado imediato, 24 horas"],["Park Confins","cerca de 4 min","sai com 1 cliente, se necessário; 24 horas"],["IPO Park","3 min","conforme o horário do cliente, sem tabela"],["Bandeira Park (parceiro do xpark)","cerca de 15 min","van 24 horas; frequência a ser divulgada na abertura"]],caption:"Sites oficiais, 27/09/2026. AeroPark Confins, Auto Park Brasil, Premium Park, SuperPark e MultiPark Aero Confins não publicam regra de saÃda nas fontes consultadas. A frequência do Bandeira Park, parceiro do xpark, sai na abertura."},{kind:"p",text:"Na volta, cada pátio tem seu roteiro. No AeroPark Confins, você avisa pelo WhatsApp e a van vai buscar você; no Bandeira Park, parceiro do xpark, o chamado é pela central ou pelo WhatsApp. No BePark, a van passa no mesmo ponto onde deixou você na ida. Pergunte na reserva: é nessa espera, no fim da viagem, que um pátio a 3 km pode parecer mais longe que um a 7 km."},{kind:"h2",text:"A pé no aeroporto ou de van: quanto custa cada escolha"},{kind:"p",text:"Dispensar a van em Confins só é possÃvel no estacionamento oficial. Pela [tabela da BH Airport](https://www.bh-airport.com.br/pt-BR/parking), o E3 fica a 280 metros do terminal e cobra R$ 60,00 por diária. Os pátios Premium ficam mais perto, de 50 a 300 metros conforme o pátio e o terminal, e custam de R$ 85,00 a R$ 105,00 por diária."},{kind:"p",text:"Fora do aeroporto, a diária da vaga descoberta é R$ 20,00 no AeroPark Confins e no Auto Park Brasil e R$ 24,00 no Space Park (sites oficiais, consultados em 27/09/2026): de R$ 36,00 a R$ 40,00 a menos por dia que o E3. No bate e volta, repare na tarifa mÃnima do Space Park, R$ 40,00 por 24 horas, que reduz a diferença para R$ 20,00."},{kind:"p",text:"Numa semana, a antecedência pesa mais que a distância. No balcão, sete diárias do E3 somam R$ 420,00; com reserva feita 72 horas antes, o pacote de 7 diárias do Econômico sai a partir de R$ 189,00. O Auto Park Brasil cobra R$ 126,00 pela semana na descoberta, e o AeroPark Confins, R$ 17,00 por dia a partir de 7 diárias (R$ 119,00). Reservando cedo, andar 280 metros em vez de pegar a van custa pelo menos R$ 63,00 a R$ 70,00 a mais na semana; sem reserva, de R$ 294,00 a R$ 301,00."},{kind:"p",text:"Para outras durações, veja o [comparativo de preços de Confins](/quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026) e o guia de [estadia por semana ou mês](/estacionamento-mensal-aeroporto-confins-semana-ou-mes)."},{kind:"h2",text:"Bandeira Park Confins: fora da faixa dos 3 km, com a van mais longa"},{kind:"p",text:"O Bandeira Park é parceiro do xpark, por isso vale ser direto. A unidade fica na Rodovia MG-010, Km 26,5, em Vespasiano, antes de Confins para quem vem de Belo Horizonte pela Linha Verde. O site oficial anuncia cerca de 15 minutos de van gratuita até o terminal, o trajeto mais longo desta página, e a distância em quilômetros ainda não foi confirmada. Se ficar perto do terminal é o seu critério principal, ele não é a escolha."},{kind:"p",text:"Em troca, a unidade abre com 1.500 vagas cobertas e descobertas, van 24 horas e diária de R$ 18,49 na vaga descoberta com o cupom XPK26, pela tabela oficial. A operação começa em 01/10/2026, data mÃnima de entrada das reservas. Os detalhes estão na [ficha do Bandeira Park Confins](/aeroportos/estacionamento-aeroporto-confins/bandeira-park), unidade parceira do xpark."},{kind:"h2",text:"Quando sair de casa: a conta de trás para frente"},{kind:"p",text:"Comece pela hora em que você quer estar no terminal e desconte três parcelas: o trajeto anunciado, a espera máxima pela van e uma folga para o check-in do carro no pátio. No BePark, as duas primeiras somam até 30 minutos. Num pátio da faixa dos 3 km com saÃda imediata, de 3 a 5 minutos, se a promessa valer no seu horário. No E3, basta a caminhada de 280 metros."},{kind:"p",text:"Os próprios pátios sugerem margem. O Estacionamento Pátio pede que você chegue 15 minutos antes do horário em que quer estar no aeroporto. O BePark recomenda pelo menos 45 minutos de antecedência em relação ao embarque, e o Bandeira Park, parceiro do xpark, 45 minutos antes do horário do check-in."},{kind:"p",text:"Com o horário resolvido, o que sobra para comparar entre os pátios da faixa dos 3 km é o dinheiro: o total da sua estadia e se você quer vaga coberta. Para isso, veja o ranking de [estacionamento mais barato em Confins](/estacionamento-mais-barato-confins)."},{kind:"p",text:"Cada ficha traz endereço, mapa e tabela: [Space Park](/aeroportos/estacionamento-aeroporto-confins/space-park), [Central Park Confins](/aeroportos/estacionamento-aeroporto-confins/central-park-confins), [Park Confins](/aeroportos/estacionamento-aeroporto-confins/park-confins), [IPO Park](/aeroportos/estacionamento-aeroporto-confins/ipo-park), [Auto Park Brasil](/aeroportos/estacionamento-aeroporto-confins/auto-park-brasil), [Estacionamento Pátio](/aeroportos/estacionamento-aeroporto-confins/patio), [Premium Park](/aeroportos/estacionamento-aeroporto-confins/premium-park), [AeroPark Confins](/aeroportos/estacionamento-aeroporto-confins/aeropark-confins), [SuperPark](/aeroportos/estacionamento-aeroporto-confins/superpark), [MultiPark Aero Confins](/aeroportos/estacionamento-aeroporto-confins/multipark-aero-confins), [BePark](/aeroportos/estacionamento-aeroporto-confins/bepark) e o [E3 oficial da BH Airport](/aeroportos/estacionamento-aeroporto-confins/bh-airport-oficial-economico-e3)."},{kind:"h2",text:"Perguntas frequentes sobre distância e van em Confins"},{kind:"faq",question:"Qual estacionamento fica mais perto do terminal de Confins?",answer:"Os pátios oficiais da BH Airport: o P+ fica a 50 metros do Terminal 2, o P2 a 75 metros do Terminal 1 e o E3, o mais barato deles, a 280 metros. Entre os privados, o [Space Park](/aeroportos/estacionamento-aeroporto-confins/space-park) tem a menor distância nas fichas do xpark, 2,5 km, mas sete pátios estão entre 2,5 km e 3,68 km (parte dessas distâncias vem de medição de terceiro, de setembro de 2026), e a ordem entre eles depende de como cada distância foi medida."},{kind:"faq",question:"A van até o terminal é gratuita?",answer:"Na maioria dos pátios desta página, sim. Space Park, Central Park Confins, Park Confins, Auto Park Brasil, Estacionamento Pátio, Premium Park, AeroPark Confins e BePark anunciam traslado gratuito no site oficial, assim como o Bandeira Park, parceiro do xpark. SuperPark e MultiPark Aero Confins aparecem com traslado incluso nas fichas. O site do IPO Park não diz se cobra. Confirme se a volta também está incluÃda."},{kind:"faq",question:"Por que a distância de um mesmo estacionamento muda de um site para outro?",answer:"Porque cada fonte mede e arredonda do seu jeito: o Space Park aparece a 2,5 km na ficha do xpark e anuncia 3 km; o Estacionamento Pátio, a 3,13 km por medição de terceiro de setembro de 2026, fala em cerca de 4 km. Para planejar, vale mais o tempo de van somado à espera."},{kind:"faq",question:"Onde fica o Bandeira Park Confins e quanto demora a van?",answer:"Na Rodovia MG-010, Km 26,5, em Vespasiano. O Bandeira Park é parceiro do xpark e começa a operar em 01/10/2026. A van gratuita leva cerca de 15 minutos até o terminal, o trajeto mais longo desta página; veja a [ficha do Bandeira Park Confins](/aeroportos/estacionamento-aeroporto-confins/bandeira-park)."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"As distâncias dos pátios privados têm duas origens. Para Estacionamento Pátio, IPO Park, Auto Park Brasil, Premium Park e BePark, vêm de medição de terceiro em linha reta entre coordenadas, publicada em setembro de 2026;
454 para os demais, da coleta de 10/07/2026 registrada nas fichas do xpark. A distância a pé dos pátios oficiais, os tempos de van, as regras de saÃda e os preços foram conferidos nos sites oficiais das operadoras e da BH Airport em 27/09/2026, então nenhum preço desta página vem de levantamento de terceiro; o do Bandeira Park, parceiro do xpark, é o da tabela oficial com o cupom XPK26. Sem o dado no site, usamos a coleta de 10/07/2026 das fichas e avisamos. O que nenhuma fonte pública informava ficou como não divulgado. Critérios gerais na [Metodologia do xpark](/metodologia)."},{kind:"p",text:"Divulgação: o Bandeira Park é parceiro do xpark. Ele aparece aqui pelos mesmos critérios dos demais, fica no fim da tabela porque a distância ainda não foi confirmada e tem o trajeto de van mais longo da lista."},{kind:"quote",text:"Se a van sai a cada 20 minutos, a espera pode durar o dobro do trajeto. Em Confins, pergunte primeiro quando a van sai; a distância vem depois."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, coletadas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Confins","CNF","Distância","Traslado","Van","Belo Horizonte"]},{slug:"e-seguro-deixar-carro-aeroporto-confins",publishedAt:"2026-09-28",title:"à seguro deixar o carro no Aeroporto de Confins (CNF)? O que conferir antes de reservar",label:"Guia · Confins CNF",image:HZ,imageAlt:"Pátio de estacionamento com câmeras de segurança e avião ao fundo",excerpt:"Em Confins, a BH Airport assume a guarda do carro mas exclui objetos de valor, e só 1 de 9 pátios privados publicava o limite do seguro em 28/09/2026. Veja o que conferir antes de reservar e o que fazer se algo acontecer.",dek:"Guarda, seguro, câmeras e vistoria no oficial, nos pátios do entorno e no Bandeira Park Confins, parceiro do xpark, com checklist e passo a passo em caso de dano.",readTime:"9 min de leitura",byline:"João G.",pullQuote:"Em Confins, seguro anunciado não é seguro conferido. Peça por escrito quem cobre, até quanto e o que fica de fora, e filme o carro antes de deixar a vaga.",body:[{kind:"p",text:"Dá para deixar o carro em Confins com tranquilidade, desde que ele fique num estacionamento pago, que registre a sua entrada e responda por escrito ao que você perguntar. Pela regra geral do STJ, com o carro sob a guarda da empresa, ela responde por dano ou furto, tenha ou não seguro. O que muda de um lugar para outro é o quanto fica claro antes da reserva: em 28/09/2026, dos 9 pátios privados em funcionamento no entorno do aeroporto cujo site o xpark abriu, 7 declaravam seguro, só 1 publicava o limite da cobertura, 2 descreviam vistoria do carro na chegada e 1 mostrava o CNPJ."},{kind:"p",text:"Abaixo, o que declaram a BH Airport, os pátios privados e o [Bandeira Park Confins](/aeroportos/estacionamento-aeroporto-confins/bandeira-park), parceiro do xpark que abre em 1º de outubro de 2026, e o que fazer se algo der errado. Quem responde pelo carro, em termos gerais, está em [estacionamento de aeroporto é seguro?](/estacionamento-de-aeroporto-e-seguro)."},{kind:"h2",text:"O que cada estacionamento de Confins declara sobre segurança"},{kind:"p",text:'A tabela resume a página oficial de cada operação, lida em 28/09/2026. Ela mostra o que está escrito, não o que foi auditado: "não localizado" quer dizer ausente do site naquele dia.'},{kind:"table",headers:["Estacionamento","PolÃtica de dano","Seguro","Câmeras e horário","Registro na entrada","Fonte"],rows:[["[BH Airport, oficial](/aeroportos/estacionamento-aeroporto-confins/bh-airport-oficial-economico-e3)","Guarda do carro; objetos de valor excluÃdos; avisar dano na hora","Não citado","Ronda de segurança 24h;
454 câmeras não citadas","Não localizado","bh-airport.com.br e termos da reserva"],["[Bandeira Park Confins](/aeroportos/estacionamento-aeroporto-confins/bandeira-park), parceiro do xpark, abre em 01/10/2026","Não localizado","Seguro Tokio Marine de até R$ 1.000.000 por veÃculo, confirmado para Confins","Câmeras com gravação contÃnua, leitura de placa, ronda 24h","Fotos e checklist no check-in","bandeirapark.com.br"],["[AeroPark Confins](/aeroportos/estacionamento-aeroporto-confins/aeropark-confins)","Não localizado","Porto Seguro incluso, limite não informado","Câmeras 24h e vigilância; atendimento 24h","Vistoria fotográfica","aeroparkconfins.com.br"],["[Estacionamento Pátio](/aeroportos/estacionamento-aeroporto-confins/patio)","Diz restituir dano comprovado no pátio","Cobertura de sinistros até R$ 100.000,00; granizo excluÃdo","Câmeras e vigilância 24h","Checagem do carro na chegada","estacionamentopatioconfins.com.br"],["[Space Park](/aeroportos/estacionamento-aeroporto-confins/space-park)","Não localizado","Porto Seguro Auto, limite não informado","Monitoramento por câmeras; aberto 24h","Não localizado","estacionamentospacepark.com.br"],["[Central Park Confins](/aeroportos/estacionamento-aeroporto-confins/central-park-confins)","Não localizado","Porto Seguro, limite não informado","Vigilância 24h;
454 câmeras não citadas","Não localizado","centralparkconfins.com.br"],["[Park Confins](/aeroportos/estacionamento-aeroporto-confins/park-confins)","Não localizado","Diz ser todo segurado, sem seguradora","Câmeras e seguranças; 24h","Não localizado","parkconfins.com.br"],["[Auto Park Brasil](/aeroportos/estacionamento-aeroporto-confins/auto-park-brasil)","Não localizado",'"Seguro total", sem seguradora',"Monitorado 24h","Não localizado","autoparkbrasil.com.br"],["[BePark](/aeroportos/estacionamento-aeroporto-confins/bepark)","Não localizado","Seguro do veÃculo incluso, sem seguradora","Pátio fechado e recepção 24h; câmeras não citadas","Não localizado","bepark.com.br"],["[IPO Park](/aeroportos/estacionamento-aeroporto-confins/ipo-park)","Não localizado","Não declarado com clareza","Não localizado","Não localizado","ipopark.com.br"],["[Premium Park](/aeroportos/estacionamento-aeroporto-confins/premium-park)","Não localizado","Não localizado","Funcionamento 24h; câmeras não citadas","Não localizado","premiumpark.com.br"]],caption:"Sites oficiais, 28/09/2026. Declarações das empresas; o xpark não audita apólice nem câmera."},{kind:"p",text:'Seguro aparece em quase todo site, mas raramente com detalhe. Só o Estacionamento Pátio publica um teto, R$ 100.000,00, e exclui granizo; já a AeroPark Confins diz cobrir eventos naturais. Ou seja, "segurado" não significa a mesma coisa em todo lugar. Nenhuma página dizia por quantos dias guarda as gravações.'},{kind:"h2",text:"Estacionamento oficial: o que os termos da BH Airport dizem"}
454,{kind:"p",text:"Os pátios dentro do aeroporto são operados pela concessionária BH Airport (Concessionária do Aeroporto Internacional de Confins S/A, CNPJ 19.674.909/0001-53, informado nos termos). Pelos termos da reserva online, a responsabilidade dela é a guarda do veÃculo confiado ao estacionamento (item 2.7). Objetos de valor deixados no carro ficam de fora, com a recomendação de que você leve seus pertences (item 2.9). Se notar dano ou qualquer irregularidade, você deve comunicar a concessionária imediatamente (item 2.8)."},{kind:"p",text:"A página de estacionamento informa atendimento e ronda de segurança 24 horas em todos os pátios, além de ajuda com bateria e pneu e trava antifurto para Hilux e SW4. Nem a página nem os termos falam em câmeras ou em vistoria do carro na entrada, então o registro do estado do carro fica com você. Pátios, preços e caminhada até o terminal estão em [estacionamento dentro do Aeroporto de Confins](/estacionamento-dentro-aeroporto-confins-e3-p1-p3)."},{kind:"p",text:"Em termos gerais, os arts. 25 e 51 do Código de Defesa do Consumidor não admitem cláusula que livre o fornecedor de indenizar; com objetos, a dificuldade é provar o que estava no carro. Não deixe nada de valor."},{kind:"h2",text:"Pátios privados do entorno: o que perguntar e onde conferir"},{kind:"p",text:'Seguro. Diante de "segurado" ou "seguro total", peça por escrito seguradora, eventos cobertos, limite por carro, quem paga a franquia e como se abre o pedido. A apólice não muda o seu direito, já que o pátio responde pelo carro sob guarda com ou sem ela; muda o caminho do ressarcimento.'},{kind:"p",text:"CNPJ. Entre os privados, só o Space Park mostrava o número na página. Nos demais, peça antes de pagar e consulte de graça no site da Receita Federal: situação ativa e atividade de estacionamento. O Park Confins diz fazer parte do grupo BrasPark; confirme qual empresa emite o seu comprovante."},{kind:"p",text:'Histórico. Nas avaliações públicas, busque "avaria", "riscado" ou "sumiu" e veja se a empresa respondeu e resolveu. Confira também o [consumidor.gov.br](https://www.consumidor.gov.br).'},{kind:"p",text:'Câmeras e plantão. "Monitorado 24h" não diz quem assiste nem por quanto tempo as imagens ficam guardadas. Pergunte o prazo e prefira um maior que a viagem. Se você volta de madrugada, confirme que haverá funcionário no pátio para registrar um problema.'},{kind:"p",text:"Registro na chegada. Com ou sem vistoria do pátio, faça o seu: um vÃdeo sem cortes circulando o carro, com a placa no primeiro e no último quadro, e uma foto do painel aceso. Mande tudo para o seu e-mail antes de embarcar na van: o horário do envio fica registrado fora do celular."},{kind:"p",text:"Distância e tempo de van de cada pátio estão em [estacionamento perto do Aeroporto de Confins](/estacionamento-perto-aeroporto-confins-distancia), e as fichas completas, na [página de Confins no xpark](/aeroportos/estacionamento-aeroporto-confins)."},{kind:"h2",text:"Bandeira Park Confins, parceiro do xpark: o que já dá para conferir"},{kind:"p",text:"O Bandeira Park Confins é parceiro do xpark, e é nele a reserva pelo xpark em Confins. Fica na Rodovia MG-010, em Vespasiano, e começa a operar em 1º de outubro de 2026, então ainda não há histórico da unidade para avaliar. O site descreve câmeras com gravação contÃnua, leitura de placa, ronda 24 horas e check-in com fotos e checklist, e mostra o CNPJ 64.608.556/0001-48."},{kind:"p",text:"No seguro, o Bandeira Park Confins declara a mesma cobertura das unidades de Guarulhos e Viracopos: seguro Tokio Marine de até R$ 1.000.000 por veÃculo contra roubo, furto e danos, informado na página da unidade e confirmado ao xpark pela operação. Franquia, exclusões e prazo das gravações não aparecem no site; se isso pesa para você, peça as condições por escrito na reserva. Preço e van estão na [ficha do Bandeira Park Confins](/aeroportos/estacionamento-aeroporto-confins/bandeira-park)."},{kind:"h2",text:"Checklist antes de reservar em Confins"},{kind:"table",headers:["Item","Como conferir","Sinal de alerta"],rows:[["Empresa","CNPJ no site ou no comprovante, consultado na Receita","Nenhum CNPJ em lugar nenhum"],["Seguro","Seguradora, limite e exclusões por escrito",'"Seguro total" sem nenhum detalhe'],["PolÃtica de dano","Prazo e canal para avisar um dano","Regra de que nada é responsabilidade do pátio"],["Câmeras","Prazo de guarda das imagens","Ninguém sabe informar o prazo"],["Plantão","Funcionário no pátio no horário da sua volta","Só telefone fora do horário comercial"],["Registro na chegada","Vistoria do pátio mais o seu vÃdeo","Recusa em anotar riscos antigos"]],caption:"Roteiro do xpark."},{kind:"h2",text:"Se algo acontecer: o que fazer em Confins"},{kind:"p",text:"Dano visÃvel na volta: não tire o carro da vaga. Compare com o vÃdeo da chegada, chame o responsável do turno e saia com um registro da empresa descrevendo o dano e com o nome de quem atendeu. No oficial, avise a BH Airport na hora, como pedem os termos, e anote o protocolo. Peça por escrito que as imagens do perÃodo sejam preservadas."},{kind:"p",text:"Carro arrombado ou fora da vaga: avise a empresa na hora, registre boletim de ocorrência e, se o carro tiver seguro próprio, comunique a sua seguradora com o número do boletim."},{kind:"p",text:"Sem solução: reclamação formal no canal oficial, com protocolo; depois, Procon ou consumidor.gov.br, onde a empresa participante tem até 10 dias para responder. O Juizado Especial CÃvel julga causas de até 40 salários mÃnimos, e nas de até 20 você pode ir sem advogado (Lei 9.099/1995)."},{kind:"p",text:"Em termos gerais, a Súmula 130 do STJ põe na empresa a reparação do carro danificado ou furtado enquanto estava no estacionamento dela, e o art.
45414 do CDC trata da responsabilidade de quem presta o serviço. à informação geral, que não substitui a orientação de um advogado no seu caso. O checklist para qualquer aeroporto está em [é seguro deixar o carro no estacionamento do aeroporto?](/e-seguro-deixar-carro-estacionamento-aeroporto-o-que-verificar)."},{kind:"h2",text:"Perguntas frequentes sobre segurança no estacionamento de Confins"},{kind:"faq",question:"O estacionamento oficial de Confins responde se o carro for danificado?",answer:"Pelos termos da reserva online, lidos em 28/09/2026, a BH Airport responde pela guarda do veÃculo e pede que qualquer dano seja comunicado imediatamente. Objetos de valor deixados no carro ficam de fora. Registre o problema antes de sair e guarde o protocolo."},{kind:"faq",question:"Os pátios privados de Confins têm seguro?",answer:"Dos 9 pátios privados em funcionamento cujo site o xpark leu em 28/09/2026, 7 declaravam seguro e 3 citavam a Porto Seguro. Só o Estacionamento Pátio publicava limite, R$ 100.000,00, e dizia que granizo não está coberto. Peça os detalhes por escrito antes de pagar."},{kind:"faq",question:"O Bandeira Park Confins tem seguro?",answer:"O Bandeira Park Confins, parceiro do xpark, abre em 01/10/2026 e declara seguro Tokio Marine de até R$ 1.000.000 por veÃculo contra roubo, furto e danos, a mesma cobertura das unidades de Guarulhos e Viracopos. Franquia e exclusões não estão no site: peça as condições por escrito ao reservar."},{kind:"faq",question:"Posso deixar mala ou notebook dentro do carro?",answer:"Evite. Os termos da BH Airport excluem objetos de valor, e em qualquer pátio é difÃcil provar o que estava dentro. Leve com você documentos e eletrônicos."},{kind:"faq",question:"Como sei se as câmeras do pátio vão servir para alguma coisa?",answer:"Pergunte por quantos dias as imagens ficam guardadas: nenhum site de Confins lido em 28/09/2026 informava o prazo. Gravação apagada antes da sua volta não prova nada."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"Em 28/09/2026, o xpark leu a página de estacionamento e os termos da reserva online da BH Airport, a página do Bandeira Park Confins e o site de 9 pátios privados com ficha no xpark. Registramos só o que estava escrito; o resto ficou como não localizado. O xpark não audita apólice, câmera nem perÃmetro. MultiPark Aero Confins e SuperPark ficaram fora, sem dado de segurança conferÃvel no canal oficial. Nenhum dado deste guia vem de levantamento de terceiro."},{kind:"p",text:"A Súmula 130 do STJ, as Leis 8.078/1990 e 9.099/1995 e o prazo do consumidor.gov.br foram conferidos nas fontes oficiais em 27/09/2026. O Bandeira Park Confins, parceiro do xpark, seguiu os mesmos critérios das demais opções ([metodologia](/metodologia)). Conteúdo informativo, que não substitui orientação jurÃdica profissional."},{kind:"quote",text:"Em Confins, seguro anunciado não é seguro conferido. Peça por escrito quem cobre, até quanto e o que fica de fora, e filme o carro antes de deixar a vaga."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, coletadas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Confins","CNF","Segurança","Guia","BH Airport","Belo Horizonte"]},{slug:"primeira-vez-aeroporto-guarulhos-endereco-terminais-estacionamento",publishedAt:"2026-09-29",title:"Primeira vez no Aeroporto de Guarulhos: endereço, terminais e onde deixar o carro",label:"Guia · Guarulhos GRU",image:QZ,imageAlt:"Ãrea de embarque de terminal de aeroporto com carros deixando passageiros",excerpt:"Endereço do Aeroporto Internacional de Guarulhos, como descobrir o seu terminal e onde deixar o carro, com os preços comparados pelo xpark.",dek:"O básico para quem vai pegar o primeiro voo em Guarulhos: endereço, terminais, antecedência e estacionamento.",readTime:"4 min de leitura",byline:"João G.",pullQuote:"Em Guarulhos, o terminal certo está no seu cartão de embarque. Confira antes de sair de casa.",body:[{kind:"p",text:"O Aeroporto Internacional de São Paulo/Guarulhos fica na Rodovia Hélio Smidt, s/nº, bairro Cumbica, em Guarulhos (SP), CEP 07190-100. Para programar o transporte, coloque no aplicativo de mapas o nome do aeroporto e o número do seu terminal, que aparece no cartão de embarque."},{kind:"h2",text:"Qual é o meu terminal?"},{kind:"p",text:"Guarulhos tem os Terminais 1, 2 e 3. A companhia aérea informa o terminal no cartão de embarque e no aplicativo dela. Se tiver dúvida, confira no site do GRU Airport no dia do voo, porque a distribuição das companhias pode mudar."},{kind:"h2",text:"O que fazer ao chegar pela primeira vez"},{kind:"p",text:"Chegue com antecedência, siga as placas do seu terminal, procure o balcão ou o totem da companhia para despachar a mala e depois siga para o raio X. Em voo internacional, a imigração vem depois do raio X."},{kind:"h2",text:"Onde deixar o carro"},{kind:"p",text:"Você pode usar o estacionamento oficial, dentro do aeroporto, ou um estacionamento particular com traslado até o terminal. O xpark compara os dois lado a lado, com preço, data da coleta e distância. Veja a [página de estacionamento em Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos) e a [tabela de preços do GRU](/aeroportos/estacionamento-aeroporto-guarulhos/precos)."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Qual o endereço do Aeroporto de Guarulhos?",answer:"Rodovia Hélio Smidt, s/nº, Cumbica, Guarulhos (SP), CEP 07190-100."},{kind:"faq",question:"Como sei o meu terminal?",answer:"Pelo cartão de embarque ou pelo aplicativo da companhia aérea. Guarulhos tem os Terminais 1, 2 e 3."},{kind:"faq",question:"Onde comparar o preço do estacionamento?",answer:"Na [página de estacionamento em Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos) do xpark, que mostra o oficial e os particulares com a data da coleta."}],closing:"Conteúdo informativo com base em informações públicas. Condições sujeitas a alteração; confirme no momento da reserva.",tags:["Guarulhos","GRU","Primeira viagem","Guia"]},{slug:"primeira-vez-aeroporto-viracopos-endereco-terminal-estacionamento",publishedAt:"2026-09-29",title:"Primeira vez no Aeroporto de
454Viracopos: endereço, terminal e onde deixar o carro",label:"Guia · Viracopos VCP",image:WZ,imageAlt:"Terminal de aeroporto com cobertura ondulada e estacionamento na frente",excerpt:"Endereço do Aeroporto Internacional de Viracopos, em Campinas, o que fazer ao chegar e onde deixar o carro, com os preços comparados pelo xpark.",dek:"O básico para quem vai pegar o primeiro voo em Viracopos: endereço, chegada ao terminal e estacionamento.",readTime:"4 min de leitura",byline:"João G.",pullQuote:"Viracopos fica em Campinas: buscar estacionamento em Campinas ou em Viracopos leva à s mesmas opções.",body:[{kind:"p",text:'O Aeroporto Internacional de Viracopos fica na Rodovia Santos Dumont, km 66, em Campinas (SP), CEP 13052-970. Para programar o transporte, coloque no aplicativo de mapas "Aeroporto de Viracopos".'},{kind:"h2",text:"O que fazer ao chegar pela primeira vez"},{kind:"p",text:"Chegue com antecedência, siga as placas de embarque, procure o balcão ou o totem da sua companhia aérea para despachar a mala e depois siga para o raio X. Em voo internacional, a imigração vem depois do raio X. Confira as informações do seu voo no aplicativo da companhia no dia da viagem."},{kind:"h2",text:"Onde deixar o carro"},{kind:"p",text:"Você pode usar o estacionamento oficial do aeroporto ou um particular com traslado até o terminal. O xpark compara as opções com preço, data da coleta e distância. Veja a [página de estacionamento em Viracopos](/aeroportos/estacionamento-aeroporto-viracopos) e a [tabela de preços do VCP](/aeroportos/estacionamento-aeroporto-viracopos/precos)."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Qual o endereço do Aeroporto de Viracopos?",answer:"Rodovia Santos Dumont, km 66, Campinas (SP), CEP 13052-970."},{kind:"faq",question:"Estacionamento em Campinas e em Viracopos é a mesma coisa?",answer:"Sim. O aeroporto fica em Campinas, então as duas buscas levam aos mesmos estacionamentos."},{kind:"faq",question:"Onde comparar o preço do estacionamento?",answer:"Na [página de estacionamento em Viracopos](/aeroportos/estacionamento-aeroporto-viracopos) do xpark."}],closing:"Conteúdo informativo com base em informações públicas. Condições sujeitas a alteração; confirme no momento da reserva.",tags:["Viracopos","VCP","Campinas","Primeira viagem","Guia"]},{slug:"lista-de-viagem-saindo-de-guarulhos-ou-viracopos",publishedAt:"2026-09-29",title:"Lista de viagem saindo de Guarulhos ou Viracopos: o que levar e como deixar o carro",label:"Guia · Planejamento",image:JZ,imageAlt:"Porta-malas aberto com mala, mochila e passaporte em estacionamento de aeroporto",excerpt:"Checklist simples para arrumar a mala e sair de casa para Guarulhos ou Viracopos sem esquecer nada, incluindo onde deixar o carro.",dek:"Documentos, mala, antes de sair de casa e estacionamento: uma lista para quem voa por GRU ou VCP.",readTime:"4 min de leitura",byline:"João G.",pullQuote:"Quem reserva o estacionamento antes de fazer a mala tira uma preocupação do dia do voo.",body:[{kind:"p",text:"Esta lista vale para quem sai de Guarulhos (GRU) ou de Viracopos (VCP). Regras de bagagem mudam por companhia e tarifa, então confira sempre as da sua passagem."},{kind:"h2",text:"Documentos"},{kind:"p",text:"Documento com foto válido; em voo internacional, passaporte e visto quando o destino exigir. Cartão de embarque no celular ou impresso. Comprovante da reserva do estacionamento, se você for de carro."},{kind:"h2",text:"Mala"},{kind:"p",text:"Confira o peso e o tamanho permitidos pela sua tarifa. LÃquidos na bagagem de mão seguem as regras de segurança do aeroporto. Remédios de uso contÃnuo, carregador e documentos vão na bagagem de mão."},{kind:"h2",text:"Antes de sair de casa"},{kind:"p",text:"Confira o terminal e o horário no aplicativo da companhia, calcule o trânsito até o aeroporto e deixe folga para estacionar e fazer o check-in."},{kind:"h2",text:"Onde deixar o carro"},{kind:"p",text:"Compare o total da estadia antes de reservar. No xpark você vê os estacionamentos de [Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos) e de [Viracopos](/aeroportos/estacionamento-aeroporto-viracopos) lado a lado, com preço e data da coleta, e pode usar a [calculadora](/calculadora-estacionamento-aeroporto) para a sua viagem."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"O que não pode faltar na mala de mão?",answer:"Documentos, remédios, carregador e o que você não pode perder se a mala despachada atrasar."},{kind:"faq",question:"Preciso reservar o estacionamento antes?",answer:"Não é obrigatório, mas reservar antes permite comparar o total e chegar sabendo onde deixar o carro."}],closing:"Conteúdo informativo com base em informações públicas. Condições sujeitas a alteração; confirme no momento da reserva.",tags:["Guarulhos","Viracopos","Planejamento","Guia"]},{slug:"estacionamento-mensal-aeroporto-guarulhos-quanto-custa",publishedAt:"2026-09-28",title:"Estacionamento mensal no Aeroporto de Guarulhos: preços de 30 dias",label:"Preço · Guarulhos GRU",image:KZ,imageAlt:"Vista aérea de estacionamento de longa permanência com avião decolando ao fundo",excerpt:"Estacionamento mensal no Aeroporto de Guarulhos: 30 dias custam de R$ 239,63 a R$ 690,00. Compare oficial e particulares, o dia extra e o plano de mensalista.",dek:"Quanto custa deixar o carro 30 dias ou mais no GRU, com oficial e particulares lado a lado, o dia em que cada tabela congela e as contas para 40, 45 e 60 dias.",readTime:"12 min de leitura",byline:"João G.",minPrice:"239.63",minPriceDescription:"Estacionamento de 30 dias perto do Aeroporto de Guarulhos por R$ 239,63 (vaga descoberta, Bandeira Park)",pullQuote:"Trinta dias perto do Aeroporto de Guarulhos custam de R$ 239,63 a R$ 690,00 nas tabelas publicadas, sem c
454ontar o Valet. Do 31º dia em diante, só o estacionamento oficial publica uma regra fechada: R$ 19,90 por dia extra no Standard.",body:[{kind:"p",text:"Quanto custa o estacionamento mensal no Aeroporto de Guarulhos? Nas tabelas conferidas em 28/09/2026, deixar o carro 30 dias perto do GRU custa de R$ 239,63 a R$ 690,00, sem contar o Valet. O menor valor é a vaga descoberta do [Bandeira Park](/aeroportos/estacionamento-aeroporto-guarulhos/bandeira-park), parceiro do xpark operado pelo mesmo grupo. O maior é o setor Premium e EdifÃcio Garagem do estacionamento oficial, dentro do aeroporto. Passou de 30 dias? Só o oficial publica a regra do dia extra: R$ 19,90 no setor Standard e R$ 22,90 no Premium."},{kind:"p",text:"Aqui você encontra o preço de 30 dias de cada estacionamento com tabela aberta, o dia em que cada tabela para de subir, as contas para 40, 45 e 60 dias e como pedir plano de mensalista. Todas as operações do entorno estão na [página do Aeroporto de Guarulhos no xpark](/aeroportos/estacionamento-aeroporto-guarulhos), e a comparação para qualquer duração fica na [tabela de preços do GRU](/aeroportos/estacionamento-aeroporto-guarulhos/precos)."},{kind:"table",headers:["Resumo: 30 dias no GRU","Valor","Onde"],rows:[["Mais barato (vaga descoberta)","R$ 239,63","Bandeira Park, fora do aeroporto, com van grátis"],["Mais barato (vaga coberta)","R$ 287,40","Bandeira Park"],["Estacionamento oficial, Standard","R$ 505,00","Dentro do aeroporto, T1 e T2"],["Estacionamento oficial, Premium e EdifÃcio Garagem","R$ 690,00","Dentro do aeroporto, T2 e T3"],["Dia extra depois do 30º (oficial)","R$ 19,90 ou R$ 22,90","Standard ou Premium"],["Mensalidade para mensalista","Não publicada","Oficial e Bandeira Park, sob consulta"]],caption:"Tabelas publicadas pelas operações e conferidas em 28/09/2026."},{kind:"h2",text:"Quanto custa estacionar 30 dias no Aeroporto de Guarulhos"},{kind:"p",text:"Do mais barato para o mais caro. A média por dia é o total dividido por 30."},{kind:"table",headers:["Estacionamento","Vaga ou setor","30 dias","Média por dia","Até o terminal"],rows:[["Bandeira Park (parceiro do xpark)","Descoberta","R$ 239,63","R$ 7,99","Van grátis 24h"],["Bandeira Park (parceiro do xpark)","Coberta","R$ 287,40","R$ 9,58","Van grátis 24h"],["CallPark","Descoberta","R$ 308,00","R$ 10,27","Traslado 24h incluso"],["Decolar Park","Descoberta","R$ 376,20","R$ 12,54","Traslado 24h grátis"],["CallPark","Coberta","R$ 378,00","R$ 12,60","Traslado 24h incluso"],["Decolar Park","Coberta","R$ 491,30","R$ 16,38","Traslado 24h grátis"],["Oficial GRU (T1 e T2)","Setor Standard","R$ 505,00","R$ 16,83","A pé"],["Oficial GRU (T2 e T3)","Setor Premium, EdifÃcio Garagem e Flex","R$ 690,00","R$ 23,00","A pé; no T3, por passarela"]],caption:"Tabela de valores do GRU Airport, sites da CallPark (promoção de 14 a 30 dias), do Decolar Park (até 720 horas) e do Bandeira Park, e tabela de reserva do Bandeira Park no xpark, conferidos em 28/09/2026. Média calculada pelo xpark."},{kind:"p",text:"Toda vaga fora do aeroporto com preço aberto sai mais barata que o Standard oficial, inclusive a coberta mais cara da lista. Entre os particulares, a média vai de R$ 7,99 a R$ 16,38 por dia. O que o oficial cobra a mais é a localização: você estaciona e segue a pé até o embarque, sem esperar van. Se isso pesa na sua decisão, o guia [estacionamento nos Terminais 1, 2 e 3 de Guarulhos](/estacionamento-terminais-1-2-3-aeroporto-guarulhos) mostra onde fica cada setor."},{kind:"p",text:"Nove operações do entorno não publicam preço de 30 dias nos canais que conferimos: [Urban Park](/aeroportos/estacionamento-aeroporto-guarulhos/urban-park), [FlyPark](/aeroportos/estacionamento-aeroporto-guarulhos/flypark), [GoPark](/aeroportos/estacionamento-aeroporto-guarulhos/gopark), [Airport Park](/aeroportos/estacionamento-aeroporto-guarulhos/airport-park), [Econopark](/aeroportos/estacionamento-aeroporto-guarulhos/econopark), [ServParking](/aeroportos/estacionamento-aeroporto-guarulhos/servparking), [Ponce Park](/aeroportos/estacionamento-aeroporto-guarulhos/ponce-park), [Park 222](/aeroportos/estacionamento-aeroporto-guarulhos/park-222) e [BR Parking Express](/aeroportos/estacionamento-aeroporto-guarulhos/br-parking-express). Cada ficha traz o canal oficial para você pedir a cotação."},{kind:"h2",text:"Voltar no 20º dia custa o mesmo que 30? O dia em que cada tabela congela"},{kind:"p",text:"Quase todas as tabelas do GRU param de subir antes do fim do mês. No oficial, a cobrança é por faixa: a diária avulsa do
454Standard custa R$ 76,00, de 11 a 17 diárias o total é R$ 480,00 e de 18 a 30, R$ 505,00. No Premium e EdifÃcio Garagem, a avulsa é R$ 104,00. Decolar Park e CallPark cobram por diária (R$ 20,90 e R$ 22,00 na descoberta) até o total bater no teto. No Bandeira Park, a diária cai com a duração (R$ 18,49 avulsa, R$ 13,31 de 7 a 12 dias) e depois vira valor fixo por perÃodo."},{kind:"table",headers:["Estacionamento e vaga","Total congela no","Valor congelado","Vale até"],rows:[["Bandeira Park, descoberta","18º dia","R$ 239,63","30º dia"],["CallPark, descoberta","14º dia","R$ 308,00","30º dia"],["CallPark, coberta","14º dia","R$ 378,00","30º dia"],["Decolar Park, descoberta","18º dia","R$ 376,20","720 horas"],["Decolar Park, coberta","17º dia","R$ 491,30","720 horas"],["Oficial, Standard","18º dia","R$ 505,00","30º dia"],["Oficial, Premium e EdifÃcio Garagem","18º dia","R$ 690,00","30º dia"]],caption:"Sites oficiais das operações e tabela de reserva do Bandeira Park no xpark, conferidos em 28/09/2026."},{kind:"p",text:"Na prática: se a sua volta cai entre o dia em que a tabela congela e o 30º, ficar mais uns dias não muda o valor. Uma viagem de 20 dias custa o mesmo que uma de 30 no oficial (R$ 505,00), no Decolar Park (R$ 376,20), na CallPark (R$ 308,00) e no Bandeira Park (R$ 239,63). No Bandeira Park existe ainda uma faixa intermediária: de 13 a 17 dias, o total fica fixo em R$ 173,06."},{kind:"h2",text:"Estacionamento por mais de 30 dias em Guarulhos: 40, 45 e 60 dias"},{kind:"p",text:"A tabela do aeroporto é direta: ao pacote de 30 diárias se soma, por dia extra, R$ 19,90 no Standard ou R$ 22,90 no Premium, EdifÃcio Garagem e Flex. Como R$ 19,90 é mais que a média do pacote Standard (R$ 16,83), cada dia extra puxa a média para cima."},{kind:"table",headers:["Duração","Oficial Standard","Oficial Premium e EdifÃcio Garagem"],rows:[["30 dias","R$ 505,00 (R$ 16,83/dia)","R$ 690,00 (R$ 23,00/dia)"],["40 dias","R$ 704,00 (R$ 17,60/dia)","R$ 919,00 (R$ 22,98/dia)"],["45 dias","R$ 803,50 (R$ 17,86/dia)","R$ 1.033,50 (R$ 22,97/dia)"],["60 dias","R$ 1.102,00 (R$ 18,37/dia)","R$ 1.377,00 (R$ 22,95/dia)"]],caption:"Cálculo do xpark sobre a tabela de valores do site do GRU Airport, conferida em 28/09/2026: pacote de 30 diárias mais R$ 19,90 (Standard) ou R$ 22,90 (Premium e EdifÃcio Garagem) por dia extra."},{kind:"p",text:"Entre os particulares, só o Bandeira Park publica um valor depois do 30º dia: R$ 7,98 por dia a partir do 31º (31 dias somam R$ 247,52). Para estadias bem mais longas, o próprio site da operação pede que você confirme com a central. A CallPark orienta falar com a equipe acima de 30 dias, e a tabela do Decolar Park termina em 720 horas. Para simular outras durações, use a [calculadora de estacionamento](/calculadora-estacionamento-aeroporto) ou leia o guia sobre [estacionar 30 dias no aeroporto](/estacionar-30-dias-aeroporto-sem-pagar-9x-mais)."},{kind:"h2",text:"Plano de mensalista no Aeroporto de Guarulhos: quem oferece e como pedir"},{kind:"p",text:"No estacionamento oficial, operado pela Indigo, o caminho é o canal de Relacionamento Mensalista, pelo e-mail [email protected], informado no [site do aeroporto](https://www.gru.com.br/pt/estacionamento). O valor não é publicado: você pede e recebe a proposta. O Bandeira Park anuncia planos mensais para quem voa toda semana, cadastro empresarial e boleto mensal, também sem preço aberto. Nas páginas de preço da CallPark e do Decolar Park não há mensalidade."},{kind:"p",text:"Plano de mensalista serve a quem entra e sai com o carro várias vezes no mês, como em viagens a trabalho frequentes. Para uma viagem só, com ida e volta marcadas, a conta que interessa é a das tabelas acima, mesmo que você fique fora o mês inteiro. Se esse é o seu caso, veja também a resposta sobre [viagem a trabalho de um mês saindo de Guarulhos](/faq/viagem-a-trabalho-um-mes-guarulhos)."},{kind:"h2",text:"Reserva antecipada no estacionamento oficial compensa?"},{kind:"p",text:"A [Indigo Neo](https://paginas.indigoneo.com.br/estacionamento-oficial-aeroporto-guarulhos), plataforma de reservas do oficial, anunciava em 28/09/2026 diárias a partir de R$ 33,60 no Standard (T1 e T2) e R$ 42,70 no EdifÃcio Garagem do T3, em reservas de 15 dias e sujeitas a disponibilidade. O valor de 30 dias só aparece na simulação."},{kind:"p",text:"Faça a conta: 15 diárias a R$ 33,60 dão R$ 504,00, acima dos R$ 480,00 que a tabela do aeroporto cobra de 11 a 17 diárias no Standard. A reserva garante a vaga, não um desconto. No mesmo dia, o site do aeroporto avisava que as vagas do sistema de reserva estavam esgotadas. Mais detalhes na [ficha do Estacionamento Oficial GRU](/aeroportos/estacionamento-aeroporto-guarulhos/estacionamento-oficial-gru-indigo)."},{kind:"h2",text:"Vaga coberta ou Valet: quanto somam em 30 dias"},{kind:"p",text:"Trocar a descoberta pela coberta acrescenta, em 30 dias, R$ 47,77 no Bandeira Park, R$ 70,00 na [CallPark](/aeroportos/estacionamento-aeroporto-guarulhos/callpark) e R$ 115,10 no [Decolar Park](/aeroportos/estacionamento-aeroporto-guarulhos/decolar-park). No oficial, sair do Standard para o Premium e EdifÃcio Garagem soma R$ 185,00. Para decidir, veja o guia [estacionamento coberto no aeroporto vale a pena?](/estacionamento-coberto-aeroporto-vale-a-pena)"},{kind:"p",text:"O Valet é outro produto: um motorista recebe o carro no terminal e o devolve no desembarque. No Bandeira Park, o site informa R$ 26,40 por dia na base de 30 dias, ou R$ 792,00 no mês, mais que qualquer vaga das tabelas acima. As contas completas estão no guia do [Valet no Aeroporto de Guarulhos](/valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa)."},{kind:"h2",text:"Antes de pagar 30 dias, confira três coisas"},{kind:"p",text:"Se o voo mudar: a CallPark cobra só diárias, sem hora adicional e com mÃnimo de 2; a tabela do Decolar Park é em diárias de 24 horas, com teto até 720 horas. Pergunte como fica um atraso antes de reservar."},{kind:"p",text:"Quando você paga: no Decolar Park, na saÃda; na CallPark, a reserva é paga por Pix ou cartão, pelo Mercado Pago; no Bandeira Park, por Pix ou cartão."},{kind:"p",text:"Quem responde pelo carro: o site do aeroporto informa que os veÃculos do oficial são segurados contra roubo e furto, conforme a Lei Municipal 13.912/2010. O Bandeira Park informa seguro Tokio Marine de até R$ 1 milhão por veÃculo. Nos demais, c
454onfira o seguro de cada um; o guia [estacionamento de aeroporto é seguro?](/estacionamento-de-aeroporto-e-seguro) mostra o que olhar."},{kind:"h2",text:"Perguntas frequentes sobre estacionamento mensal em Guarulhos"},{kind:"faq",question:"Quanto custa o estacionamento mensal no Aeroporto de Guarulhos?",answer:"Em 28/09/2026, 30 dias perto do GRU custavam de R$ 239,63 (Bandeira Park, vaga descoberta) a R$ 690,00 (estacionamento oficial, Premium e EdifÃcio Garagem). No oficial Standard, 30 dias saem R$ 505,00. A mensalidade para mensalista não é publicada: no oficial, o pedido é feito pelo canal de Relacionamento Mensalista."},{kind:"faq",question:"Qual o estacionamento mais barato para 30 dias perto do Aeroporto de Guarulhos?",answer:"Entre os preços publicados em 28/09/2026, a vaga descoberta do Bandeira Park, por R$ 239,63, com van grátis 24h até os terminais. O Bandeira Park é parceiro do xpark, operado pelo mesmo grupo. Depois vêm CallPark (R$ 308,00) e Decolar Park (R$ 376,20), na descoberta. Nove operações não publicam valor de 30 dias; as fichas estão na [página do GRU no xpark](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"faq",question:"O estacionamento oficial de Guarulhos tem plano para mensalista?",answer:"Tem um canal de Relacionamento Mensalista, pelo e-mail [email protected], mas o valor não é publicado. Para uma viagem de um mês, a tabela do oficial cobra R$ 505,00 de 18 a 30 diárias no setor Standard."},{kind:"faq",question:"Quanto custa deixar o carro 15 dias no Aeroporto de Guarulhos?",answer:"Pelas tabelas publicadas: R$ 173,06 no Bandeira Park (descoberta), R$ 308,00 na CallPark (promoção de 14 a 30 dias), R$ 313,50 no Decolar Park (descoberta) e R$ 480,00 no oficial Standard, que cobra esse valor fixo de 11 a 17 diárias."},{kind:"faq",question:"Quanto custa estacionar 40 dias no estacionamento oficial de Guarulhos?",answer:"Pacote de 30 diárias mais 10 diárias fixas: R$ 704,00 no Standard e R$ 919,00 no Premium e EdifÃcio Garagem. Em 60 dias, R$ 1.102,00 e R$ 1.377,00."},{kind:"faq",question:"Se eu voltar no 20º dia, pago o mesmo que em 30?",answer:"Sim, nas quatro tabelas com preço aberto: o total congela entre o 14º e o 18º dia e não muda até o 30º (ou até 720 horas, no Decolar Park). No oficial Standard, 20 dias custam R$ 505,00; no Bandeira Park, R$ 239,63."},{kind:"faq",question:"A reserva antecipada do estacionamento oficial sai mais barata?",answer:"Não necessariamente. Em 28/09/2026, a Indigo Neo anunciava R$ 33,60 por dia no Standard para 15 diárias, ou R$ 504,00, contra R$ 480,00 da tabela do aeroporto para a mesma faixa. A vantagem da reserva é garantir a vaga."},{kind:"faq",question:"Os estacionamentos de longa permanência em Guarulhos levam até os terminais 1, 2 e 3?",answer:"Os três particulares com preço aberto têm traslado 24 horas incluso: Bandeira Park, CallPark e Decolar Park. No oficial, você estaciona dentro do aeroporto e segue a pé; no T3, pela passarela."},{kind:"faq",question:"Dá para reservar 30 dias pelo xpark?",answer:"Em Guarulhos, sim: o xpark compara e também reserva. Na [busca do xpark](/) você informa ida e volta e vê as operações com reserva pela plataforma; das citadas aqui, é o caso do Bandeira Park. As demais têm na ficha o canal oficial para cotação."},{kind:"h2",text:"Como o xpark levantou esses preços"},{kind:"p",text:"Preços conferidos em 28/09/2026 nos canais oficiais: tabela de valores do GRU Airport, página da Indigo Neo e sites do Bandeira Park, da CallPark e do Decolar Park. Os totais do Bandeira Park seguem a tabela de reserva publicada na ficha dele no xpark. Médias e totais de 15, 20, 40, 45 e 60 dias são contas do xpark sobre essas tabelas. O que não era público (mensalidades, preço de 30 dias de nove operações e valores acima de 30 dias da maioria dos particulares) ficou marcado como não publicado ou a confirmar. A ordem segue só o preço; o Bandeira Park, parceiro do xpark, entrou pelos mesmos critérios. Mais na [metodologia do xpark](/metodologia)."},{kind:"quote",text:"Trinta dias perto do Aeroporto de Guarulhos custam de R$ 239,63 a R$ 690,00 nas tabelas publicadas, sem c
454ontar o Valet. Do 31º dia em diante, só o estacionamento oficial publica uma regra fechada: R$ 19,90 por dia extra no Standard."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, conferidas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Estacionamento Aeroporto de Guarulhos","GRU","Estacionamento mensal","Estacionamento 30 dias","Longa permanência","Mensalista","Preços 2026"]},{slug:"estacionamento-aeroporto-congonhas-guia-precos-2026",publishedAt:"2026-09-29",title:"Estacionamento no Aeroporto de Congonhas: quanto custa em 2026",label:"Preço · Congonhas CGH",image:XZ,imageAlt:"Ilustração de estacionamento coberto perto do Aeroporto de Congonhas, em São Paulo",excerpt:"Estacionamento no Aeroporto de Congonhas em 2026: diária de R$ 29,90 a R$ 45,00. De 7 dias em diante, o particular mais barato é o Bandeira Park.",dek:"O oficial e os pátios do entorno lado a lado, com preços de 1, 7, 15 e 30 dias conferidos em 29/09/2026, quem fica mais barato a partir de uma semana, horário, van e o canal que cobra menos.",readTime:"13 min de leitura",byline:"João G.",minPrice:"29.90",minPriceDescription:"Diária de estacionamento perto do Aeroporto de Congonhas a partir de R$ 29,90 (Plenty Park, reserva online)",pullQuote:"Em Congonhas, o mais barato muda com o número de dias, com o canal de reserva e com o horário da sua volta. Some a estadia inteira antes de pagar.",body:[{kind:"p",text:"Quanto custa estacionar no Aeroporto de Congonhas? Em 29/09/2026, reservando antes, a diária de carro de passeio nos estacionamentos particulares que publicam preço ia de R$ 29,90 a R$ 45,00, e o estacionamento oficial partia de R$ 44,90. Para uma semana, o menor total era o pacote oficial, a partir de R$ 149,90, se houver cota promocional. Para um mês, o menor valor fechado em reserva comum era R$ 512,67 com o cupom XPK26 (R$ 692,80 sem cupom) no [Bandeira Park](/aeroportos/estacionamento-aeroporto-congonhas/bandeira-park), parceiro do xpark."},{kind:"p",text:"Para viagens de 7 dias ou mais, o Bandeira Park é o estacionamento particular mais barato de Congonhas: R$ 199,33 com o cupom XPK26 (R$ 269,36 sem cupom) por uma semana, a cerca de 300 m do terminal, com acesso a pé e aberto 24 horas. Em 15 dias, são R$ 370,26 com XPK26 (R$ 500,35 sem cupom), e em 30 dias, R$ 512,67 com XPK26 (R$ 692,80 sem cupom). O plano mensalista do One Parking sai abaixo, sujeito a vaga e a uma modalidade diferente de reserva. Veja também [qual o melhor estacionamento em Congonhas](/qual-melhor-estacionamento-aeroporto-congonhas) por necessidade."},{kind:"p",text:"Aqui você encontra o preço de 1, 7, 15 e 30 dias de cada estacionamento, quem abre 24 horas, quem tem van até o terminal e qual canal de reserva cobra menos. O Bandeira Park entra com os mesmos critérios dos outros. Mapa e fichas de todos os pátios estão na [página de Congonhas no xpark](/aeroportos/estacionamento-aeroporto-congonhas)."},{kind:"table",headers:["Resumo: estacionamento em Congonhas","Valor","Onde"],rows:[["Menor diária (1 dia)","R$ 29,90","Plenty Park, reserva online"],["Estacionamento oficial (1 dia)","a partir de R$ 44,90","Estapar, dentro do aeroporto"],["Particular mais barato em 7 dias","R$ 199,33 com XPK26 (R$ 269,36 sem cupom)","Bandeira Park, 24 horas"],["Oficial em 7 dias","a partir de R$ 149,90","Pacote de 6 a 10 diárias, só com cota promocional"],["Menor total de 15 dias","R$ 370,26 com XPK26 (R$ 500,35 sem cupom)","Bandeira Park"],["Menor total de 30 dias","R$ 512,67 com XPK26 (R$ 692,80 sem cupom)","Bandeira Park"],["Mensalista","R$ 300,00","One Parking, sujeito a vaga"]],caption:"Sites das operações e Estapar Reserva conferidos em 29/09/2026; Bandeira Park pela tabela de reserva publicada no xpark."},{kind:"h2",text:"Quanto custa estacionar em Congonhas por 1, 7, 15 e 30 dias"},{kind:"table",headers:["Estacionamento","1 dia","7 dias","15 dias","30 dias"],rows:[["Plenty Park, online","R$ 29,90","R$ 188,30**","R$ 478,50**","R$ 747,00**"],["The Parking, pelo WhatsApp","desde R$ 30,00","R$ 210,00*","R$ 450,00*","sob consulta"],["Bandeira Park (parceiro do xpark), com XPK26","R$ 32,55 (R$ 43,98 sem cupom)","R$ 199,33 (R$ 269,36 sem cupom)","R$ 370,26 (R$ 500,35 sem cupom)","R$ 512,67 (R$ 692,80 sem cupom)"],["MultiPark, online","R$ 39,00","R$ 273,00*","R$ 585,00*","não publicado"],["Congonhas Park, pelo WhatsApp","R$ 40,00","R$ 280,00*","R$ 600,00*","sob consulta"],["Express Parking, carro pequeno","R$ 40,00","R$ 280,00*","R$ 600,00 (pacote)","R$ 600,00 (pacote)"],["Oficial (Estapar)","desde R$ 44,90","desde R$ 149,90","sem pacote publicado","sem pacote publicado"],["One Parking, carro e SUV","R$ 45,00","R$ 315,00*","R$ 675,00*","mensalista R$ 300,00"]],caption:"Em ordem de preço para 1 dia. Sites oficiais conferidos em 29/09/2026; Bandeira Park pela tabela de reserva publicada no xpark, com cupom XPK26. * Diária vezes os dias. ** Valor por dia do site vezes os dias. Cálculos do xpark. Grand Parking e Facility não publicam preço."},{kind:"p",text:"Para um dia, Plenty Park (online) e The Parking (com reserva pelo WhatsApp) cobram menos, e o oficial fica a partir de R$ 44,90. Em uma semana, o pacote oficial, desde R$ 149,90, é o menor total se você pegar a cota. Entre os particulares, o Plenty Park publica R$ 188,30. O Bandeira Park custa R$ 199,33 com o cupom XPK26 (R$ 269,36 sem cupom), com acesso a pé e funcionamento 24 horas."},{kind:"p",text:"Em 15 dias, o menor total publicado em reserva comum é o do Bandeira Park: R$ 370,26 com o cupom XPK26 (R$ 500,35 sem cupom), abaixo do The Parking (R$ 450,00) quando o cupom é aplicado. Em 30 dias, são R$ 512,67 com XPK26 (R$ 692,80 sem cupom). O mensalista do One Parking, R$ 300,00, custa menos, mas depende de vaga, e o pátio fecha das 23h à s 5h. Para outras durações, use a [calculadora de estacionamento](/calculadora-estacionamento-aeroporto)."},{kind:"h2",text:"Estacionamento oficial de Congonhas: preço e pacotes da Estapar"},{kind:"p",text:"Na [Estapar Reserva](https://www.zuldigital.com.br/estapar-reserva/aeroportos/36), em 29/09/2026, a diária saÃa a partir de R$ 44,90. Para ficar de 2 até 5 diárias, o pacote começava em R$ 85,90; de 6 até 10, em R$ 149,90. O blog da Zul+, app da Estapar, trata o pacote como valor fechado, então, no melhor caso, cinco dias no primeiro saem a R$ 17,18 por dia e sete no segundo, a R$ 21,41 (cálculo do xpark). O número de vagas com esse preço é limitado a cada dia: reserve assim que tiver as datas. Pacote acima de 10 diárias e tarifa sem reserva não aparecem na página."},{kind:"p",text:"O oficial é um edifÃcio-garagem no próprio aeroporto, junto ao desembarque, com cinco pavimentos e quase 2.000 vagas cobertas, segundo o blog da Zul+ (texto de 22/05/2026). A Aena confirma a Estapar como operadora, 24 horas. A Estapar tem ainda a unidade Gate One, na Rua Renascença, 103, fora do aeroporto e ligada a ele por passarela: ao reservar, confira onde fica a sua vaga."},{kind:"h2",text:"Onde fica cada estacionamento perto de Congonhas e quem abre 24 horas"},{kind:"p",text:"Os pátios particulares ficam no Campo Belo, na Vila Congonhas e arredores, de 0,64 km a 1,39 km do terminal, por medição de terceiro feita por coordenadas em setembro de 2026."},{kind:"table",headers:["Estacionamento","Endereço","Distância","Horário","Acesso ao terminal"],rows:[["Oficial (Estapar)","no aeroporto","junto ao desembarque","24 horas","a pé"],["Bandeira Park (parceiro do xpark)","Rua Vieira de Morais, 2110","cerca de 300 m, 5 min a pé, pela operação","24 horas","a pé, sem van"],["Plenty Park","Rua Nhu-Guaçu, 211","0,86 km","24 horas","a pé, sem traslado"],["The Parking","Av. Washington
454LuÃs, 7135","0,79 km","4h à s 23h59","van gratuita"],["MultiPark","Rua Baronesa de Bela Vista, 499","0,78 km","24 horas","não informado"],["Express Parking","Rua Zacarias de Góis, 1859","1,39 km","24 horas","van gratuita 24 horas"],["One Parking","Av. Washington LuÃs, 6901","0,64 km","5h à s 23h","van gratuita a partir de 2 diárias"],["Congonhas Park","Av. Washington LuÃs, 6915","0,64 km","24 horas","van gratuita"],["Grand Parking","Rua Baronesa de Bela Vista, 228","0,98 km","não informado","traslado de ida e volta"],["Facility","Rua Renascença, 112","0,64 km","não informado","não informado"],["Arai Park","Rua Barão de SuruÃ, 46","1,03 km","temporariamente inativo desde 15/05/2026, segundo o site","não se aplica"]],caption:"Horário, acesso e endereço pelos sites das operadoras e pela Aena, conferidos em 29/09/2026. Distâncias por medição de terceiro, por coordenadas, de setembro de 2026; a do Bandeira Park, como informa a operação."},{kind:"h2",text:"Tem van até o terminal de Congonhas ou é a pé?"},{kind:"p",text:"O Bandeira Park não tem van: a operação informa cerca de 5 minutos a pé, pelo túnel de pedestres (de segunda a sexta, das 9h à s 16h) ou pela passarela sobre a Av. Washington LuÃs. O Plenty Park também não tem traslado. The Parking, Express Parking e Congonhas Park anunciam van gratuita; o One Parking, só a partir de duas diárias, e avisa que as obras no entorno podem atrasá-la."},{kind:"p",text:"Para escolher entre andar e esperar a van, pense na volta: é no desembarque, com mala despachada e à s vezes tarde da noite, que 800 metros pesam. Só com bagagem de mão, os pátios a menos de 1 km se resolvem a pé."},{kind:"h2",text:"O mesmo estacionamento, preços diferentes conforme o canal"},{kind:"p",text:"Em Congonhas, a forma de reservar pesa quase tanto quanto o pátio escolhido:"},{kind:"table",headers:["Estacionamento","Com reserva ou desconto","Sem reserva ou desconto","Detalhe"],rows:[["Plenty Park","R$ 29,90 online","R$ 40,00 no local","cobra os dias reservados, mesmo sem uso"],["MultiPark","R$ 39,00 online","R$ 50,00 no balcão","online é promoção por tempo limitado"],["Congonhas Park","R$ 40,00 pelo WhatsApp","R$ 45,00","não vale para carro grande"],["The Parking","desde R$ 30,00","não publicado","só com reserva antecipada pelo WhatsApp"],["Bandeira Park (parceiro do xpark)","R$ 32,55 no xpark, com cupom XPK26","R$ 43,98 sem cupom","cupom de 26% sobre a tabela cheia"],["Oficial (Estapar)","desde R$ 44,90","não publicado","cota promocional diária"]],caption:"Sites oficiais conferidos em 29/09/2026; Bandeira Park pela tabela de reserva publicada no xpark."},{kind:"p",text:"O porte do carro também conta: carro grande paga R$ 45,00 no Express Parking, e caminhonete, R$ 50,00 no One Parking. E pergunte quem responde por danos; o guia sobre [estacionamento de aeroporto e seguro](/estacionamento-de-aeroporto-e-seguro) mostra o que checar."},{kind:"h2",text:"Como escolher: um exemplo de cinco dias"},{kind:"p",text:"Suponha cinco dias fora, com pouso à s 22h40. Com a cota promocional, o pacote oficial, desde R$ 85,90, ganha de todos e abre 24 horas. Sem ela, o The Parking é o particular mais barato (R$ 150,00), mas fecha à s 23h59: com uma hora e meia de atraso, você só retira o carro à s 4h. O One Parking, que fecha à s 23h, já é arriscado. Entre os de 24 horas, o Bandeira Park sai por R$ 162,75 com o cupom XPK26, quase empatado com o Plenty Park (R$ 164,50, a R$ 32,90 por dia). MultiPark soma R$ 195,00, e Congonhas Park e Express Parking, R$ 200,00 cada; esses dois têm van."},{kind:"p",text:"Vale para qualquer viagem: descarte quem está fechado na hora da sua volta, some a estadia inteira nos que sobraram e só então pense em andar ou pegar van. Se ainda cogita ir de aplicativo, veja a comparação [Uber ou estacionamento](/uber-ou-estacionamento-aeroporto)."},{kind:"h2",text:"Onde reservar cada estacionamento de Congonhas"},{kind:"p",text:"O xpark reserva em Congonhas a vaga coberta do [Bandeira Park](/aeroportos/estacionamento-aeroporto-congonhas/bandeira-park): escolha as datas [na busca do xpark](/) e pague por Pix ou cartão. Quem procura Aerovalet Congonhas chega ao mesmo pátio, porque Aerovalet é o nome comercial do Bandeira Park CGH. The Parking e Congonhas Park fecham o preço pelo WhatsApp; Plenty Park e MultiPark, online. Os canais de cada um estão nas fichas: [Plenty Park](/aeroportos/estacionamento-aeroporto-congonhas/plenty-park), [The Parking](/aeroportos/estacionamento-aeroporto-congonhas/the-parking), [MultiPark](/aeroportos/estacionamento-aeroporto-congonhas/multipark), [Express Parking](/aeroportos/estacionamento-aeroporto-congonhas/express-parking), [One Parking](/aeroportos/estacionamento-aeroporto-congonhas/one-parking), [Congonhas Park](/aeroportos/estacionamento-aeroporto-congonhas/congonhas-park), [Grand Parking](/aeroportos/estacionamento-aeroporto-congonhas/grand-parking), [Facility](/aeroportos/estacionamento-aeroporto-congonhas/facility) e [Arai Park](/aeroportos/estacionamento-aeroporto-congonhas/arai-park), temporariamente inativo. O oficial se reserva na [Estapar Reserva](https://www.zuldigital.com.br/estapar-reserva/aeroportos/36)."},{kind:"h2",text:"Perguntas frequentes sobre estacionamento no Aeroporto de Congonhas"},{kind:"faq",question:"Quanto custa o estacionamento no Aeroporto de Congonhas?",answer:"Em 29/09/2026, a diária nos particulares que publicam preço ia de R$ 29,90 a R$ 45,00, reservando antes. O estacionamento oficial, da Estapar, partia de R$ 44,90 por dia, com pacotes a partir de R$ 85,90 (2 a 5 diárias) e R$ 149,90 (6 a 10 diárias), sujeitos a cota."},{kind:"faq",question:"Qual o estacionamento mais barato perto de Congonhas?",answer:"Depende dos dias. Para 1 dia, o Plenty Park (R$ 29,90 online). De 3 a 10 diárias, o pacote oficial, se houver cota. Para 15 e 30 dias, o Bandeira Park, parceiro do xpark (R$ 370,26 e R$ 512,67 com o cupom XPK26). O mensalista do One Parking (R$ 300,00) custa menos em um mês, mas depende de vaga."},{kind:"faq",question:"Quanto custa o estacionamento oficial de Congonhas?",answer:"Na Estapar Reserva, em 29/09/2026: diária a partir de R$ 44,90; de 2 até 5 diárias a partir de R$ 85,90; de 6 até 10 diárias a partir de R$ 149,90. As vagas com esse preço são limitadas por dia, e pacote acima de 10 diárias não é publicado."},{kind:"faq",question:"Qual o estacionamento mais barato para 7 dias em Congonhas?",answer:"Entre os particulares, o Bandeira Park, parceiro do xpark: R$ 199,33 por 7 dias com o cupom XPK26, aberto 24 horas e a cerca de 300 m do terminal. O pacote oficial parte de R$ 149,90, mas só com cota promocional. Os demais: R$ 210,00 no The Parking, R$ 273,00 na MultiPark, R$ 280,00 no Congonhas Park e no Express Parking e R$ 315,00 no One Parking."},{kind:"faq",question:"Quais estacionamentos de Congonhas abrem 24 horas?",answer:"O oficial, o Bandeira Park, Plenty Park, MultiPark, Express Parking e Congonhas Park. O The Parking abre das 4h à s 23h59 e o One Parking, das 5h à s 23h. Grand Parking e Facility não informam horário."},{kind:"faq",question:"Tem van dos estacionamentos até o terminal de Congonhas?",answer:"Em parte deles. The Parking, Express Parking e Congonhas Park anunciam van gratuita, o One Parking a partir de duas diárias, e o Grand Parking informa traslado. O Bandeira Park e o Plenty Park não têm van: o acesso é a pé."},{kind:"faq",question:"Tem estacionamento mensal perto do Aeroporto de Congonhas?",answer:"O One Parking publica mensalista a R$ 300,00 para carro, sujeito a vaga. The Parking e Congonhas Park têm mensal sob consulta. Para uma viagem única de 30 dias, o menor valor fechado é o do Bandeira Park, R$ 512,67 com o cupom XPK26."},{kind:"faq",question:"O Aerovalet Congonhas é o Bandeira Park?",answer:"Sim. O pátio da Rua Vieira de Morais, 2110, usa o nome comercial Aerovalet e é o Bandeira Park CGH, parceiro do xpark. No xpark, ele aparece como Bandeira Park, com cupom XPK26: R$ 32,55 por dia de 1 a 6 diárias e R$ 28,48 por dia de 7 a 12. Fica a cerca de 300 m do terminal, uns 5 minutos a pé, sem van, e funciona 24 horas."},{kind:"faq",question:"E se o voo atrasar e eu passar do perÃodo reservado?",answer:"Cada operadora tem regra própria. No Plenty Park, os dias além da reserva saem pela diária vigente, sem o desconto online. Nas demais, pergunte ao reservar como fica o dia extra."},{kind:"h2",text:"Como o xpark levantou esses preços"},{kind:"p",text:"Preços, horários e acesso vêm dos sites oficiais das operadoras, da Estapar Reserva e da Aena, conferidos em 29/09/2026. O Bandeira Park, parceiro do xpark, entra pela tabela de reserva publicada na ficha dele no xpark, com cupom XPK26, e pela distância informada pela operação. As demais distâncias são por medição de terceiro, por coordenadas, de setembro de 2026. Valores com asterisco são cálculo do xpark, e o que não é público, como a tabela do Grand Parking e a do Facility, aparece como não publicado. Critérios gerais na [metodologia do x
454park](/metodologia)."},{kind:"quote",text:"Em Congonhas, o mais barato muda com o número de dias, com o canal de reserva e com o horário da sua volta. Some a estadia inteira antes de pagar."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, conferidas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Estacionamento Aeroporto de Congonhas","CGH","São Paulo","Estacionamento oficial","Preços 2026","Guia"]},{slug:"qual-melhor-estacionamento-aeroporto-confins",publishedAt:"2026-10-01",title:"Qual o melhor estacionamento no Aeroporto de Confins?",label:"Comparativo · Confins CNF",image:ZZ,imageAlt:"Estacionamento organizado perto de um aeroporto, com vagas cobertas, van e avião ao fundo",excerpt:"O melhor estacionamento em Confins depende da viagem. Compare menor custo, vaga coberta, acesso a pé, van e preços de 1, 7, 15 e 30 dias.",dek:"Uma resposta por necessidade, com preços, distância do terminal, tipo de vaga e limites dos dados publicados pelas operações.",readTime:"10 min de leitura",byline:"João G.",minPrice:"18.49",minPriceDescription:"Diária descoberta no Bandeira Park Confins por R$ 18,49 com o cupom XPK26 (R$ 24,99 sem cupom)",pullQuote:"Em Confins, a melhor escolha muda com os dias da viagem, a cobertura da vaga e o tempo que você aceita gastar entre o pátio e o terminal.",body:[{kind:"p",text:"Qual o melhor estacionamento no Aeroporto de Confins? Não existe um único vencedor para toda viagem. Em 01/10/2026, o menor total publicado de 1, 7, 15 e 30 dias era o do [Bandeira Park](/aeroportos/estacionamento-aeroporto-confins/bandeira-park), parceiro do xpark."},{kind:"p",text:`Os valores eram ${S(Be.dailyTotal1)} com o cupom XPK26 (${S(Be.dailyFull)} sem cupom), ${S(Be.weekTotal)} com o cupom XPK26 (${S(Be.weekTotalFull)} sem cupom), ${S(Be.d17Total)} com o cupom XPK26 (${S(233.87)} sem cupom) e ${S(Be.longStayTotal)} com o cupom XPK26 (${S(Be.longStayTotalFull)} sem cupom).`},{kind:"p",text:"Preço não resolve tudo. Para ir a pé, o melhor encaixe é um pátio oficial da BH Airport, dentro do aeroporto. Para vaga coberta com van curta, há opções no entorno a cerca de 3 a 4 minutos anunciados do terminal. Para decidir sem misturar critérios, compare o total da estadia, o tipo de vaga, o tempo até o embarque e as informações de segurança que cada operação publica."},{kind:"table",headers:["Necessidade","Opção que atende ao critério","Dado conferido"],rows:[["Menor total em 1, 7, 15 e 30 dias","Bandeira Park, parceiro do xpark",`${S(Be.dailyTotal1)}, ${S(Be.weekTotal)}, ${S(Be.d17Total)} e ${S(Be.longStayTotal)} com o cupom XPK26 (${S(Be.dailyFull)}, ${S(Be.weekTotalFull)}, ${S(233.87)} e ${S(Be.longStayTotalFull)} sem cupom)`],["Ir a pé até o terminal","Pátios oficiais da BH Airport","50 a 300 m, conforme o pátio e o terminal"],["Menor diária sem cupom","AeroPark Confins ou Auto Park Brasil","R$ 20,00 em vaga descoberta"],["Vaga coberta de menor total em 7 dias","Bandeira Park, parceiro do xpark",`${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(nr.rate_7_12*7)} sem cupom)`],["Van mais curta anunciada","Central Park Confins","3 min, com traslado gratuito de ida e volta"],["Pacote oficial de 7 dias","Econômico E3","a partir de R$ 189,00, com reserva 72h antes"]],caption:"Preços públicos e condições coletados entre 10/07/2026 e 01/10/2026. O Bandeira Park é parceiro do xpark e aparece pelos mesmos critérios dos demais. Tempo de van é o anunciado pela operação, não uma medição do xpark."},{kind:"h2",text:"Quanto custa estacionar em Confins por 1, 7, 15 e 30 dias"},{kind:"p",text:"A tabela usa o custo total da estadia. Onde a operação não publica uma regra suficiente para calcular o perÃodo, o valor fica como não divulgado. Isso evita transformar uma diária promocional em um total que a empresa não oferece."},{kind:"table",headers:["Estacionamento","1 dia","7 dias","15 dias","30 dias"],rows:[["Bandeira Park, parceiro do xpark",`${S(Be.dailyTotal1)} com o cupom XPK26 (${S(Be.dailyFull)} sem cupom)`,`${S(Be.weekTotal)} com o cupom XPK26 (${S(Be.weekTotalFull)} sem cupom)`,`${S(Be.d17Total)} com o cupom XPK26 (${S(233.87)} sem cupom)`,`${S(Be.longStayTotal)} com o cupom XPK26 (${S(Be.longStayTotalFull)} sem cupom)`],["AeroPark Confins, descoberta","R$ 20,00","R$ 119,00","R$ 255,00","R$ 510,00"],["Auto Park Brasil, descoberta","R$ 20,00","R$ 126,00","R$ 270,00","R$ 300,00"],["Central Park Confins, descoberta","R$ 22,00","R$ 140,00","R$ 300,00","não divulgado"],["Space Park, descoberta","R$ 24,00","R$ 140,00","R$ 300,00","R$ 600,00"],["Park Confins, coberta","R$ 35,00","R$ 149,00","R$ 319,35","R$ 638,70"],["MultiPark Aero Confins, coberta","R$ 34,90","R$ 169,30","R$ 248,50","R$ 397,00"],["SuperPark","R$ 45,00","R$ 180,00","R$ 385,65","R$ 400,00"],["BH Airport Oficial, Econômico E3","R$ 60,00","a partir de R$ 189,00","R$ 405,00*","R$ 810,00*"],["BePark, coberta","R$ 45,00","R$ 200,00","R$ 400,00","R$ 400,00"]],caption:"Tabela do Ãndice xpark de Preços para Confins. Bandeira Park: painel da parceira, coleta de 25/08/2026; demais datas constam nas fichas, entre 10/07 e 18/09/2026. * No oficial, 15 e 30 dias usam a diária do pacote de 7 dias porque não há pacote próprio publicado para esses perÃodos."},{kind:"p",text:"O menor preço muda quando o cupom sai da comparação. Sem o XPK26, AeroPark Confins e Auto Park Brasil empatam em R$ 20,00 por um dia. Em sete dias, AeroPark Confins soma R$ 119,00. Aos 15 dias, MultiPark Aero Confins soma R$ 248,50. Em 30 dias, Auto Park Brasil publica R$ 300,00. Veja a tabela completa, com fonte e data de cada linha, em [preços de estacionamento em Confins](/aeroportos/estacionamento-aeroporto-confins/precos)."},{kind:"h2",text:"Melhor para chegar ao terminal sem van"},{kind:"p",text:"Para eliminar a espera do traslado, escolha um dos pátios oficiais. O Premium Plus fica a 50 m do Terminal 2, o Premium 2 a 75 m do Terminal 1, o Premium 3 a 170 m do Terminal 1, o Econômico E3 a 280 m do terminal e o Premium 1 a 300 m do Terminal 2."},{kind:"p",text:"A diária de carro vai de R$ 60,00 no E3 a R$ 105,00 no Premium Plus, pela tabela da BH Airport consultada em 27/09/2026."},{kind:"p",text:"O E3 publica pacote de sete diárias a partir de R$ 189,00 com reserva feita 72 horas antes. A vantagem objetiva é caminhar até o terminal. A desvantagem é a vaga descoberta e o custo maior que os menores totais do entorno. Os detalhes de cada pátio estão no guia [estacionar dentro do Aeroporto de Confins](/estacionamento-dentro-aeroporto-confins-e3-p1-p3)."},{kind:"h2",text:"Melhor para vaga coberta"},{kind:"p",text:`O Bandeira Park tem o menor total coberto publicado em sete dias: ${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(nr.rate_7_12*7)} sem cupom). Sem cupom, o AeroPark Confins publica R$ 126,00, com traslado anunciado em 4 minutos. O Central Park Confins cobra R$ 168,00 e anuncia 3 minutos. O Space Park também soma R$ 168,00 e anuncia 4 minutos. O Park Confins publica pacote semanal a partir de R$ 149,00.`},{kind:"p",text:"Dentro do aeroporto, o Premium 3 é o pátio oficial coberto de menor diária, R$ 85,00.
454Cobertura completa também aparece no Premium Plus, a R$ 105,00 por dia. O Premium 1 combina vagas cobertas e descobertas. Compare o total, porque o tipo de cobertura e a regra do pacote mudam entre as operações."},{kind:"h2",text:"Melhor para economizar em uma viagem longa"},{kind:"p",text:`Com o cupom XPK26, o Bandeira Park tem os menores totais publicados da tabela: ${S(Be.weekTotal)} em 7 dias (${S(Be.weekTotalFull)} sem cupom), ${S(Be.d17Total)} no perÃodo fixo de 13 a 17 dias (${S(233.87)} sem cupom) e ${S(Be.longStayTotal)} de 18 a 30 dias (${S(Be.longStayTotalFull)} sem cupom). A unidade tem vagas cobertas e descobertas e van até o terminal.`},{kind:"p",text:"Sem cupom, compare as faixas. Aos 15 dias, o MultiPark Aero Confins publica R$ 248,50. Aos 30 dias, o Auto Park Brasil publica R$ 300,00, seguido de MultiPark Aero Confins, R$ 397,00, e SuperPark ou BePark, R$ 400,00. O Central Park Confins não tem total de 30 dias porque a tabela disponÃvel não permite calculá-lo com segurança. Mais perÃodos estão no guia de [estacionamento mensal em Confins](/estacionamento-mensal-aeroporto-confins-semana-ou-mes)."},{kind:"h2",text:"Melhor para reduzir o tempo de van"},{kind:"p",text:"Entre os privados com tempo publicado, o Central Park Confins anuncia 3 minutos até o terminal. O Estacionamento Pátio anuncia de 3 a 5 minutos, o Space Park e o AeroPark Confins anunciam 4 minutos. Esses números vêm das próprias operações. A espera antes da saÃda da van quase nunca é publicada e pode pesar mais que o trajeto."},{kind:"p",text:"Se o horário é apertado, confirme quando a van parte e como funciona o chamado na volta. O comparativo [estacionamento perto do Aeroporto de Confins](/estacionamento-perto-aeroporto-confins-distancia) reúne distância, tempo anunciado e regra de saÃda."},{kind:"h2",text:"Como o xpark define a melhor escolha"},{kind:"p",text:"A ordem editorial do xpark usa cinco critérios públicos: preço, segurança, traslado, reputação e transparência. Nesta página, não há um vencedor absoluto porque cada necessidade dá peso diferente aos critérios. O menor total pode exigir van; o acesso a pé custa mais; a vaga coberta muda a tarifa; e uma promessa de trajeto não inclui necessariamente o tempo de espera."},{kind:"p",text:"O xpark recebe comissão em reservas concluÃdas com parceiros, mas isso não altera critérios, tabelas ou conclusões. O Bandeira Park é parceiro do xpark e está identificado em todas as comparações. Leia os pesos e as regras de desempate na [metodologia do xpark](/metodologia)."},{kind:"h2",text:"Perguntas frequentes sobre o melhor estacionamento em Confins"},{kind:"faq",question:"Qual o melhor estacionamento no Aeroporto de Confins?",answer:`Depende da necessidade. Para o menor total publicado em 1, 7, 15 e 30 dias, Bandeira Park com o cupom XPK26. Para ir a pé, os pátios oficiais da BH Airport. Para vaga coberta de menor total em 7 dias, Bandeira Park por ${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(nr.rate_7_12*7)} sem cupom). Para reduzir o trajeto anunciado de van, Central Park Confins informa 3 minutos.`},{kind:"faq",question:"Qual o estacionamento mais barato no Aeroporto de Confins?",answer:`Com o cupom XPK26, o Bandeira Park publica ${S(Be.dailyTotal1)} em 1 dia (${S(Be.dailyFull)} sem cupom), ${S(Be.weekTotal)} em 7 dias (${S(Be.weekTotalFull)} sem cupom), ${S(Be.d17Total)} em 15 dias (${S(233.87)} sem cupom) e ${S(Be.longStayTotal)} em 30 dias (${S(Be.longStayTotalFull)} sem cupom). Sem cupom, o menor muda conforme o perÃodo.`},{kind:"faq",question:"Qual estacionamento de Confins fica mais perto do terminal?",answer:"Os pátios oficiais ficam dentro do aeroporto. O Premium Plus está a 50 m do Terminal 2, o Premium 2 a 75 m do Terminal 1 e o Econômico E3 a 280 m do terminal. Entre os privados, as distâncias disponÃveis usam fontes e métodos diferentes; compare também o tempo e a espera da van."},{kind:"faq",question:"Qual o melhor estacionamento coberto em Confins?",answer:`Pelo menor total coberto publicado para 7 dias, Bandeira Park: ${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(nr.rate_7_12*7)} sem cupom). AeroPark Confins publica R$ 126,00; Central Park Confins e Space Park, R$ 168,00. Dentro do aeroporto, o Premium 3 é coberto e cobra R$ 85,00 por diária.`},{kind:"faq",question:"Vale mais estacionar dentro ou fora do Aeroporto de Confins?",answer:"Dentro, você caminha de 50 a 300 m e não depende de van, mas paga mais na tarifa cheia. Fora, os menores totais são mais baixos e o traslado costuma estar incluso. Para uma semana, o E3 oficial parte de R$ 189,00 com 72 horas de antecedência; no entorno há totais menores."},{kind:"faq",question:"Quanto custa deixar o carro 7 dias em Confins?",answer:`O menor total publicado é ${S(Be.weekTotal)} no Bandeira Park com o cupom XPK26 (${S(Be.weekTotalFull)} sem cupom). Sem cupom, AeroPark Confins publica R$ 119,00 na descoberta, Auto Park Brasil R$ 126,00, Central Park Confins e Space Park R$ 140,00. O E3 oficial parte de R$ 189,00 com reserva 72h antes.`},{kind:"faq",question:"Quanto custa deixar o carro 30 dias em Confins?",answer:`O Bandeira Park publica ${S(Be.longStayTotal)} com o cupom XPK26 (${S(Be.longStayTotalFull)} sem cupom) para 18 a 30 dias. Sem cupom, o Auto Park Brasil publica R$ 300,00, MultiPark Aero Confins R$ 397,00, SuperPark e BePark R$ 400,00. Valores e condições depen
454dem da tabela de cada operação.`},{kind:"faq",question:"Os estacionamentos de Confins têm van gratuita?",answer:"A maioria dos pátios privados comparados informa traslado incluÃdo ou gratuito. Os pátios oficiais dispensam van porque ficam dentro do aeroporto. Confirme a frequência, o ponto de encontro na volta e se o serviço opera no horário do seu voo."},{kind:"faq",question:"Como comparar estacionamentos em Confins sem olhar só a diária?",answer:"Some o custo total dos dias, confira vaga coberta ou descoberta, tempo e espera da van, horário, polÃtica de atraso e informações de segurança. Depois compare esses pontos com a sua prioridade. O xpark publica preço, fonte, data e metodologia para deixar essa decisão verificável."},{kind:"h2",text:"Fontes e atualização"},{kind:"p",text:"Preços da tabela: Ãndice xpark de Preços para Confins, com coleta de cada operação entre 10/07 e 25/09/2026; Bandeira Park pelo painel da parceira em 25/08/2026. Pátios oficiais, distâncias a pé e condições de reserva: site da BH Airport, consultado em 27/09/2026. Tempos e condições de van: sites das operações, consultados em 27 e 28/09/2026, ou fichas com a data indicada. O que não estava publicado aparece como não divulgado."},{kind:"quote",text:"Em Confins, escolha primeiro o que não pode falhar na sua viagem. Depois compare o custo total somente entre as opções que atendem a essa prioridade."}],closing:"Conteúdo informativo com base em preços e condições publicados nas fontes e datas indicadas. Valores podem mudar; confirme no momento da reserva.",tags:["Confins","CNF","Melhor estacionamento","Comparativo","Preços 2026","Belo Horizonte"]},{slug:"qual-melhor-estacionamento-aeroporto-congonhas",publishedAt:"2026-10-01",title:"Qual o melhor estacionamento no Aeroporto de Congonhas?",seoTitle:"Melhor estacionamento em Congonhas: compare opções",label:"Guia · Congonhas CGH",image:aee,imageAlt:"Carros em estacionamento coberto próximo a um aeroporto",excerpt:"Compare estacionamentos em Congonhas por preço total, horário, vaga coberta, acesso a pé e van, sem ranking baseado em avaliações incompletas.",dek:"A melhor escolha muda conforme a duração, o horário do voo, a bagagem e a preferência entre caminhar ou usar van. Veja os dados publicados para cada necessidade.",readTime:"10 min de leitura",byline:"João G.",minPrice:"29.90",minPriceDescription:"Diária publicada perto do Aeroporto de Congonhas a partir de R$ 29,90",pullQuote:"Em Congonhas, o melhor estacionamento depende do perÃodo e do horário: compare o total da estadia, a forma de chegar ao terminal e o funcionamento na volta.",body:[{kind:"p",text:`Qual o melhor estacionamento no Aeroporto de Congonhas? Para 1 dia, a menor diária publicada é R$ 29,90 no Plenty Park. Em 7 dias, o pacote oficial parte de R$ 149,90, sujeito a cota promocional; entre os particulares, o menor total publicado é ${S(ge("CGH",7,"coberta"))} com o cupom XPK26 (${S(je(Eo,7))} sem cupom) no Bandeira Park. Para 15 e 30 dias, ele também tem os menores totais publicados entre as reservas comuns: ${S(ge("CGH",15,"coberta"))} e ${S(ge("CGH",30,"coberta"))}
454 com o cupom XPK26 (${S(je(Eo,15))} e ${S(je(Eo,30))} sem cupom). Dados conferidos em 29/09/2026.`},{kind:"p",text:"Não existe uma única opção melhor para todo viajante. Para uma viagem de negócios, horário de retorno e tempo até o terminal podem valer mais que uma diferença pequena de preço. O xpark não classifica as empresas por avaliações porque não há notas comparáveis e verificadas para todas elas. A comparação abaixo usa apenas preço publicado, horário, cobertura, distância e forma de acesso."},{kind:"h2",text:"Melhor estacionamento em Congonhas para cada necessidade"},{kind:"table",headers:["Necessidade","Opção indicada pelos dados","Por quê"],rows:[["Menor diária publicada","Plenty Park","R$ 29,90 na reserva online"],["7 dias","Oficial, se houver cota","Pacote de 6 a 10 diárias a partir de R$ 149,90"],["7 dias entre particulares","Bandeira Park",`${S(ge("CGH",7,"coberta"))} com o cupom XPK26 (${S(je(Eo,7))} sem cupom)`],["15 ou 30 dias","Bandeira Park",`${S(ge("CGH",15,"coberta"))} ou ${S(ge("CGH",30,"coberta"))}
454 com XPK26 (${S(je(Eo,15))} ou ${S(je(Eo,30))} sem cupom)`],["Sem depender de van","Oficial ou Bandeira Park","Acesso a pé; o Bandeira Park informa cerca de 5 minutos"],["Chegada tarde da noite","Opções abertas 24 horas","Oficial, Bandeira Park, Plenty Park, MultiPark, Express Parking e Congonhas Park"]],caption:"Comparação baseada em preços e condições publicados, conferidos em 29/09/2026. Promoções dependem de disponibilidade."},{kind:"h2",text:"Qual tem o melhor custo-benefÃcio em Congonhas?"},{kind:"p",text:`Para 1 dia, o menor preço publicado é R$ 29,90 no Plenty Park. Em uma semana, o oficial pode custar menos, a partir de R$ 149,90, mas a tarifa depende de cota promocional. Sem essa cota, o Bandeira Park publica ${S(ge("CGH",7,"coberta"))} com o cupom XPK26 (${S(je(Eo,7))} sem cupom), em vaga coberta, aberto 24 horas e com acesso a pé. Compare sempre o total das datas na [página de preços de Congonhas](/aeroportos/estacionamento-aeroporto-congonhas/precos).`},{kind:"h2",text:"Qual opção funciona melhor para viagem de negócios?"},{kind:"p",text:"Em uma viagem de negócios, elimine primeiro os estacionamentos que estarão fechados no horário previsto da volta. O One Parking funciona das 5h à s 23h e o The Parking, das 4h à s 23h59. O oficial, Bandeira Park, Plenty Park, MultiPark, Express Parking e Congonhas Park informam funcionamento 24 horas. Depois compare o custo total e a forma de acesso ao terminal."},{kind:"h2",text:"A pé ou de van até o terminal?"},{kind:"p",text:"O oficial fica dentro do aeroporto. No Bandeira Park, não há traslado nem van: a operação informa cerca de 300 metros e 5 minutos a pé, pelo túnel em horários informados ou pela passarela. Plenty Park também não informa traslado. The Parking, Express Parking e Congonhas Park anunciam van gratuita; One Parking informa van a partir de duas diárias."},{kind:"h2",text:"Como comparar segurança sem inventar um ranking"},{kind:"p",text:"O xpark não chama uma empresa de mais segura ou mais bem avaliada sem dados equivalentes para todas. Nas fichas, compare fatos publicados: vaga coberta ou descoberta, câmeras, portaria controlada, seguro informado, funcionamento e se o cliente leva a chave. O Bandeira Park informa câmeras 24 horas, portaria controlada, estacionamento segurado e vaga coberta. Plenty Park informa câmeras, portaria e estacionamento segurado. As demais condições devem ser verificadas na ficha e no canal de cada operação."},{kind:"h2",text:"Preços de 1, 7, 15 e 30 dias"},{kind:"table",headers:["Estacionamento","1 dia","7 dias","15 dias","30 dias"],rows:[["Plenty Park, online","R$ 29,90","R$ 188,30","R$ 478,50","R$ 747,00"],["The Parking","desde R$ 30,00","R$ 210,00*","R$ 450,00*","sob consulta"],["Bandeira Park, com XPK26",`${S(ge("CGH",1,"coberta"))}`,`${S(ge("CGH",7,"coberta"))}`,`${S(ge("CGH",15,"coberta"))}`,`${S(ge("CGH",30,"coberta"))}`],["Bandeira Park, sem cupom",`${S(je(Eo,1))}`,`${S(je(Eo,7))}
454`,`${S(je(Eo,15))}`,`${S(je(Eo,30))}`],["MultiPark, online","R$ 39,00","R$ 273,00*","R$ 585,00*","não publicado"],["Oficial","desde R$ 44,90","desde R$ 149,90","sem pacote publicado","sem pacote publicado"]],caption:"Sites e canais das operações conferidos em 29/09/2026. * Diária multiplicada pelos dias. O preço oficial promocional depende de cota."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Quais são os melhores estacionamentos no Aeroporto de Congonhas?",answer:"Depende da viagem. Para 1 dia, a menor diária publicada é R$ 29,90 no Plenty Park. Para 7 dias, o oficial parte de R$ 149,90 se houver cota. Entre particulares e em estadias longas, compare o Bandeira Park. Para retorno de madrugada, filtre pelas opções 24 horas."},{kind:"faq",question:"Qual o melhor estacionamento para viagem de negócios em Congonhas?",answer:"Escolha primeiro uma opção aberta no horário da volta. Oficial, Bandeira Park, Plenty Park, MultiPark, Express Parking e Congonhas Park informam atendimento 24 horas. Depois compare o total e se prefere acesso a pé ou van."},{kind:"faq",question:"Quanto custa estacionar no aeroporto de Congonhas por diária?",answer:"Em 29/09/2026, as diárias publicadas com reserva antecipada iam de R$ 29,90 a R$ 45,00 nos particulares. O oficial partia de R$ 44,90, sujeito a cota promocional."},{kind:"faq",question:"Qual estacionamento de Congonhas tem acesso a pé?",answer:"O oficial fica dentro do aeroporto. O Bandeira Park informa acesso a pé em cerca de 5 minutos e não oferece van ou traslado em Congonhas. Plenty Park também não informa traslado."},{kind:"faq",question:"Qual é o estacionamento mais seguro em Congonhas?",answer:"Não há dados equivalentes para afirmar qual é o mais seguro. Compare câmeras, portaria, seguro, cobertura, horário e polÃtica de chave nas fichas. O xpark não cria ranking de segurança ou avaliações sem base comparável."},{kind:"faq",question:"Qual é o estacionamento mais bem avaliado em Congonhas?",answer:"O xpark ainda não possui avaliações verificadas e comparáveis de todas as operações para publicar esse ranking. Por isso, a comparação usa fatos verificáveis como preço, distância, horário, cobertura e acesso."},{kind:"faq",question:"Qual o estacionamento mais barato para 7 dias em Congonhas?",answer:`O pacote oficial parte de R$ 149,90, sujeito a cota. Entre os particulares, o Bandeira Park publica ${S(ge("CGH",7,"coberta"))} com o cupom XPK26 (${S(je(Eo,7))} sem cupom). Dados de 29/09/2026.`},{kind:"faq",question:"Tem estacionamento coberto perto de Congonhas?",answer:"Sim. O oficial é um edifÃcio-garagem coberto. Bandeira Park e Plenty Park também informam vagas cobertas. Confira a modalidade antes de reservar."},{kind:"faq",question:"Preciso pegar van do Bandeira Park até Congonhas?",answer:"Não. Em Congonhas não há van ou traslado no Bandeira Park. O acesso é a pé, em cerca de 5 minutos, aproximadamente 300 metros."},{kind:"h2",text:"Fontes e atualização"},{kind:"p",text:"Preços, horários, cobertura e acesso foram conferidos nos sites e canais informados nas fichas, com referência de 26 a 29/09/2026. As distâncias de terceiros aparecem identificadas. Quando uma operação não publica preço, horário ou condição, o dado permanece como não informado."}],closing:"Conteúdo informativo baseado em preços e condições publicados nas datas indicadas. Valores e disponibilidade podem mudar; confirme antes de reservar.",tags:["Congonhas","CGH","Melhor estacionamento","Custo-benefÃcio","Segurança","Preços 2026"]},{slug:"estacionamento-coberto-aeroporto-confins-precos",publishedAt:"2026-10-02",title:"Estacionamento coberto em Confins: quanto custa e como chegar ao terminal?",seoTitle:"Estacionamento coberto em Confins: preços e traslado",label:"Guia · Confins CNF",image:eee,imageAlt:"Imagem ilustrativa de carros sob cobertura em estacionamento próximo a um aeroporto",excerpt:"Compare vagas cobertas em Confins por 1 e 7 dias, com preço datado, fonte e diferença entre ir a pé e usar van.",dek:"Vaga coberta dentro do aeroporto ou no entorno? Veja os preços publicados e o trajeto até o embarque.",readTime:"6 min de leitura",byline:"João G.",pullQuote:"Vaga coberta não significa acesso a pé: compare o custo total, o trajeto e o tempo de espera.",body:[{kind:"p",text:`Segundo o Ãndice xpark de Preços, uma vaga coberta no Bandeira Park Confins, parceiro do xpark, custa ${S(ge("CNF",1,"coberta"))} por 1 dia com o cupom XPK26 (${S(je(nr,1))} sem cupom) e ${S(ge("CNF",7,"coberta"))} por 7 dias com o cupom XPK26 (${S(je(nr,7))} sem cupom). A tabela-base da parceira foi coletada em 25/08/2026. A unidade oferece van; para caminhar até o terminal, há pátios oficiais cobertos em outra faixa de preço.`},{kind:"p",text:"Coberta significa proteção contra sol e chuva, não proximidade do embarque. AeroPark Confins e Park Confins também anunciam vagas cobertas com van. Dentro do aeroporto, o Premium 3 (P3) e o Premium Plus (P+) têm cobertura e acesso a pé. Não confunda o preço da vaga descoberta com o da coberta."},{kind:"h2",text:"Quanto custa uma vaga coberta por 1 e 7 dias"},{kind:"p",text:"A tabela usa os valores publicados para vagas cobertas. O tempo da van é anunciado pela operação e não inclui espera, recepção nem o retorno. O desconto do parceiro vem acompanhado do preço sem cupom."},{kind:"table",headers:["Opção coberta","1 dia","7 dias","Chegada ao terminal","Fonte e coleta"],rows:[["Bandeira Park, parceiro do xpark",`${S(ge("CNF",1,"coberta"))} com o cupom XPK26 (${S(je(nr,1))} sem cupom)`,`${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(je(nr,7))} sem cupom)`,"Van, cerca de 15 min anunciados","Painel da parceira, 25/08/2026"],["AeroPark Confins","R$ 26,90","R$ 126,00","Van, 4 min anunciados","Site da operação, 10/07/2026"],["Park Confins","R$ 35,00","A partir de R$ 149,00","Van, cerca de 4 min anunciados","Site da operação, 10/07/2026"],["BH Airport, Premium 3 (P3)","R$ 85,00 no balcão","Pacote Premium a partir de R$ 229,00*","A pé, 170 m até o Terminal 1","Site do BH Airport, 27/09/2026"],["BH Airport, Premium Plus (P+)","R$ 105,00 no balcão","Pacote P+ a partir de R$ 384,00*","A pé, 50 m até o Terminal 2","Site do BH Airport, 27/09/2026"]],caption:"* Pacotes oficiais de 7 diárias exigem reserva 72 horas antes e estão sujeitos a disponibilidade. O menor preço do pacote Premium não identifica o pátio: confirme a cobertura ao reservar. Valores podem mudar desde a coleta."},{kind:"h2",text:"Dentro do aeroporto ou no entorno?"},{kind:"p",text:"No P3, são aproximadamente 170 m a pé até o Terminal 1; no P+, cerca de 50 m até o Terminal 2. Você dispensa a van, mas a diária de balcão é mais alta. O Premium 1 mistura vagas cobertas e descobertas: não trate toda reserva dessa categoria como garantia de cobertura. Confira os detalhes no [guia do estacionamento oficial](/estacionamento-dentro-aeroporto-confins-e3-p1-p3)."},{kind:"p",text:"No entorno, confirme disponibilidade da cobertura, tempo entre estacionar e embarcar na van e como pedir o retorno. Bandeira Park anuncia cerca de 15 minutos de van; AeroPark e Park Confins anunciam cerca de 4 minutos. São estimativas das operações, não medições do x
454park. Veja [distâncias e condições de traslado](/estacionamento-perto-aeroporto-confins-distancia)."},{kind:"h2",text:"Por que a diária avulsa não prevê o custo da semana"},{kind:"p",text:`No Bandeira Park, sete dias cobertos somam ${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(je(nr,7))} sem cupom). O desconto incide sobre o total da faixa de sete dias, como na reserva pelo xpark. A mesma unidade oferece vaga descoberta por ${S(Be.weekTotal)} com o cupom XPK26 (${S(Be.weekTotalFull)} sem cupom), mas esse valor não compra uma vaga coberta.`},{kind:"p",text:"AeroPark publica R$ 18,00 por dia coberto a partir de sete dias, total de R$ 126,00. Park Confins anuncia pacote semanal coberto a partir de R$ 149,00. Já o pacote Premium oficial começa em R$ 229,00, mas o menor valor não especifica qual pátio Premium será usado. Antes de pagar, confirme a vaga e o preço para suas datas."},{kind:"h2",text:"O que verificar antes de reservar"},{kind:"p",text:"Confira se a reserva especifica vaga coberta, o pátio ou categoria, horário da van e como acioná-la na volta. Compare o total do seu perÃodo na [página de preços de Confins](/aeroportos/estacionamento-aeroporto-confins/precos) e as fichas de cada operação na [página do aeroporto](/aeroportos/estacionamento-aeroporto-confins). Saiba [como o xpark faz a comparação](/metodologia)."},{kind:"h2",text:"Perguntas frequentes sobre vagas cobertas em Confins"},{kind:"faq",question:"Quanto custa a diária coberta perto do Aeroporto de Confins?",answer:`No Bandeira Park, parceiro do xpark, custa ${S(ge("CNF",1,"coberta"))} com o cupom XPK26 (${S(je(nr,1))} sem cupom), tabela-base de 25/08/2026. AeroPark anuncia R$ 26,90 e Park Confins, R$ 35,00, em tabelas coletadas em 10/07/2026. Confirme os valores da sua data.`},{kind:"faq",question:"Quanto custa uma semana com vaga coberta em Confins?",answer:`Sete dias no Bandeira Park custam ${S(ge("CNF",7,"coberta"))} com o cupom XPK26 (${S(je(nr,7))} sem cupom), tabela-base de 25/08/2026. AeroPark publica R$ 126,00 e Park Confins, a partir de R$ 149,00, em tabelas coletadas em 10/07/2026.`},{kind:"faq",question:"Tem vaga coberta dentro do Aeroporto de Confins?",answer:"Sim. BH Airport informa cobertura no P3 e no P+, com diárias de balcão de R$ 85,00 e R$ 105,00. O P1 combina vagas cobertas e descobertas. Fonte: site do BH Airport, 27/09/2026."},{kind:"faq",question:"Uma vaga coberta exige traslado em van?",answer:"Depende. Nos pátios oficiais P3 e P+ o acesso é a pé. Os pátios particulares citados neste guia anunciam van. Confirme espera, funcionamento e chamada na volta antes de reservar."},{kind:"faq",question:"O pacote Premium oficial garante vaga coberta?",answer:"Não dá para afirmar apenas pelo preço divulgado. O pacote Premium parte de R$ 229,00 com reserva 72 horas antes, mas o site não especifica o pátio no preço mÃnimo. Confira se a reserva oferece P3 ou outra vaga coberta. Fonte: BH Airport, 27/09/2026."},{kind:"h2",text:"Fontes e atualização"},{kind:"p",text:"Ãndice xpark de Preços e tabela-base do painel do Bandeira Park Confins, parceiro do xpark, coletada em 25/08/2026. O XPK26 é aplicado ao total da faixa pela regra da reserva. Diárias e pacote coberto do AeroPark e Park Confins: sites das operações, coleta de 10/07/2026. Cobertura, caminhada e tarifas oficiais: [BH Airport](https://www.bh-airport.com.br/pt-BR/parking), consulta de 27/09/2026. A capa é ilustrativa e não retrata nenhuma instalação especÃfica."}],closing:"Compare condições e disponibilidade no momento da reserva. O xpark é comparador independente; Bandeira Park é parceiro comercial sem tratamento editorial diferenciado.",tags:["Confins","CNF","Vaga coberta","Estacionamento coberto","Preços 2026"]},{slug:"voo-azul-viracopos-onde-deixar-o-carro",publishedAt:"2026-10-02",title:"Vai voar de Azul por Viracopos? Onde deixar o carro e quanto custa",seoTitle:"Voo Azul em Viracopos: onde deixar o carro e preços",label:"Guia · Viracopos VCP",image:tee,imageAlt:"Viajante com mala de rodinhas caminhando até a entrada de um terminal de aeroporto",excerpt:"Para quem embarca na Azul em Campinas: preços de estacionamento por 1, 7, 15 e 30 dias, tempo de van e fontes datadas.",dek:"Viracopos é a principal base da Azul. Veja onde deixar o carro, quanto custa cada perÃodo e quanto tempo leva até o terminal.",readTime:"5 min de leitura",byline:"João G.",pullQuote:"Em Viracopos, a diferença entre as opções cresce com os dias: compare o total da viagem, não a diária.",body:[{kind:"p",text:`Segundo o Ãndice xpark de Preços, a opção mais barata para deixar o carro em Viracopos (VCP) é o Bandeira Park, parceiro do xpark: ${S(ge("VCP",1))} com o cupom XPK26 (${S(je(za,1))} sem cupom) por 1 dia e ${S(ge("VCP",7))} com o cupom XPK26 (${S(je(za,7))} sem cupom) por 7 dias, tabela-base de 10/07/2026. O estacionamento oficial cobra R$ 25,00 por dia na reserva antecipada, também em 10/07/2026. Viracopos tem um terminal só, então quem voa de Azul desce no mesmo prédio de qualquer outro voo.`},{kind:"p",text:"Viracopos é a principal base de conexões da Azul, por isso muita gente que sai de Campinas e região voa pela companhia. Para o estacionamento, a companhia não muda nada: a escolha depende de quantos dias você f
454ica fora e de quanto tempo aceita gastar entre a vaga e o embarque."},{kind:"h2",text:"Quanto custa estacionar em Viracopos por perÃodo"},{kind:"table",headers:["Opção","1 dia","7 dias","15 dias","30 dias","Até o terminal"],rows:[["Bandeira Park, com XPK26",`${S(ge("VCP",1))}`,`${S(ge("VCP",7))}`,`${S(ge("VCP",15))}`,`${S(ge("VCP",30))}`,"Van 24h, cerca de 7 min"],["Bandeira Park, sem cupom",`${S(je(za,1))}`,`${S(je(za,7))}`,`${S(je(za,15))}`,`${S(je(za,30))}`,"Van 24h, cerca de 7 min"],["KM64","R$ 23,99","R$ 167,93","R$ 359,85","R$ 719,70","Traslado 24h, cerca de 6 min"],["Yellow Parking","R$ 24,99","R$ 174,93","R$ 374,85","R$ 285,00","Van a cada 30 min, cerca de 5 min"],["Oficial VCP (Estapar)","R$ 25,00","R$ 175,00","R$ 375,00","R$ 750,00","Passarela do edifÃcio-garagem"],["Virapark","R$ 40,00","R$ 174,30","R$ 373,50","R$ 747,00","Van a cada 15 min, cerca de 10 min"]],caption:"Bandeira Park: painel da parceira, 10/07/2026. Oficial: tabela da operação, 10/07/2026. KM64 e Yellow Parking: sites das operações, 17/07/2026. Virapark: levantamento de preços de terceiro, coletado em 27/09/2026. Tempos de van informados pelas operações."},{kind:"h2",text:"Viagem curta a trabalho ou viagem longa?"},{kind:"p",text:`Em bate-volta de 1 dia, as diárias ficam próximas: de ${S(ge("VCP",1))} com o cupom XPK26 a R$ 25,00 no oficial. Nesse caso, pese o tempo: o edifÃcio-garagem oficial tem passarela direta para o terminal e dispensa a van. Em viagens de uma semana ou mais, a diferença cresce. Em 30 dias, o Bandeira Park soma ${S(ge("VCP",30))} com o cupom XPK26 (${S(je(za,30))} sem cupom), contra R$ 750,00 no oficial.`},{kind:"p",text:"Nos pátios do entorno, some ao horário do voo o tempo da van e a espera na volta. As estimativas de minutos são das operações, não medições do xpark. Veja [como funciona o traslado em GRU e VCP](/transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona)."},{kind:"h2",text:"O que conferir antes de reservar"},{kind:"p",text:"Confira o horário de check-in e embarque no site da Azul para o seu voo, porque ele varia entre voos nacionais e internacionais. Depois, compare o total do seu perÃodo na [página de preços de Viracopos](/aeroportos/estacionamento-aeroporto-viracopos/precos) e as fichas na [página do aeroporto](/aeroportos/estacionamento-aeroporto-viracopos). Se é sua primeira vez em Campinas, leia o [guia de primeira viagem por Viracopos](/primeira-vez-aeroporto-viracopos-endereco-terminal-estacionamento)."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Onde deixar o carro para voar de Azul em Viracopos?",answer:`No estacionamento oficial, com passarela até o terminal, ou num pátio do entorno com van. Segundo o Ãndice xpark de Preços, o Bandeira Park custa ${S(ge("VCP",1))} com o cupom XPK26 (${S(je(za,1))} sem cupom) por dia, tabela de 10/07/2026.`},{kind:"faq",question:"A Azul tem estacionamento próprio em Viracopos?",answer:"Não há estacionamento da companhia nas fontes que consultamos. As opções são o oficial do aeroporto, operado pela Estapar, e os pátios particulares do entorno."},{kind:"faq",question:"Quanto custa deixar o carro 7 dias em Viracopos?",answer:`Bandeira Park: ${S(ge("VCP",7))} com o cupom XPK26 (${S(je(za,7))} sem cupom). KM64: R$ 167,93. Oficial: R$ 175,00. Coletas de julho de 2026.`},{kind:"faq",question:"Quanto tempo leva a van até o terminal de Viracopos?",answer:"As operações informam de 5 a 10 minutos. O Bandeira Park informa cerca de 7 minutos, com van 24 horas. Considere também a espera pela van."},{kind:"faq",question:"Viracopos tem mais de um terminal?",answer:"Não. Viracopos tem terminal único de passageiros, então o estacionamento e o trajeto são os mesmos para qualquer companhia."},{kind:"h2",text:"Fontes e atualização"},{kind:"p",text:"Ãndice xpark de Preços: painel do Bandeira Park, parceiro do xpark (10/07/2026), com o XPK26 aplicado ao total da faixa como na reserva; tabela do oficial Estapar (10/07/2026); sites da KM64 e da Yellow Parking (17/07/2026); preço do Virapark de levantamento de terceiro (27/09/2026). Valores podem mudar desde a coleta. A capa é ilustrativa e não retrata Viracopos nem uma companhia aérea. Critérios na [metodologia](/metodologia)."}],closing:"O xpark é comparador independente; Bandeira Park é parceiro comercial sem tratamento editorial diferenciado. Confirme preço e disponibilidade ao reservar.",tags:["Viracopos","VCP","Azul","Campinas","Preços 2026"]},{slug:"estacionamento-aeroporto-bate-volta-trabalho-guarulhos-viracopos",publishedAt:"2026-10-03",title:"Viagem a trabalho de 1 a 3 dias: onde deixar o carro em Guarulhos e Viracopos",seoTitle:"Bate-volta a trabalho: estacionamento em GRU e VCP",label:"Guia · Viagem a trabalho",image:oee,imageAlt:"Homem de terno com mala de mão caminhando por um estacionamento de aeroporto ao amanhecer",excerpt:"Quanto custa deixar o carro 1, 2 ou 3 dias em Guarulhos e Viracopos, com tempo até o terminal e fontes datadas.",dek:"Em viagem curta, a diferença entre as opções é pequena em reais e grande em minutos. Veja os preços de 1 a 3 diárias e o que pe
454sa na escolha.",readTime:"5 min de leitura",byline:"João G.",pullQuote:"Em viagem curta, o preço muda pouco entre as opções; o que muda é o tempo até o embarque.",body:[{kind:"p",text:`Segundo o Ãndice xpark de Preços, o Bandeira Park, parceiro do xpark, cobra ${S(ge("GRU",1))} com o cupom XPK26 (${S(je(hn,1))} sem cupom) por 1 dia em Guarulhos (GRU) e ${S(ge("VCP",1))} com o cupom XPK26 (${S(je(za,1))} sem cupom) em Viracopos (VCP), tabela do painel de 29/09/2026. No oficial de Guarulhos, setor Standard, 1 diária custa R$ 76,00 (28/09/2026). No oficial de Viracopos, R$ 25,00 por dia na reserva antecipada (10/07/2026).`},{kind:"p",text:"Este guia é para quem vai e volta em poucos dias: reunião, visita a cliente, evento. Nesses casos, a conta do estacionamento é pequena perto da viagem, e o que mais pesa é o tempo entre a vaga e o embarque."},{kind:"h2",text:"Guarulhos: quanto custa 1, 2 ou 3 dias"},{kind:"table",headers:["Opção","1 dia","2 dias","3 dias","Até o terminal"],rows:[["Bandeira Park, com XPK26",S(ge("GRU",1)),S(ge("GRU",2)),S(ge("GRU",3)),"Van 24h, cerca de 7 min"],["Bandeira Park, sem cupom",S(je(hn,1)),S(je(hn,2)),S(je(hn,3)),"Van 24h, cerca de 7 min"],["Oficial GRU, Standard (T1 e T2)","R$ 76,00","R$ 150,00","R$ 215,00","A pé"],["Oficial GRU, Premium (T2 e T3)","R$ 104,00","R$ 200,00","R$ 270,00","A pé; no T3, por passarela"]],caption:"Bandeira Park: painel da parceira, 29/09/2026, com o XPK26 aplicado ao total como na reserva. Oficial: tabela do GRU Airport conferida em 28/09/2026. Tempos informados pelas operações."},{kind:"h2",text:"Viracopos: quanto custa 1, 2 ou 3 dias"},{kind:"table",headers:["Opção","1 dia","2 dias","3 dias","Até o terminal"],rows:[["Bandeira Park, com XPK26",S(ge("VCP",1)),S(ge("VCP",2)),S(ge("VCP",3)),"Van 24h, cerca de 7 min"],["Bandeira Park, sem cupom",S(je(za,1)),S(je(za,2)),S(je(za,3)),"Van 24h, cerca de 7 min"],["Oficial VCP (Estapar)","R$ 25,00","R$ 50,00","R$ 75,00","Passarela do edifÃcio-garagem"]],caption:"Bandeira Park: painel da parceira, 29/09/2026. Oficial: diária de reserva antecipada da tabela da operação, 10/07/2026. Tempos informados pelas operações."},{kind:"h2",text:"Preço ou tempo: o que pesa mais"},{kind:"p",text:`Em Guarulhos, a diferença em 1 dia vai de ${S(ge("GRU",1))} com o cupom XPK26 a R$ 76,00 no Standard oficial. Em troca, o oficial dispensa a van: você estaciona e segue a pé. Em Viracopos, os valores ficam próximos, e o edifÃcio-garagem oficial tem passarela direta para o terminal único. Nos pátios do entorno, some o tempo da van e a espera na volta; as estimativas de minutos são das operações, não medições do xpark.`},{kind:"p",text:"Se a dúvida é entre ir de carro ou de aplicativo, a [comparação Uber ou estacionamento](/uber-ou-estacionamento-aeroporto) e a [calculadora](/calculadora-estacionamento-aeroporto) fazem a conta para o seu trajeto e o número de dias."},{kind:"h2",text:"A diária grátis do programa de viajantes"},{kind:"p",text:"Quem responde o questionário do programa de viajantes do xpark ganha 1 diária grátis, válida por 12 meses, em reservas de 2 diárias ou mais feitas no site do xpark. Num bate-volta de 1 dia o crédito não se aplica; numa viagem de 2 ou 3 dias, sim."},{kind:"h2",text:"O que conferir antes de reservar"},{kind:"p",text:"Confira o terminal do seu voo em Guarulhos no cartão de embarque e o horário de saÃda e volta, para não pagar uma diária a mais. Compare o total na [página de preços de Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos/precos) e na [de Viracopos](/aeroportos/estacionamento-aeroporto-viracopos/precos), e veja as fichas nas páginas de [Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos) e [Viracopos](/aeroportos/estacionamento-aeroporto-viracopos)."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Quanto custa deixar o carro 1 dia no Aeroporto de Guarulhos?",answer:`Segundo o Ãndice xpark de Preços, ${S(ge("GRU",1))} com o cupom XPK26 (${S(je(hn,1))} sem cupom) no Bandeira Park, tabela de 29/09/2026. No oficial, R$ 76,00 no Standard e R$ 104,00 no Premium (28/09/2026).`},{kind:"faq",question:"Quanto custa deixar o carro 2 dias em Viracopos?",answer:`${S(ge("VCP",2))} com o cupom XPK26 (${S(je(za,2))} sem cupom) no Bandeira Park, tabela de 29/09/2026. No oficial, R$ 50,00 na reserva antecipada (10/07/2026).`},{kind:"faq",question:"Para bate-volta, vale mais o oficial ou um pátio com van?",answer:"Depende de quanto vale o seu tempo. O oficial dispensa a van e custa mais em Guarulhos. Em Viracopos, os preços de 1 dia ficam próximos. Os pátios com van informam de 5 a 10 minutos até o terminal, fora a espera."},{kind:"faq",question:"A diária grátis vale para bate-volta de 1 dia?",answer:"Não. O crédito do programa de viajantes vale em reservas de 2 diárias ou mais feitas no site do xpark, por 12 meses."},{kind:"faq",question:"Dá para usar o cupom XPK26 junto com a diária grátis?",answer:"Sim. Se a reserva usar o XPK26, o valor da diária grátis já considera o desconto do cupom."},{kind:"h2",text:"Fontes e atualização"},{kind:"p",text:"Ãndice xpark de Preços: painel do Bandeira Park, parceiro do xpark (29/09/2026), com o XPK26 aplicad
454o ao total da faixa como na reserva; tabela do GRU Airport (28/09/2026); tabela do oficial de Viracopos, Estapar (10/07/2026). Valores podem mudar desde a coleta. A capa é ilustrativa e não retrata nenhum aeroporto ou estacionamento especÃfico. Critérios na [metodologia](/metodologia)."}],closing:"O xpark é comparador independente; Bandeira Park é parceiro comercial sem tratamento editorial diferenciado. Confirme preço e disponibilidade ao reservar.",tags:["Guarulhos","Viracopos","GRU","VCP","Viagem a trabalho","Preços 2026"]},{slug:"estacionamento-aeroporto-guarulhos-15-dias-viagem-internacional",publishedAt:"2026-10-03",title:"Viagem internacional de 15 dias: quanto custa deixar o carro em Guarulhos",seoTitle:"Estacionamento Guarulhos 15 dias: quanto custa",label:"Guia · Guarulhos GRU",image:ree,imageAlt:"FamÃlia colocando malas no porta-malas de um carro em estacionamento de aeroporto ao amanhecer",excerpt:"Preço de 15 dias de estacionamento perto do Aeroporto de Guarulhos, do oficial aos pátios com van, com fontes datadas.",dek:"Em viagem de duas semanas, a conta do estacionamento muda bastante de uma opção para outra. Veja o total de 15 dias em cada uma e o que pesa na escolha.",readTime:"5 min de leitura",byline:"João G.",pullQuote:"Em 15 dias, a mesma vaga pode custar de menos de R$ 200 a mais de R$ 600, conforme a escolha.",body:[{kind:"p",text:`Segundo o Ãndice xpark de Preços, 15 dias de estacionamento perto do Aeroporto de Guarulhos (GRU) custam a partir de ${S(ge("GRU",15))} com o cupom XPK26 (${S(je(hn,15))} sem cupom), no Bandeira Park, parceiro do xpark (painel de 29/09/2026). No estacionamento oficial do aeroporto, os mesmos 15 dias saem por R$ 480,00 no setor Standard e R$ 610,00 no Premium (tabela de 28/09/2026).`},{kind:"p",text:"Este guia é para quem vai passar cerca de duas semanas fora, como numa viagem aos Estados Unidos ou à Europa. Para um mês inteiro, veja o guia de [estacionamento mensal em Guarulhos](/estacionamento-mensal-aeroporto-guarulhos-quanto-custa)."},{kind:"h2",text:"Quanto custa 15 dias em cada opção"},{kind:"table",headers:["Opção","Total de 15 dias","Fonte e data"],rows:[["Bandeira Park, com XPK26",S(ge("GRU",15)),"Painel da parceira, 29/09/2026"],["Bandeira Park, sem cupom",S(je(hn,15)),"Painel da parceira, 29/09/2026"],["CallPark","R$ 308,00","Tabela da operadora, 28/09/2026"],["Decolar Park","R$ 313,50","Tabela da operadora, 28/09/2026"],["Urban Park","R$ 403,50","Tabela da operadora, 10/07/2026"],["Oficial GRU, Standard (T1 e T2)","R$ 480,00","Tabela do GRU Airport, 28/09/2026"],["Oficial GRU, Premium (T2 e T3)","R$ 610,00","Tabela do GRU Airport, 28/09/2026"]],caption:"Custo total da estadia calculado pela faixa de cada tabela. No Bandeira Park, o XPK26 é aplicado ao total, como na reserva. Valores podem mudar desde a coleta."},{kind:"h2",text:"Quanto se economiza"},{kind:"p",text:`Em 15 dias, a diferença entre o Bandeira Park com o cupom XPK26 e o Standard oficial é de ${S(480-ge("GRU",15))}. Contra o Premium oficial, ${S(610-ge("GRU",15))}. Em troca, o oficial dispensa a van: você estaciona e segue a pé até o terminal. Nos pátios do entorno, conte com o traslado na ida e a espera na volta.`},{kind:"h2",text:"Por que a tabela do oficial muda pouco entre 11 e 17 dias"},{kind:"p",text:"O oficial de Guarulhos cobra um valor fechado por faixa. No Standard, de 11 a 17 diárias o total é R$ 480,00, e de 18 a 30 diárias, R$ 505,00. Por isso, voltar um ou dois dias antes ou depois quase não muda a conta ali. Nas tabelas por diária, cada dia a mais pesa no total."},{kind:"h2",text:"A diária grátis do programa de viajantes"},{kind:"p",text:"Quem responde o questionário do programa de viajantes do xpark ganha 1 diária grátis, válida por 12 meses, em reservas de 2 diárias ou mais feitas no site do xpark. Se a reserva usar o XPK26, o valor da diária grátis já considera o desconto do cupom."},{kind:"h2",text:"O que conferir antes de reservar"},{kind:"p",text:"Confira no cartão de embarque o terminal do voo: voos internacionais costumam sair do Terminal 3, e o guia dos [Terminais 1, 2 e 3](/estacionamento-terminais-1-2-3-aeroporto-guarulhos) mostra como chegar a cada um. Some ao horário de volta o tempo de imigração e bagagem, para não pagar uma diária a mais. Compare o total na [página de preços de Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos/precos) e veja as fichas na [página do aeroporto](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Quanto custa deixar o carro 15 dias no Aeroporto de Guarulhos?",answer:`Segundo o Ãndice xpark de Preços, a partir de ${S(ge("GRU",15))} com o cupom XPK26 (${S(je(hn,15))} sem cupom) no Bandeira Park, painel de 29/09/2026. No oficial, R$ 480,00 no Standard e R$ 610,00 no Premium (28/09/2026).`},{kind:"faq",question:"Quanto custa o estacionamento oficial de Guarulhos por 15 dias?",answer:"R$ 480,00 no setor Standard (T1 e T2) e R$ 610,00 no Premium (T2 e T3), valores fechados da faixa de 11 a 17 diárias, conforme a tabela do GRU Airport conferida em 28/09/2026."},{kind:"faq",question:"Quanto se economiza num pátio com van em vez do oficial?",answer:`Em 15 dias, ${S(480-ge("GRU",15))} entre o Bandeira Park com o cupom XPK26 e o Standard oficial, com preços de 28 e 29/09/2026. Em troca, o pátio exige o traslado até o terminal.`},{kind:"faq",question:"E se a viagem for de um mês?",answer:`No oficial Standard, de 18 a 30 diárias o total é R$ 505,00. No Bandeira Park, 30 dias custam ${S(ge("GRU",30))} com o cupom XPK26 (${S(je(hn,30))} sem cupom). Detalhes no guia de estacionamento mensal em Guarulhos.`},{kind:"faq",question:"A diária grátis do programa de viajantes vale em viagem de 15 dias?",answer:"Sim. O crédito vale em reservas de 2 diárias ou mais feitas no site do xpark, por 12 meses."},{kind:"h2",text:"Fontes e atualização"},{kind:"p",text:"Ãndice xpark de Preços: painel do Bandeira Park, parceiro do xpark (29/09/2026), com o XPK26 aplicad
454o ao total como na reserva; tabela do GRU Airport (28/09/2026); tabelas das operadoras CallPark e Decolar Park (28/09/2026) e Urban Park (10/07/2026). Valores podem mudar desde a coleta. A capa é ilustrativa e não retrata nenhum aeroporto ou estacionamento especÃfico. Critérios na [metodologia](/metodologia)."}],closing:"O xpark é comparador independente; Bandeira Park é parceiro comercial sem tratamento editorial diferenciado. Confirme preço e disponibilidade ao reservar.",tags:["Guarulhos","GRU","Longa permanência","Viagem internacional","Preços 2026"]}],Ek=80,lc=e=>e.trim().split(/\s+/).filter(Boolean).length;function see(e){return e.split(new RegExp(`(?<=[.!?]["')\\]]?)\\s+(?=[A-ZÃ-Ã"â(\\[])`,"u"))}function Hg(e,t=Ek){const a=lc(e);if(a<=t)return[e];const o=see(e).flatMap(d=>lc(d)>t?d.split(new RegExp("(?<=;)\\s+")):[d]);if(o.length<2)return[e];const r=Math.ceil(a/t),n=a/r,i=[];let l=[],c=0;for(const d of o){const u=lc(d);l.length&&(c+u>t||c>=n&&i.length<r-1)&&(i.push(l.join(" ")),l=[],c=0),l.push(d),c+=u}return l.length&&i.push(l.join(" ")),i}function iee(e){return e.flatMap(t=>{if(t.kind!=="p")return[t];const a=t.text;return Hg(a).map(o=>({...t,text:o}))})}const lee=e=>!/^\s*([|#>*-]|\d+\.\s)/.test(e);function cee(e,t=Ek){return e.split(/\n\s*\n/).map(a=>lee(a)&&!a.includes(` 455`)?Hg(a,t).join(` 456 457`):a).join(` 458 459`)}function dee(e,t=Ek){return e.replace(/<p>([\s\S]*?)<\/p>/g,(a,o)=>{const r=o.replace(/<[^>]+>/g," ");if(lc(r)<=t)return a;const n=[],i=/[.!?]\s+(?=[A-ZÃ-Ã<])/gu;let l;for(;l=i.exec(o);){const p=o.slice(0,l.index+1),f=(p.match(/<(?!\/)(?![^>]*\/>)[a-z][^>]*>/gi)||[]).length,g=(p.match(/<\/[a-z][^>]*>/gi)||[]).length;f===g&&n.push(l.index+1)}if(!n.length)return a;const c=lc(r),d=Math.ceil(c/t),u=c/d,m=[];let h=0;for(const p of n)lc(o.slice(h,p).replace(/<[^>]+>/g," "))>=u&&m.length<d-1&&(m.push(o.slice(h,p).trim()),h=p);return m.push(o.slice(h).trim()),m.map(p=>`<p>${p}</p>`).join(` 460`)})}const sj={"valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa":"Valet no Aeroporto de Guarulhos: preço e quando vale a pena","quanto-custa-estacionar-aeroporto-guarulhos-gru-precos-2026":"Estacionamento Guarulhos GRU: preços comparados em 2026","estacionamento-viracopos-comparativo-precos-2026":"Estacionamento Viracopos VCP: comparativo de preços 2026","quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026":"Estacionamento Confins CNF: tabela de preços em 2026","estacionamento-mensal-aeroporto-confins-semana-ou-mes":"Estacionamento mensal em Confins: semana ou mês em 2026","transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona":"Transfer de estacionamento em GRU e VCP: como funciona","primeira-viagem-internacional-aeroporto-guarulhos-viracopos-guia":"Primeira viagem internacional por GRU ou VCP: guia prático","vale-a-pena-ir-de-carro-aeroporto-guarulhos":"Ir de carro para Guarulhos compensa? Custos e dicas","vale-a-pena-estacionar-no-aeroporto-ou-ir-de-uber":"Estacionar no aeroporto ou ir de Uber: qual compensa","quanto-custa-estacionar-aeroporto-guarulhos-2026":"Preço de estacionamento em Guarulhos 2026: guia rápido","estacionamento-aeroporto-viracopos-campinas-guia":"Estacionamento em Viracopos, Campinas: guia e preços","estacionar-30-dias-aeroporto-sem-pagar-9x-mais":"Estacionar 30 dias no aeroporto: como pagar menos","estacionamento-mais-barato-aeroporto-guarulhos-top-2026":"Estacionamento mais barato em Guarulhos: ranking 2026","estacionamento-coberto-aeroporto-vale-a-pena":"Vaga coberta no aeroporto vale a pena? GRU e VCP","estacionamento-terminais-1-2-3-aeroporto-guarulhos":"Estacionamento T1, T2 e T3 em Guarulhos: guia por terminal","voo-atrasou-carro-estacionamento-aeroporto-o-que-fazer":"Voo atrasado e carro no estacionamento: o que fazer","estacionamento-aeroporto-brasilia-guia-precos-2026":"Estacionamento Aeroporto de BrasÃlia BSB: preços 2026","estacionamento-dentro-aeroporto-confins-e3-p1-p3":"Estacionamento dentro de Confins: E3, P1, P3 e preços","estacionamento-perto-aeroporto-confins-distancia":"Estacionamento perto de Confins: distância e van em 2026"},uee=1,mee="9d8d0f4b-ca5d-495d-a2f7-fa54d9862e6e",pee="386e8409-a3d6-4603-9e31-4b97b7d57e01",hee="/__l5e/assets-v1/9d8d0f4b-ca5d-495d-a2f7-fa54d9862e6e/congonhas.jpg",fee="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/9d8d0f4b-ca5d-495d-a2f7-fa54d9862e6e/congonhas.jpg",gee="congonhas.jpg",vee=812749,xee="image/jpeg",bee="2026-09-27T06:04:33Z",_k={version:uee,asset_id:mee,project_id:pee,url:hee,r2_key:fee,original_filename:gee,size:vee,content_type:xee,created_at:bee},yee="/assets/quanto-custa-gru-2026-DdVKLhGM.webp",q6="/assets/estacionar-30-dias-DrQBM9Ep.webp",kee="/assets/mais-barato-top-DCroYc59.webp",D6="/assets/terminais-gru-CdpkPqyT.webp",wee="/assets/transfer-hero-C443FLZn.jpg",Cee="/assets/vale-a-pena-carro-gru-hero-CUIqbXyZ.jpg",Tk="/assets/aeroporto-internacional-de-guarulhos-xVS-Mb34.webp",I6="/assets/aeroporto-internacional-de-viracopos-DIeeU1Bd.webp",M6="/assets/aeroporto-internacional-de-confins-D1fmEHBG.webp",Pee={url:Tk},See={url:I6},Fy={url:M6},Ree=[{iata:"GRU",city:"Guarulhos",state:"São Paulo",flow:"43 milhões / ano",hero:Pee.url},{iata:"VCP",city:"Viracopos",state:"Campinas",flow:"11 milhões / ano",hero:See.url},{iata:"CNF",city:"Confins",state:"Minas Gerais",flow:"10 milhões / ano",hero:Fy.url}
460,{iata:"CGH",upcoming:!1,city:"Congonhas",state:"São Paulo",flow:"22 milhões / ano",hero:_k.url}],jee=[{slug:"valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa",publishedAt:"2026-06-24",title:"Valet no Aeroporto de Guarulhos: o que é, quanto custa e quando compensa",label:"Guia · Guarulhos GRU",image:"https://www.xpark.ai/__l5e/assets-v1/22b02fd2-e135-4b29-a76b-5e96820db2cf/gru-valet-hero.jpg",excerpt:'No GRU, "valet" pode significar três coisas: o manobrista oficial no terminal, o serviço porta-a-porta que leva o carro para fora do aeroporto e o self-park de operadoras do entorno. Este guia explica como cada modelo funciona, quanto custa e para quem compensa.',dek:"Guia comparativo dos três modelos de valet no Aeroporto de Guarulhos (manobrista oficial Itaú Personnalité, porta-a-porta Valetina e self-park de operadoras do entorno), com custos, funcionamento e quando cada um compensa.",readTime:"5 min de leitura",byline:"Marcelo C.",pullQuote:"No GRU, o valet vai do manobrista oficial, sem custo extra para clientes elegÃveis, ao serviço porta-a-porta a cerca de R$ 149 por dia. O que muda não é a vaga, é quanto do trajeto se elimina.",body:[{kind:"p",text:"Voltar de uma viagem longa, cansado e carregado de malas, e ainda enfrentar a caminhada até o pátio, procurar o carro e esperar a van é a experiência tÃpica de quem usa o estacionamento convencional no entorno do Aeroporto de Guarulhos. O valet promete encurtar esse trajeto, entregando o carro mais perto do terminal. Mas, no GRU, valet não é um serviço único: há pelo menos três modelos, com custos e lógicas distintas, e a escolha certa depende do que o viajante prioriza. O custo vai desde a tarifa do estacionamento oficial, com o manobrista incluÃdo para clientes elegÃveis, até cerca de R$ 149 por dia no serviço porta-a-porta."},{kind:"p",text:"Este guia descreve os três modelos com os mesmos critérios, sem recomendar um operador especÃfico. Para comparar opções e simular o preço do seu perÃodo, é possÃvel [consultar o xpark](/)."},{kind:"h2",text:"O que é o valet de aeroporto"},{kind:"p",text:"No estacionamento convencional, o viajante deixa o carro no pátio e é levado ao terminal por uma van, repetindo o trajeto na volta. No valet, alguém assume parte desse percurso: um manobrista estaciona o veÃculo, ou um motorista o recolhe e o devolve, reduzindo a caminhada e a espera. A diferença entre os modelos está em onde o carro fica e em quanto do trajeto é eliminado."},{kind:"h2",text:"Os três modelos de valet no GRU"},{kind:"p",text:"1. Manobrista oficial, dentro do aeroporto (Valet Itaú Personnalité). Opera no embarque dos Terminais 2 e 3. O manobrista recebe o carro na chegada e o estaciona no edifÃcio garagem oficial do aeroporto; na volta, a retirada é feita pelo cliente no próprio estacionamento. Funciona das 6h à s 23h para embarque e 24 horas para retirada. O serviço pode ser usado por qualquer passageiro; clientes Itaú Personnalité de nÃveis elegÃveis ou Private Bank não pagam pelo manobrista, apenas pela diária do estacionamento, que é cobrada à parte (fontes: gru.com.br; melhorescartoes.com.br, jan e nov de 2025)."},{kind:"p",text:"2. Valet porta-a-porta, carro levado para fora (Valetina). O motorista encontra o viajante no portão de embarque, recebe o carro e o leva para um estacionamento homologado fora do aeroporto, com monitoramento durante a viagem; na volta, o veÃculo é devolvido no desembarque. A reserva é feita por WhatsApp. No GRU, esse modelo é oferecido pela Valetina."},{kind:"p",text:'3. Self-park e valet em operadoras do entorno (Airport Park, ServParking e outras). Pátios privados fora do aeroporto que, além do traslado em van, oferecem a modalidade "estacione e leve a chave" (self-park) ou valet próprio. O carro fica no pátio da operadora, e o deslocamento até o terminal é feito por van 24 horas (fontes: sites das operadoras).'},{kind:"p",text:"A diferença prática: no modelo oficial, o carro permanece dentro do aeroporto e o ganho é não procurar vaga; no porta-a-porta, elimina-se também a van e a caminhada, mas o carro vai para fora; no self-park do entorno, o ganho é menor e o preço, o mais baixo dos três."},{kind:"h2",text:"Como funciona o porta-a-porta, passo a passo"},{kind:"p",text:"1. Reserva. O viajante informa data de ida, horário do voo e terminal, e recebe a confirmação. No caso da Valetina, isso é feito por WhatsApp."},{kind:"p",text:"2. Entrega no embarque. No dia, o motorista aguarda no ponto combinado do terminal; o viajante entrega as chaves e embarca."},{kind:"p",text:"3. Durante a viagem. O carro segue para o estacionamento homologado, com monitoramento."},{kind:"p",text:"4. Retorno. Ao desembarcar, o viajante avisa e o carro é levado ao terminal de desembarque."},{kind:"h2",text:"Quanto custa"},{kind:"p",text:"Os valores abaixo foram coletados nas datas indicadas e variam conforme o modelo e a permanência."},{kind:"table",headers:["Serviço","Modelo","Custo","Observações"],rows:[["Valetina (grupo Bandeira Park)","Porta-a-porta, carro fora","R$ 149 (1 dia) a R$ 792 (30 dias); acima de 30 dias, R$ 792 + R$ 26,40/dia","Inclui seguro e cancelamento gratuito; cartão, débito ou PIX; reserva por WhatsApp (15/06/2025)"],["Valet Itaú Personnalité","Manobrista oficial, carro na garagem","Manobrista sem custo extra para clientes elegÃveis; estacionamento à parte (Flex T3 a partir de cerca de R$ 104 por diária)","Embarque 6h à s 23h, retirada 24h; T2 e T3; valor do manobrista para não clientes a confirmar (abr/2025)"],["Airport Park, ServParking","Self-park ou valet no entorno","Estacionamento a partir de cerca de R$ 20 por dia; valor do valet conforme a operadora","Carro em pátio fora, traslado em van 24h"]],caption:"Faixas da Valetina por perÃodo (15/06/2025): 1 dia R$ 149; 2 dias R$ 198; 3 dias R$ 297; 4 dias R$ 396; 5 dias R$ 495; 6 a 10 dias R$ 594; 11 a 17 dias R$ 693; 18 a 30 dias R$ 792. O custo por dia cai com a permanência: em uma diária avulsa equivale a R$ 149; em 30 dias, a R$ 26,40 por dia."},{kind:"h2",text:"Vale mais que o estacionamento convencional?"},{kind:"p",text:"Depende do que se está comprando. Em preço puro, o valet porta-a-porta custa várias vezes mais que o estacionamento convencional com traslado, que no entorno do GRU parte de cerca de R$ 18 a R$ 20 por diária. A R$ 149 a diária avulsa, o porta-a-porta chega a custar cerca de oito vezes a opção convencional mais barata; a diferença diminui em estadias longas, mas não desaparece."},{kind:"p",text:"O que o valet entrega não é vaga, e sim tempo e redução de esforço: no porta-a-porta, eliminam-se a van, a caminhada com bagagem e a busca pelo carro na volta; no manobrista oficial, evita-se procurar vaga no edifÃcio garagem. Para quem viaja a trabalho com frequência, ou a lazer com famÃlia, crianças e bagagem volumosa, esse ganho pode justificar o custo. Para quem busca o menor valor possÃvel e não se incomoda com o traslado, o convencional continua mais vantajoso. à a tradução direta da pergunta que o viajante deve se fazer antes do voo: quanto vale o seu tempo."},{kind:"h2",text:"Perguntas frequentes sobre valet no Aeroporto de Guarulhos"},{kind:"faq",question:"Qual a diferença entre o valet oficial e o valet que leva o carro para fora?",answer:"No valet oficial (Itaú Personnalité), o manobrista estaciona o carro no edifÃcio garagem dentro do aeroporto, e a retirada é feita pelo cliente no próprio estacionamento. No porta-a-porta da [Valetina](https://valetina.ai), o motorista leva o carro para um estacionamento fora do aeroporto e o devolve no terminal de desembarque, eliminando também a van e a caminhada. Para comparar os dois modelos e reservar com preço travado, [use o xpark](/)."},{kind:"faq",question:"Quanto custa o valet no Aeroporto de Guarulhos?",answer:"Varia por modelo. O manobrista oficial não tem custo extra para clientes Itaú elegÃveis, que pagam apenas a diária do estacionamento (a tarifa Flex do Terminal 3 partia de cerca de R$ 104 por diária em abril de 2025). O porta-a-porta da [Valetina](https://valetina.ai) custava de R$ 149 (1 dia) a R$ 792 (30 dias) em junho de 2025, com seguro incluso. [Simule o valor do seu perÃodo no xpark](/) e feche a reserva direto."},{kind:"faq",question:"Preciso ser cliente de banco para usar o valet oficial?",answer:"Não. O manobrista do Terminal 3 e do Terminal 2 pode ser usado por qualquer passageiro. A gratuidade do manobrista é restrita a clientes Itaú Personnalité de nÃveis elegÃveis ou Private Bank; os demais pagam pelo serviço, além da diária do estacionamento."},{kind:"faq",question:"O valet inclui seguro?",answer:"No porta-a-porta da [Valetina](https://valetina.ai), o seguro está incluÃdo no valor durante todo o perÃodo. Nos demais modelos, confirme a cobertura diretamente com o operador. A polÃtica completa de cada operadora fica disponÃvel na ficha da operadora dentro do [xpark](/)."},{kind:"faq",question:"Como se reserva?",answer:"O porta-a-porta da [Valetina](https://valetina.ai) é reservado por WhatsApp, com data de ida, horário do voo e terminal, e também pode ser comparado e reservado direto pelo [xpark](/). O manobrista oficial é acessado por sinalização na chegada ao terminal, sem reserva prévia. Para ver preço, disponibilidade e tempo até o portão em todos os modelos no mesmo lugar, [use o xpark](/)."},{kind:"faq",question:"Como reservar o valet no Aeroporto de Guarulhos pelo xpark?",answer:"No [xpark](/), basta informar data de ida, horário do voo e terminal para ver as opções de valet no GRU (incluindo a [Valetina](https://valetina.ai)) com preço por dia, total do perÃodo e o que está incluso (seguro, cancelamento, traslado). A reserva trava a tarifa exibida na consulta e a confirmação chega por e-mail e WhatsApp, sem precisar cadastrar c
460onta em cada operadora."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"As informações foram coletadas nos canais oficiais dos operadores e em fontes públicas, nas datas indicadas em cada item. Este guia segue os critérios da [Metodologia do Xpark](/metodologia), com peso relevante para o eixo de acesso ao terminal, em que o valet se distingue do estacionamento convencional. Onde não havia dado público, a informação foi marcada como a confirmar, sem estimativa."},{kind:"p",text:"Este guia descreve os modelos pelos mesmos critérios e não recomenda um operador especÃfico."},{kind:"quote",text:"No GRU, o valet vai do manobrista oficial, sem custo extra para clientes elegÃveis, ao serviço porta-a-porta a cerca de R$ 149 por dia. O que muda não é a vaga, é quanto do trajeto se elimina."}],closing:"Conteúdo informativo com base em informações públicas dos operadores, coletadas nas datas indicadas. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Guarulhos","GRU","Valet","Guia","São Paulo"]},{slug:"quanto-custa-estacionar-aeroporto-guarulhos-gru-precos-2026",publishedAt:"2026-07-10",title:"Quanto custa estacionar no Aeroporto de Guarulhos (GRU)? Comparativo de Preços 2026",label:"Comparativo · Guarulhos GRU",image:"https://images.unsplash.com/photo-1474302770737-173ee21bab63?auto=format&fit=crop&w=1600&q=70",excerpt:`Comparativo independente das operadoras de estacionamento próximas ao Aeroporto de Guarulhos em 2026: preços por dia, faixas de permanência, traslado e cobertura. Valores de ${S(q.dailyFrom)} (Bandeira Park com cupom XPK26) a R$ 100 por diária.`,dek:"Tabela comparativa das operadoras próximas ao GRU (Bandeira Park, Indigo oficial, Airport Park e Urban Park) com preço por dia, faixas de permanência, traslado e cobertura.",readTime:"6 min de leitura",byline:"Marcelo C.",pullQuote:`A diária no entorno do GRU varia hoje de ${S(q.dailyFrom)} (Bandeira Park com cupom XPK26) a R$ 100, conforme a operadora e o tempo de permanência.`,body:[{kind:"p",text:`Tabela atualizada de todas as operadoras: [preços do estacionamento no Aeroporto de Guarulhos (GRU)](/aeroportos/estacionamento-aeroporto-guarulhos/precos), de 1 a 30 dias. O viajante que estaciona no Aeroporto de Guarulhos (GRU) hoje encontra duas categorias de oferta: o estacionamento oficial dentro do aeroporto, operado pela Indigo, e operadoras privadas instaladas no entorno, que combinam pátio próprio com traslado em van até os terminais. Entre essas opções, a diária varia hoje de ${S(q.dailyFrom)} (Bandeira Park com cupom XPK26) a R$ 100, e o preço final depende menos do balcão escolhido e mais do tempo de permanência.`},{kind:"p",text:"Este comparativo reúne os preços praticados pelas principais operadoras próximas ao GRU em julho de 2026 (coleta em 10/07/2026), com a metodologia ao final do texto. O objetivo é oferecer uma leitura de mercado, não recomendação. Para reservar ou simular o preço para o seu perÃodo exato, é possÃvel [comparar as opções no xpark](/)."},{kind:"h2",text:"Panorama do mercado de estacionamento no Aeroporto de Guarulhos"},{kind:"p",text:"O estacionamento oficial do GRU (Indigo) cobra diária fixa entre R$ 75 e R$ 100, sem desconto por permanência. O modelo é equivalente ao praticado pelos estacionamentos de aeroporto da rede no resto do paÃs. Já as operadoras privadas no entorno trabalham com tarifa decrescente: a diária cai conforme aumenta o número de dias da reserva. Por isso, a faixa de preço de cada operadora deve ser lida em conjunto com a duração da viagem."},{kind:"h2",text:"Comparativo de preços entre operadoras próximas ao GRU"},{kind:"p",text:"A tabela a seguir reúne a diária praticada pelas principais operadoras próximas ao Aeroporto de Guarulhos em julho de 2026 (coleta em 10/07/2026), ordenadas da menor para a maior tarifa avulsa. Onde houver faixa, considera-se vaga descoberta no canal online de cada operadora."},{kind:"table",headers:["Operadora","Diária avulsa","7 dias (por dia)","30 dias (por dia)","Tipo de tarifa"],rows:[["Bandeira Park",`${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom)`,`${S(q.weekPerDay)} (${S(q.weekTotalCharged)})`,`${S(q.longStayDaily)} (${S(q.longStayTotal)})`,"Decrescente (online) + cupom XPK26"],["Urban Park","R$ 26,90 (online) · R$ 43,90 (balcão)","Sob consulta","Sob consulta","Variável"],["Airport Park","Sob consulta","Sob consulta","Sob consulta","Não publica tabela"],["GRU Oficial (Indigo)","R$ 33,60 (online T1/T2) · R$ 42,70 (online T3)","R$ 33,60 (R$ 235,20)","R$ 33,60 (R$ 1.008)","Reserva online (a partir de)"]],caption:"Preços coletados nos canais oficiais das operadoras em julho de 2026 (coleta em 10/07/2026). Ordenado pela menor diária avulsa. MultiPark não aparece separadamente em GRU porque revende vagas do Bandeira Park nesta praça (mesma oferta). Valores sujeitos a alteração; confirme no momento da reserva."},{kind:"h2",text:"Como o preço varia com o tempo de permanência"},{kind:"p",text:"O ponto mais relevante para o viajante não é a diária avulsa, e sim o efeito do tempo de permanência sobre o valor pago por dia. Operadoras privadas como Bandeira Park, Urban Park e Airport Park aplicam tarifa decrescente em diferentes graus;
460 o estacionamento oficial mantém valor fixo. Por isso, a economia frente ao oficial cresce de forma quase linear com a duração da viagem."},{kind:"p",text:`Em uma diária avulsa, a diferença entre o oficial (R$ 33,60 na reserva online, R$ 75 a R$ 100 no balcão) e a opção privada mais barata do comparativo (Bandeira Park, ${S(q.dailyFrom)} com cupom XPK26 ou ${S(q.dailyFull)} sem cupom) chega a cerca de 45% frente à tarifa online e mais de 75% frente à tarifa de balcão. Em sete dias, com a tarifa decrescente das operadoras privadas em vigor, a diferença cresce. Em trinta dias, a economia frente ao balcão do oficial passa de R$ 2.000 no total.`},{kind:"h2",text:"O que está incluso na diária"},{kind:"p",text:"Entre as operadoras privadas próximas ao GRU é prática comum incluir, sem cobrança adicional: traslado em van entre o pátio e os terminais 1, 2 e 3, retorno no desembarque conforme o horário do voo e monitoramento 24 horas. Vaga coberta costuma ter acréscimo de 15% a 25% sobre a descoberta. O estacionamento oficial não inclui traslado, pois fica dentro do próprio aeroporto."},{kind:"h2",text:"Como comparar e reservar pelo xpark"},{kind:"p",text:"Para simular o preço de cada operadora para o seu perÃodo exato e reservar online, [compare as opções no xpark](/). A plataforma exibe disponibilidade, valor por dia e total, traslado incluso e categoria de vaga lado a lado, sem destacar uma operadora especÃfica. A reserva trava a tarifa exibida na consulta e a confirmação chega por e-mail e WhatsApp."},{kind:"h2",text:"Perguntas frequentes sobre estacionamento no Aeroporto de Guarulhos"},{kind:"faq",question:"Quanto custa o estacionamento oficial do GRU?",answer:`O estacionamento oficial do Aeroporto de Guarulhos, operado pela Indigo, parte de R$ 33,60/dia na reserva online (T1/T2) e vai a R$ 75 a R$ 100 no balcão, sem desconto progressivo. No balcão, o total chega a cerca de R$ 525 em 7 dias e R$ 2.250 em 30 dias na faixa mais baixa. Para uma alternativa privativa próxima ao terminal a partir de ${S(q.dailyFrom)}/dia (Bandeira Park com cupom XPK26), [compare as opções no xpark](/).`},{kind:"faq",question:"Qual o estacionamento mais barato perto do Aeroporto de Guarulhos?",answer:`Entre as operadoras analisadas em julho de 2026, o Bandeira Park apresentou a menor diária avulsa (${S(q.dailyFrom)} com cupom XPK26; ${S(q.dailyFull)} sem cupom) e o menor valor por dia em 30 dias (${S(q.longStayDaily)}). Urban Park, Airport Park e a Indigo (estacionamento oficial) seguem em ordem crescente de preço. Para o seu perÃodo exato, [compare as opções e reserve no xpark](/).`},{kind:"faq",question:"Qual a diferença entre canal online e tarifa de balcão?",answer:"Operadoras privadas no entorno do GRU normalmente publicam dois preços: o online, com desconto progressivo aplicado de forma automática, e o de balcão, para quem chega sem reservar. A diferença varia por operadora e pode chegar a quase 50% em algumas faixas de permanência. Reservar online tende a ser mais barato em qualquer operadora, e [reservar pelo xpark](/) trava o preço promocional de todas elas em uma única consulta."},{kind:"faq",question:"O traslado até o terminal está incluso?",answer:"Nas operadoras privadas próximas ao GRU é prática comum incluir o traslado em van até os terminais 1, 2 e 3 e o retorno no desembarque, sem cobrança adicional. O estacionamento oficial dispensa traslado, por ficar dentro do aeroporto."},{kind:"faq",question:"Tem valet no Aeroporto de Guarulhos? Como funciona?",answer:"Sim. No GRU existem três modelos de valet: o manobrista oficial Itaú Personnalité, que estaciona o carro no edifÃcio garagem; o porta-a-porta da [Valetina](https://valetina.ai), que recebe o veÃculo no embarque e devolve no desembarque; e o self-park de operadoras do entorno. O [guia de valet no GRU](/valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa) detalha custo, cobertura e quando cada modelo compensa. Para comparar e reservar, [use o xpark](/)."},{kind:"faq",question:"Vale a pena reservar o estacionamento online?",answer:"Sim. A reserva antecipada trava a tarifa exibida na consulta, evita o risco de indisponibilidade em datas de alta demanda (feriados e férias prolongadas) e garante o preço promocional de ca
460da operadora, inferior ao de balcão. No [xpark](/), você reserva direto, sem cadastrar conta em cada operadora, e recebe confirmação por e-mail e WhatsApp."},{kind:"faq",question:"Quanto custa estacionar 30 dias no Aeroporto de Guarulhos?",answer:`No estacionamento oficial, 30 dias no balcão custam cerca de R$ 2.250 (R$ 75/dia, sem desconto progressivo). Nas operadoras privadas com tarifa decrescente, o total para o mesmo perÃodo parte de ${S(q.longStayTotal)} no Bandeira Park (${S(q.longStayDaily)}/dia na vaga descoberta, com cupom XPK26). Para simular o total exato do seu perÃodo, [calcule e reserve no xpark](/).`},{kind:"h2",text:"Metodologia e divulgação"},{kind:"p",text:"Os preços foram coletados nos canais oficiais de cada operadora em julho de 2026 (coleta em 10/07/2026). O xpark é uma plataforma independente de comparação e reserva: mantém parceria comercial com algumas operadoras avaliadas e recebe comissão sobre reservas concluÃdas pela plataforma, sem que isso altere a ordem ou os critérios deste comparativo. Critérios, pesos e fontes na [Metodologia do Xpark](/metodologia)."}],closing:"Conteúdo informativo com base em preços públicos das operadoras em julho de 2026 (coleta em 10/07/2026). Valores sujeitos a alteração; confirme a tarifa vigente no momento da reserva.",tags:["Guarulhos","GRU","Comparativo","Preços","São Paulo"],extraJsonLd:[{"@context":"https://schema.org","@type":"ItemList",name:"Operadoras de estacionamento próximas ao Aeroporto de Guarulhos (GRU)",itemListOrder:"https://schema.org/ItemListOrderAscending",numberOfItems:4,itemListElement:[{"@type":"ListItem",position:1,name:"Bandeira Park",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-guarulhos/bandeira-park"},{"@type":"ListItem",position:2,name:"Urban Park",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-guarulhos/urban-park"},{"@type":"ListItem",position:3,name:"Airport Park",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-guarulhos/airport-park"},{"@type":"ListItem",position:4,name:"GRU Oficial (Indigo)",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-guarulhos/estacionamento-oficial-gru-indigo"}]}]},{slug:"estacionamento-viracopos-comparativo-precos-2026",publishedAt:"2026-06-22",title:"Estacionamento no Aeroporto de Viracopos (VCP): Comparativo de Preços e Qual o Mais Barato em 2026",label:"Comparativo · Viracopos VCP",image:"https://images.unsplash.com/photo-1436491865332-7a61a109cc05?auto=format&fit=crop&w=1600&q=70",excerpt:"Comparativo independente das operadoras de estacionamento próximas ao Aeroporto de Viracopos (VCP) em 2026: preço por dia, faixas de permanência, traslado e cobertura.",dek:"Tabela comparativa das operadoras próximas ao VCP (Bandeira Park, Virapark, Garage Inn e estacionamento oficial) com preço por dia, faixas de permanência e traslado.",readTime:"6 min de leitura",byline:"João G.",pullQuote:`A diária no entorno do VCP varia hoje de ${S(le.longStayDaily)} a R$ 83, conforme a operadora e o tempo de permanência.`,body:[{kind:"p",text:`Tabela atualizada de todas as operadoras: [preços do estacionamento no Aeroporto de Viracopos (VCP)](/aeroportos/estacionamento-aeroporto-viracopos/precos), de 1 a 30 dias. Quem viaja por Campinas encontra hoje duas categorias de oferta no entorno do Aeroporto de Viracopos (VCP): o estacionamento oficial dentro do aeroporto, com diária fixa, e operadoras privadas próximas ao terminal, que combinam pátio próprio com traslado em van. Entre essas opções, a diária varia de ${S(le.longStayDaily)} (Bandeira Park em 30+ dias, com cupom XPK26) a R$ 83 (garagem coberta do oficial), uma faixa que, ao longo de 30 dias, pode resultar em diferença superior a R$ 2.000 no total pago.`},{kind:"p",text:"Este comparativo reúne os preços praticados pelas principais operadoras próximas ao VCP em junho de 2026, com a metodologia ao final do texto. O objetivo é oferecer uma leitura de mercado, não recomendação. Para simular o preço para o seu perÃodo exato e reservar, é possÃvel [comparar as opções no xpark](/)."},{kind:"h2",text:"Panorama do mercado de estacionamento em Viracopos"},{kind:"p",text:"O preço do estacionamento em Viracopos varia conforme dois fatores: a operadora escolhida e o tempo de permanência. O estacionamento oficial do aeroporto cobra diária fixa, sem desconto por permanência. Já as operadoras privadas no entorno do terminal trabalham, em diferentes graus, com tarifa decrescente: quanto mais dias, menor o valor pago por diária. Por isso, a leitura de preço por operadora deve ser feita em conjunto com a duração da viagem."},{kind:"h2",text:"Comparativo de preços: estacionamentos no Aeroporto de
460Viracopos (VCP)"},{kind:"p",text:"A tabela a seguir reúne os valores praticados pelas principais operadoras próximas ao Aeroporto de Viracopos em junho de 2026, ordenadas pela menor diária avulsa. Os valores entre parênteses representam o total do perÃodo."},{kind:"table",headers:["Operadora","1 dia","7 dias","17 dias","30+ dias"],rows:[["Bandeira Park",`${S(le.dailyFrom)}/dia com cupom XPK26 (${S(le.dailyFull)} sem cupom)`,`${S(le.weekPerDay)}/dia (${S(le.weekTotalCharged)})`,`${S(le.d17PerDay)}/dia (${S(le.d17Total)})`,`${S(le.longStayDaily)}/dia (${S(le.longStayTotal)})`],["Virapark","R$ 40,00/dia (R$ 40)","R$ 24,90/dia (R$ 174)","R$ 24,90/dia (R$ 423)","R$ 24,90/dia (R$ 747)"],["Garage Inn","R$ 59,99/dia (R$ 60)","R$ 45,90/dia (R$ 321)","R$ 45,90/dia (R$ 780)","R$ 45,90/dia (R$ 1.377)"],["Estacionamento Oficial VCP","R$ 25,00/dia online (Bolsão R$ 31 · Garagem R$ 83 balcão)","R$ 25,00/dia (R$ 175)","R$ 25,00/dia (R$ 425)","R$ 25,00/dia (R$ 750)"]],caption:"Preços coletados nos canais oficiais das operadoras em junho de 2026, ordenados pela menor diária avulsa. MultiPark não aparece separadamente em VCP porque revende vagas do Bandeira Park nesta praça (mesma oferta). Valores sujeitos a alteração; confirme no momento da reserva."},{kind:"h2",text:"Como o preço varia com o tempo de permanência"},{kind:"p",text:`O efeito mais relevante para o viajante é o impacto do tempo de permanência sobre o valor pago por dia. Em uma diária avulsa, a diferença entre o oficial (R$ 25,00 na reserva online, R$ 83 no balcão da garagem) e a opção privada mais barata do comparativo (Bandeira Park, ${S(le.dailyFrom)} com cupom XPK26) já favorece o privado na tarifa online e chega a mais de 75% frente ao balcão da garagem. Em trinta dias, a economia frente ao balcão do oficial passa de R$ 2.000 no total.`},{kind:"p",text:"Entre as operadoras privadas, o desconto progressivo aparece com intensidade variável: algumas mantêm diária fixa para qualquer permanência, outras reduzem o valor por dia conforme a estadia aumenta. Por isso, a operadora mais econômica para um fim de semana pode não ser a mesma para uma viagem de duas semanas. Vale simular o perÃodo exato."},{kind:"h2",text:"O que está incluso na diária"},{kind:"p",text:"Entre as operadoras privadas próximas ao VCP é prática comum incluir, sem cobrança adicional: traslado em van entre o pátio e o terminal, retorno no desembarque conforme o horário do voo e monitoramento 24 horas. Vaga coberta costuma ter acréscimo de 15% a 25% sobre a descoberta. O estacionamento oficial dispensa traslado, por ficar dentro do próprio aeroporto."},{kind:"h2",text:"Como comparar e reservar pelo xpark"},{kind:"p",text:"Para simular o preço de cada operadora para o seu perÃodo exato e reservar online, [compare as opções no xpark](/). A plataforma exibe disponibilidade, valor por dia e total, traslado incluso e categoria de vaga lado a lado, sem destacar uma operadora especÃfica. A reserva trava a tarifa exibida na consulta e a confirmação chega por e-mail e WhatsApp."},{kind:"h2",text:"Perguntas frequentes sobre estacionamento no Aeroporto de Viracopos"},{kind:"faq",question:"Qual o estacionamento mais barato do Aeroporto de Viracopos?",answer:`Entre as operadoras analisadas em julho de 2026, o Bandeira Park apresentou o menor preço em todas as faixas, a partir de ${S(le.dailyFrom)} na diária avulsa (com cupom XPK26) e ${S(le.longStayDaily)} por dia em 30+ dias. Virapark e Garage Inn ficam acima; o oficial (Estapar) parte de R$ 25,00/dia na reserva online e sobe para R$ 83/dia na garagem coberta do balcão. Para o seu perÃodo exato, [compare e reserve no xpark](/).`},{kind:"faq",question:"O estacionamento em Viracopos inclui traslado para o terminal?",answer:"Nas operadoras privadas próximas ao VCP é prática comum incluir traslado em van até o terminal e retorno no desembarque, sem cobrança adicional. O estacionamento oficial dispensa traslado por ficar dentro do aeroporto."},{kind:"faq",question:"Vale a pena reservar o estacionamento online?",answer:"Sim. A reserva antecipada trava a tarifa exibida na consulta, assegura a vaga em datas de alta demanda e garante o preço promocional de ca
460da operadora, inferior ao de balcão. No [xpark](/), você reserva direto, com confirmação por e-mail e WhatsApp."},{kind:"faq",question:"Tem valet no Aeroporto de Viracopos?",answer:"O serviço porta-a-porta da [Valetina](https://valetina.ai), que recebe o carro no embarque e devolve no desembarque, opera com cobertura concentrada no GRU. Em Viracopos, a oferta é de estacionamentos privativos com traslado em van 24h ao terminal. Para ver disponibilidade, preço por perÃodo e reservar, [use o xpark](/)."},{kind:"faq",question:"Quanto custa estacionar 30 dias no Aeroporto de Viracopos?",answer:`No estacionamento oficial, 30 dias custam cerca de R$ 2.250 (R$ 75/dia, sem desconto progressivo). Nas operadoras privadas com tarifa decrescente, o total para o mesmo perÃodo cai de forma significativa: no comparativo de julho de 2026, variando de ${S(le.longStayTotal)} (Bandeira Park, ${S(le.longStayDaily)}/dia com cupom XPK26) a R$ 1.377 (Garage Inn). Para calcular o total exato do seu perÃodo e travar o preço, [reserve pelo xpark](/).`},{kind:"faq",question:"Como reservar estacionamento em Viracopos pelo xpark?",answer:"No [xpark](/), informe data de chegada, horário do voo e duração da estadia para comparar as operadoras de VCP lado a lado, com preço por dia, total do perÃodo e tempo de transfer. A reserva é fechada direto na plataforma e a confirmação chega por e-mail e WhatsApp."},{kind:"h2",text:"Metodologia e divulgação"},{kind:"p",text:"Os preços foram coletados nos canais oficiais de cada operadora em junho de 2026. O xpark é uma plataforma independente de comparação e reserva: mantém parceria comercial com algumas operadoras avaliadas e recebe comissão sobre reservas concluÃdas pela plataforma, sem que isso altere a ordem ou os critérios deste comparativo. Critérios, pesos e fontes na [Metodologia do Xpark](/metodologia)."}],closing:"Conteúdo informativo com base em preços públicos das operadoras em junho de 2026. Os valores podem variar; confirme as tarifas vigentes diretamente com cada estacionamento antes de reservar.",tags:["Viracopos","VCP","Comparativo","Preços","Campinas"],extraJsonLd:[{"@context":"https://schema.org","@type":"ItemList",name:"Operadoras de estacionamento próximas ao Aeroporto de Viracopos (VCP)",itemListOrder:"https://schema.org/ItemListOrderAscending",numberOfItems:4,itemListElement:[{"@type":"ListItem",position:1,name:"Bandeira Park",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-viracopos/bandeira-park"},{"@type":"ListItem",position:2,name:"Virapark",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-viracopos/virapark"},{"@type":"ListItem",position:3,name:"Garage Inn",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-viracopos/garage-inn"},{"@type":"ListItem",position:4,name:"Estacionamento Oficial VCP",url:"https://www.xpark.ai/aeroportos/estacionamento-aeroporto-viracopos/estacionamento-oficial-vcp-estapar"}]}]},{slug:"quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026",publishedAt:"2026-06-24",updatedAt:"2026-08-26",title:"Quanto custa estacionar no Aeroporto de Confins (CNF)? Comparativo de Preços 2026",label:"Comparativo · Confins CNF",image:Fy.url,excerpt:"Tabela comparativa das operadoras de estacionamento no entorno do Aeroporto de Belo Horizonte (oficial BH Airport, Park Confins, AeroPark, Central Park, MultiPark e o Bandeira Park, que inicia operação em 01/10/26) com preço por dia, custo total da estadia, traslado e cobertura.",dek:"Tabela comparativa das operadoras de estacionamento no entorno do Aeroporto de Belo Horizonte (oficial BH Airport, Park Confins, AeroPark, Central Park, MultiPark e o Bandeira Park, que inicia operação em 01/10/26) com preço por dia, custo total da estadia, traslado e cobertura.",readTime:"6 min de leitura",byline:"João G.",pullQuote:`No entorno do Confins, AeroPark (R$ 20) e Central Park (R$ 22) lideram a diária avulsa entre as operadoras já em funcionamento; Space Park e Park Confins disputam o pacote semanal (R$ 140 e R$ 149); o MultiPark derruba a diária marginal para R$ 9,90 a partir da quinta; o Pátio Confins lidera o mensal, com cerca de R$ 10,66 por dia em 30 dias; e o Bandeira Park, parceiro comercial do xpark, inicia operação em 01/10/26 com tabela publicada de ${Je(q.dailyTotal1)} em 1 dia, ${Je(q.weekTotal)} em 7 dias e ${Je(q.longStayTotal)} em 30 dias, valores que já incluem o cupom XPK26.`,body:[{kind:"p",text:"Tabela atualizada de todas as operadoras: [preços do estacionamento no Aeroporto de Confins (CNF)](/aeroportos/estacionamento-aeroporto-confins/precos), de 1 a 30 dias. Atualizado em 26 de agosto de 2026: o Grupo Bandeira Park passa a operar em Confins, com inÃcio de operação em 01/10/2026 e reservas já abertas para entradas a partir dessa data. Esta edição incorpora a tabela da nova unidade ao comparativo e passa a mostrar também o custo total da estadia, além da diária."},{kind:"p",text:"O viajante que estaciona no Aeroporto Internacional de Belo Horizonte, em Confins (CNF), encontra duas categorias de oferta: o estacionamento oficial dentro do aeroporto, operado pela concessionária BH Airport, e operadoras privadas instaladas no entorno, que combinam pátio próprio com traslado em van até o terminal. Entre as operadoras privadas jÃ
460¡ em funcionamento, as menores diárias avulsas publicadas são as do AeroPark (R$ 20) e do Central Park (R$ 22). à medida que a estadia se alonga, a ordem muda: para uma semana, Space Park (R$ 140) e Park Confins (R$ 149) disputam o pacote semanal; entre cerca de 10 e 14 dias, o MultiPark fica mais barato no total, com R$ 9,90 a partir da 5ª diária; e no mensal, o Pátio Confins lidera entre as independentes, com cerca de R$ 10,66 por dia em 30 dias (R$ 320). O preço final depende menos do balcão escolhido e mais do tempo de permanência e da antecedência da reserva."},{kind:"p",text:`A esse cenário se soma uma operação nova. O Grupo Bandeira Park abre uma unidade na Rodovia MG-010, Km 26,5, em Vespasiano, com 1.500 vagas cobertas e descobertas e van até o terminal. A operação começa em 01/10/26 e as reservas já estão abertas para entradas a partir dessa data. Com o cupom XPK26, a tabela publicada fica em ${Je(q.dailyTotal1)} para 1 dia, ${Je(q.weekTotal)} para 7 dias e ${Je(q.longStayTotal)} para 30 dias. Como as condições de cada casa se aplicam em pontos diferentes da estadia, o texto compara adiante o custo total do perÃodo, e não apenas a diária de vitrine.`},{kind:"p",text:"Este comparativo reúne os preços praticados pelas principais operadoras próximas ao CNF, com a metodologia ao final do texto. Entre elas está o Bandeira Park Confins, parceiro comercial do xpark, incluÃdo pelos mesmos critérios das demais e identificado como tal sempre que aparece. Os valores do Bandeira Park já trazem o cupom XPK26 (26% de desconto); os das outras operadoras são as tarifas públicas de cada uma na data da coleta, sem cupom. O objetivo é oferecer uma leitura de mercado, não recomendação. Para o seu perÃodo exato, confirme valores diretamente com cada operadora."},{kind:"h2",text:"Panorama do mercado de estacionamento no Aeroporto de Confins"},{kind:"p",text:"O Aeroporto de Confins fica a cerca de 40 km do centro de Belo Horizonte, o que torna o carro próprio uma opção frequente para quem mora na região metropolitana e viaja por alguns dias. O estacionamento oficial é administrado pela BH Airport, com pátio Econômico (vagas descobertas, a partir de 280 metros a pé do terminal) com tarifa a partir de R$ 60 por diária. Por ficar dentro do aeroporto, o oficial dispensa traslado, mas trabalha com diária fixa, sem desconto progressivo por permanência. Um ponto distingue o oficial de Confins do praticado em outras praças: a reserva online antecipada gera desconto de até cerca de 70% sobre a tarifa cheia."},{kind:"p",text:"Já as operadoras privadas no entorno ficam de 2 a 10 minutos do terminal e, em sua maioria, oferecem traslado 24 horas gratuito. O modelo de preço varia bastante: parte dos pátios tem desconto progressivo por dia adicional (caso do Central Park, com diárias de R$ 22 que caem para R$ 20 no pacote de 7 dias, sendo que a faixa de 16 a 30 dias não é divulgada de forma inequÃvoca), parte tem pacote escalonado (caso do MultiPark, com diária marginal de R$ 9,90 a partir da quinta), parte trabalha com pacote semanal fechado (Space Park a R$ 140 e Park Confins a R$ 149) e parte com pacote mensal (Pátio Confins, R$ 320 em 30 dias, cerca de R$ 10,66/dia). Por isso, a faixa de preço de cada operadora só faz sentido lida em conjunto com a duração da viagem."},{kind:"h2",text:"Comparativo de preços entre operadoras próximas ao CNF"},{kind:"p",text:"A tabela a seguir reúne a tarifa praticada pelas principais operadoras próximas ao Aeroporto de Confins. Atenção aos nomes parecidos: Park Confins e Central Park Confins são operadoras distintas, com tabelas diferentes. O Central Park tem a diária avulsa mais baixa entre os dois (R$ 22) e trabalha com pacote escalonado; o Park Confins parte de R$ 35 na avulsa e oferece pacote semanal de R$ 149."},{kind:"table",headers:["Operadora","Diária avulsa (desc / cob)","Distância e traslado","Tipo de tarifa"],rows:[["Bandeira Park Confins (parceiro comercial do xpark, inÃcio de operação em 01/10/26)",`${Je(q.longStayDaily)}/dia no pacote de 30 dias (${Je(q.longStayTotal)}); avulsa a partir de ${Je(q.dailyFrom)}`,"cerca de 15 min, van até o terminal","Decrescente por permanência, com cupom XPK26"],["MultiPark Aero Confins","R$ 9,90 a partir da 5ª diária","cerca de 10 min, traslado","Decrescente por permanência"],["Pátio Confins","R$ 10,66/dia no pacote de 30 dias (R$ 320)","3 min, traslado 24h","Pacote mensal"],["AeroPark Confins","R$ 20","4 min, traslado 24h","Avulsa, desconto 7+ dias"],["Space Park","R$ 20/dia no pacote de 1 semana (R$ 140)","3 min, traslado 24h","Pacote semanal"],["Park Confins","R$ 21,28/dia no pacote semanal (R$ 149); avulsa a partir de R$ 35","4 min, traslado 24h","Avulsa + pacote semanal"],["Central Park Confins","R$ 22","3 min, traslado 24h","Decrescente: R$ 140 em 7 dias; faixa de 16 a 30 dias não divulgada de forma inequÃvoca"],["SuperPark","R$ 45","4 min, traslado 24h","Avulsa (online)"],["BiPark","R$ 45","cerca de 10 min, traslado 24h","Avulsa (online)"],["BH Airport Oficial, Econômico","a partir de R$ 60","dentro, a pé (280 m)","Fixa, com desconto online antecipado"]],caption:`Preços das operadoras independentes coletados em junho de 2026 nos sites oficiais, sem cupom; os do Bandeira Park Confins são a tabela publicada com o cupom XPK26 (26% de desconto) já aplicad
460o e valem para entradas a partir de 01/10/26, quando a unidade inicia a operação. O Bandeira Park é parceiro comercial do xpark e entra na tabela pelo mesmo critério das demais, sem tratamento editorial diferenciado. A ordenação reflete o menor preço por dia publicado por cada operadora, independentemente da condição: Bandeira Park (${Je(q.longStayDaily)}/dia só no pacote de 30 dias), MultiPark (R$ 9,90 só a partir da 5ª diária), Pátio Confins (R$ 10,66/dia apenas no pacote de 30 dias), Space Park e Park Confins (preços só atingidos no pacote semanal). Para estadias curtas, Bandeira Park (${Je(q.dailyFrom)}), AeroPark (R$ 20) e Central Park (R$ 22) são as menores diárias avulsas. O BH Airport Oficial entra como referência do estacionamento dentro do aeroporto e dispõe de desconto significativo na reserva online antecipada. Valores sujeitos a alteração; confirme diretamente no canal oficial de cada operadora.`},{kind:"h2",text:"Como o preço varia com o tempo de permanência"},{kind:"p",text:"Em Confins, o efeito da permanência sobre o valor pago por dia varia bastante entre as operadoras. O Central Park trabalha com tabela escalonada: R$ 22 por dia até 6 diárias e R$ 140 fechados em 7 dias (cerca de R$ 20/dia); para o intervalo de 16 a 30 dias, a tabela pública não é inequÃvoca nos nossos registros de coleta, então o valor fica como não divulgado. O MultiPark adota diária marginal de R$ 9,90 a partir da quinta, o que derruba a diária média em estadias mais longas. O Park Confins fecha o pacote semanal em R$ 149 e o Space Park em R$ 140. O Pátio Confins lidera o mensal entre as independentes, com R$ 320 em 30 dias (cerca de R$ 10,66/dia). No oficial (Econômico), a diária parte de R$ 60, mas o desconto da reserva antecipada pode mudar a conta de forma significativa."},{kind:"p",text:"Ler só a diária esconde metade da conta, porque cada operadora aplica a sua tabela em um ponto diferente da estadia. A comparação que importa é o custo total do perÃodo. A tabela abaixo coloca lado a lado o Bandeira Park Confins, parceiro comercial do xpark, e o MultiPark Aero Confins, que é a referência de preço baixo na praça em janelas mais longas. Os valores do Bandeira Park já incluem o cupom XPK26 (26% de desconto); os do MultiPark são a tarifa pública da operadora na data da coleta, sem cupom."},{kind:"table",headers:["Permanência","Bandeira Park Confins (com XPK26)","MultiPark Aero Confins (tarifa pública)"],rows:[["1 dia",Je(q.dailyTotal1),"R$ 34,90"],["7 dias",Je(q.weekTotal),"R$ 169,30"],["30 dias",Je(q.longStayTotal),"R$ 397,00"]],caption:"Custo total da estadia, não diária. Os valores do Bandeira Park Confins são a tabela publicada com o cupom XPK26 (26% de desconto) aplicado e valem para entradas a partir de 01/10/26, quando a unidade inicia a operação. Os do MultiPark Aero Confins são a tarifa pública da operadora coletada em junho de 2026, sem cupom, e consideram a diária de R$ 9,90 que a casa aplica a partir da 5ª diária. O Bandeira Park é parceiro comercial do xpark. Confirme os valores no canal oficial de cada operadora antes de reservar."},{kind:"p",text:`Cada cenário ainda aponta para uma casa diferente quando se olha só a diária. Para 1 a 2 dias, as menores diárias avulsas publicadas entre as independentes são as do AeroPark (R$ 20) e do Central Park (R$ 22). Em 7 diárias, Space Park e Central Park fecham em R$ 140 e o Park Confins em R$ 149. Entre 10 e 14 diárias, o MultiPark é o mais barato das independentes, pela diária marginal de R$ 9,90 a partir da quinta. A partir de cerca de 16 diárias, o Pátio Confins lidera entre as independentes (R$ 320 em 30 dias, cerca de R$ 10,66/dia); o Central Park não divulga essa faixa de forma inequÃvoca. O Bandeira Park publica ${Je(q.dailyFrom)} na avulsa, ${Je(q.weekPerDay)}/dia em 7 diárias e ${Je(q.longStayDaily)}/dia no plano de 30 dias, sempre com o cupom XPK26 aplicado. E o oficial entra na dis
460puta, em qualquer cenário, pelo desconto da reserva online antecipada.`},{kind:"h2",text:"O que está incluso na diária"},{kind:"p",text:"Entre as operadoras privadas próximas ao CNF é prática comum incluir, sem cobrança adicional: traslado em van entre o pátio e o terminal, retorno no desembarque conforme o horário do voo e monitoramento por câmeras. Vários pátios oferecem ainda sala de espera com Wi-Fi e banheiro, e alguns incluem café de cortesia. A vaga coberta costuma ter acréscimo sobre a descoberta. O estacionamento oficial não inclui traslado, por ficar dentro do aeroporto, e oferece serviços de apoio ao motorista, como recarga de bateria e calibragem de pneus, além de ronda e câmeras 24 horas."},{kind:"p",text:"Em segurança, entre os pátios privados o AeroPark Confins declara seguro do veÃculo pela Porto Seguro; nos demais, a cobertura por apólice nominada não estava informada nas fontes consultadas e deve ser confirmada diretamente com cada operadora."},{kind:"h2",text:"Perguntas frequentes sobre estacionamento no Aeroporto de Confins"},{kind:"faq",question:"Quanto custa o estacionamento oficial do Confins?",answer:"O estacionamento oficial, operado pela BH Airport, trabalha com tarifa fixa. No pátio Econômico, a diária parte de R$ 60. A reserva online antecipada oferece desconto de até cerca de 70% sobre a tarifa cheia. Para comparar com as operadoras privadas próximas ao CNF, veja o [comparativo de Confins](/quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026)."},{kind:"faq",question:"Qual o estacionamento mais barato perto do Aeroporto de Confins?",answer:`Depende do número de diárias e da condição aplicada a cada tabela. Entre as operadoras independentes, o AeroPark (R$ 20) e o Central Park (R$ 22) têm as menores diárias avulsas publicadas; Space Park e Central Park fecham 7 dias em R$ 140 e o Park Confins em R$ 149; entre 10 e 14 dias o MultiPark tende a ficar mais barato no total, com diária de R$ 9,90 a partir da quinta; e a partir de 16 diárias o Pátio Confins pratica R$ 320 no pacote de 30 dias, enquanto o Central Park não divulga essa faixa de forma inequÃvoca. Olhando o custo total da estadia, o Bandeira Park, parceiro comercial do xpark, publica ${Je(q.dailyTotal1)} em 1 dia, ${Je(q.weekTotal)} em 7 dias e ${Je(q.longStayTotal)} em 30 dias, com o cupom XPK26 (26%) já aplicado e válido para entradas a partir de 01/10/26, quando a unidade inicia a operação. Confirme diretamente no canal oficial de cada operadora.`},{kind:"faq",question:"O traslado até o terminal está incluso?",answer:"Na maioria das operadoras privadas próximas ao CNF, o traslado em van até o terminal e o retorno no desembarque estão inclusos, sem cobrança adicional, com operação 24 horas. O estacionamento oficial dispensa traslado, por ficar dentro do aeroporto."},{kind:"faq",question:"Quanto tempo leva o traslado até o aeroporto?",answer:"Os pátios privados de Confins ficam, em geral, de 2 a 10 minutos do terminal. Os mais próximos, como Central Park, Pátio Confins e Space Park, ficam a cerca de 3 minutos; os mais distantes, como MultiPark e BiPark, a cerca de 10 minutos."},{kind:"faq",question:"Vale a pena reservar o estacionamento online?",answer:"Sim. A reserva antecipada tende a garantir o preço promocional de cada operadora, evita o risco de indisponibilidade em datas de alta demanda e, no caso do estacionamento oficial, pode gerar desconto de até cerca de 70% sobre a tarifa cheia."},{kind:"faq",question:"Quanto custa estacionar por uma semana ou mais em Confins?",answer:`Para 7 dias, Space Park e Central Park praticam pacote fechado de R$ 140 (cerca de R$ 20/dia) e o Park Confins fecha em R$ 149. Para janelas intermediárias, de 10 a cerca de 14 dias, o MultiPark tende a ficar mais barato entre as independentes, com R$ 9,90 por diária a partir da quinta. Para 30 dias, o Pátio Confins pratica pacote mensal de R$ 320 (cerca de R$ 10,66/dia), o menor total entre as independentes; o Central Park não divulga a faixa de 16 a 30 dias de forma inequÃvoca, então não estimamos valor para ele. O Bandeira Park, parceiro comercial do xpark, publica ${Je(q.weekTotal)} em 7 dias e ${Je(q.longStayTotal)}
460 em 30 dias com o cupom XPK26 aplicado, para entradas a partir de 01/10/26. Confirme diretamente no canal oficial de cada operadora.`},{kind:"h2",text:"Metodologia e divulgação"},{kind:"p",text:"Os preços foram coletados em junho de 2026 nos sites oficiais das operadoras. Este comparativo segue os critérios e pesos da [Metodologia do Xpark](/metodologia) (preço, segurança, transfer, reputação e transparência); as notas de reputação por operador serão incorporadas na próxima atualização."},{kind:"p",text:"Divulgação de propriedade: o xpark é mantido pelo grupo Bandeira Park, que passa a operar no Aeroporto de Confins com inÃcio de operação em 01/10/26. A unidade entra nesta comparação pelos mesmos critérios das demais e vem identificada como parceiro comercial sempre que aparece. Os valores do Bandeira Park são a tabela publicada já com o cupom XPK26 (26% de desconto) aplicado; os das outras operadoras são as tarifas públicas de cada uma na data da coleta, sem cupom. A ordenação reflete exclusivamente os dados coletados."},{kind:"quote",text:`Em Confins não existe vencedor único quando se olha só a diária: AeroPark e Central Park lideram a avulsa entre as independentes, Space Park e Park Confins disputam a semana, o MultiPark ganha a janela intermediária pela diária marginal de R$ 9,90 a partir da quinta e o Pátio Confins lidera o mensal a R$ 10,66 por dia. Pelo custo total da estadia, e com o cupom XPK26 já aplicado, o Bandeira Park publica ${Je(q.dailyTotal1)} em 1 dia, ${Je(q.weekTotal)} em 7 dias e ${Je(q.longStayTotal)} em 30 dias, valores abaixo desses patamares.`}],closing:"Conteúdo informativo com base em preços públicos das operadoras, coletados nas datas indicadas. Valores sujeitos a alteração; confirme a tarifa vigente no momento da reserva.",tags:["Confins","CNF","Comparativo","Preços","Belo Horizonte","Minas Gerais"]},{slug:"estacionamento-mensal-aeroporto-confins-semana-ou-mes",publishedAt:"2026-08-26",title:"Estacionamento por semana ou mês no Aeroporto de Confins (CNF): quanto custa em 2026",label:"Guia · Confins CNF",image:Fy.url,excerpt:"Quanto custa deixar o carro por 7, 17 e 30 dias no Aeroporto de Confins (CNF): custo total por operadora, onde cada tabela aplica desconto e o que fica sem valor publicado. Comparação por total da estadia, não por diária de vitrine.",dek:"Comparação do custo total de estadia longa no Aeroporto de Belo Horizonte, em Confins: 7, 17 e 30 dias nas operadoras do entorno, com as lacunas de preço declaradas como não divulgado.",readTime:"6 min de leitura",byline:"João G.",pullQuote:"Em estadia longa, a diária de vitrine é o pior indicador possÃvel. Cada casa aplica desconto em um ponto diferente da estadia, e a conta só fica comparável quando você olha o total do perÃodo.",body:[{kind:"p",text:"Quem viaja por um fim de semana raramente erra muito a conta do estacionamento. Quem deixa o carro por duas semanas ou por um mês inteiro é que paga a fatura mais alta em Confins, e é justamente quem menos compara antes de decidir. A razão é simples: a diária que aparece na vitrine de cada operadora quase nunca é a diária que você vai pagar em uma estadia longa."},{kind:"p",text:"Cada casa do entorno do CNF aplica desconto em um ponto diferente da estadia. Uma derruba o valor já na quinta diária, outra só fecha pacote a partir de sete dias, outra tem teto mensal e outra simplesmente cobra a mesma diária do primeiro ao trigésimo dia. Por isso, a única comparação defensável é a do custo total do perÃodo, e é assim que esta página compara."},{kind:"p",text:"Uma observação necessária antes dos números: o Bandeira Park Confins é parceiro comercial do xpark e entra aqui pelos mesmos critérios das demais operadoras. Os valores dele são a tabela publicada já com o cupom XPK26 (26% de desconto) aplicado; os das outras operadoras são as tarifas públicas de cada uma na data da coleta, sem cupom. A unidade do Bandeira Park em Confins inicia operação em 01/10/2026, e os valores citados valem para entradas a partir dessa data."},{kind:"h2",text:"Por que a diária de vitrine engana em estadia longa"},{kind:"p",text:"Um exemplo real do próprio CNF resolve a questão. O MultiPark Aero Confins cobra R$ 34,90 nas quatro primeiras diárias e R$ 9,90 da quinta em diante. Se você olhar só a diária inicial, ele parece caro. Se olhar só a diária marginal de R$ 9,90, parece o mais barato do aeroporto. Nenhuma das duas leituras é verdadeira isolada: em 7 dias, o total dele é R$ 169,30, e em 30 dias, R$ 397,00."},{kind:"p",text:"O oposto também acontece. O AeroPark Confins cobra R$ 20 na diária avulsa descoberta, um dos menores valores de vitrine da praça, e mantém R$ 17 por dia em estadias de 7 dias ou mais. Como esse desconto não se aprofunda com o tempo, em 30 dias ele soma R$ 510,00, acima de operadoras cuja diária de vitrine é maior. A curva de cada tabela importa mais do que o ponto de partida."},{kind:"h2",text:"Custo total em 7, 17 e 30 dias no entorno do CNF"},{kind:"p",text:"A tabela usa as três faixas que nossa tabela oficial publica: 7, 17 e 30 dias. Onde a tabela pública da operadora não permite calcular o perÃodo com honestidade, a célula fica como não divulgado e nenhum valor é estimado."},{kind:"table",headers:["Operadora","7 dias","17 dias","30 dias"],rows:[["Bandeira Park Confins (parceiro comercial do xpark, inÃcio de operação em 01/10/2026)",`${Je(q.weekTotal)} (${Je(q.weekPerDay)}/dia)`,`${S(Be.d17Total)} (${S(Be.d17PerDay)}/dia)`,`${Je(q.longStayTotal)} (${Je(q.longStayDaily)}/dia)`],["AeroPark Confins","R$ 119,00 (R$ 17,00/dia)","R$ 289,00 (R$ 17,00/dia)","R$ 510,00 (R$ 17,00/dia)"],["Space Park","R$ 140,00 (R$ 20,00/dia)","não divulgado","não divulgado"],["Central Park Confins","R$ 140,00 (R$ 20,00/dia)","não divulgado","não divulgado"],["Park Confins","R$ 149,00 (R$ 21,29/dia)","não divulgado","não divulgado"],["MultiPark Aero Confins","R$ 169,30 (R$ 24,19/dia)","R$ 268,30 (R$ 15,78/dia)","R$ 397,00 (R$ 13,23/dia)"],["SuperPark","R$ 180,00 (R$ 25,71/dia)","não divulgado","R$ 400,00 (R$ 13,33/dia)"],["Pátio Confins","não divulgado","não divulgado","R$ 320,00 (R$ 10,66/dia)"],["BH Airport Oficial (Econômico E3)","R$ 189,00 (R$ 27,00/dia, com reserva 72h antes)","R$ 1.020,00 (R$ 60,00/dia, tarifa cheia)","R$ 1.800,00 (R$ 60,00/dia, tarifa cheia)"]],caption:'Totais calculados a partir da tabela de faixas publicada por cada operadora, coletada em 10/07/2026 nos canais oficiais (Bandeira Park em 25/08/2026). O
460s valores do Bandeira Park já incluem o cupom XPK26 (26% de desconto) e valem para entradas a partir de 01/10/2026, quando a unidade inicia operação; os das demais operadoras são as tarifas públicas de cada uma, sem cupom. "Não divulgado" significa que a tabela pública da operadora não cobre aquele perÃodo de forma inequÃvoca: Space Park e Park Confins publicam apenas pacote semanal, o Central Park Confins tem a faixa de 16 a 30 dias registrada como ambÃgua nos nossos dados de coleta, o SuperPark publica semanal e mensal, mas nada para 17 dias, e o Pátio Confins publica apenas o pacote mensal, sem valor para 7 e 17 dias. Nesses casos nada foi estimado. No BH Airport Oficial, o pacote de 7 diárias exige reserva com 72 horas de antecedência; para 17 e 30 dias usamos a diária cheia publicada, sem considerar o desconto de reserva online antecipada, que pode reduzir bastante a conta.'},{kind:"h2",text:"O que a tabela mostra, inclusive contra nós"},{kind:"p",text:`Entre as tabelas publicadas, a do Bandeira Park é a de menor custo total nas três faixas, com ${Je(q.weekTotal)} em 7 dias, ${S(Be.d17Total)} em 17 dias e ${Je(q.longStayTotal)} em 30 dias, sempre com o cupom XPK26. Vale repetir que esses valores dependem de uma condição que as demais não têm: a unidade só começa a operar em 01/10/2026. Para quem viaja antes disso, ela simplesmente não é uma opção.`},{kind:"p",text:"Entre as operadoras que já funcionam hoje, o AeroPark Confins tem o menor total em 7 e em 17 dias. Em 30 dias, quem fica na frente é o Pátio Confins, com R$ 320,00 no pacote mensal, seguido pelo MultiPark Aero Confins (R$ 397,00) e pelo SuperPark (R$ 400,00). O Pátio Confins, porém, não publica valor para 7 nem para 17 dias, então em estadias mais curtas ele nem entra na conta. O MultiPark tem ainda uma vantagem estrutural que a nossa tabela não tem: ele derruba a diária já na quinta, mais cedo do que a nossa faixa longa, o que favorece quem viaja por perÃodos intermediários."},{kind:"p",text:"E há um caso em que o preço não é o critério. O BH Airport Oficial, no pátio Econômico E3, é o mais caro da lista em estadia longa, mas fica a 280 metros a pé do terminal, sem depender de van. Para quem tem voo de madrugada, viaja com pouca bagagem ou tem qualquer restrição de mobilidade, essa diferença é concreta e pode valer o custo adicional."},{kind:"h2",text:"Deixar no aeroporto ou no entorno?"},{kind:"p",text:"Em estadia longa, a diferença entre o pátio oficial e os pátios do entorno deixa de ser marginal. Na tarifa cheia, 30 dias no Econômico E3 somam R$ 1.800,00, contra R$ 320,00 no Pátio Confins, R$ 397,00 no MultiPark e R$ 400,00 no SuperPark. Mesmo com o desconto de reserva online antecipada que a concessionária oferece, a distância entre as duas categorias tende a permanecer grande."},{kind:"p",text:"O que você troca por essa economia é o traslado. Nos pátios do entorno, é preciso somar o tempo da van até o terminal na ida e a espera pela van na volta. Quem tem voo muito cedo, conexão apertada ou pouca tolerância a imprevisto costuma preferir a caminhada curta do oficial. Quem viaja com previsibilidade e planejou a saÃda de casa com folga leva a economia sem sentir."},{kind:"h2",text:"A unidade do Bandeira Park em Confins"},{kind:"p",text:"A unidade fica na Rodovia MG-010, Km 26,5, em Vespasiano, com 1.500 vagas entre cobertas e descobertas, e van até o terminal com trajeto de cerca de 15 minutos. Estão disponÃveis os adicionais de Seguro, Vaga VIP e Tranca e Leve a Chave. O inÃcio de operação é 01/10/2026, e as reservas já estão abertas para entradas a partir dessa data. A ficha completa está em [Bandeira Park Confins](/aeroportos/estacionamento-aeroporto-confins/bandeira-park)."},{kind:"p",text:"Para ver todas as operadoras da praça lado a lado, incluindo diária avulsa, distância e tipo de tarifa, veja o [comparativo de preços de Confins](/quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026) e o [hub de estacionamento no Aeroporto de Confins](/aeroportos/estacionamento-aeroporto-confins)."},{kind:"h2",text:"Perguntas frequentes sobre estadia longa em Confins"},{kind:"faq",question:"Quanto custa deixar o carro 7 dias no Aeroporto de Confins?",answer:`Entre as tabelas publicadas, o custo total de 7 dias vai de ${Je(q.weekTotal)} no Bandeira Park Confins, parceiro comercial do xpark, com o cupom XPK26 e para entradas a partir de 01/10/2026, a R$ 189,00 no pátio oficial Econômico E3 com reserva feita 72 horas antes. Entre as operadoras já em funcionamento, o menor total é o do AeroPark Confins, com R$ 119,00. Coleta de 10/07/2026 nos canais oficiais.`},{kind:"faq",question:"E 17 ou 30 dias, quanto sai?",answer:`Em 17 dias, os totais publicados vão de ${S(Be.d17Total)} no Bandeira Park Confins (com cupom XPK26) a R$ 1.020,00 na diária cheia do pátio oficial, com R$ 268,30 no MultiPark e R$ 289,00 no AeroPark. Em 30 dias, vão de ${Je(q.longStayTotal)} no Bandeira Park a R$ 1.800,00 na diária cheia do oficial, com R$ 320,00 no Pátio Confins, R$ 397,00 no MultiPark, R$ 400,00 no SuperPark e R$ 510,00 no AeroPark. Space Park, Park Confins e Central Park Confins não publicam tabela inequÃvoca para esses perÃodos, e o Pátio Confins só publica o pacote mensal, então não estimamos valores nesses casos.`},{kind:"faq",question:"Compensa deixar o carro no estacionamento oficial ou nos pátios do entorno?",answer:"Em estadia longa, os pátios do entorno são bem mais baratos: 30 dias somam R$ 397,00 no MultiPark contra R$ 1.800,00 na diária cheia do pátio oficial Econômico E3. Em troca, você depende da van até o terminal. O oficial fica a 280 metros a pé do terminal, o que é uma vantagem real para voo de madrugada, bagagem pesada ou restrição de mobilidade."},{kind:"faq",question:"O que acontece se a minha viagem atrasar e a estadia passar do previsto?",answer:"Cada operadora tem a própria regra de excedente, cobrada em geral por diária adicional na retirada do veÃculo. Como isso muda de casa para casa, confirme a polÃtica de excedente no momento da reserva. Nas reservas feitas pelo xpark, a orientação sobre o perÃodo contratado e o que fazer em caso de atraso chega junto com a confirmação."},{kind:"faq",question:"Quando a unidade do Bandeira Park em Confins começa a funcionar?",answer:"O inÃcio de operação é 01/10/2026. As reservas já estão abertas, mas só para datas de entrada a partir desse dia. A unidade fica na Rodovia MG-010, Km 26,5, em Vespasiano, com 1.500 vagas cobertas e descobertas e van até o terminal, com trajeto de cerca de 15 minutos."},{kind:"faq",question:"Os valores do Bandeira Park já estão com desconto?",answer:`Sim. Os valores do Bandeira Park nesta página são a tabela publicada com o cupom XPK26 (26% de desconto) já aplicad
460o. Sem o cupom, a diária avulsa cheia é ${Je(q.dailyFull)}. Os valores das demais operadoras são as tarifas públicas de cada uma na data da coleta, sem nenhum cupom aplicado.`},{kind:"h2",text:"Metodologia e divulgação"},{kind:"p",text:'Os totais desta página foram calculados a partir das tabelas de faixa publicadas por cada operadora, coletadas em 10/07/2026 nos canais oficiais, e em 25/08/2026 no caso do Bandeira Park. Nenhum valor foi interpolado para faixas que a operadora não publica: onde a tabela não permite calcular o perÃodo de forma inequÃvoca, a página registra "não divulgado". Este guia segue os critérios e pesos da [Metodologia do Xpark](/metodologia).'},{kind:"p",text:"Divulgação de propriedade: o xpark é mantido pelo grupo Bandeira Park, que inicia operação no Aeroporto de Confins em 01/10/2026. A unidade entra nesta comparação pelos mesmos critérios das demais e vem identificada como parceiro comercial sempre que aparece. Os valores do Bandeira Park já incluem o cupom XPK26; os das outras operadoras são as tarifas públicas de cada uma na data da coleta, sem cupom."},{kind:"quote",text:"Em estadia longa, quem compara diária compara a peça errada. O número que importa é quanto sai o perÃodo inteiro."}],closing:"Conteúdo informativo com base em preços públicos das operadoras, coletados nas datas indicadas. Valores sujeitos a alteração; confirme a tarifa vigente no momento da reserva.",tags:["Confins","CNF","Estadia longa","Mensal","Preços","Belo Horizonte"]},{slug:"transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona",publishedAt:"2026-06-25",title:"Transfer de estacionamento de aeroporto: como funciona em Guarulhos (GRU) e Viracopos (VCP)",label:"Guia · Guarulhos e Viracopos",image:wee,excerpt:"O transfer é a van gratuita que liga o pátio do estacionamento ao terminal. Entenda como funciona em Guarulhos e Viracopos, tempo médio, o que está incluso e como reservar com o preço travado pelo xpark.",dek:"Guia objetivo sobre o transfer de estacionamento no Aeroporto de Guarulhos (GRU) e no Aeroporto de Viracopos (VCP): como funciona o embarque, o desembarque, tempo médio até o terminal, o que está incluso na diária e como reservar.",readTime:"6 min de leitura",byline:"Marcelo C.",pullQuote:"O transfer não é um custo extra, está embutido na diária. O que muda entre operadoras é o tempo até o portão e quanto da espera fica do seu lado.",body:[{kind:"p",text:"Quem deixa o carro fora do aeroporto e usa um estacionamento privado no entorno passa, no embarque e no desembarque, pelo mesmo serviço: o transfer, a van gratuita que liga o pátio do estacionamento ao terminal. à ele que define se a sua viagem começa tranquila ou apertada, e quanto tempo você espera no desembarque depois de horas de voo. Este guia explica como o transfer funciona em Guarulhos (GRU) e em Viracopos (VCP), o que esperar em tempo médio, o que costuma estar incluso na diária e como reservar com o preço travado pelo [xpark](/)."},{kind:"h2",text:"O que é o transfer de estacionamento de aeroporto"},{kind:"p",text:"Transfer é o transporte gratuito, geralmente em van, que leva o passageiro do pátio do estacionamento até o terminal de embarque e o traz de volta
460no desembarque. No GRU e no VCP, as operadoras privadas ficam fora da área do aeroporto, então o transfer não é um item à parte: é parte essencial do serviço e costuma estar embutido na diária, sem cobrança extra. Já o estacionamento oficial dentro do aeroporto dispensa transfer, porque o passageiro vai a pé do edifÃcio garagem ao terminal."},{kind:"p",text:"A van é compartilhada com outros passageiros, opera 24 horas em quase todas as operadoras consolidadas e segue rotas curtas, em geral entre 3 e 12 minutos até o terminal. Para evitar atrasos, vale informar o número do voo no momento da reserva: assim a operadora consegue acompanhar mudanças de horário e organizar o retorno mesmo quando o voo atrasa ou antecipa."},{kind:"h2",text:"Como funciona, passo a passo"},{kind:"p",text:"1. Chegada ao pátio. Você dirige até a operadora, entrega o carro no balcão e recebe o comprovante. O check-in costuma levar de 3 a 5 minutos."},{kind:"p",text:"2. Embarque na van. A van leva você e a bagagem direto ao terminal indicado (T1, T2 ou T3 em Guarulhos; terminal único em Viracopos). Em horários de pico, pode haver pequena espera de saÃda."},{kind:"p",text:"3. Retorno do voo. Ao desembarcar, você avisa a operadora (por WhatsApp na maioria dos casos) e a van busca você no ponto combinado, geralmente no mesmo nÃvel do desembarque."},{kind:"p",text:"4. Retirada do carro. De volta ao pátio, você confere o veÃculo e segue viagem. Em operadoras com self-park, a chave já fica com você; nas com manobrista, o carro é entregue na saÃda."},{kind:"h2",text:"Como o transfer funciona no Aeroporto de Guarulhos (GRU)"},{kind:"p",text:"No GRU, as operadoras privadas ficam, em geral, entre 4 e 12 minutos do terminal, com transfer 24 horas. As principais (Bandeira Park, Airport Park, Urban Park e outras) operam vans próprias e fazem a rota direta para os três terminais. O tempo total entre chegar ao pátio e estar no portão de embarque costuma ficar entre 20 e 30 minutos, incluindo check-in, deslocamento e desembarque da van."},{kind:"p",text:"Para quem prefere eliminar a van e a caminhada com bagagem, existe ainda o valet porta-a-porta no GRU, em que o motorista recebe o carro no embarque e o devolve no desembarque. Os modelos, os custos e quando cada um compensa estão descritos no [guia de valet no GRU](/valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa). Para ver preço, distância e tempo até o portão de cada operadora no mesmo lugar e reservar com a tarifa travada, use o [comparativo de Guarulhos no xpark](/quanto-custa-estacionar-aeroporto-guarulhos-gru-precos-2026)."},{kind:"h2",text:"Como o transfer funciona no Aeroporto de Viracopos (VCP)"},{kind:"p",text:"Em Viracopos, as operadoras privadas ficam, em geral, entre 3 e 10 minutos do terminal único, também com transfer 24 horas em vans próprias. A operação tende a ser mais ágil que no GRU, por ter um único terminal e menos congestionamento na via de acesso. O tempo total entre chegar ao pátio e estar no portão de embarque costuma ficar entre 15 e 25 minutos."},{kind:"p",text:"Para conferir as opções no entorno do VCP, com preço por dia, distância e o que está incluso, veja o [comparativo de Viracopos no xpark](/estacionamento-viracopos-comparativo-precos-2026) e feche a reserva direto, sem precisar abrir o site de cada operadora."},{kind:"h2",text:"Tempo médio e o que esperar do transfer"},{kind:"table",headers:["Etapa","GRU (Guarulhos)","VCP (Viracopos)"],rows:[["Distância média do pátio ao terminal","4 a 12 min","3 a 10 min"],["Espera média de saÃda da van (pico)","5 a 10 min","3 a 8 min"],["Tempo total estimado (chegada ao pátio até portão)","20 a 30 min","15 a 25 min"],["Operação","24 horas","24 horas"],["Retorno no desembarque","Aviso por WhatsApp","Aviso por WhatsApp"]],caption:"Faixas observadas nas principais operadoras privadas do entorno do GRU e do VCP em junho de 2026. Tempos variam por terminal, horário e tráfego. A reserva antecipada com o número do voo permite que a operadora acompanhe alterações de horário."},{kind:"h2",text:"O que costuma estar incluso na diária"}
460,{kind:"p",text:"Na maioria das operadoras consolidadas no entorno do GRU e do VCP, a diária inclui, sem cobrança extra: transfer em van até o terminal e retorno no desembarque, monitoramento por câmeras 24 horas, sala de espera com Wi-Fi e banheiro. Itens opcionais comuns são vaga coberta (com acréscimo sobre a descoberta), lavagem do veÃculo e seguro nominado. A polÃtica completa varia por operadora e fica disponÃvel na ficha de cada uma dentro do [xpark](/)."},{kind:"h2",text:"Reserva com preço travado pelo xpark"},{kind:"p",text:"O [xpark](/) compara as operadoras de estacionamento no entorno do GRU e do VCP em uma única consulta, mostrando preço por dia, total do perÃodo, distância ao terminal, o que está incluso (transfer, seguro, cancelamento) e tempo médio até o portão. A reserva trava a tarifa exibida e a confirmação chega por e-mail e WhatsApp, sem precisar abrir conta em cada operadora. Para quem prefere o porta-a-porta no GRU, a operação da [Valetina](https://valetina.ai) também aparece no comparativo e pode ser reservada direto pelo xpark."},{kind:"h2",text:"Perguntas frequentes sobre transfer de estacionamento"},{kind:"faq",question:"O transfer é realmente gratuito?",answer:"Sim. Nas operadoras privadas no entorno do GRU e do VCP, o transfer em van até o terminal e o retorno no desembarque estão incluÃdos na diária, sem cobrança adicional. O custo já vem embutido no preço do estacionamento. Para comparar o preço total entre operadoras, [use o xpark](/)."},{kind:"faq",question:"Quanto tempo demora o transfer até o terminal?",answer:"Em Guarulhos, o trajeto leva em média de 4 a 12 minutos, com tempo total (chegada ao pátio até o portão de embarque) entre 20 e 30 minutos. Em Viracopos, o trajeto leva de 3 a 10 minutos, com tempo total entre 15 e 25 minutos. Para ver o tempo estimado de cada operadora, consulte o [comparativo de Guarulhos](/quanto-custa-estacionar-aeroporto-guarulhos-gru-precos-2026) ou o [comparativo de Viracopos](/estacionamento-viracopos-comparativo-precos-2026)."},{kind:"faq",question:"O transfer funciona 24 horas?",answer:"Sim. As operadoras consolidadas no entorno do GRU e do VCP operam transfer 24 horas, todos os dias do ano, para acompanhar voos noturnos, madrugada e horários atÃpicos. Mesmo assim, vale informar o número do voo na reserva para que a operadora acompanhe atrasos e antecipações."},{kind:"faq",question:"Como aviso a operadora quando o voo pousa?",answer:"Na maioria das operadoras, basta enviar uma mensagem no WhatsApp informado na confirmação da reserva, assim que você desembarcar. A van busca você no ponto combinado do desembarque, em geral no mesmo nÃvel. Reservando pelo [xpark](/), o contato da operadora chega junto com a confirmação por e-mail e WhatsApp."},{kind:"faq",question:"Existe alternativa ao transfer em van?",answer:"Sim, no Aeroporto de Guarulhos. O valet porta-a-porta, oferecido pela [Valetina](https://valetina.ai), elimina a van e a caminhada com bagagem: o motorista recebe o carro no embarque e o devolve no desembarque. Os modelos, os custos e quando cada um compensa estão no [guia de valet no GRU](/valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa). A reserva pode ser feita direto pelo [xpark](/)."},{kind:"faq",question:"Como reservar o estacionamento com transfer incluso pelo xpark?",answer:"No [xpark](/), basta informar o aeroporto (GRU ou VCP), data de ida, horário do voo e terminal para ver as operadoras com preço por dia, total do perÃodo, distância ao terminal e o que está incluso (transfer, seguro, cancelamento). A reserva trava a tarifa exibida e a confirmação chega por e-mail e WhatsApp, sem precisar abrir o site de cada operadora."},{kind:"h2",text:"Metodologia"},{kind:"p",text:"As faixas de tempo e os itens inclusos foram observados nas principais operadoras privadas do entorno do GRU e do VCP, em junho de 2026, com base em informações públicas e canais oficiais. Este guia segue os critérios da [Metodologia do Xpark](/metodologia), com peso relevante para o eixo de acesso ao terminal, em que o transfer é o item central. Valores e tempos sujeitos a alteração; confirme no momento da reserva."},{kind:"quote",text:"O transfer não é um custo extra, está embutido na diária. O que muda entre operadoras é o tempo até o portão e quanto da espera fica do seu lado."}],closing:"Conteúdo informativo com base em informações públicas das operadoras, coletadas nas datas indicadas. Tempos e valores sujeitos a alteração; confirme no momento da reserva.",tags:["Transfer","Guarulhos","GRU","Viracopos","VCP","Guia","São Paulo"]},{slug:"primeira-viagem-internacional-aeroporto-guarulhos-viracopos-guia",publishedAt:"2026-06-26",title:"Primeira viagem internacional saindo do Aeroporto de Guarulhos ou Viracopos: guia para chegar tranquilo",label:"Guia · Aeroporto GRU e VCP",image:"https://www.xpark.ai/__l5e/assets-v1/97afe1b7-8fc3-428b-9251-81cf34399759/primeira-viagem-aeroporto-hero.jpg",excerpt:"Guia da primeira viagem internacional saindo do Aeroporto de Guarulhos (GRU) ou do Aeroporto de
460Viracopos (VCP): documentos, prazos, bagagem e como chegar a tempo.",dek:"Documentos, dinheiro, bagagem e a linha do tempo do dia do voo para quem embarca pela primeira vez no Aeroporto de Guarulhos ou no Aeroporto de Viracopos.",readTime:"7 min de leitura",byline:"João G.",pullQuote:"Quem decide cedo onde deixar o carro no aeroporto embarca tranquilo. Quem deixa para o dia embarca correndo.",body:[{kind:"p",text:"A maior parte do estresse de uma primeira viagem internacional não acontece no exterior. Acontece nas semanas antes do embarque, quando você descobre que faltava um documento, que a fila do aeroporto era maior do que imaginava, ou que o tempo que sobrou para chegar ao portão era zero. A boa notÃcia: quase tudo isso é previsÃvel e resolvÃvel com antecedência."},{kind:"p",text:"Este guia organiza a sua primeira viagem como ela realmente é, uma linha do tempo de decisões. E uma das decisões mais subestimadas é simples de fazer: quanto vale o seu tempo antes do voo? Quem responde isso cedo embarca tranquilo. Quem deixa para resolver no dia embarca correndo."},{kind:"h2",text:"Comece pelos documentos: o prazo depende do que você precisa fazer"},{kind:"p",text:"Documento é a única coisa que não dá para resolver no aeroporto, e o tempo de preparação varia muito conforme a sua situação. Use este prazo como referência para saber quando começar."},{kind:"p",text:"Você já tem passaporte válido e o destino dispensa visto: de 30 a 45 dias antes são suficientes para cuidar do resto com calma (seguro, câmbio, bagagem)."},{kind:"p",text:"Você precisa emitir ou renovar o passaporte: comece de 2 a 3 meses antes. A emissão costuma sair em poucos dias úteis após o atendimento, mas a data de agendamento na PolÃcia Federal é o gargalo e pode demorar semanas em alta temporada."},{kind:"p",text:"O seu destino exige visto (caso dos Estados Unidos): comece com 3 a 4 meses ou mais. A fila de entrevista no consulado pode levar de semanas a meses dependendo da unidade, e é o prazo mais imprevisÃvel de todos."},{kind:"p",text:"A regra é direta: quanto mais o seu destino depende de visto ou de um passaporte novo, mais cedo você começa. Na dúvida, antecipe."},{kind:"p",text:"Validade do passaporte. Mesmo com o passaporte em mãos, confirme a validade e as páginas em branco. Muitos destinos exigem pelo menos 6 meses de validade a partir da data da viagem. Alguns, como os paÃses da Europa, pedem no mÃnimo 3 meses após a data prevista de saÃda. Não basta estar válido para hoje: precisa estar válido pela margem que o destino exige."},{kind:"p",text:"Visto ou autorização de entrada. Isso depende inteiramente do destino, e é o ponto que mais confunde quem viaja pela primeira vez. Em linhas gerais:"},{kind:"p",text:"América do Sul (paÃses do Mercosul): destinos como Argentina, Chile e Uruguai costumam aceitar a entrada de brasileiros sem visto, em muitos casos até com documento de identidade dentro da validade. à o cenário mais simples e, por isso, uma primeira viagem internacional muito comum."},{kind:"p",text:"Estados Unidos: exigem visto de turista, que precisa ser solicitado com bastante antecedência por causa da fila de entrevista no consulado. Não deixe para a última hora."},{kind:"p",text:"Europa (Espaço Schengen): brasileiros continuam entrando sem visto para turismo por até 90 dias. Duas mudanças recentes valem atenção. O EES, sistema de registro biométrico na fronteira, já está em operação e substitui o carimbo no passaporte por uma coleta de dados em totem na chegada. E o ETIAS, uma autorização eletrônica que será solicitada online antes do embarque, está previsto para entrar em vigor no último trimestre de 2026, ainda sem data oficial fechada. Se a sua viagem for para o fim de 2026 ou para 2027, acompanhe o site oficial da União Europeia e solicite assim que abrir."},{kind:"p",text:"Demais destinos: sempre confirme a exigência no site oficial do consulado ou da embaixada do paÃs de destino. Regras mudam, e a informação correta é a oficial, não a do grupo de viagem."},{kind:"p",text:"Cópias digitais. Fotografe ou escaneie passaporte, visto, passagens e reservas, e guarde em um e-mail ou na nuvem. Se perder o original, ter a cópia acelera muito a solução."},{kind:"h2",text:"Dinheiro e conexão: resolva o invisÃvel"},{kind:"p",text:"Câmbio. Não troque dinheiro no aeroporto no dia. A melhor combinação costuma ser um pouco de espécie para as primeiras horas (transporte, alimentação, imprevistos) mais um cartão internacional, seja pré-pago em moeda estrangeira ou de crédito habilitado para uso no exterior. C
460ompare as tarifas e os impostos aplicáveis antes de decidir, porque eles variam entre as opções."},{kind:"p",text:"Avise o seu banco. Cartão internacional bloqueado no meio da viagem por suspeita de fraude é um problema clássico. Habilite o uso no exterior e confira limites antes de viajar."},{kind:"p",text:"Internet no destino. Você vai precisar de mapa, tradutor e mensagens. As opções são eSIM (ativado direto no celular antes de embarcar, prático para a maioria dos aparelhos novos), chip internacional fÃsico, ou o roaming da sua operadora. eSIM costuma ser o melhor custo-benefÃcio para quem viaja pela primeira vez e não quer trocar de chip."},{kind:"h2",text:"Bagagem sem dor de cabeça"},{kind:"p",text:"A regra de ouro: confira a franquia de bagagem da sua companhia aérea especÃfica, porque ela varia de empresa para empresa e de tarifa para tarifa. O que parece incluÃdo pode não estar."},{kind:"p",text:"Vai na bagagem de mão, sempre: passaporte, documentos e cópias; remédios de uso contÃnuo com a receita; eletrônicos, carregadores e power bank (baterias de lÃtio não podem ser despachadas, vão obrigatoriamente na cabine); uma muda de roupa, para o caso de a mala despachada atrasar."},{kind:"p",text:"Atenção aos lÃquidos na mão: cada frasco deve ter no máximo 100 ml, acomodados em uma embalagem transparente. Leve um adaptador de tomada universal, porque o padrão de plugue muda de paÃs para paÃs. E coloque uma etiqueta com seu nome e contato na mala despachada."},{kind:"h2",text:"Saúde e seguro: o item que parece opcional e não é"},{kind:"p",text:"Seguro viagem. Para o Espaço Schengen, ele é obrigatório, com cobertura médica mÃnima de 30 mil euros. Para qualquer outro de
460stino, ele continua sendo fortemente recomendado: um atendimento médico no exterior sem seguro pode custar mais que a viagem inteira."},{kind:"p",text:"Remédios e vacinas. Leve medicamentos de uso contÃnuo na bagagem de mão, com a receita em mãos. Dependendo do destino, pode haver exigência de vacina (a de febre amarela é a mais comum), então verifique com antecedência, porque algumas precisam ser tomadas dias antes da viagem para valer."},{kind:"h2",text:"O dia do voo: a linha do tempo que evita o desespero"},{kind:"p",text:"Aqui está a parte que separa a viagem tranquila da corrida contra o relógio."},{kind:"p",text:"Chegue ao aeroporto com 3 horas de antecedência para voos internacionais. Esse é o tempo recomendado para dar conta de check-in, despacho de bagagem, fila de raio-x e imigração com margem de segurança. Em dias de pico, essa folga é o que evita que você veja o seu portão fechar."},{kind:"p",text:"Faça o check-in online. A maioria das companhias abre o check-in entre 24 e 48 horas antes do voo. Adiantar isso reduz fila e já garante o seu assento."},{kind:"p",text:"A variável que quase ninguém planeja: como chegar e onde deixar o carro. à exatamente aqui que o seu tempo é ganho ou perdido. E os dois aeroportos de São Paulo têm caracterÃsticas bem diferentes."},{kind:"p",text:"Se você embarca pelo Aeroporto de Guarulhos (GRU): é o maior aeroporto do paÃs, com múltiplos terminais. Confirme com antecedência de qual terminal o seu voo parte, porque chegar no terminal errado consome um tempo precioso. Some a isso o trânsito nas vias de acesso, que é imprevisÃvel e pode dobrar em horário de pico. A regra prática é simples: saia de casa com mais folga do que você acha que precisa. Para resolver o estacionamento antes do voo, veja as opções de [estacionar no Aeroporto de Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"p",text:"Se você embarca pelo Aeroporto de Viracopos (VCP): o aeroporto é mais compacto e organizado, o que costuma ser uma vantagem para quem viaja pela primeira vez e não quer se perder em um complexo gigante. A contrapartida é a distância: dependendo de onde você sai, o deslocamento até Viracopos é maior, então o planejamento do trajeto pesa ainda mais no seu horário de saÃda. Compare e reserve em [estacionar no Aeroporto de Viracopos](/aeroportos/estacionamento-aeroporto-viracopos)."},{kind:"p",text:"Em ambos os casos, você tem basicamente três caminhos para chegar: pedir para alguém te levar, usar um aplicativo de transporte, ou ir com o seu próprio carro e estacionar. Os dois primeiros tiram o controle do seu tempo das suas mãos: você depende da disponibilidade de outra pessoa ou de um motorista no horário, e ainda corre o risco de cancelamento na hora errada. Ir de carro devolve esse controle, com uma única pergunta a resolver antes: onde deixar o carro com segurança, perto do terminal, sem rodar atrás de vaga no dia do embarque."},{kind:"p",text:"à essa decisão que o xpark existe para resolver. Em vez de te jogar uma lista interminável de estacionamentos, ele funciona como um copiloto de decisão: você responde quanto vale o seu tempo e o que prioriza, e ele recomenda a melhor opção em três nÃveis claros, Descoberta, Coberta ou Valet (o Valet está disponÃvel em Guarulhos). [Decida com o xpark](/escolher) e reserve antes de sair de casa, com a vaga garantida, o preço travado e o transfer até o terminal organizado. Os critérios são públicos: [veja a metodologia](/metodologia). Na prática, é uma variável de estresse a menos na sua primeira viagem, decidida em minutos, dias antes do voo."},{kind:"h2",text:"Na imigração e a bordo"},{kind:"p",text:"Na imigração, tenha em mãos (em papel ou no celular) a passagem de volta, a reserva de hospedagem, o comprovante do seguro viagem e a confirmação de que você tem como se manter durante a estadia. São os documentos que o agente pode pedir, e tê-los à mão acelera a sua passagem. Se a viagem for para a Europa, lembre que o registro biométrico do EES é feito em totem na chegada, então reserve um pouco mais de paciência para a fila nas primeiras vezes."},{kind:"p",text:"A bordo de um voo longo, hidrate-se com frequência, evite excesso de álcool e levante para caminhar de tempos em tempos. Seu corpo agradece na chegada."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Com quantas horas de antecedência preciso chegar para um voo internacional no Aeroporto de Guarulhos ou Viracopos?",answer:"Chegue com 3 horas de antecedência. Esse é o tempo recomendado para concluir check-in, despacho de bagagem, segurança e imigração com margem, especialmente em horários de pico."},{kind:"faq",question:"Preciso de visto para a minha primeira viagem internacional?",answer:"Depende do destino. PaÃses do Mercosul, como Argentina, Chile e Uruguai, em geral dispensam visto para brasileiros. Os Estados Unidos exigem visto de turista. A Europa não exige visto para turismo de até 90 dias. Sempre confirme a regra atual no site oficial do consulado do paÃs de destino."},{kind:"faq",question:"O ETIAS já é obrigatório para brasileiros que vão à Europa?",answer:"Ainda não. O ETIAS, autorização eletrônica solicitada online antes do embarque, está previsto para entrar em vigor no último trimestre de 2026, sem data oficial confirmada, e pode ser adiado. O que já está valendo é o EES, o registro biométrico feito na fronteira ao chegar."},{kind:"faq",question:"Vale mais a pena estacionar no aeroporto ou usar um estacionamento privado com transfer?",answer:"Depende do que você prioriza: tempo, custo ou conveniência. Reservar com antecedência elimina a busca por vaga no dia e organiza o transfer até o terminal. O [xpark](/escolher) ajuda a decidir entre as opções do Aeroporto de Guarulhos e do Aeroporto de
460Viracopos com base na sua prioridade, em vez de você comparar dezenas de estacionamentos sozinho."},{kind:"faq",question:"Posso despachar o power bank na mala?",answer:"Não. Baterias de lÃtio e power banks devem ir obrigatoriamente na bagagem de mão, nunca na mala despachada, por norma de segurança."},{kind:"faq",question:"De quanto preciso de cobertura de seguro viagem para a Europa?",answer:"A exigência para o Espaço Schengen é de cobertura médica mÃnima de 30 mil euros. Para outros destinos não há essa obrigação formal, mas a contratação continua sendo altamente recomendada."},{kind:"quote",text:"Planeje os documentos primeiro, resolva o invisÃvel (dinheiro e conexão) em seguida, e deixe para o dia do voo apenas o que de fato é do dia."},{kind:"p",text:"A parte de chegar ao aeroporto e estacionar você pode tirar da lista agora: [reserve sua vaga no aeroporto com o xpark](/) e embarque com uma preocupação a menos."}],closing:"Conteúdo informativo com base em regras públicas vigentes em junho de 2026 para passageiros brasileiros embarcando no Aeroporto de Guarulhos (GRU) ou no Aeroporto de Viracopos (VCP). Exigências de visto, prazos e regras do destino podem mudar; confirme sempre nos canais oficiais antes de viajar.",tags:["Aeroporto de Guarulhos","GRU","Aeroporto de Viracopos","VCP","Primeira viagem","Internacional","Guia"]},{slug:"vale-a-pena-ir-de-carro-aeroporto-guarulhos",publishedAt:"2026-07-14",title:"Vale a pena ir de carro para o Aeroporto de Guarulhos?",label:"Guia · Guarulhos GRU",image:Cee,excerpt:"Carro próprio, Uber ou estacionamento oficial: para viagens saindo do GRU, a resposta muda com o número de dias, a distância de casa e o quanto o seu tempo vale. Este guia mostra como fazer a conta em 30 segundos com a calculadora do xpark.",dek:"Guia de decisão para quem viaja pelo Aeroporto de Guarulhos: quando o carro compensa, quando o Uber é mais barato e como a Calculadora xpark e o comparativo Uber vs. estacionamento ajudam a escolher.",readTime:"4 min de leitura",byline:"João G.",pullQuote:"O xpark não vende uma operadora. Mostra qual é a mais barata para a sua estadia, hoje.",body:[{kind:"p",text:"Ir de carro para o Aeroporto de Guarulhos (GRU) parece a escolha óbvia para quem mora em São Paulo e no ABC, mas a resposta honesta é: depende. Depende de quantos dias você vai ficar fora, da distância entre a sua casa e o terminal, de quanta bagagem você leva e, principalmente, do quanto o seu tempo vale numa segunda-feira à noite, cansado do voo."},{kind:"p",text:"Este guia reformula a pergunta em duas contas simples: (1) o carro compensa frente ao Uber ida e volta e (2), se compensar, qual estacionamento no entorno do GRU custa menos para o seu perÃodo. As duas contas você resolve em menos de um minuto com a [Calculadora xpark](/calculadora-estacionamento-aeroporto) e o comparativo [Uber ou estacionamento](/uber-ou-estacionamento-aeroporto)."},{kind:"h2",text:"As três opções reais para chegar em GRU"},{kind:"p",text:"Na prática, quase todo mundo escolhe entre três alternativas: carro próprio com o estacionamento oficial dentro do aeroporto, carro próprio com uma operadora privada no entorno (mais o traslado em van até o terminal) ou app de transporte (Uber, 99, Cabify). O transporte público existe (Airport Bus Service, EMTU), mas costuma sair da conta quando há mala grande ou horários fora do comercial."},{kind:"h2",text:"Quando o carro compensa (e quando não)"},{kind:"p",text:"Em linhas gerais: viagens de 1 a 3 dias costumam favorecer o Uber para quem mora perto do GRU (até cerca de 25 km), porque o custo da corrida ida e volta fica abaixo do estacionamento no perÃodo. A partir de 4 a 5 dias, a balança começa a virar. Em viagens de 7 dias ou mais, e em qualquer viagem para quem sai de mais longe (Campinas, ABC, interior), estacionar no entorno do GRU tende a ser mais barato, além de dar autonomia no retorno em qualquer horário."},{kind:"p",text:"Bagagem pesada, viagem em famÃlia e voos de madrugada também empurram a conta para o lado do carro, porque o custo de duas corridas com bagageiro extra ou de aguardar Uber à s 5 da manhã pesa mais do que a diária de um estacionamento privado. Se você vai sozinho, com bagagem de mão e mora a 15 minutos do terminal, o Uber costuma ganhar."},{kind:"h2",text:"Uber ou estacionar: como fazer a conta em 30 segundos"},{kind:"p",text:"A regra prática é simples: some o valor do Uber ida e volta na sua rota real e compare com o total do estacionamento pelos dias que você ficará fora. Se o Uber for maior, o carro compensa; se for menor, use o app. O ponto de equilÃbrio muda por distância e por operadora, e você pode calcular a sua faixa no [comparativo Uber ou estacionamento](/uber-ou-estacionamento-aeroporto), que já traz as tarifas médias de app em diferentes distâncias."},{kind:"table",headers:["Opção","Quando costuma compensar","Faixa tÃpica de custo (GRU)"],rows:[["Estacionamento oficial do GRU (Indigo)","Viagens muito curtas (poucas horas ou 1 diária) e quem prioriza ficar dentro do próprio aeroporto","R$ 33,60 a R$ 100 por diária (online ou balcão, sem desconto progressivo)"],["Operadora privada no entorno + traslado em van","Viagens de 4 dias ou mais, quem mora longe do GRU, madrugadas e viagens em famÃlia",`${S(q.longStayDaily)} a R$ 43,90 por diária, com desconto progressivo em 7, 17 e 30 dias`],["Uber ou 99, ida e volta","Viagens curtas (1 a 3 dias), quem mora até ~25 km do GRU e viaja com bagagem leve","R$ 120 a R$ 400 no total (soma de ida e volta), conforme distância e horário"]],caption:"Faixas de custo aproximadas para o Aeroporto de Guarulhos com base no Ãndice xpark de Preços (edição 1, julho de 2026) e em estimativas médias de app na região metropolitana. Valores sujeitos a alteração; simule o seu caso na [Calculadora xpark](/calculadora-estacionamento-aeroporto)."},{kind:"h2",text:"Estacionar fora do aeroporto: o que olhar antes de reservar"},{kind:"p",text:"Se o carro compensou na sua conta, não escolha o estacionamento só pelo pre
460ço da diária. A metodologia editorial do xpark pondera cinco critérios: preço (35%), segurança (25%), traslado (20%), reputação (15%) e cobertura (5%). Preço é o mais pesado, mas traslado eficiente e monitoramento 24 horas fazem diferença real em dia de embarque. Os cinco critérios estão descritos em [/metodologia](/metodologia)."},{kind:"h2",text:"Use a Calculadora xpark para não errar"},{kind:"p",text:"Em vez de decorar tabelas, use a [Calculadora xpark](/calculadora-estacionamento-aeroporto). Você escolhe o aeroporto (GRU, VCP ou CNF) e o número de dias, e a ferramenta recomputa o ranking na hora, aplicando a faixa vigente de cada operadora (avulsa, 7, 17, 30 ou 30+ dias) e destacando a economia da reserva online quando existe. O total apresentado é o mesmo que a operadora cobra no fechamento, e você pode reservar direto pelo xpark, sem cadastrar conta em cada balcão."},{kind:"p",text:"Para uma visão de mercado do trimestre, com médias, mÃnimos e máximos por aeroporto, consulte também o [Ãndice xpark de Preços](/indice-de-precos)."},{kind:"quote",text:"O xpark não vende uma operadora. Mostra qual é a mais barata para a sua estadia, hoje.",attribution:"Redação Xpark"},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Vale a pena ir de carro para o GRU se eu viajo sozinho?",answer:"Para viagens de 1 a 3 dias e quem mora até cerca de 25 km do aeroporto, o Uber ida e volta costuma sair mais barato do que estacionar. A partir de 4 a 5 dias, o carro passa a compensar mesmo viajando sozinho. Simule os dois cenários no [comparativo Uber ou estacionamento](/uber-ou-estacionamento-aeroporto)."},{kind:"faq",question:"Quanto custa em média estacionar em Guarulhos por 7 dias?",answer:"No Ãndice xpark de Preços (edição 1, julho de 2026), 7 dias no entorno do GRU variam de cerca de R$ 125 a mais de R$ 500, dependendo da operadora e da categoria de vaga (descoberta ou coberta). O oficial do aeroporto fica em torno de R$ 235 (online) e até R$ 525 no balcão. Calcule o seu perÃodo exato em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto)."},{kind:"faq",question:"Estacionamento fora do aeroporto é seguro?",answer:"As operadoras privadas próximas ao GRU trabalham com pátio fechado, monitoramento 24 horas por câmeras e vigilância patrimonial. O critério de segurança pesa 25% no ranking editorial do xpark, atrás apenas do preço. Consulte a página de cada operadora para ver detalhes de infraestrutura antes de reservar."},{kind:"faq",question:"O traslado até o terminal está incluso?",answer:"Sim, é prática de mercado no entorno do GRU: as operadoras privadas incluem o traslado em van entre o pátio e os terminais 1, 2 e 3, tanto no embarque quanto no desembarque, sem cobrança adicional. Detalhes de horário e frequência estão no [guia de transfer de estacionamento em GRU e VCP](/transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona)."},{kind:"faq",question:"Uber compensa mais que estacionar?",answer:"Compensa em viagens curtas (1 a 3 dias) para quem mora perto do aeroporto. Em viagens mais longas, para quem sai de longe ou viaja em famÃlia, o custo total do Uber ida e volta costuma superar o estacionamento privado. O ponto de equilÃbrio depende da rota; calcule o seu em [/uber-ou-estacionamento-aeroporto](/uber-ou-estacionamento-aeroporto)."},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Decidiu ir de carro? Compare as operadoras próximas ao GRU e reserve online pela [Calculadora xpark](/calculadora-estacionamento-aeroporto?iata=GRU) ou consulte o hub do aeroporto em [/aeroportos/estacionamento-aeroporto-guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos). Ainda em dúvida entre Uber e estacionar? A comparação lado a lado, com o ponto de equilÃbrio da sua distância, está em [/uber-ou-estacionamento-aeroporto](/uber-ou-estacionamento-aeroporto)."}],closing:"Conteúdo informativo baseado no Ãndice xpark de Preços (edição 1, julho de 2026) e em tabelas públicas das operadoras próximas ao Aeroporto de Guarulhos. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Guarulhos","GRU","Carro","Uber","Calculadora","Guia","São Paulo"]},{slug:"vale-a-pena-estacionar-no-aeroporto-ou-ir-de-uber",publishedAt:"2026-07-19",title:"Vale a pena deixar o carro no aeroporto ou ir de Uber?",label:"Decisão · GRU e VCP",excerpt:`A resposta depende de dois números: o custo do estacionamento no seu perÃodo e o custo de ida e volta de aplicativo. Este guia dá a fórmula, mostra a âncora real de preço (a partir de ${S(q.dailyFrom)}/dia no GRU com cupom XPK26) e ajuda a decidir sem chute.`,image:"https://www.xpark.ai/__l5e/assets-v1/c2dad402-6443-4493-bc35-45ca0ccfe807/uber-ou-estacionar.jpg",dek:"Guia de decisão entre estacionar no aeroporto ou usar Uber/99, com a fórmula honesta de comparação, exemplos reais de preço do estacionamento por perÃodo e fatores que mudam a conta.",readTime:"5 min de leitura",byline:"Marcelo C.",pullQuote:`A decisão certa é matemática: some duas corridas de app e compare com o total do estacionamento no seu perÃodo. Se o estacionamento parte de ${S(q.dailyFrom)}/dia (GRU, cupom XPK26), a conta muda rápido conforme a viagem se estende.`,body:[{kind:"p",text:`Vale a pena estacionar no aeroporto ou ir de Uber? A resposta honesta é: depen
460de de dois números, o custo do estacionamento no seu perÃodo e o custo de ida e volta de aplicativo. Como âncora real, no Aeroporto de Guarulhos a diária mais baixa do mercado hoje parte de ${S(q.dailyFrom)} (Bandeira Park, vaga descoberta, com cupom XPK26) e cai para ${S(q.longStayDaily)}/dia em estadias de 30 dias (fonte: Ãndice xpark de Preços, edição de julho de 2026, coleta em 10/07/2026). No oficial do aeroporto (Indigo), a diária parte de R$ 33,60 na reserva online e sobe para R$ 75 a R$ 100 no balcão.`},{kind:"p",text:"Este texto não recomenda um lado. Ele dá a fórmula para você decidir com o seu dado, sem chute. Se preferir um número pronto, use a [Calculadora xpark](/calculadora-estacionamento-aeroporto) para simular o estacionamento no seu perÃodo exato e o [comparador Uber ou estacionamento](/uber-ou-estacionamento-aeroporto) para ver o ponto de equilÃbrio na sua rota."},{kind:"h2",text:"A fórmula, em uma linha"},{kind:"p",text:"Some o valor de duas corridas de aplicativo (ida na saÃda e volta na chegada) e compare com o total do estacionamento no perÃodo. Se as duas corridas ficarem acima do total do estacionamento, ir de carro sai mais barato. Se ficarem abaixo, o app compensa. à a mesma conta que uma famÃlia faria no papel, só que feita antes de reservar."},{kind:"h2",text:"Ãncora real: o custo do estacionamento por perÃodo"},{kind:"p",text:"A tabela abaixo mostra o total pago no estacionamento privado mais barato do GRU (Bandeira Park, vaga descoberta) e o equivalente no oficial do aeroporto, para servir de teto e piso da decisão. São preços praticados em julho de 2026 (coleta em 10/07/2026, canais oficiais das operadoras)."},{kind:"table",headers:["PerÃodo","Bandeira Park (com XPK26)","Diária média","Indigo (oficial, online)"],rows:[["1 dia",`${S(q.dailyFrom)}`,`${S(q.dailyFrom)}`,"R$ 33,60"],["3 dias","cerca de R$ 55",`cerca de ${S(q.dailyFrom)}`,"R$ 100,80"],["7 dias",`${S(q.weekTotalCharged)}`,`${S(q.weekPerDay)}`,"R$ 235,20"],["30 dias",`${S(q.longStayTotal)}`,`${S(q.longStayDaily)}`,"R$ 1.008"]],caption:"Total no Bandeira Park (com cupom XPK26) e no oficial do GRU (Indigo, reserva online, T1/T2). Fonte: Ãndice xpark de Preços, edição de julho de 2026 (coleta em 10/07/2026). O balcão do oficial vai de R$ 75 a R$ 100/dia, sem desconto por permanência."},{kind:"h2",text:"Como usar a fórmula em cada cenário"},{kind:"p",text:"Viagem curta, 1 a 2 dias, mora perto do aeroporto: o Uber costuma ganhar. Duas corridas curtas raramente somam mais que R$ 55, e o estacionamento privado por 2 dias fica em torno de R$ 37 no melhor caso, mas o ganho lÃquido é pequeno e o app poupa a ida ao pátio."},{kind:"p",text:`Viagem média, 3 a 7 dias, distância intermediária, 1 ou 2 malas: o carro tende a compensar. Em 7 dias, o Bandeira Park sai por ${S(q.weekTotalCharged)} (${S(q.weekPerDay)}/dia); duas corridas do lado oposto da cidade dificilmente entregam esse número. Confira o valor real da sua rota antes de decidir.`},{kind:"p",text:`Viagem longa, 15 dias ou mais, famÃlia com bagagem, saÃda de madrugada: o carro quase sempre ganha, e a diferença cresce rápido. Em 30 dias, o total no Bandeira Park é ${S(q.longStayTotal)}; no oficial do balcão passa de R$ 2.250 no mesmo perÃodo, mas mesmo esse número perde para quase qualquer combinação de duas corridas em horário normal.`},{kind:"h2",text:"Fatores que mudam a conta (e que a maioria esquece)"},{kind:"p",text:"Distância do embarque, número de passageiros, volume de bagagem, horário do voo (madrugada e tarifas dinâmicas encarecem o app), tempo de espera se o motorista cancelar, e a comodidade de ter o carro no desembarque, sem depender de app disponÃvel. Nenhum desses vira número exato, mas todos entram na decisão. Se o seu voo pousa à s 03h e você tem duas crianças e três malas, o carro é o cenário mais previsÃvel."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"à mais barato deixar o carro ou ir de aplicativo para o aeroporto?",answer:`Depende do perÃodo e da distância. Como regra, em viagens de 3 dias ou mais o estacionamento privado no entorno do GRU tende a gan
460har: 7 dias no Bandeira Park saem por ${S(q.weekTotalCharged)} (${S(q.weekPerDay)}/dia, com cupom XPK26). Em viagens de 1 a 2 dias para quem mora perto, o app pode empatar. Simule os dois lados em [/uber-ou-estacionamento-aeroporto](/uber-ou-estacionamento-aeroporto).`},{kind:"faq",question:"Quanto custa estacionar no aeroporto por 7 dias?",answer:`No estacionamento privado mais barato do GRU (Bandeira Park), 7 dias custam ${S(q.weekTotalCharged)} no total, o equivalente a ${S(q.weekPerDay)} por dia (com cupom XPK26, julho de 2026). No oficial (Indigo), 7 dias saem por R$ 235,20 na reserva online, sem desconto por permanência. Calcule o valor exato do seu perÃodo em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto).`},{kind:"faq",question:"Uber para o aeroporto de madrugada compensa?",answer:`Dificilmente, por dois motivos: tarifa dinâmica encarece o app na madrugada, e o risco de cancelamento sobe. Nesses casos, o carro próprio dá previsibilidade, e o estacionamento privado, a partir de ${S(q.dailyFrom)}/dia no GRU (Bandeira Park, com cupom XPK26), tende a ganhar a comparação já em viagens de 2 dias.`},{kind:"faq",question:"A que ponto compensa ir de carro?",answer:`O ponto de equilÃbrio depende da distância entre a sua casa e o aeroporto e do preço médio da sua corrida de app. Como referência, com estacionamento privado a partir de ${S(q.dailyFrom)}/dia no GRU, o carro passa a compensar assim que duas corridas de ida e volta ficam acima do total do perÃodo. A [calculadora comparativa Uber ou estacionamento](/uber-ou-estacionamento-aeroporto) faz esse cruzamento na sua rota.`},{kind:"faq",question:"Vale mais estacionar no oficial do aeroporto ou em um privado do entorno?",answer:`Em preço puro, o privado ganha em todas as faixas: no GRU, a diária do Bandeira Park parte de ${S(q.dailyFrom)} (com cupom XPK26), contra R$ 33,60 (reserva online) e R$ 75 a R$ 100 (balcão) do oficial. O oficial só compensa quando o passageiro precisa desembarcar direto no terminal com o carro, sem traslado, e não se importa em pagar até 9 vezes mais em estadias longas.`},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Rode as duas contas antes de decidir: o total do estacionamento em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto) e a comparação lado a lado com o app em [/uber-ou-estacionamento-aeroporto](/uber-ou-estacionamento-aeroporto). Para reservar, o hub do aeroporto está em [/aeroportos](/aeroportos)."}],closing:"Conteúdo informativo. Preços do estacionamento coletados nos canais oficiais das operadoras em julho de 2026 (Ãndice xpark de Preços, edição 1). Valores de aplicativo variam por rota, horário e demanda, e não são estimados aqui. Confirme no momento da reserva.",tags:["Uber","Decisão","GRU","VCP","Calculadora","Guia"]},{slug:"quanto-custa-estacionar-aeroporto-guarulhos-2026",publishedAt:"2026-07-20",title:"Quanto custa estacionar no Aeroporto de Guarulhos em 2026",label:"Preços · Guarulhos GRU",excerpt:`A diária perto do GRU vai de ${S(q.dailyFrom)} (privado mais barato, Bandeira Park com cupom XPK26) a R$ 75-100 no balcão do oficial. O que muda o preço não é só a operadora: é o canal (online x balcão), a permanência e a categoria de vaga.`,image:yee,dek:"Panorama de preços do estacionamento no Aeroporto de Guarulhos em 2026, com tabela real por operadora, comparação entre oficial e privado do entorno e o efeito da permanência sobre o valor por dia.",readTime:"6 min de leitura",byline:"João G.",pullQuote:`Em 2026, o preço para deixar o carro no GRU vai de ${S(q.dailyFrom)} a R$ 100 por dia. Reservar online reduz a conta em até 55% frente ao balcão do oficial, e a permanência longa derruba o valor por dia para ${S(q.longStayDaily)}.`,body:[{kind:"p",text:`Tabela atualizada de todas as operadoras: [preços do estacionamento no Aeroporto de Guarulhos (GRU)](/aeroportos/estacionamento-aeroporto-guarulhos/precos), de 1 a 30 dias. Quanto custa estacionar no Aeroporto de Guarulhos em 2026? A diária vai de ${S(q.dailyFrom)} (Bandeira Park, vaga descoberta, com cupom XPK26) a R$ 75 a R$ 100 no balcão do estacionamento oficial (Indigo). Reservar online reduz a conta em até 55% frente ao balcão. Em estadias de 30 dias, o valor por dia no Bandeira Park cai para ${S(q.longStayDaily)} (fonte: Ãndice xpark de Preços, edição de julho de 2026, coleta em 10/07/2026).`},{kind:"p",text:"Este texto reúne os valores praticados em 2026 e explica o que faz a conta subir ou cair: canal de venda, tempo de permanência, categoria de vaga e proximidade do terminal. Para simular o seu perÃodo exato ou reservar, use a [Calculadora xpark](/calculadora-estacionamento-aeroporto) ou o [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"h2",text:"A faixa de preço em 2026"},{kind:"p",text:"A tabela abaixo compara a diária no privado mais barato do entorno com a do estacionamento oficial em três perÃodos de referência: 1 dia, 7 dias e 30 dias. Os valores foram coletados nos canais oficiais em 10/07/2026."},{kind:"table",headers:["Operadora / canal","1 dia","7 dias (total)","30 dias (total)"],rows:[["Bandeira Park (privado, online,
460com XPK26)",`${S(q.dailyFrom)} (${S(q.dailyFull)} sem cupom)`,`${S(q.weekTotalCharged)} (${S(q.weekPerDay)}/dia)`,`${S(q.longStayTotal)} (${S(q.longStayDaily)}/dia)`],["Indigo (oficial, reserva online T1/T2)","R$ 33,60","R$ 235,20 (R$ 33,60/dia)","R$ 1.008,00 (R$ 33,60/dia)"],["Indigo (oficial, balcão)","R$ 75 a R$ 100","R$ 525 a R$ 700","cerca de R$ 2.250 a R$ 3.000"]],caption:"Preços coletados nos canais oficiais das operadoras em 10/07/2026, com cupom XPK26 aplicado no Bandeira Park. O oficial (Indigo) não aplica desconto por permanência. Vaga coberta ou serviços adicionais custam mais. Valores sujeitos a alteração; confirme no momento da reserva."},{kind:"h2",text:"O que faz o preço subir"},{kind:"p",text:"Canal de venda: reservar online é mais barato que fechar no balcão em praticamente todas as operadoras do entorno. A diferença chega a 55% quando o comparativo é feito contra o balcão do oficial."},{kind:"p",text:"Proximidade do terminal: o oficial (Indigo) fica dentro do próprio aeroporto e cobra o prêmio dessa localização; os privados no entorno usam pátio próprio com traslado gratuito em van, o que reduz o custo sem alterar o resultado prático para o viajante."},{kind:"p",text:"Categoria de vaga: descoberta é a mais barata; coberta e valet acrescentam de 15% a mais de 100% ao valor, dependendo da operadora. Para uma viagem curta em dia de sol, descoberta compensa; para chuva forte ou 30 dias parado, o cálculo pode mudar."},{kind:"h2",text:"Por que a permanência longa sai muito mais barata por dia"},{kind:"p",text:`As operadoras privadas do entorno do GRU trabalham com tarifa decrescente: quanto mais dias, menor o valor pago por dia. No Bandeira Park, a diária avulsa é ${S(q.dailyFrom)} (com XPK26), mas em 30 dias cai para ${S(q.longStayDaily)}/dia. O oficial (Indigo) mantém o mesmo valor por dia em qualquer perÃodo, o que amplia a diferença total em viagens longas. Para uma viagem de 30 dias, essa combinação leva o total pago no oficial (balcão) a ser quase 9 vezes o total pago no privado mais barato.`},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Quanto custa o estacionamento do Aeroporto de Guarulhos?",answer:`Em julho de 2026, a diária vai de ${S(q.dailyFrom)} (Bandeira Park, com cupom XPK26) a R$ 100 no balcão do oficial (Indigo). Na reserva online do oficial, a diária parte de R$ 33,60 (T1/T2). Simule o seu perÃodo em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto).`},{kind:"faq",question:"Qual o valor da diária mais barata perto do GRU em 2026?",answer:`${S(q.dailyFrom)} no Bandeira Park (vaga descoberta, com cupom XPK26). Sem cupom, a diária avulsa é ${S(q.dailyFull)}. Em estadias longas, o valor por dia cai: ${S(q.weekPerDay)}/dia em 7 dias e ${S(q.longStayDaily)}/dia em 30 dias (fonte: Ãndice xpark de Preços, edição de julho de 2026).`},{kind:"faq",question:"Quanto sai o estacionamento por uma semana no GRU?",answer:`No privado mais barato, ${S(q.weekTotalCharged)} no total (Bandeira Park, 7 dias, com cupom XPK26). Na reserva online do oficial (Indigo), R$ 235,20 no total. No balcão do oficial, entre R$ 525 e R$ 700, sem desconto por permanência.`},{kind:"faq",question:"Vale a pena estacionar dentro do aeroporto ou fora?",answer:`Em preço puro, o privado do entorno ganha em todas as faixas: parte de ${S(q.dailyFrom)}/dia contra R$ 33,60 (online) e R$ 75 a R$ 100 (balcão) do oficial. O oficial só compensa para quem prioriza desembarcar direto no terminal, sem traslado, mesmo pagando várias vezes mais.`},{kind:"faq",question:"Existe estacionamento coberto perto do GRU?",answer:"Sim. Várias operadoras do entorno oferecem categoria coberta, com acréscimo tÃpico de 15% a 25% sobre a diária descoberta. A comparação por categoria está no [Ãndice xpark de Preços](/indice-de-precos) e no [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Para calcular o preço no seu perÃodo exato, use [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto). Para comparar estacionamentos em outros destinos, consulte o [Ãndice xpark de Preços](/indice-de-precos). Para reservar, o [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos) lista as opções lado a lado."}],closing:"Conteúdo informativo baseado no Ãndice xpark de Preços (edição 1, julho de 2026) e em tabelas oficiais das operadoras próximas ao Aeroporto de Guarulhos. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Guarulhos","GRU","Preços","Comparativo","São Paulo","Guia"]},{slug:"estacionamento-aeroporto-viracopos-campinas-guia",publishedAt:"2026-07-21",title:"Estacionamento no Aeroporto de
460Viracopos (Campinas): guia e preços",label:"Guia · Viracopos VCP",excerpt:`O Aeroporto de Viracopos fica em Campinas (SP), e a diária nos estacionamentos privados do entorno vai de ${S(le.dailyFrom)} a R$ 45,90, com traslado gratuito ao terminal. Guia completo com as 7 operadoras, o que muda entre elas e como reservar.`,image:"https://www.xpark.ai/__l5e/assets-v1/6f4ce169-4442-48d3-8cf3-425ed450c236/viracopos-guia.jpg",dek:"Guia informativo do estacionamento no Aeroporto de Viracopos (Campinas), com preços atualizados das 7 operadoras do entorno, comparação com o oficial (Estapar) e critérios de decisão.",readTime:"6 min de leitura",byline:"Marcelo C.",pullQuote:`Em Viracopos, a diária mais barata do entorno é ${S(le.dailyFrom)} (Bandeira Park, com cupom XPK26) e a mais cara, R$ 45,90 (Garage Inn). O oficial (Estapar) parte de R$ 25,00 na reserva online.`,body:[{kind:"p",text:`O Aeroporto de Viracopos fica em Campinas (SP), e a diária nos estacionamentos privados do entorno vai de ${S(le.dailyFrom)} (Bandeira Park, com cupom XPK26) a R$ 45,90 (Garage Inn), com traslado gratuito em van até o terminal. O oficial dentro do aeroporto (Estapar) parte de R$ 25,00 na reserva online e chega a R$ 83 na garagem coberta do balcão (fonte: canais oficiais das operadoras, coleta em 17/07/2026; Bandeira Park em 10/07/2026).`},{kind:"p",text:'Como o aeroporto atende principalmente passageiros da região metropolitana de Campinas e do interior paulista, as buscas "estacionamento aeroporto Campinas" e "estacionamento Viracopos" apontam para o mesmo destino. Este guia reúne as 7 operadoras privadas mapeadas hoje, compara com o oficial e mostra como decidir. Para reservar, o [hub do VCP](/aeroportos/estacionamento-aeroporto-viracopos) lista todas as opções lado a lado.'},{kind:"h2",text:"Viracopos, Campinas e a lógica do entorno"},{kind:"p",text:"Viracopos está a poucos minutos do centro logÃstico do aeroporto, em Campinas. Os pátios privados operam a curta distância do terminal, com van gratuita 24 horas incluÃda na diária. Na prática, o viajante entrega o carro no pátio, embarca na van, e repete o trajeto na volta, com o mesmo padrão que existe no entorno do GRU."},{kind:"h2",text:"Comparativo de preços em Viracopos"},{kind:"p",text:"A tabela abaixo lista a diária avulsa das 7 operadoras privadas mapeadas no entorno do VCP, ordenadas da menor para a maior tarifa, e o oficial do aeroporto no fim para referência. Preços coletados nos canais oficiais das operadoras em 17/07/2026 (Bandeira Park em 10/07/2026)."},{kind:"table",headers:["Operadora","Diária avulsa","Observação"],rows:[["Bandeira Park",`${S(le.dailyFrom)} (com cupom XPK26) · ${S(le.dailyFull)} sem cupom`,`Tarifa decrescente: ${S(le.weekPerDay)}/dia em 7 dias, ${S(le.longStayDaily)}/dia em 30 dias`],["KM64","R$ 23,99","Preço avulso publicado no canal oficial"],["Yellow Parking",`${S(le.dailyFull)}`,"Preço avulso publicado no canal oficial"],["Estapar (oficial do aeroporto)","R$ 25,00 (online) · até R$ 83 (garagem coberta balcão)","Dentro do aeroporto, sem traslado"],["BR Parking","R$ 30,00","Preço avulso publicado no canal oficial"],["Virapark","R$ 40,00","Tarifa decrescente publicada por faixa"],["Garage Inn","R$ 45,90","Categoria coberta padrão"]],caption:"Preços coletados nos canais oficiais das operadoras em julho de 2026 (17/07/2026 para as operadoras VCP recém-mapeadas; 10/07/2026 para Bandeira Park). Valores sujeitos a alteração; confirme no momento da reserva."},{kind:"h2",text:"O que muda entre as operadoras"},{kind:"p",text:"Categoria de vaga: coberto x descoberto altera o preço em 15% a 25% em média. Bandeira Park, Virapark e Garage Inn publicam categorias especÃficas; as demais trabalham majoritariamente com vaga descoberta com cobertura parcial."},{kind:"p",text:"Tempo de traslado: os pátios ficam a curta distância do terminal e operam van 24 horas. A frequência varia por horário, mas em nenhuma das 7 operadoras é fator que inviabilize o embarque."},{kind:"p",text:`Modelo tarifário: Bandeira Park e Virapark aplicam tarifa decrescente com forte queda em estadias longas; as demais tendem a manter a diária fixa. Isso muda o ranking conforme o perÃodo: em 30 dias, o Bandeira Park sai por ${S(le.longStayDaily)}/dia (${S(le.longStayTotal)} no total), enquanto uma operadora que mantém R$ 30/dia fixos passa de R$ 900 no mesmo perÃodo.`},{kind:"h2",text:"Como reservar"},{kind:"p",text:"A reserva online, em qualquer das operadoras, é o canal com melhor preço e evita fila no balcão. O [hub do VCP](/aeroportos/estacionamento-aeroporto-viracopos) mostra as 7 opções lado a lado com preço por dia, total do perÃodo e o que está incluso. A reserva trava a tarifa exibida e a confirmação chega por e-mail e WhatsApp."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Qual o melhor estacionamento no Aeroporto de
460Viracopos?",answer:`Depende do critério. Em preço, o Bandeira Park lidera em todas as faixas: ${S(le.dailyFrom)} na diária avulsa (com cupom XPK26) e ${S(le.longStayDaily)}/dia em 30 dias. Em cobertura padrão de vaga coberta, Garage Inn e Virapark aparecem à frente. Em proximidade absoluta do terminal, o oficial (Estapar) fica dentro do aeroporto, sem traslado, a partir de R$ 25,00/dia online.`},{kind:"faq",question:"Quanto custa estacionar em Viracopos por dia?",answer:`A diária no entorno vai de ${S(le.dailyFrom)} a R$ 45,90 (julho de 2026, coleta em 17/07/2026). No oficial (Estapar), R$ 25,00 na reserva online e até R$ 83 na garagem coberta do balcão. Simule o seu perÃodo em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto?iata=VCP).`},{kind:"faq",question:"Tem estacionamento coberto perto do Aeroporto de Viracopos?",answer:"Sim. Garage Inn opera categoria coberta padrão a R$ 45,90/dia; Virapark e Bandeira Park também oferecem coberto com acréscimo sobre a diária descoberta. A garagem coberta do oficial (Estapar) chega a R$ 83/dia no balcão. A comparação por categoria está no [hub do VCP](/aeroportos/estacionamento-aeroporto-viracopos)."},{kind:"faq",question:"Viracopos fica em Campinas ou em São Paulo?",answer:'Em Campinas (SP). Por isso, as buscas "estacionamento aeroporto Campinas" e "estacionamento Viracopos" tratam do mesmo destino. Os pátios privados ficam em Campinas, a poucos minutos do terminal, com traslado gratuito.'},{kind:"faq",question:"O traslado para o terminal está incluÃdo no preço?",answer:"Sim, é prática de mercado entre as operadoras privadas do entorno do VCP: van gratuita 24 horas entre o pátio e o terminal, tanto no embarque quanto no desembarque, sem cobrança adicional."},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Para ver as 7 operadoras lado a lado e reservar, consulte o [hub do VCP](/aeroportos/estacionamento-aeroporto-viracopos). Para calcular o total do seu perÃodo, use a [Calculadora xpark](/calculadora-estacionamento-aeroporto?iata=VCP). Para o panorama nacional, veja o [Ãndice xpark de Preços](/indice-de-precos)."}],closing:"Conteúdo informativo baseado nas tabelas oficiais das operadoras próximas ao Aeroporto de Viracopos, coletadas em julho de 2026. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Viracopos","VCP","Campinas","Preços","Guia","Comparativo"]},{slug:"estacionar-30-dias-aeroporto-sem-pagar-9x-mais",publishedAt:"2026-07-22",title:"Estacionar 30 dias no aeroporto sem pagar 9x mais",label:"Análise · Longa permanência",excerpt:`Em 30 dias, guardar o carro perto do GRU custa de ${S(q.longStayTotal)} a cerca de R$ 2.250: uma diferença de quase 9x pelo mesmo perÃodo. Este texto mostra por que a tarifa decrescente do privado derrota o balcão do oficial em qualquer viagem longa.`,image:q6,readTime:"5 min de leitura",byline:"Marcelo C.",dek:`Análise da longa permanência no Aeroporto de Guarulhos: por que a mesma vaga por 30 dias custa de ${S(q.longStayTotal)} a cerca de R$ 2.250, e como a tarifa decrescente do privado derrota o balcão do oficial.`,pullQuote:`Em 30 dias no GRU, o total varia entre ${S(q.longStayTotal)} e cerca de R$ 2.250. Não é a operadora que faz a diferença: é a combinação canal online + tarifa decrescente contra balcão + diária fixa.`,body:[{kind:"p",text:`Estacionar 30 dias perto do Aeroporto de Guarulhos custa de ${S(q.longStayTotal)} (Bandeira Park, vaga descoberta, com cupom XPK26) a cerca de R$ 2.250 (balcão do oficial, Indigo, a R$ 75/dia). à uma diferença de quase 9 vezes pelo mesmo perÃodo, na mesma cidade, com o mesmo destino (fonte: Ãndice xpark de Preços, edição de julho de 2026, coleta em 10/07/2026). O texto explica por que essa faixa se abre tanto e como não cair no lado caro por descuido.`},{kind:"p",text:"Para calcular o total exato do seu perÃodo, use a [Calculadora xpark](/calculadora-estacionamento-aeroporto). Para o panorama do mercado, consulte as praças e estacionamentos do [Ãndice xpark de Preços](/indice-de-precos)."},{kind:"h2",text:"A conta de 30 dias, lado a lado"},{kind:"p",text:"A tabela abaixo compara três cenários reais para 30 dias no GRU: privado mais barato com cupom, privado sem cupom e oficial no balcão. O intervalo é o mesmo, o carro fica no mesmo entorno, e mesmo assim o total pago pode variar em quase R$ 2.000."},{kind:"table",headers:["Cenário","1 dia","7 dias (total)","30 dias (total)"],rows:[["Bandeira Park, online,
460cupom XPK26",`${S(q.dailyFrom)}`,`${S(q.weekTotalCharged)} (${S(q.weekPerDay)}/dia)`,`${S(q.longStayTotal)} (${S(q.longStayDaily)}/dia)`],["Bandeira Park, online, sem cupom",`${S(q.dailyFull)}`,`${S(q.weekTotalFull)} (${S(q.weekPerDayFull)}/dia)`,`${S(q.longStayTotalFull)} (${S(q.longStayDailyFull)}/dia)`],["Indigo (oficial), balcão","R$ 75 a R$ 100","R$ 525 a R$ 700","cerca de R$ 2.250 a R$ 3.000"]],caption:"Cenários coletados nos canais oficiais das operadoras em 10/07/2026. O oficial (Indigo) mantém a diária fixa; o privado aplica tarifa decrescente. Valores sujeitos a alteração; confirme no momento da reserva."},{kind:"h2",text:"Por que a diferença chega a 9x"},{kind:"p",text:`A resposta tem dois vetores. Primeiro, a estrutura tarifária: as operadoras privadas do entorno do GRU trabalham com tarifa decrescente por permanência, e a diária pode cair mais de 55% entre a avulsa e o plano de 30 dias. No Bandeira Park, o valor por dia vai de ${S(q.dailyFrom)} (com cupom XPK26) para ${S(q.longStayDaily)} no plano de 30+ dias. O oficial (Indigo) mantém a diária fixa, sem prêmio de fidelidade nem desconto por permanência.`},{kind:"p",text:"Segundo, o canal: reservar online reduz a conta em até 55% frente ao balcão. Quem chega ao aeroporto e paga no balcão do oficial, para uma viagem longa, combina o pior dos dois mundos, canal caro e ausência de desconto por permanência, e é aà que a diferença chega a 9 vezes o cenário mais barato."},{kind:"h2",text:"Como não pagar 9x mais"},{kind:"p",text:"Regra 1: nunca decida no balcão para viagens longas. A reserva online é a diferença mais barata que existe entre estacionar 1 dia e estacionar 30, e o preço trava no momento da compra."},{kind:"p",text:"Regra 2: compare por total, não por diária. A operadora com a diária avulsa mais baixa nem sempre é a mais barata no total de 30 dias; algumas mantêm diária fixa e ficam atrás de quem aplica desconto progressivo. Peça o total do seu perÃodo."},{kind:"p",text:"Regra 3: aplique o cupom quando existir. No caso do Bandeira Park, o XPK26 desconta 26% na diária avulsa e mantém o preço competitivo em qualquer faixa de permanência."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Quanto custa estacionar 30 dias no Aeroporto de Guarulhos?",answer:`De ${S(q.longStayTotal)} (Bandeira Park, vaga descoberta, online, com cupom XPK26) a cerca de R$ 2.250 (balcão do oficial Indigo, a R$ 75/dia) em julho de 2026. Reservar online e escolher a operadora com tarifa decrescente é o que evita pagar 9 vezes o valor mÃnimo.`},{kind:"faq",question:"Existe estacionamento mensal no Aeroporto de Guarulhos?",answer:`Não é assinatura mensal, e sim tarifa decrescente para reservas online de 30 dias ou mais. O Bandeira Park, por exemplo, cobra ${S(q.longStayTotal)} no total de 30 dias (${S(q.longStayDaily)}/dia) e mantém a linha para permanências maiores. A reserva é feita como qualquer outra, pelo perÃodo exato da viagem.`},{kind:"faq",question:"Vale a pena o estacionamento de longa permanência?",answer:`Sim, quando comparado com aplicativo de transporte ou com o oficial no balcão. Em 30 dias, o total no privado mais barato (${S(q.longStayTotal)}) fica muito abaixo de qualquer combinação de corridas de app para o mesmo perÃodo, e representa cerca de 11% do que seria pago no balcão do oficial no mesmo intervalo.`},{kind:"faq",question:"Reservar online economiza quanto frente ao balcão?",answer:"Em até 55%. à a maior economia isolada disponÃvel ao viajante: trocar o canal de venda sem mudar a operadora nem a categoria de vaga. No caso do balcão do oficial (Indigo), em que a diária vai de R$ 75 a R$ 100, a economia da reserva online já entrega R$ 41,40 a R$ 66,40 de diferença por dia."},{kind:"faq",question:"Como aplico o cupom XPK26?",answer:`No momento da reserva pelo xpark, o campo de cupom aceita XPK26 e aplica o desconto no total. O cupom é válido para vaga descoberta no Bandeira Park e reduz a diária avulsa para ${S(q.dailyFrom)}; em faixas de tarifa decrescente, o preço por dia já é ainda menor. Simule o total em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto).`},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Confira o total do seu perÃodo em [/calculadora-estacionamento-aeroporto](/calculadora-estacionamento-aeroporto), o panorama do mercado em [/indice-de-precos](/indice-de-precos) e o [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos) para reservar."}],closing:"Conteúdo informativo baseado no Ãndice xpark de Preços (edição 1, julho de 2026) e em tabelas oficiais das operadoras próximas ao Aeroporto de Guarulhos. Valores e condições sujeitos a alteração; confirme no momento da reserva.",tags:["Longa permanência","GRU","30 dias","Comparativo","Preços","Guia"]},{slug:"estacionamento-mais-barato-aeroporto-guarulhos-top-2026",publishedAt:"2026-07-22",title:"Estacionamento mais barato no Aeroporto de Guarulhos: o TOP de 2026",label:"Ranking · Guarulhos GRU",excerpt:"Ranking honesto dos estacionamentos mais baratos perto do Aeroporto de Guarulhos em 2026, do menor ao maior preço, com fonte, data de coleta e como pagar menos ainda.",image:kee,dek:"Ranking do estacionamento mais barato no Aeroporto de Guarulhos (GRU) em 2026, com diária, valor de 7 dias, tipo de operação e fonte de cada preço.",readTime:"6 min de leitura",byline:"João G.",minPrice:"18.49",minPriceDescription:`Estacionamento perto do Aeroporto de Guarulhos a partir de ${S(q.dailyFrom)}/dia com cupom XPK26`,pullQuote:`O estacionamento mais barato perto do GRU em 2026 é o Bandeira Park, a partir de ${S(q.dailyFrom)} por dia com o cupom XPK26. Em 7 dias, o total fica em ${S(q.weekTotalCharged)}, cerca de R$ 140 abaixo do oficial reservado online.`,body:[{kind:"p",text:`O estacionamento mais barato perto do Aeroporto de Guarulhos (GRU) é o Bandeira Park, a partir de ${S(q.dailyFrom)}/dia com o cupom XPK26, o que dá ${S(q.weekTotalCharged)} em 7 dias. Abaixo, o ranking do mais barato ao mais caro, com preços coletados nos canais oficiais em julho de 2026 (coleta de 10/07/2026).`},{kind:"p",text:"A ordem é por diária avulsa mais baixa disponÃvel ao cliente comum (reserva online, sem contrato corporativo). Para ver o total do seu perÃodo exato, use a [Calculadora xpark](/calculadora-estacionamento-aeroporto) ou reserve pelo [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"h2",text:"Ranking rápido, do mais barato ao mais caro"},{kind:"table",headers:["Estacionamento","Diária","7 dias","Tipo"],rows:[["Bandeira Park (com cupom XPK26)",`${S(q.dailyFrom)}`,`${S(q.weekTotalCharged)}`,"Privado, traslado gratuito 24h"],["Urban Park","R$ 26,90","~R$ 188 (estimativa por diária)","Privado, traslado 24h"],["Oficial GRU (Indigo, online)","R$ 33,60","~R$ 235","Oficial, dentro do aeroporto"],["Oficial GRU (Indigo, balcão)","R$ 75 a R$ 100","R$ 525 a R$ 700","Oficial, sem reserva"],["Airport Park","não divulgado publicamente","não divulgado publicamente","Privado, entorno do GRU"]],caption:"Preços coletados nos canais oficiais das operadoras em 10/07/2026. Valores por dia para vaga descoberta ou categoria padrão; sujeitos a alteração."},{kind:"h2",text:"1. Bandeira Park, o mais barato"},{kind:"p",text:`O Bandeira Park entrega a diária mais baixa do comparativo: ${S(q.dailyFrom)} com o cupom XPK26 (${S(q.dailyFull)} sem cupom). Em 7 dias, o total é ${S(q.weekTotalCharged)}; em 30 dias, ${S(q.longStayTotal)}, o que dá ${S(q.longStayDaily)} por dia na tarifa decrescente. à pátio privado no entorno do GRU, com traslado gratuito 24h em cerca de 7 minutos até o terminal e seguro Tokio Marine de R$ 1.000.000 por veÃculo.`},{kind:"h2",text:"2. Urban Park, opção intermediária"},{kind:"p",text:"O Urban Park aparece a partir de R$ 26,90/dia na tarifa online. A operadora não publica pacote fechado para 7 dias, então o total gira em torno de R$ 188 pela multiplicação da diária (estimativa nossa, não tarifa oficial). Também é privado, com traslado 24h. Se o seu perÃodo fecha em uma semana, vale confirmar diretamente com a operadora se há tarifa decrescente aplicável."},{kind:"h2",text:"3. Estacionamento oficial (Indigo)"},{kind:"p",text:"O oficial do GRU (operado pela Indigo) parte de R$ 33,60/dia na reserva online para T1/T2, o que dá cerca de R$ 235 em 7 dias. No balcão, sem reserva, a diária vai de R$ 75 a R$ 100, e a semana pode ultrapassar R$ 700. A vantagem é ficar dentro do aeroporto, sem traslado. A desvantagem é o preço: em 7 dias, a diferença para o mais barato do ranking passa de R$ 140."},{kind:"h2",text:"Airport Park e outros: preço não divulgado"},{kind:"p",text:'O Airport Park existe no entorno do GRU, mas não publica tabela pública de preços no momento desta coleta. Optamos por não listar valor estimado: quando a operadora não divulga, o dado entra como "
460não divulgado publicamente" para não confundir o comparativo. Se o valor for publicado, entrará em uma próxima edição.'},{kind:"h2",text:"Como pagar menos no estacionamento do GRU"},{kind:"p",text:`Três alavancas concentram a economia. Reservar online reduz a conta em até 55% frente ao balcão do oficial. Usar cupom (o XPK26 entrega a diária de ${S(q.dailyFrom)} no Bandeira Park). E aproveitar a permanência longa: em 30+ dias, a tarifa decrescente do privado leva o valor para ${S(q.longStayDaily)} por dia. Combinadas, essas três alavancas explicam a maior parte da diferença entre pagar R$ 90 ou R$ 700 na mesma semana.`},{kind:"h2",text:"Vale a pena o privado ou o oficial?"},{kind:"p",text:"Depende do que você valoriza mais. O oficial fica dentro do aeroporto, sem traslado e sem espera de van, mas é sempre mais caro. O privado é mais barato e inclui traslado gratuito 24h, com tempo tÃpico de 7 a 10 minutos até o terminal. Em 7 dias, a diferença entre o oficial online e o privado mais barato passa de R$ 140, e no balcão do oficial a diferença por semana pode chegar a mais de R$ 600."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Qual o estacionamento mais barato do Aeroporto de Guarulhos?",answer:`O Bandeira Park é o mais barato, a partir de ${S(q.dailyFrom)}/dia com o cupom XPK26 (${S(q.dailyFull)} sem cupom). à pátio privado, com traslado gratuito 24h até o terminal do GRU. Fonte: canais oficiais das operadoras, coleta de 10/07/2026.`},{kind:"faq",question:"Quanto custa estacionar uma semana em Guarulhos?",answer:`No estacionamento mais barato mapeado, o Bandeira Park, 7 dias saem por ${S(q.weekTotalCharged)} com o cupom XPK26. O oficial online (Indigo) fica em torno de R$ 235 no mesmo perÃodo, e o balcão do oficial pode passar de R$ 700 em 7 dias.`},{kind:"faq",question:"O estacionamento privado do GRU tem traslado?",answer:"Sim. Os privados listados aqui (Bandeira Park e Urban Park) oferecem traslado gratuito 24h entre o pátio e o terminal, incluÃdo no preço da diária. No Bandeira Park o tempo tÃpico é de cerca de 7 minutos."},{kind:"faq",question:"à mais barato reservar online?",answer:"Sim, em até 55% frente ao balcão do oficial. A economia vale para o oficial (Indigo) e também para os privados, que só liberam o menor preço quando a reserva é feita pelo canal digital, com data e horário confirmados."},{kind:"faq",question:"Estacionamento fora do aeroporto é seguro?",answer:"A segurança varia por operadora. O Bandeira Park, por exemplo, oferece seguro Tokio Marine de R$ 1.000.000 por veÃculo nas unidades do GRU e do VCP, com pátio monitorado 24h. Veja o que analisar em [/estacionamento-de-aeroporto-e-seguro](/estacionamento-de-aeroporto-e-seguro)."},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Para reservar o mais barato do ranking, vá ao [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos). Para ver o comparativo curto por preço, [/estacionamento-mais-barato-guarulhos](/estacionamento-mais-barato-guarulhos). Para o panorama de mercado em outros destinos, consulte o [/indice-de-precos](/indice-de-precos)."}],closing:'Ranking baseado nos preços publicados pelas próprias operadoras nos seus canais oficiais em 10/07/2026 (Ãndice xpark de Preços, edição 1, julho de 2026). Valores sujeitos a alteração; confirme no momento da reserva. Onde a operadora não divulga preço, o dado aparece como "não divulgado publicamente".',tags:["Guarulhos","GRU","Ranking","Preços","Barato","Comparativo"]},{slug:"estacionamento-coberto-aeroporto-vale-a-pena",publishedAt:"2026-07-21",title:"Estacionamento coberto no aeroporto vale a pena? (GRU e VCP)",label:"Decisão · Coberto",excerpt:"Quando a vaga coberta compensa no estacionamento do aeroporto, quanto custa entre as operadoras que publicam o preço e a diferença real para a descoberta.",image:"https://www.xpark.ai/__l5e/assets-v1/23ee7272-e669-4580-ace9-ebcee9d52992/coberto-vale-a-pena.jpg",dek:"Quanto custa a vaga coberta perto do GRU e do VCP, quando compensa e como se compara à descoberta, com preços coletados dos canais oficiais das operadoras.",readTime:"5 min de leitura",byline:"João G.",pullQuote:"A vaga coberta perto do aeroporto vai de R$ 27,99 a R$ 36,90 por dia entre as operadoras que publicam o preço. Compensa em estadias longas e no verão, quando sol e chuva castigam a pintura.",body:[{kind:"p",text:"A vaga coberta protege o carro do sol e da chuva e custa um pouco mais que a descoberta. Entre as operadoras que publicam o preço, a diária coberta vai de R$ 27,99 (KM64, em Viracopos) a R$ 36,90 (Urban Park, em Guarulhos). Compensa quando o carro fica muitos dias exposto, ou no verão, quando sol forte e chuva castigam a pintura."},{kind:"p",text:"A descoberta é sempre mais barata e tem o mesmo traslado gratuito e a mesma segurança de pátio. A coberta agrega proteção contra sol e chuva por um acréscimo de poucos reais por dia na maior parte das operadoras privadas."},{kind:"h2",text:"O que a vaga coberta protege"},{kind:"p",text:"A vaga coberta protege pintura, borrachas e plástico de sol forte, granizo e chuva ácida. Em pátios abertos, o sol de várias horas por dia acelera o desbotamento e resseca borrachas de porta, teto solar e limpadores. Para carros
460novos ou de cor escura, o efeito visual em 15 ou 30 dias fica evidente."},{kind:"h2",text:"Quanto custa a coberta"},{kind:"table",headers:["Operadora","Aeroporto","Coberta/dia"],rows:[["KM64","VCP","R$ 27,99"],["Yellow Parking","VCP","R$ 29,99"],["BR Parking","VCP","R$ 35,00 online (R$ 40,00 balcão)"],["Urban Park","GRU","R$ 36,90"],["Estapar (oficial VCP)","VCP","a partir de R$ 83,00"],["Bandeira Park","GRU e VCP","consulte na reserva"]],caption:`Preços coletados nos canais oficiais das operadoras em julho de 2026. A descoberta do Bandeira Park é ${S(q.dailyFrom)}/dia com o cupom XPK26; a coberta é oferecida e o valor exato aparece na hora da reserva.`},{kind:"h2",text:"Quando o coberto compensa"},{kind:"p",text:"O coberto compensa em três cenários. Estadias longas (15 dias ou mais), quando a exposição contÃnua ao sol começa a marcar. Verão e temporada de chuvas, quando o carro passa dias tomando sol pesado ou temporais. E carros novos, escuros ou recém-envelopados, em que o custo de recuperar a pintura é muito maior do que o acréscimo pago por dia de coberta."},{kind:"h2",text:"Coberta ou descoberta?"},{kind:"p",text:"A descoberta é mais barata e tem o mesmo traslado gratuito e a mesma segurança de pátio da coberta. A coberta agrega proteção contra sol e chuva por um acréscimo de poucos reais por dia nos privados; no oficial do VCP (Estapar), a garagem coberta parte de R$ 83/dia, o que faz a diferença crescer muito frente à descoberta privada."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Quanto custa vaga coberta no estacionamento do aeroporto?",answer:"Entre as operadoras que publicam o preço, a diária coberta vai de R$ 27,99 (KM64, VCP) a R$ 36,90 (Urban Park, GRU). O oficial coberto do Viracopos (Estapar) parte de R$ 83,00/dia."},{kind:"faq",question:"Estacionamento coberto vale a pena?",answer:"Vale para estadias longas, verão ou para quem quer proteger a pintura de carro novo ou escuro. Para poucos dias, a descoberta costuma compensar: tem o mesmo traslado e a mesma segurança de pátio, por um preço menor."},{kind:"faq",question:"Tem estacionamento coberto perto de Guarulhos?",answer:"Sim. O Urban Park oferece coberta a partir de R$ 36,90/dia na tarifa online. O Bandeira Park também oferece vaga coberta perto do GRU; o valor exato aparece na hora da reserva. Veja opções no [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos)."},{kind:"faq",question:"Tem estacionamento coberto perto de Viracopos?",answer:"Sim: KM64 a R$ 27,99/dia, Yellow Parking a R$ 29,99/dia e BR Parking a R$ 35,00 online. Veja o comparativo no [hub do VCP](/aeroportos/estacionamento-aeroporto-viracopos)."},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Para comparar coberta e descoberta com o seu perÃodo exato, use os hubs de [Guarulhos](/aeroportos/estacionamento-aeroporto-guarulhos) e [Viracopos](/aeroportos/estacionamento-aeroporto-viracopos), ou veja o panorama de mercado no [Ãndice xpark de Preços](/indice-de-precos)."}],closing:'Preços coletados nos canais oficiais das operadoras em julho de 2026. Valores sujeitos a alteração; confirme no momento da reserva. Onde a operadora não publica a coberta com desconto (caso do Bandeira Park), o dado aparece como "consulte na reserva" para não induzir a erro.',tags:["Coberto","GRU","VCP","Decisão","Preços","Comparativo"]},{slug:"estacionamento-terminais-1-2-3-aeroporto-guarulhos",publishedAt:"2026-07-22",updatedAt:"2026-10-01",title:"Estacionamento por terminal no Aeroporto de Guarulhos: T1, T2 e T3",seoTitle:"Estacionamento GRU Terminal 2 e 3: preços 2026",label:"Guia · Guarulhos GRU",excerpt:"Guia de estacionamento por terminal no GRU, com o preço do oficial em cada terminal, o edifÃcio-garagem coberto do T3 e a opção privada com traslado gratuito para os três terminais.",image:D6,dek:"Onde estacionar por terminal no Aeroporto de Guarulhos (T1, T2 e T3), com preços do oficial, caracterÃsticas do edifÃcio-garagem coberto do T3 e alternativa privada com traslado 24h.",readTime:"6 min de leitura",byline:"Marcelo C.",pullQuote:"No GRU, 1 dia n
460o oficial custa R$ 76,00 no Standard do T1/T2 e R$ 104,00 no Premium ou edifÃcio-garagem do T3. As ofertas online de R$ 33,60 e R$ 42,70 por dia exigem 15 dias e dependem de disponibilidade.",body:[{kind:"p",text:"Quanto custa o estacionamento dentro do Aeroporto de Guarulhos nos Terminais 2 e 3? No T2, o oficial Standard custa R$ 76,00 por 1 dia, R$ 450,00 por 7 dias, R$ 480,00 por 15 e R$ 505,00 por 30. No T3, o Premium e o edifÃcio-garagem custam R$ 104,00, R$ 540,00, R$ 610,00 e R$ 690,00 nos mesmos perÃodos. Valores da tabela oficial conferidos em 28/09/2026."},{kind:"p",text:`Na reserva online, o oficial anunciava R$ 33,60 por dia no Standard e R$ 42,70 no T3 apenas em pacotes de 15 dias, sujeitos a disponibilidade. Em 28/09/2026, essas vagas apareciam esgotadas. Nas opções privadas do entorno, o Bandeira Park publica ${S(q.dailyFrom)} com o cupom XPK26 (${S(q.dailyFull)} sem cupom) para 1 dia e ${S(q.weekTotalCharged)} com XPK26 (${S(q.weekTotalFull)} sem cupom) para 7 dias, com traslado 24 horas aos três terminais.`},{kind:"h2",text:"Comparativo por terminal"},{kind:"table",headers:["Local","1 dia","7 dias","15 dias","30 dias"],rows:[["Oficial Standard T1/T2","R$ 76,00","R$ 450,00","R$ 480,00","R$ 505,00"],["Oficial Premium/T3","R$ 104,00","R$ 540,00","R$ 610,00","R$ 690,00"],["Bandeira Park, com XPK26",`${S(ge("GRU",1))}`,`${S(ge("GRU",7))}`,`${S(ge("GRU",15))}`,`${S(ge("GRU",30))}`],["Bandeira Park, sem cupom",`${S(je(At("GRU"),1))}`,`${S(je(At("GRU"),7))}`,`${S(je(At("GRU"),15))}`,`${S(je(At("GRU"),30))}`]],caption:"Tabela do estacionamento oficial e tabela de reserva do parceiro conferidas em 28/09/2026. O T3 tem edifÃcio-garagem coberto. Valores e disponibilidade podem mudar."},{kind:"h2",text:"Terminal 1 e Terminal 2"},{kind:"p",text:"O oficial Standard dos Terminais 1 e 2 custa R$ 76,00 por 1 dia. A tabela cobra R$ 450,00 de 6 a 10 diárias, R$ 480,00 de 11 a 17 e R$ 505,00 de 18 a 30. O acesso é a pé, sem traslado. A oferta online de R$ 33,60 por dia exige 15 dias, depende de disponibilidade e estava esgotada na consulta de 28/09/2026."},{kind:"h2",text:"Terminal 3 e o edifÃcio-garagem coberto"},{kind:"p",text:"O Terminal 3 tem edifÃcio-garagem coberto, ligado ao terminal por passarela. Premium e edifÃcio-garagem custam R$ 104,00 por 1 dia, R$ 540,00 de 6 a 10 diárias, R$ 610,00 de 11 a 17 e R$ 690,00 de 18 a 30. A oferta online de R$ 42,70 por dia exige 15 dias, depende de disponibilidade e estava esgotada na consulta de 28/09/2026."},{kind:"h2",text:"Vale mais a pena o oficial do terminal ou o privado com traslado?"},{kind:"p",text:`O privado custa menos e inclui traslado; o oficial evita a espera da van. Em 7 dias, o Standard custa R$ 450,00 e o Bandeira Park ${S(q.weekTotalCharged)} com o cupom XPK26 (${S(q.weekTotalFull)} sem cupom). Para quem aceita um trajeto informado de cerca de 7 minutos, o privado reduz o total. Para bagagem pesada ou preferência por acesso a pé, o oficial fica dentro do aeroporto.`},{kind:"h2",text:"Como informar o terminal na reserva"},{kind:"p",text:"Na reserva pelo xpark, o cliente informa o terminal de embarque e recebe a orientação de acesso. No caso do privado, a van encosta na área especÃfica de cada terminal (T1, T2 ou T3). No oficial, o comprovante libera o acesso direto ao pátio do terminal escolhido. A troca de terminal antes da viagem pode ser feita pelo aplicativo ou pelo suporte da operadora."},{kind:"h2",text:"Perguntas frequentes"},{kind:"faq",question:"Qual estacionamento fica mais perto do Terminal 3 do GRU?",answer:"O edifÃcio-garagem oficial do T3, coberto e ligado por passarela ao terminal. A tarifa parte de R$ 42,70/dia na reserva online. à a vaga oficial mais próxima do T3."},{kind:"faq",question:"Quanto custa o estacionamento do Terminal 2 do GRU?",answer:`O oficial Standard custa R$ 76,00 por 1 dia, R$ 450,00 por 7, R$ 480,00 por 15 e R$ 505,00 por 30. O Bandeira Park publica ${S(q.dailyFrom)} com o cupom XPK26 (${S(q.dailyFull)} sem cupom) para 1 dia, com traslado até o T2.`},{kind:"faq",question:"O estacionamento privado atende todos os terminais?",answer:"Sim. O traslado gratuito 24h passa em T1, T2 e T3 do GRU. O cliente informa o terminal de embarque na reserva e a van encosta na área especÃfica do terminal escolhido."},{kind:"faq",question:"O estacionamento do T3 é coberto?",answer:"Sim. O Terminal 3 tem edifÃcio-garagem coberto, ligado ao terminal por passarela. Custa R$ 104,00 por 1 dia. A oferta online de R$ 42,70 por dia exige 15 dias e depende de disponibilidade."},{kind:"h2",text:"Próximos passos"},{kind:"p",text:"Para reservar por terminal, vá ao [hub do GRU](/aeroportos/estacionamento-aeroporto-guarulhos). Para o panorama de mercado em outros destinos, veja o [Ãndice xpark de Preços](/indice-de-precos)."}],closing:"Preços coletados na tabela oficial do GRU e nos canais das operações em 28/09/2026. Valores e vagas online podem mudar; confirme no momento da reserva. Distâncias e tempos de traslado são estimativas informadas.",tags:["Guarulhos","GRU","Terminais","T1","T2","T3","Guia"]},...nee],Mc=jee.map(e=>{const t=sj[e.slug]&&!e.seoTitle?{...e,seoTitle:sj[e.slug]}:e;return t.body?{...t,body:iee(t.body)}:t}
460),$k=[{slug:"estacionamento-aeroporto-santos-dumont",iata:"SDU",city:"Rio de Janeiro",state:"RJ",headTerm:"estacionamento aeroporto santos dumont",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Santos Dumont",metaTitle:"Estacionamento Aeroporto Santos Dumont (SDU): preços e distância | xpark",metaDescription:"Compare 5 estacionamentos perto do Aeroporto Santos Dumont (SDU): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Santos Dumont, com endereço, distância até o terminal e preço publicado (1 de 5 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-galeao",iata:"GIG",city:"Rio de Janeiro",state:"RJ",headTerm:"estacionamento aeroporto galeão",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Galeão",metaTitle:"Estacionamento Aeroporto Galeão (GIG): preços e distância | xpark",metaDescription:"Compare 3 estacionamentos perto do Aeroporto do Galeão (GIG): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto do Galeão, com endereço, distância até o terminal e preço publicado (1 de 3 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-curitiba",iata:"CWB",city:"Curitiba",state:"PR",headTerm:"estacionamento aeroporto afonso pena",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Afonso Pena",metaTitle:"Estacionamento Aeroporto Afonso Pena (CWB): preços e distância | xpark",metaDescription:"Compare 7 estacionamentos perto do Aeroporto Afonso Pena (CWB): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Afonso Pena, com endereço, distância até o terminal e preço publicado (4 de 7 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-brasilia",iata:"BSB",city:"BrasÃlia",state:"DF",headTerm:"estacionamento aeroporto brasÃlia",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de BrasÃlia",metaTitle:"Estacionamento Aeroporto BrasÃlia (BSB): preços e distância | xpark",metaDescription:"Compare 6 estacionamentos perto do Aeroporto de BrasÃlia (BSB): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto de BrasÃlia, com endereço, distância até o terminal e preço publicado (4 de 6 com preço público na coleta de setembro de 2026).",sourceStorySlug:"estacionamento-aeroporto-brasilia-guia-precos-2026",satellites:[],related:[],heroImage:O6.url,editorialOnly:!0},{slug:"estacionamento-aeroporto-porto-alegre",iata:"POA",city:"Porto Alegre",state:"RS",headTerm:"estacionamento aeroporto salgado filho",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Salgado Filho",metaTitle:"Estacionamento Aeroporto Salgado Filho (POA): preços e distância | xpark",metaDescription:"Compare 4 estacionamentos perto do Aeroporto Salgado Filho (POA): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Salgado Filho, com endereço, distância até o terminal e preço publicado (1 de 4 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-maceio",iata:"MCZ",city:"Rio Largo",state:"AL",headTerm:"estacionamento aeroporto maceió",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Maceió",metaTitle:"Estacionamento Aeroporto Maceió (MCZ): preços e distância | xpark",metaDescription:"Compare 1 estacionamento perto do Aeroporto de Maceió (MCZ): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto de Maceió, com endereço, distância até o terminal e preço publicado (1 de 1 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-joao-pessoa",iata:"JPA",city:"Bayeux",state:"PB",headTerm:"estacionamento aeroporto joão pessoa",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de João Pessoa",metaTitle:"Estacionamento Aeroporto João Pessoa (JPA): preços e distância | xpark",metaDescription:"Compare 1 estacionamento perto do Aeroporto de João Pessoa (JPA): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto de João Pessoa, com endereço, distância até o terminal e preço publicado (1 de 1 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-londrina",iata:"LDB",city:"Londrina",state:"PR",headTerm:"estacionamento aeroporto londrina",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Londrina",metaTitle:"Estacionamento Aeroporto Londrina (LDB): preços e distância | xpark",metaDescription:"Compare 5 estacionamentos perto do Aeroporto de Londrina (LDB): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto de Londrina, com endereço, distância até o terminal e preço publicado (1 de 5 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-recife",iata:"REC",city:"Recife",state:"PE",headTerm:"estacionamento aeroporto recife",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Recife",metaTitle:"Estacionamento Aeroporto Recife (REC): preços e distância | xpark",metaDescription:"Compare 7 estacionamentos perto do Aeroporto Internacional do Recife/Guararapes (REC): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional do Recife/Guararapes, com endereço, distância até o terminal e preço publicado (1 de 7 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-navegantes",iata:"NVT",city:"Navegantes",state:"SC",headTerm:"estacionamento aeroporto navegantes",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Navegantes",metaTitle:"Estacionamento Aeroporto Navegantes (NVT): preços e distância | xpark",metaDescription:"Compare 5 estacionamentos perto do Aeroporto Internacional de Navegantes (NVT): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Navegantes, com endereço, distância até o terminal e preço publicado (0 de 5 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-salvador",iata:"SSA",city:"Salvador",state:"BA",headTerm:"estacionamento aeroporto salvador",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Salvador",metaTitle:"Estacionamento Aeroporto Salvador (SSA): preços e distância | xpark",metaDescription:"Compare 3 estacionamentos perto do Aeroporto Internacional de Salvador (SSA): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Salvador, com endereço, distância até o terminal e preço publicado (1 de 3 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-fortaleza",iata:"FOR",city:"Fortaleza",state:"CE",headTerm:"estacionamento aeroporto fortaleza",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Fortaleza",metaTitle:"Estacionamento Aeroporto Fortaleza (FOR): preços e distância | xpark",metaDescription:"Compare 4 estacionamentos perto do Aeroporto Internacional de Fortaleza (FOR): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Fortaleza, com endereço, distância até o terminal e preço publicado (1 de 4 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-florianopolis",iata:"FLN",city:"Florianópolis",state:"SC",headTerm:"estacionamento aeroporto florianópolis",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Florianópolis",metaTitle:"Estacionamento Aeroporto Florianópolis (FLN): preços e distância | xpark",metaDescription:"Compare 3 estacionamentos perto do Aeroporto Internacional de Florianópolis (FLN): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Florianópolis, com endereço, distância até o terminal e preço publicado (1 de 3 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-goiania",iata:"GYN",city:"Goiânia",state:"GO",headTerm:"estacionamento aeroporto goiânia",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Goiânia",metaTitle:"Estacionamento Aeroporto Goiânia (GYN): pre
460ços e distância | xpark",metaDescription:"Compare 5 estacionamentos perto do Aeroporto Internacional de Goiânia (GYN): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Goiânia, com endereço, distância até o terminal e preço publicado (3 de 5 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-vitoria",iata:"VIX",city:"Vitória",state:"ES",headTerm:"estacionamento aeroporto vitória",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Vitória",metaTitle:"Estacionamento Aeroporto Vitória (VIX): preços e distância | xpark",metaDescription:"Compare 7 estacionamentos perto do Aeroporto Internacional de Vitória (VIX): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Vitória, com endereço, distância até o terminal e preço publicado (0 de 7 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-campo-grande",iata:"CGR",city:"Campo Grande",state:"MS",headTerm:"estacionamento aeroporto campo grande",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Campo Grande",metaTitle:"Estacionamento Aeroporto Campo Grande (CGR): preços e distância | xpark",metaDescription:"Compare 4 estacionamentos perto do Aeroporto Internacional de Campo Grande (CGR): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto Internacional de Campo Grande, com endereço, distância até o terminal e preço publicado (1 de 4 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-teresina",iata:"THE",city:"Teresina",state:"PI",headTerm:"estacionamento aeroporto teresina",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Teresina",metaTitle:"Estacionamento Aeroporto Teresina (THE): preços e distância | xpark",metaDescription:"Compare 2 estacionamentos perto do Aeroporto de Teresina (THE): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto de Teresina, com endereço, distância até o terminal e preço publicado (0 de 2 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0},{slug:"estacionamento-aeroporto-cuiaba",iata:"CGB",city:"Várzea Grande",displayCity:"Cuiabá",state:"MT",headTerm:"estacionamento aeroporto cuiabá",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Cuiabá",metaTitle:"Estacionamento Aeroporto Cuiabá (CGB): preços e distância | xpark",metaDescription:"Compare 8 estacionamentos perto do Aeroporto de Cuiabá (CGB): endereço, distância até o terminal e preço quando a operadora divulga.",lead:"Os estacionamentos no entorno do Aeroporto de Cuiabá, com endereço, distância até o terminal e preço publicado (1 de 8 com preço público na coleta de setembro de 2026).",sourceStorySlug:"",satellites:[],related:[],heroImage:"",editorialOnly:!0}],Nee={url:Tk},Aee={url:I6},Eee={url:M6},L6=["GRU","VCP","CNF","CGH"],_ee=[{slug:"estacionamento-aeroporto-guarulhos",iata:"GRU",city:"Guarulhos",state:"São Paulo · SP",headTerm:"estacionamento aeroporto guarulhos",searchVolume:"22.200 buscas/mês",h1:"Estacionamento no Aeroporto de Guarulhos",metaTitle:"Estacionamento Aeroporto Guarulhos (GRU): Compare Preços e Reserve | XPark",metaDescription:"Compare preços de estacionamento no Aeroporto de Guarulhos (GRU): oficial, privados, valet e traslado. Reserva em menos de um minuto pelo xpark.",lead:"Tudo o que muda o preço e a experiência de estacionar no GRU: oficial versus privados, traslado, valet e como o tempo de permanência derruba a diária.",sourceStorySlug:"quanto-custa-estacionar-aeroporto-guarulhos-gru-precos-2026",satellites:[{slug:"estacionamento-mensal-aeroporto-guarulhos-quanto-custa",label:"Preço · Guarulhos GRU",title:"Estacionamento mensal no Aeroporto de Guarulhos: preços de 30 dias"},{slug:"valet-aeroporto-guarulhos-gru-quanto-custa-quando-compensa",label:"Guia · Valet GRU",title:"Valet no Aeroporto de Guarulhos: quanto custa e quando compensa"},{slug:"transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona",label:"Guia · Transfer",title:"Transfer do estacionamento ao terminal: como funciona em GRU e VCP"},{slug:"estacionamento-aeroporto-bate-volta-trabalho-guarulhos-viracopos",label:"Guia · Viagem a trabalho",title:"Viagem a trabalho de 1 a 3 dias: onde deixar o carro em Guarulhos e Viracopos"},{slug:"estacionamento-aeroporto-guarulhos-15-dias-viagem-internacional",label:"Guia · Longa permanência",title:"Viagem internacional de 15 dias: quanto custa deixar o carro em Guarulhos"}],related:["estacionamento-aeroporto-viracopos","estacionamento-aeroporto-confins"],heroImage:Nee.url},{slug:"estacionamento-aeroporto-viracopos",iata:"VCP",city:"Viracopos",state:"Campinas · SP",headTerm:"estacionamento viracopos",searchVolume:"8.100 + 4.400 buscas/mês",h1:"Estacionamento no Aeroporto de
460Viracopos",metaTitle:"Estacionamento Aeroporto Viracopos / Campinas (VCP): preços, coberto e traslado | xpark",metaDescription:"Compare 11 estacionamentos do Aeroporto de Viracopos (Campinas / VCP): diária, vaga coberta, tempo até o terminal e traslado 24h. Preços de fonte oficial no xpark.",lead:"Estacionamento em Viracopos, Campinas: compare o oficial dentro do aeroporto e os privados no entorno com traslado, vaga coberta e preço da estadia inteira, de 1 a 30 dias.",sourceStorySlug:"estacionamento-viracopos-comparativo-precos-2026",satellites:[{slug:"transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona",label:"Guia · Transfer",title:"Transfer do estacionamento ao terminal: como funciona em GRU e VCP"},{slug:"voo-azul-viracopos-onde-deixar-o-carro",label:"Guia · Viracopos VCP",title:"Vai voar de Azul por Viracopos? Onde deixar o carro e quanto custa"},{slug:"estacionamento-aeroporto-bate-volta-trabalho-guarulhos-viracopos",label:"Guia · Viagem a trabalho",title:"Viagem a trabalho de 1 a 3 dias: onde deixar o carro em Guarulhos e Viracopos"}],related:["estacionamento-aeroporto-guarulhos","estacionamento-aeroporto-confins"],heroImage:Aee.url},{slug:"estacionamento-aeroporto-confins",iata:"CNF",city:"Confins",state:"Belo Horizonte · MG",headTerm:"estacionamento aeroporto confins",searchVolume:"18.100 buscas/mês",h1:"Estacionamento no Aeroporto de Confins",metaTitle:"Estacionamento Aeroporto Confins (CNF): Compare Preços e Reserve | XPark",metaDescription:"Compare preços de estacionamento no Aeroporto de Confins (CNF, BH Airport): oficial, privados no entorno, traslado e valet. Guia do xpark.",lead:"Compare o estacionamento oficial e os pátios privados em Confins pelo custo total da viagem, cobertura da vaga e acesso ao terminal.",sourceStorySlug:"quanto-custa-estacionar-aeroporto-confins-cnf-precos-2026",satellites:[{slug:"estacionamento-mensal-aeroporto-confins-semana-ou-mes",label:"Guia · Confins CNF",title:"Estacionamento por semana ou mês em Confins: quanto custa 7, 17 e 30 dias"},{slug:"estacionamento-dentro-aeroporto-confins-e3-p1-p3",label:"Guia · Confins CNF",title:"Estacionar dentro do Aeroporto de Confins (CNF): pátios e preços 2026"},{slug:"estacionamento-perto-aeroporto-confins-distancia",label:"Guia · Confins CNF",title:"Estacionamento perto do Aeroporto de Confins (CNF): km e van em 2026"},{slug:"e-seguro-deixar-carro-aeroporto-confins",label:"Guia · Confins CNF",title:"à seguro deixar o carro no Aeroporto de Confins (CNF)? O que conferir antes de reservar"},{slug:"qual-melhor-estacionamento-aeroporto-confins",label:"Comparativo · Confins CNF",title:"Qual o melhor estacionamento no Aeroporto de Confins?"},{slug:"estacionamento-coberto-aeroporto-confins-precos",label:"Guia · Confins CNF",title:"Estacionamento coberto em Confins: quanto custa e como chegar ao terminal?"}],related:["estacionamento-aeroporto-guarulhos","estacionamento-aeroporto-viracopos"],heroImage:Eee.url},{slug:"estacionamento-aeroporto-congonhas",iata:"CGH",city:"São Paulo",state:"São Paulo · SP",headTerm:"estacionamento aeroporto congonhas",searchVolume:"não medido",h1:"Estacionamento no Aeroporto de Congonhas",metaTitle:"Estacionamento Aeroporto Congonhas (CGH): preços e acesso a pé | xpark",metaDescription:"Compare 10 estacionamentos perto do Aeroporto de Congonhas (CGH): endereço, acesso a pé e preço quando a operadora divulga. No Bandeira Park não há traslado nem van.",lead:"Os estacionamentos no entorno do Aeroporto de Congonhas, com endereço, distância até o terminal e preço publicado. No Bandeira Park não há traslado nem van: o acesso é a pé.",sourceStorySlug:"",satellites:[{slug:"qual-melhor-estacionamento-aeroporto-congonhas",label:"Guia · Melhor opção CGH",title:"Qual o melhor estacionamento no Aeroporto de Congonhas?"},{slug:"estacionamento-aeroporto-congonhas-guia-precos-2026",label:"Preço · Congonhas CGH",title:"Estacionamento no Aeroporto de Congonhas: quanto custa em 2026"}],related:[],heroImage:_k.url}],Ht=[..._ee,...$k];function Uy(e){if(e)return Ht.find(t=>t.slug===e)}const ij={};function Tee(e){if(e.sourceStorySlug)return Mc.find(t=>t.slug===e.sourceStorySlug)}const Lc={number:1,monthLabel:"julho de 2026",publishedAt:"2026-07-10",nextEdition:""},B6=[{id:"gru-30d-spread",headline:"9,4x de diferença por 30 dias em GRU",detail
460:`Guardar o carro por 30 dias perto de Guarulhos custa de ${S(q.longStayTotal)} a R$ 2.250,00 dependendo da operadora escolhida.`},{id:"cnf-daily-spread",headline:"Confins tem a maior dispersão de diárias",detail:"Entre operadoras a minutos do terminal, a diária varia de R$ 9,90 a R$ 60,00, uma diferença de 6x pelo mesmo perÃodo."},{id:"online-vs-balcao",headline:"Reservar online economiza até 55%",detail:"Nas mesmas vagas, a tarifa online chega a ser 55% menor do que a de balcão praticada pela mesma operadora."},{id:"no-absolute-cheapest",headline:'Não existe "o mais barato" absoluto',detail:"O ranking por 1 diária é diferente do ranking por 30 dias. A escolha certa depende do tempo de viagem."}],$ee={GRU:"Guarulhos (GRU)",VCP:"Viracopos (VCP)",CNF:"Confins (CNF)",CGH:"Congonhas (CGH)"},Oee=["GRU","VCP","CNF","CGH"],qee={daily:[/\bavulsa\b/i,/\b1\s*a\s*6\b/i,/\b1\s*dia\b/i,/^di[aá]ria\b/i,/\bvaga\s+(descoberta|coberta|galp[aã]o|vip)/i,/\breserva\s+online\b/i,/\bgaragem\b/i,/\bbols[aã]o\b/i,/\btarifa\s+m[iÃ]nima\b/i],week:[/(^|[^0-9])7\s*\+?\s*dias/i,/semana/i,/pacote\s*7/i],month:[/30\s*\+?\s*dias/i,/\bmensal\b/i,/longa\s*estadia/i,/\b17\s*dias\b/i,/\b31\+/i]};function Dv(e,t){const a=qee[t],o=e.priceRows.filter(n=>a.some(i=>i.test(n.label)));if(o.length===0)return null;const r=o.filter(n=>n.perDay!=null);return r.length===0?o[0]:r.reduce((n,i)=>i.perDay<n.perDay?i:n)}function Iv(e,t){if(!t)return;if(t.note&&t.note.trim())return t.note.trim();if(e.slug.startsWith("bandeira-park"))return"com cupom XPK26";const a=/\(([^)]+)\)/.exec(t.label);if(a)return a[1].trim();const o=/^(?:Promoção|Pacote)\s+(.+)$/i.exec(t.label);if(o)return o[1].trim()}function Dee(e){if(nl(e))return{operator:e,daily:null,weekly:null,monthly:null,weeklyTotal:null,monthlyTotal:null};if(e.totalForDays){const i=e.totalForDays,l=h=>Math.round(h*100)/100,c=e.totalNote??(e.slug.startsWith("bandeira-park")?"com cupom XPK26":void 0),d=i(1),u=i(7),m=i(30);return{operator:e,daily:d,weekly:u==null?null:l(u/7),monthly:m==null?null:l(m/30),weeklyTotal:u,monthlyTotal:m,dailyNote:c,weeklyNote:c,monthlyNote:c}}const t=Dv(e,"daily"),a=Dv(e,"week"),o=Dv(e,"month"),r=(a==null?void 0:a.perDay)??null,n=(o==null?void 0:o.perDay)??null;return{operator:e,daily:(t==null?void 0:t.perDay)??null,weekly:r,monthly:n,weeklyTotal:(a==null?void 0:a.total)??(r!=null?Math.round(r*7*100)/100:null),monthlyTotal:(o==null?void 0:o.total)??(n!=null?Math.round(n*30*100)/100:null),dailyNote:Iv(e,t),weeklyNote:Iv(e,a),monthlyNote:Iv(e,o)}}function Iee(e,t){return e.daily==null&&t.daily==null?e.operator.name.localeCompare(t.operator.name,"pt-BR"):e.daily==null?1:t.daily==null?-1:e.daily-t.daily}function Mee(e=Kt){const t=r=>!nl(r)&&r.priceRows.some(n=>n.perDay!=null),a=Oee.map(r=>({iata:r,airportName:$ee[r],editorialOnly:!1})),o=$k.filter(r=>e.some(n=>n.iata===r.iata&&t(n))).map(r=>({iata:r.iata,airportName:`${r.displayCity??r.city} (${r.iata})`,editorialOnly:!0}));return[...a,...o].map(r=>({...r,rows:e.filter(n=>n.iata===r.iata).map(Dee).sort(Iee)}))}function Lee(e=Kt){return e.length}`${Lc.monthLabel}${Lee()}`;const Bee=new Set(Ht.filter(e=>!e.editorialOnly).map(e=>e.slug)),lj=Kt.filter(e=>Bee.has(e.hubSlug));function cj(){const e=[],t=lj.map(pt).filter(r=>Number.isFinite(r)&&r>0);if(t.length>0){const r=Math.min(...t);e.push({id:"computed-menor-diaria",label:"MENOR DIÃRIA NO XPARK",value:`a partir de ${X(r)}/dia`,trend:"down",priority:1e3})}lj.length>0&&e.push({id:"computed-operadoras",label:"ESTACIONAMENTOS COMPARADOS",value:`${Kt.length} · ${Ht.length} destinos`,trend:"neutral",priority:900});const a=["gru-30d-spread","cnf-daily-spread","online-vs-balcao"];let o=890;for(const r of a){const n=B6.find(i=>i.id===r);n&&e.push({id:`computed-finding-${r}`,label:"ÃNDICE XPARK",value:n.headline,trend:"neutral",priority:o--})}return e.push({id:"computed-edicao",label:"ÃNDICE DE PREÃOS",value:`edição ${Lc.monthLabel}`,trend:"neutral",priority:800}),e}function Vee(){const e=cj(),[t,a]=x.useState(e),[o,r]=x.useState(!0);return x.useEffect(()=>{let n=!1;const i=async()=>{const{data:c,error:d}=await ze.from("ticker_items").select("id,label,value,trend,priority").eq("active",!0).order("priority",{ascending:!1}).order("label",{ascending:!0});if(n)return;const u=cj();if(!d&&c){const m=c.map(h=>({id:h.id,label:h.label,value:h.value,trend:h.trend??"neutral",priority:h.priority??0}));a([...u,...m.filter(h=>!/operadoras comparadas|estacionamentos comparados|praças|destinos/i.test(h.label))])}else a(u);r(!1)};i();const l=setInterval(i,6e4);return()=>{n=!0,clearInterval(l)}},[]),{items:t,loading:o}}function Fee({trend:e}){return e==="up"?s.jsx("span",{className:"ml-1 text-gold",children:"â²"}):e==="down"?s.jsx("span",{className:"ml-1 text-paper/50",children:"â¼"}):null}function dj({items:e}){return s.jsx(s.Fragment,{children:e.map(t=>s.jsxs("span",{className:"flex shrink-0 items-center",children:[s.jsx("span",{className:"text-paper/60",children:t.label}),s.jsx("span",{className:"mx-1.5 text-paper/40",children:"·"}),s.jsx("span",{className:"text-paper",children:t.value}),s.jsx(Fee,{trend:t.trend}),s.jsx("span",{className:"mx-5 text-paper/40",children:"·"})]},t.id))})}function Uee(){const{items:e,loading:t}=Vee();return t?s.jsx("div",{className:"w-full border-b border-paper/10 bg-ink",children:s.jsx("div",{className:"container flex h-8 items-center gap-6 overflow-hidden md:h-9",children:Array.from({length:4}).map((a,o)=>s.jsx("span",{className:"h-3 w-40 shrink-0 animate-pulse rounded bg-paper/10"},o))})}):e.length===0?null:s.jsxs("div",{role:"marquee","aria-label":"Indicadores XPark em tempo real",className:"relative w-full overflow-hidden border-b border-paper/10 bg-ink",children:[s.jsx("div",{"aria-hidden":!0,
460className:"pointer-events-none absolute inset-y-0 left-0 z-10 w-12 bg-gradient-to-r from-ink to-transparent md:w-16"}),s.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-y-0 right-0 z-10 w-12 bg-gradient-to-l from-ink to-transparent md:w-16"}),s.jsx("div",{className:"relative flex h-8 items-center md:h-9",children:s.jsxs("div",{className:"xpark-marquee-track flex w-max items-center font-geist-mono text-[10px] uppercase tracking-[0.14em] md:text-[11px]",children:[s.jsx(dj,{items:e}),s.jsx(dj,{items:e})]})})]})}function Gee(){const e=x.useRef(null);return x.useEffect(()=>{const t=e.current;if(!t)return;const a=t.getContext("2d");if(!a)return;const o=window.matchMedia("(prefers-reduced-motion: reduce)").matches,r=window.matchMedia("(max-width: 768px)").matches;let n=0,i=0,l=Math.min(window.devicePixelRatio||1,2);const c=r?36:28,d=r?.9:1.1;let u=window.scrollY,m=u,h=0,p=0,f=0,g=0,b=0;const v=()=>{n=window.innerWidth,i=window.innerHeight,l=Math.min(window.devicePixelRatio||1,2),t.width=n*l,t.height=i*l,t.style.width=`${n}px`,t.style.height=`${i}px`,a.setTransform(l,0,0,l,0,0)};v();const y=()=>{m=window.scrollY},k=A=>{f=(A.clientX/n-.5)*2,g=(A.clientY/i-.5)*2},w=()=>v();window.addEventListener("scroll",y,{passive:!0}),window.addEventListener("resize",w),!r&&!o&&window.addEventListener("mousemove",k);const R=()=>{const A=getComputedStyle(document.documentElement),$=A.getPropertyValue("--ink").trim()||A.getPropertyValue("--foreground").trim();return $?`hsla(${$} / 0.18)`:"hsla(0 0% 10% / 0.18)"};let C=0,P=!0;const N=()=>{if(!P)return;u+=(m-u)*.08,h+=(f-h)*.06,p+=(g-p)*.06,m=window.scrollY,b+=r&&!o?.25:0,a.clearRect(0,0,n,i);const A=o?0:u*(r?.18:.08),$=o?0:h*14+b*.4,O=o?0:p*14+Math.sin(b*.02)*6,V=R();a.fillStyle=V;const T=-c+($%c+c)%c,D=-c+((-A+O)%c+c)%c;for(let F=D;F<i+c;F+=c)for(let U=T;U<n+c;U+=c)a.beginPath(),a.arc(U,F,d,0,Math.PI*2),a.fill();C=requestAnimationFrame(N)};N();const E=()=>{document.visibilityState==="visible"?P||(P=!0,N()):(P=!1,cancelAnimationFrame(C))};return document.addEventListener("visibilitychange",E),()=>{P=!1,cancelAnimationFrame(C),window.removeEventListener("scroll",y),window.removeEventListener("resize",w),window.removeEventListener("mousemove",k),document.removeEventListener("visibilitychange",E)}},[]),s.jsx("div",{"aria-hidden":!0,className:"pointer-events-none fixed inset-0 z-0",style:{WebkitMaskImage:"radial-gradient(ellipse at center, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.6) 55%, rgba(0,0,0,0) 90%)",maskImage:"radial-gradient(ellipse at center, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.6) 55%, rgba(0,0,0,0) 90%)"},children:s.jsx("canvas",{ref:e,className:"h-full w-full"})})}var Mv="focusScope.autoFocusOnMount",Lv="focusScope.autoFocusOnUnmount",uj={bubbles:!1,cancelable:!0},zee="FocusScope",V6=x.forwardRef((e,t)=>{const{loop:a=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:n,...i}=e,[l,c]=x.useState(null),d=Yr(r),u=Yr(n),m=x.useRef(null),h=la(t,g=>c(g)),p=x.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;x.useEffect(()=>{if(o){let g=function(k){if(p.paused||!l)return;const w=k.target;l.contains(w)?m.current=w:Zn(m.current,{select:!0})},b=function(k){if(p.paused||!l)return;const w=k.relatedTarget;w!==null&&(l.contains(w)||Zn(m.current,{select:!0}))},v=function(k){if(document.activeElement===document.body)for(const R of k)R.removedNodes.length>0&&Zn(l)};document.addEventListener("focusin",g),document.addEventListener("focusout",b);const y=new MutationObserver(v);return l&&y.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",g),document.removeEventListener("focusout",b),y.disconnect()}}},[o,l,p.paused]),x.useEffect(()=>{if(l){pj.add(p);const g=document.activeElement;if(!l.contains(g)){const v=new CustomEvent(Mv,uj);l.addEventListener(Mv,d),l.dispatchEvent(v),v.defaultPrevented||(Hee(Xee(F6(l)),{select:!0}),document.activeElement===g&&Zn(l))}return()=>{l.removeEventListener(Mv,d),setTimeout(()=>{const v=new CustomEvent(Lv,uj);l.addEventListener(Lv,u),l.dispatchEvent(v),v.defaultPrevented||Zn(g??document.body,{select:!0}),l.removeEventListener(Lv,u),pj.remove(p)}
vendor: 4,759 bytes, line 460
460,0)}}},[l,d,u,p]);const f=x.useCallback(g=>{if(!a&&!o||p.paused)return;const b=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,v=document.activeElement;if(b&&v){const y=g.currentTarget,[k,w]=Kee(y);k&&w?!g.shiftKey&&v===w?(g.preventDefault(),a&&Zn(k,{select:!0})):g.shiftKey&&v===k&&(g.preventDefault(),a&&Zn(w,{select:!0})):v===y&&g.preventDefault()}},[a,o,p.paused]);return s.jsx(yt.div,{tabIndex:-1,...i,ref:h,onKeyDown:f})});V6.displayName=zee;function Hee(e,{select:t=!1}={}){const a=document.activeElement;for(const o of e)if(Zn(o,{select:t}),document.activeElement!==a)return}function Kee(e){const t=F6(e),a=mj(t,e),o=mj(t.reverse(),e);return[a,o]}function F6(e){const t=[],a=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;a.nextNode();)t.push(a.currentNode);return t}function mj(e,t){for(const a of e)if(!Qee(a,{upTo:t}))return a}function Qee(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Wee(e){return e instanceof HTMLInputElement&&"select"in e}function Zn(e,{select:t=!1}={}){if(e&&e.focus){const a=document.activeElement;e.focus({preventScroll:!0}),e!==a&&Wee(e)&&t&&e.select()}}var pj=Jee();function Jee(){let e=[];return{add(t){const a=e[0];t!==a&&(a==null||a.pause()),e=hj(e,t),e.unshift(t)},remove(t){var a;e=hj(e,t),(a=e[0])==null||a.resume()}}}function hj(e,t){const a=[...e],o=a.indexOf(t);return o!==-1&&a.splice(o,1),a}function Xee(e){return e.filter(t=>t.tagName!=="A")}var Bv=0;function Yee(){x.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??fj()),document.body.insertAdjacentElement("beforeend",e[1]??fj()),Bv++,()=>{Bv===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Bv--}},[])}function fj(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var ls=function(){return ls=Object.assign||function(t){for(var a,o=1,r=arguments.length;o<r;o++){a=arguments[o];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},ls.apply(this,arguments)};function Zee(e,t){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(a[o[r]]=e[o[r]]);return a}function ete(e,t,a){if(a||arguments.length===2)for(var o=0,r=t.length,n;o<r;o++)(n||!(o in t))&&(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}var Ah="right-scroll-bar-position",Eh="width-before-scroll-bar",tte="with-scroll-bars-hidden",ate="--removed-body-scroll-bar-size";function Vv(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function ote(e,t){var a=x.useState(function(){return{value:e,callback:t,facade:{get current(){return a.value},set current(o){var r=a.value;r!==o&&(a.value=o,a.callback(o,r))}}}})[0];return a.callback=t,a.facade}var rte=typeof window<"u"?x.useLayoutEffect:x.useEffect,gj=new WeakMap;function nte(e,t){var a=ote(null,function(o){return e.forEach(function(r){return Vv(r,o)})});return rte(function(){var o=gj.get(a);if(o){var r=new Set(o),n=new Set(e),i=a.current;r.forEach(function(l){n.has(l)||Vv(l,null)}),n.forEach(function(l){r.has(l)||Vv(l,i)})}gj.set(a,e)},[e]),a}var qf=function(){return qf=Object.assign||function(t){for(var a,o=1,r=arguments.length;o<r;o++){a=arguments[o];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])}return t},qf.apply(this,arguments)};function ste(e,t){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(a[o[r]]=e[o[r]]);return a}function ite(e){return e}function lte(e,t){t===void 0&&(t=ite);var a=[],o=!1,r={read:function(){if(o)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return a.length?a[a.length-1]:e},useMedium:function(n){var i=t(n,o);return a.push(i),function(){a=a.filter(function(l){return l!==i})}},assignSyncMedium:function(n){for(o=!0;a.length;){var i=a;
vendor: 4,555 bytes, lines 460-497
460a=[],i.forEach(n)}a={push:function(l){return n(l)},filter:function(){return a}}},assignMedium:function(n){o=!0;var i=[];if(a.length){var l=a;a=[],l.forEach(n),i=a}var c=function(){var u=i;i=[],u.forEach(n)},d=function(){return Promise.resolve().then(c)};d(),a={push:function(u){i.push(u),d()},filter:function(u){return i=i.filter(u),a}}}};return r}function cte(e){e===void 0&&(e={});var t=lte(null);return t.options=qf({async:!0,ssr:!1},e),t}var U6=function(e){var t=e.sideCar,a=ste(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=t.read();if(!o)throw new Error("Sidecar medium not found");return x.createElement(o,qf({},a))};U6.isSideCarExport=!0;function dte(e,t){return e.useMedium(t),U6}var G6=cte(),Fv=function(){},Kg=x.forwardRef(function(e,t){var a=x.useRef(null),o=x.useState({onScrollCapture:Fv,onWheelCapture:Fv,onTouchMoveCapture:Fv}),r=o[0],n=o[1],i=e.forwardProps,l=e.children,c=e.className,d=e.removeScrollBar,u=e.enabled,m=e.shards,h=e.sideCar,p=e.noRelative,f=e.noIsolation,g=e.inert,b=e.allowPinchZoom,v=e.as,y=v===void 0?"div":v,k=e.gapMode,w=Zee(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),R=h,C=nte([a,t]),P=ls(ls({},w),r);return x.createElement(x.Fragment,null,u&&x.createElement(R,{sideCar:G6,removeScrollBar:d,shards:m,noRelative:p,noIsolation:f,inert:g,setCallbacks:n,allowPinchZoom:!!b,lockRef:a,gapMode:k}),i?x.cloneElement(x.Children.only(l),ls(ls({},P),{ref:C})):x.createElement(y,ls({},P,{className:c,ref:C}),l))});Kg.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Kg.classNames={fullWidth:Eh,zeroRight:Ah};var ute=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function mte(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=ute();return t&&e.setAttribute("nonce",t),e}function pte(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function hte(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var fte=function(){var e=0,t=null;return{add:function(a){e==0&&(t=mte())&&(pte(t,a),hte(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},gte=function(){var e=fte();return function(t,a){x.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&a])}},z6=function(){var e=gte(),t=function(a){var o=a.styles,r=a.dynamic;return e(o,r),null};return t},vte={left:0,top:0,right:0,gap:0},Uv=function(e){return parseInt(e||"",10)||0},xte=function(e){var t=window.getComputedStyle(document.body),a=t[e==="padding"?"paddingLeft":"marginLeft"],o=t[e==="padding"?"paddingTop":"marginTop"],r=t[e==="padding"?"paddingRight":"marginRight"];return[Uv(a),Uv(o),Uv(r)]},bte=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return vte;var t=xte(e),a=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-a+t[2]-t[0])}},yte=z6(),cc="data-scroll-locked",kte=function(e,t,a,o){var r=e.left,n=e.top,i=e.right,l=e.gap;return a===void 0&&(a="margin"),` 461 .`.concat(tte,` { 462 overflow: hidden `).concat(o,`; 463 padding-right: `).concat(l,"px ").concat(o,`; 464 } 465 body[`).concat(cc,`] { 466 overflow: hidden `).concat(o,`; 467 overscroll-behavior: contain; 468 `).concat([t&&"position: relative ".concat(o,";"),a==="margin"&&` 469 padding-left: `.concat(r,`px; 470 padding-top: `).concat(n,`px; 471 padding-right: `).concat(i,`px; 472 margin-left:0; 473 margin-top:0; 474 margin-right: `).concat(l,"px ").concat(o,`; 475 `),a==="padding"&&"padding-right: ".concat(l,"px ").concat(o,";")].filter(Boolean).join(""),` 476 } 477 478 .`).concat(Ah,` { 479 right: `).concat(l,"px ").concat(o,`; 480 } 481 482 .`).concat(Eh,` { 483 margin-right: `).concat(l,"px ").concat(o,`; 484 } 485 486 .`).concat(Ah," .").concat(Ah,` { 487 right: 0 `).concat(o,`; 488 } 489 490 .`).concat(Eh," .").concat(Eh,` { 491 margin-right: 0 `).concat(o,`; 492 } 493 494 body[`).concat(cc,`] { 495 `).concat(ate,": ").concat(l,`px; 496 } 497`)},vj=function(){var e=parseInt(document.body.getAttribute(cc)||"0",10);return isFinite(e)?e:0},wte=function(){x.useEffect(function(){return document.body.setAttribute(cc,(vj()+1).toString()),function(){var e=vj()-1;e<=0?document.body.removeAttribute(cc):document.body.setAttribute(cc,e.toString())}},[])},Cte=function(e){var t=e.noRelative,a=e.noImportant,o=e.gapMode,r=o===void 0?"margin":o;wte();var n=x.useMemo(function(){return bte(r)},[r]);
vendor: 5,093 bytes, lines 497-500
497return x.createElement(yte,{styles:kte(n,!t,r,a?"":"!important")})},Gy=!1;if(typeof window<"u")try{var jp=Object.defineProperty({},"passive",{get:function(){return Gy=!0,!0}});window.addEventListener("test",jp,jp),window.removeEventListener("test",jp,jp)}catch{Gy=!1}var xl=Gy?{passive:!1}:!1,Pte=function(e){return e.tagName==="TEXTAREA"},H6=function(e,t){if(!(e instanceof Element))return!1;var a=window.getComputedStyle(e);return a[t]!=="hidden"&&!(a.overflowY===a.overflowX&&!Pte(e)&&a[t]==="visible")},Ste=function(e){return H6(e,"overflowY")},Rte=function(e){return H6(e,"overflowX")},xj=function(e,t){var a=t.ownerDocument,o=t;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var r=K6(e,o);if(r){var n=Q6(e,o),i=n[1],l=n[2];if(i>l)return!0}o=o.parentNode}while(o&&o!==a.body);return!1},jte=function(e){var t=e.scrollTop,a=e.scrollHeight,o=e.clientHeight;return[t,a,o]},Nte=function(e){var t=e.scrollLeft,a=e.scrollWidth,o=e.clientWidth;return[t,a,o]},K6=function(e,t){return e==="v"?Ste(t):Rte(t)},Q6=function(e,t){return e==="v"?jte(t):Nte(t)},Ate=function(e,t){return e==="h"&&t==="rtl"?-1:1},Ete=function(e,t,a,o,r){var n=Ate(e,window.getComputedStyle(t).direction),i=n*o,l=a.target,c=t.contains(l),d=!1,u=i>0,m=0,h=0;do{if(!l)break;var p=Q6(e,l),f=p[0],g=p[1],b=p[2],v=g-b-n*f;(f||v)&&K6(e,l)&&(m+=v,h+=f);var y=l.parentNode;l=y&&y.nodeType===Node.DOCUMENT_FRAGMENT_NODE?y.host:y}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return(u&&(Math.abs(m)<1||!r)||!u&&(Math.abs(h)<1||!r))&&(d=!0),d},Np=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},bj=function(e){return[e.deltaX,e.deltaY]},yj=function(e){return e&&"current"in e?e.current:e},_te=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Tte=function(e){return` 498 .block-interactivity-`.concat(e,` {pointer-events: none;} 499 .allow-interactivity-`).concat(e,` {pointer-events: all;} 500`)},$te=0,bl=[];function Ote(e){var t=x.useRef([]),a=x.useRef([0,0]),o=x.useRef(),r=x.useState($te++)[0],n=x.useState(z6)[0],i=x.useRef(e);x.useEffect(function(){i.current=e},[e]),x.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var g=ete([e.lockRef.current],(e.shards||[]).map(yj),!0).filter(Boolean);return g.forEach(function(b){return b.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),g.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var l=x.useCallback(function(g,b){if("touches"in g&&g.touches.length===2||g.type==="wheel"&&g.ctrlKey)return!i.current.allowPinchZoom;var v=Np(g),y=a.current,k="deltaX"in g?g.deltaX:y[0]-v[0],w="deltaY"in g?g.deltaY:y[1]-v[1],R,C=g.target,P=Math.abs(k)>Math.abs(w)?"h":"v";if("touches"in g&&P==="h"&&C.type==="range")return!1;var N=xj(P,C);if(!N)return!0;if(N?R=P:(R=P==="v"?"h":"v",N=xj(P,C)),!N)return!1;if(!o.current&&"changedTouches"in g&&(k||w)&&(o.current=R),!R)return!0;var E=o.current||R;return Ete(E,b,g,E==="h"?k:w,!0)},[]),c=x.useCallback(function(g){var b=g;if(!(!bl.length||bl[bl.length-1]!==n)){var v="deltaY"in b?bj(b):Np(b),y=t.current.filter(function(R){return R.name===b.type&&(R.target===b.target||b.target===R.shadowParent)&&_te(R.delta,v)})[0];if(y&&y.should){b.cancelable&&b.preventDefault();return}if(!y){var k=(i.current.shards||[]).map(yj).filter(Boolean).filter(function(R){return R.contains(b.target)}),w=k.length>0?l(b,k[0]):!i.current.noIsolation;w&&b.cancelable&&b.preventDefault()}}},[]),d=x.useCallback(function(g,b,v,y){var k={name:g,delta:b,target:v,should:y,shadowParent:qte(v)};t.current.push(k),setTimeout(function(){t.current=t.current.filter(function(w){return w!==k})},1)},[]),u=x.useCallback(function(g){a.current=Np(g),o.current=void 0},[]),m=x.useCallback(function(g){d(g.type,bj(g),g.target,l(g,e.lockRef.current))},[]),h=x.useCallback(function(g){d(g.type,Np(g),g.target,l(g,e.lockRef.current))},[]);x.useEffect(function(){return bl.push(n),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:h}),document.addEventListener("wheel",c,xl),document.addEventListener("touchmove",c,xl),document.addEventListener("touchstart",u,xl),function(){bl=bl.filter(function(g){return g!==n}),document.removeEventListener("wheel",c,xl),document.removeEventListener("touchmove",c,xl),document.removeEventListener("touchstart",u,xl)}},[]);var p=e.removeScrollBar,f=e.inert;return x.createElement(x.Fragment,null,f?x.createElement(n,{styles:Tte(r)}):null,p?x.createElement(Cte,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function qte(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Dte=dte(G6,Ote);var W6=x.forwardRef(function(e,t){return x.createElement(Kg,ls({},e,{ref:t,sideCar:Dte}))});W6.classNames=Kg.classNames;var Ite=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},yl=new WeakMap,Ap=new WeakMap,Ep={},Gv=0,J6=function(e){return e&&(e.host||J6(e.parentNode))}
vendor: 7,646 bytes, lines 500-504
500,Mte=function(e,t){return t.map(function(a){if(e.contains(a))return a;var o=J6(a);return o&&e.contains(o)?o:(console.error("aria-hidden",a,"in not contained inside",e,". Doing nothing"),null)}).filter(function(a){return!!a})},Lte=function(e,t,a,o){var r=Mte(t,Array.isArray(e)?e:[e]);Ep[a]||(Ep[a]=new WeakMap);var n=Ep[a],i=[],l=new Set,c=new Set(r),d=function(m){!m||l.has(m)||(l.add(m),d(m.parentNode))};r.forEach(d);var u=function(m){!m||c.has(m)||Array.prototype.forEach.call(m.children,function(h){if(l.has(h))u(h);else try{var p=h.getAttribute(o),f=p!==null&&p!=="false",g=(yl.get(h)||0)+1,b=(n.get(h)||0)+1;yl.set(h,g),n.set(h,b),i.push(h),g===1&&f&&Ap.set(h,!0),b===1&&h.setAttribute(a,"true"),f||h.setAttribute(o,"true")}catch(v){console.error("aria-hidden: cannot operate on ",h,v)}})};return u(t),l.clear(),Gv++,function(){i.forEach(function(m){var h=yl.get(m)-1,p=n.get(m)-1;yl.set(m,h),n.set(m,p),h||(Ap.has(m)||m.removeAttribute(o),Ap.delete(m)),p||m.removeAttribute(a)}),Gv--,Gv||(yl=new WeakMap,yl=new WeakMap,Ap=new WeakMap,Ep={})}},Bte=function(e,t,a){a===void 0&&(a="data-aria-hidden");var o=Array.from(Array.isArray(e)?e:[e]),r=Ite(e);return r?(o.push.apply(o,Array.from(r.querySelectorAll("[aria-live]"))),Lte(o,r,a,"aria-hidden")):function(){return null}},Qg="Dialog",[X6,Yge]=Ks(Qg),[Vte,Ar]=X6(Qg),Y6=e=>{const{__scopeDialog:t,children:a,open:o,defaultOpen:r,onOpenChange:n,modal:i=!0}=e,l=x.useRef(null),c=x.useRef(null),[d,u]=td({prop:o,defaultProp:r??!1,onChange:n,caller:Qg});return s.jsx(Vte,{scope:t,triggerRef:l,contentRef:c,contentId:nu(),titleId:nu(),descriptionId:nu(),open:d,onOpenChange:u,onOpenToggle:x.useCallback(()=>u(m=>!m),[u]),modal:i,children:a})};Y6.displayName=Qg;var Z6="DialogTrigger",e5=x.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,r=Ar(Z6,a),n=la(t,r.triggerRef);return s.jsx(yt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":Dk(r.open),...o,ref:n,onClick:gt(e.onClick,r.onOpenToggle)})});e5.displayName=Z6;var Ok="DialogPortal",[Fte,t5]=X6(Ok,{forceMount:void 0}),a5=e=>{const{__scopeDialog:t,forceMount:a,children:o,container:r}=e,n=Ar(Ok,t);return s.jsx(Fte,{scope:t,forceMount:a,children:x.Children.map(o,i=>s.jsx(rl,{present:a||n.open,children:s.jsx(_1,{asChild:!0,container:r,children:i})}))})};a5.displayName=Ok;var Df="DialogOverlay",o5=x.forwardRef((e,t)=>{const a=t5(Df,e.__scopeDialog),{forceMount:o=a.forceMount,...r}=e,n=Ar(Df,e.__scopeDialog);return n.modal?s.jsx(rl,{present:o||n.open,children:s.jsx(Gte,{...r,ref:t})}):null});o5.displayName=Df;var Ute=Ou("DialogOverlay.RemoveScroll"),Gte=x.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,r=Ar(Df,a);return s.jsx(W6,{as:Ute,allowPinchZoom:!0,shards:[r.contentRef],children:s.jsx(yt.div,{"data-state":Dk(r.open),...o,ref:t,style:{pointerEvents:"auto",...o.style}})})}),Ki="DialogContent",r5=x.forwardRef((e,t)=>{const a=t5(Ki,e.__scopeDialog),{forceMount:o=a.forceMount,...r}=e,n=Ar(Ki,e.__scopeDialog);return s.jsx(rl,{present:o||n.open,children:n.modal?s.jsx(zte,{...r,ref:t}):s.jsx(Hte,{...r,ref:t})})});r5.displayName=Ki;var zte=x.forwardRef((e,t)=>{const a=Ar(Ki,e.__scopeDialog),o=x.useRef(null),r=la(t,a.contentRef,o);return x.useEffect(()=>{const n=o.current;if(n)return Bte(n)},[]),s.jsx(n5,{...e,ref:r,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:gt(e.onCloseAutoFocus,n=>{var i;n.preventDefault(),(i=a.triggerRef.current)==null||i.focus()}),onPointerDownOutside:gt(e.onPointerDownOutside,n=>{const i=n.detail.originalEvent,l=i.button===0&&i.ctrlKey===!0;(i.button===2||l)&&n.preventDefault()}),onFocusOutside:gt(e.onFocusOutside,n=>n.preventDefault())})}),Hte=x.forwardRef((e,t)=>{const a=Ar(Ki,e.__scopeDialog),o=x.useRef(!1),r=x.useRef(!1);return s.jsx(n5,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:n=>{var i,l;(i=e.onCloseAutoFocus)==null||i.call(e,n),n.defaultPrevented||(o.current||(l=a.triggerRef.current)==null||l.focus(),n.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:n=>{var c,d;(c=e.onInteractOutside)==null||c.call(e,n),n.defaultPrevented||(o.current=!0,n.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const i=n.target;((d=a.triggerRef.current)==null?void 0:d.contains(i))&&n.preventDefault(),n.detail.originalEvent.type==="focusin"&&r.current&&n.preventDefault()}})}),n5=x.forwardRef((e,t)=>{const{__scopeDialog:a,trapFocus:o,onOpenAutoFocus:r,onCloseAutoFocus:n,...i}=e,l=Ar(Ki,a),c=x.useRef(null),d=la(t,c);return Yee(),s.jsxs(s.Fragment,{children:[s.jsx(V6,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:r,onUnmountAutoFocus:n,children:s.jsx(Pg,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Dk(l.open),...i,ref:d,onDismiss:()=>l.onOpenChange(!1)})}),s.jsxs(s.Fragment,{children:[s.jsx(Kte,{titleId:l.titleId}),s.jsx(Wte,{contentRef:c,descriptionId:l.descriptionId})]})]})}),qk="DialogTitle",s5=x.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,r=Ar(qk,a);return s.jsx(yt.h2,{id:r.titleId,...o,ref:t})});s5.displayName=qk;var i5="DialogDescription",l5=x.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,r=Ar(i5,a);return s.jsx(yt.p,{id:r.descriptionId,...o,ref:t})});l5.displayName=i5;var c5="DialogClose",d5=x.forwardRef((e,t)=>{const{__scopeDialog:a,...o}=e,r=Ar(c5,a);return s.jsx(yt.button,{type:"button",...o,ref:t,onClick:gt(e.onClick,()=>r.onOpenChange(!1))})});d5.displayName=c5;function Dk(e){return e?"open":"closed"}var u5="DialogTitleWarning",[Zge,m5]=A8(u5,{contentName:Ki,titleName:qk,docsSlug:"dialog"}),Kte=({titleId:e})=>{const t=m5(u5),a=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. 501 502If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. 503 504For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return x.useEffect(()=>{e&&(document.getElementById(e)||console.error(a))},[a,e]),null},Qte="DialogDescriptionWarning",Wte=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${m5(Qte).contentName}}.`;return x.useEffect(()=>{var n;const r=(n=e.current)==null?void 0:n.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},p5=Y6,h5=e5,f5=a5,Wg=o5,Jg=r5,Xg=s5,Yg=l5,g5=d5;const Jte=p5,Xte=h5,Yte=f5,v5=x.forwardRef(({className:e,...t},a)=>s.jsx(Wg,{className:ne("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:a}));v5.displayName=Wg.displayName;const Zte=q1("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),x5=x.forwardRef(({side:e="right",className:t,children:a,...o},r)=>s.jsxs(Yte,{children:[s.jsx(v5,{}),s.jsxs(Jg,{ref:r,className:ne(Zte({side:e}),t),...o,children:[a,s.jsxs(g5,{className:"absolute right-4 top-4 roun
504ded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[s.jsx(Gi,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));x5.displayName=Jg.displayName;const b5=({className:e,...t})=>s.jsx("div",{className:ne("flex flex-col space-y-2 text-center sm:text-left",e),...t});b5.displayName="SheetHeader";const y5=x.forwardRef(({className:e,...t},a)=>s.jsx(Xg,{ref:a,className:ne("text-lg font-semibold text-foreground",e),...t}));y5.displayName=Xg.displayName;const eae=x.forwardRef(({className:e,...t},a)=>s.jsx(Yg,{ref:a,className:ne("text-sm text-muted-foreground",e),...t}));eae.displayName=Yg.displayName;const _h=[.22,1,.36,1],tae=[.4,0,1,1],uu={fast:.18,base:.28,slow:.44};function kj(){const e=Xt(),t=S3();return s.jsx(pK,{mode:"wait",initial:!1,children:s.jsx(Bd.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0,transition:{duration:uu.base,ease:_h}},exit:{opacity:0,transition:{duration:uu.fast,ease:tae}},style:{willChange:"opacity, transform"},children:t},e.pathname)})}const Zg=p5,aae=h5,oae=f5,k5=x.forwardRef(({className:e,...t},a)=>s.jsx(Wg,{ref:a,className:ne("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));k5.displayName=Wg.displayName;const Am=x.forwardRef(({className:e,children:t,...a},o)=>s.jsxs(oae,{children:[s.jsx(k5,{}),s.jsxs(Jg,{ref:o,className:ne("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...a,children:[t,s.jsxs(g5,{className:"absolute right-4 top-4 roun
504ded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[s.jsx(Gi,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Am.displayName=Jg.displayName;const Em=({className:e,...t})=>s.jsx("div",{className:ne("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Em.displayName="DialogHeader";const rae=({className:e,...t})=>s.jsx("div",{className:ne("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});rae.displayName="DialogFooter";const _m=x.forwardRef(({className:e,...t},a)=>s.jsx(Xg,{ref:a,className:ne("text-lg font-semibold leading-none tracking-tight",e),...t}));_m.displayName=Xg.displayName;const nae=x.forwardRef(({className:e,...t},a)=>s.jsx(Yg,{ref:a,className:ne("text-sm text-muted-foreground",e),...t}));nae.displayName=Yg.displayName;const sae=q1("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),ue=x.forwardRef(({className:e,variant:t,size:a,asChild:o=!1,...r},n)=>{const i=o?_8:"button";return s.jsx(i,{className:ne(sae({variant:t,size:a,className:e})),ref:n,...r})});ue.displayName="Button";function Ik({value:e,onChange:t,variant:a="default"}){const o=e<34?"Quero o menor preço, posso esperar":e<67?"EquilÃbrio entre tempo e custo":"Tempo é tudo. Me entregue no portão";if(a==="default"){const n=[{v:15,title:"Menor preço",hint:"Vaga descoberta, o melhor custo da estadia"},{v:50,title:"EquilÃbrio",hint:"Vaga coberta, proteção por um preço justo"},{v:85,title:"Mais rapidez",hint:"Valet no terminal, você desce e embarca"}],i=e<34?15:e<67?50:85;return s.jsxs("fieldset",{className:"space-y-2",children:[s.jsx("legend",{className:"mb-1 font-geist text-xs font-medium text-tech-mute",children:"O que pesa mais nesta viagem?"}),s.jsx("div",{className:"grid gap-1 sm:grid-cols-3 sm:gap-1.5",role:"radiogroup",children:n.map(l=>{const c=i===l.v;return s.jsxs("button",{type:"button",role:"radio","aria-checked":c,onClick:()=>t(l.v),className:ne("rounded-lg border px-3 py-1.5 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gold sm:py-2",c?"border-gold bg-gold/10":"border-tech-border hover:border-tech-fg/40"),children:[s.jsxs("span",{className:"flex items-center gap-1.5 font-geist text-xs font-semibold text-tech-fg",children:[s.jsx("span",{className:ne("h-2.5 w-2.5 rounded-full border-2",c?"border-gold bg-gold":"border-tech-mute")}),l.title]}),s.jsx("span",{className:"mt-0.5 block font-geist text-[11px] leading-snug text-tech-mute",children:l.hint})]},l.v)})}),s.jsx("p",{className:"font-geist text-[11px] text-tech-mute",children:"Usamos isso para ordenar as opções. Você vê todas antes de escolher."})]})}const r={"--val":`${e}%`};return s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"flex items-center justify-between font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:[s.jsx("span",{children:"Quanto vale o seu tempo?"}),s.jsxs("span",{className:"text-tech-fg",children:[e,"/100"]})]}
504),s.jsx("input",{type:"range",min:0,max:100,value:e,onChange:n=>t(Number(n.target.value)),style:r,className:ne("xpark-slider",a==="multipark"&&"xpark-slider--multipark",a==="aerovalet"&&"xpark-slider--aerovalet",a==="valetina"&&"xpark-slider--valetina"),"aria-label":"Prioridade entre preço e tempo"}),s.jsxs("div",{className:"flex items-center justify-between font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:[s.jsx("span",{children:"$ Preço"}),s.jsx("span",{children:"â± Tempo"})]}),s.jsx("p",{className:"font-geist text-sm italic text-tech-mute",children:o})]})}const Mk="xpark_search_form",iae=()=>new Date().toISOString().slice(0,10);function e0(){try{const e=sessionStorage.getItem(Mk);if(!e)return{};const t=JSON.parse(e),a=iae();return t.entrada&&t.entrada<a&&(delete t.entrada,delete t.entrada_hora),t.saida&&t.saida<a&&(delete t.saida,delete t.saida_hora),t}catch{return{}}}function t0(e){try{sessionStorage.setItem(Mk,JSON.stringify(e))}catch{}}function lae(){try{sessionStorage.removeItem(Mk)}catch{}}function cae(){return!1}function w5(e="/wanderlust"){return e}function If(){return"/minhas-reservas"}async function e0e(e,t=!1){t?window.location.replace(e):window.location.assign(e)}const zv="block text-[11px] font-semibold uppercase text-tech-mute mb-1",dae="w-full h-10 bg-transparent text-sm font-medium text-tech-fg outline-none focus-visible:ring-2 focus-visible:ring-gold";function C5({formId:e="buscar-vaga",stacked:t=!1}){var C;const a=Nr(),[o]=Ao(),r=e0(),[n,i]=x.useState(r.airport||"GRU"),l=(C=o.get("aeroporto"))==null?void 0:C.toUpperCase();x.useEffect(()=>{l&&["GRU","VCP","CNF","CGH"].includes(l)&&w(l)},[l]);const[c,d]=x.useState(r.entrada||""),[u,m]=x.useState(r.entrada_hora||"12:00"),[h,p]=x.useState(r.saida||""),[f,g]=x.useState(r.saida_hora||"12:00"),[b,v]=x.useState(typeof r.priority=="number"?r.priority:50),y=Of(n),k=Ak(n),w=P=>{i(P);const N=Of(P);c&&c<N&&(d(""),p(""))},R=P=>{P.preventDefault(),t0({airport:n,entrada:c,entrada_hora:u,saida:h,saida_hora:f,priority:b});const E=`/escolher?${new URLSearchParams({airport:n,entrada:c,entrada_hora:u,saida:h,saida_hora:f,priority:String(b)}).toString()}`;a(E)};return s.jsxs("form",{id:e,onSubmit:R,className:"w-full rounded-card border border-tech-border bg-tech-card p-4 shadow-elevated md:p-5",children:[s.jsxs("div",{className:t?"grid grid-cols-1 gap-2":"grid grid-cols-1 gap-2 lg:grid-cols-[1fr_1.55fr_1.55fr_auto] lg:items-start lg:gap-3",children:[s.jsxs("div",{className:t?"min-w-0 border-b border-tech-border pb-1":"min-w-0 border-b border-tech-border pb-1 lg:border-b-0 lg:border-r lg:pb-0 lg:pr-3",children:[s.jsx("label",{className:zv,htmlFor:`${e}-airport`,children:"Aeroporto"}),s.jsxs("select",{id:`${e}-airport`,value:n,onChange:P=>w(P.target.value),className:dae,children:[s.jsx("option",{value:"GRU",children:"GRU · Guarulhos"}),s.jsx("option",{value:"VCP",children:"VCP · Viracopos"}),s.jsx("option",{value:"CNF",children:"CNF · Confins"}),s.jsx("option",{value:"CGH",children:"CGH · Congonhas"})]})]}),s.jsxs("div",{className:t?"min-w-0 border-b border-tech-border pb-1":"min-w-0 border-b border-tech-border pb-1 lg:border-b-0 lg:border-r lg:pb-0 lg:pr-3",children:[s.jsxs("label",{className:zv,htmlFor:`${e}-entrada`,children:["Entrada",cd(n)&&s.jsxs("span",{className:"ml-2 rounded-full bg-tech-accent px-2 py-0.5 text-[9px] tracking-normal text-tech-fg",children:["inauguração em ",Vy(n)]})]}),s.jsxs("div",{className:"flex h-10 min-w-0 items-stretch focus-within:ring-2 focus-within:ring-gold",children:[s.jsx("input",{id:`${e}-entrada`,type:"date",value:c,onChange:P=>d(P.target.value),min:y,required:!0,className:"min-w-0 flex-1 bg-transparent pr-1 text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de entrada",type:"time",value:u,onChange:P=>m(P.target.value),required:!0,className:"w-[98px] shrink-0 bg-transparent pl-1 text-sm text-tech-fg outline-none sm:w-[104px] sm:pl-2"})]})]}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("label",{className:zv,htmlFor:`${e}-saida`,children:"SaÃda"}),s.jsxs("div",{className:"flex h-10 min-w-0 items-stretch focus-within:ring-2 focus-within:ring-gold",children:[s.jsx("input",{id:`${e}-saida`,type:"date",value:h,onChange:P=>p(P.target.value),min:c||y,required:!0,className:"min-w-0 flex-1 bg-transparent pr-1 text-sm text-tech-fg outline-none"}
504),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de saÃda",type:"time",value:f,onChange:P=>g(P.target.value),required:!0,className:"w-[98px] shrink-0 bg-transparent pl-1 text-sm text-tech-fg outline-none sm:w-[104px] sm:pl-2"})]})]}),s.jsxs(ue,{type:"submit",className:`h-11 w-full self-center rounded-full bg-gold px-6 font-semibold text-ink hover:bg-gold-dark${t?"":" lg:w-auto"}`,children:["Buscar ",s.jsx(aa,{className:"h-4 w-4"})]})]}),k&&s.jsx("p",{className:"mt-3 text-xs text-tech-mute",children:k}),s.jsx("div",{className:"mt-3 border-t border-tech-border pt-3",children:s.jsx(Ik,{value:b,onChange:v})})]})}const vr=e=>`/${e}`,Vs="/guias",uae="main section, main footer, main .container > :not(:first-child):not(section):not(h1)",mae="main :is(.grid, .space-y-3, .space-y-4, .space-y-6) > :is(article, a, div, li, button, details)";function pae(e,t){x.useLayoutEffect(()=>{if(!e||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const a=document.querySelector(".site-shell--public"),o=a==null?void 0:a.querySelector("main");if(!a||!o)return;let r=!0;const n=new Map,i=d=>{const u=d.src;if(n.get(d)===u)return;n.set(d,u),d.classList.remove("xp-image-in");const m=()=>{r&&n.get(d)===u&&d.classList.add("xp-image-in")};d.complete?m():(d.addEventListener("load",m,{once:!0}),d.addEventListener("error",m,{once:!0}))},l=()=>{o.querySelectorAll("img").forEach(i);for(const d of n.keys())d.isConnected||n.delete(d)};l();const c=new MutationObserver(l);return c.observe(o,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcset"]}),()=>{r=!1,c.disconnect()}},[e,t]),x.useEffect(()=>{if(!e||typeof window>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const a=document.querySelector("main");if(!a)return;const o=new IntersectionObserver(c=>c.forEach(d=>{d.isIntersecting&&(d.target.classList.add("is-in"),o.unobserve(d.target))}),{threshold:0,rootMargin:"0px 0px -8% 0px"}),r=()=>{Array.from(a.querySelectorAll(uae)).forEach((d,u)=>{u===0||d.closest(".xp-reveal")||d.dataset.xpMotion||d.closest("[data-reveal-item]")||(d.dataset.xpMotion="1",d.classList.add("xp-reveal"),o.observe(d))}),a.querySelectorAll(mae).forEach(d=>{if(d.dataset.xpMotion||d.hasAttribute("data-reveal-item"))return;const u=d.parentElement;u.children.length<2||u.children.length>24||(d.dataset.xpMotion="1",d.style.setProperty("--xp-i",String(Array.prototype.indexOf.call(u.children,d)%6)),d.classList.add("xp-reveal-item"),o.observe(d))})},n=window.setTimeout(r,60);let i=0;const l=new MutationObserver(()=>{window.clearTimeout(i),i=window.setTimeout(r,120)});return l.observe(a,{childList:!0,subtree:!0}),()=>{window.clearTimeout(n),window.clearTimeout(i),l.disconnect(),o.disconnect()}},[e,t])}const P5="/assets/xpark-wordmark-CGupkoGI.png",hae=[{to:"/como-funciona",label:"Como funciona"},{to:"/aeroportos",label:"Aeroportos"},{to:"/parceiros",label:"Seja um parceiro"},{to:Vs,label:"Guias"},{to:"/faq",label:"FAQ"},{to:"/planos",label:"Planos"}],fae=[{to:"/wanderlust",label:"Comunidade"},{to:Vs,label:"Guias"},{to:"/faq",label:"FAQ"}],gae=[{title:"Navegue",links:[{to:"/como-funciona",label:"Como funciona"},{to:"/aeroportos",label:"Aeroportos"},{to:Vs,label:"Guias"},{to:"/planos",label:"Planos"},{to:"/parceiros",label:"Seja um parceiro"}]},{title:"Ferramentas",links:[{to:"/indice-de-precos",label:"Ãndice de preços"},{to:"/calculadora-estacionamento-aeroporto",label:"Calculadora"},{to:"/metodologia",label:"Metodologia"},{to:"/avaliacoes",label:"Avaliações"},{to:"/faq",label:"FAQ"}]},{title:"Institucional",links:[{to:"/quem-somos",label:"Quem somos"},{to:"/estacionamento-de-aeroporto-e-seguro",label:"Confiança e segurança"},{to:"/politica-cancelamento",label:"PolÃtica de cancelamento"},{to:"/privacidade",label:"Privacidade"},{to:"/selo",label:"Selo xpark"}]}];function vae(){const{user:e,signOut:t}=sn(),a=(()=>{const V=(e==null?void 0:e.user_metadata)??{},T=(V.full_name||V.name||"").trim().split(/\s+/).filter(Boolean);return T.length?`${T[0]}${T[1]?" "+T[T.length-1][0]+".":""}`:""})(),o=async()=>{await t(),window.location.assign("/wanderlust")},{hasAccess:r}=kY(),n=Xt(),[i]=Ao(),[l,c]=x.useState(!1),[d,u]=x.useState(!1),[m,h]=x.useState(!1),[p,f]=x.use
504State(!0),[g,b]=x.useState(!1),v=x.useMemo(()=>cae(),[]),y=v?fae:hae,k=x.useMemo(()=>{const V=n.pathname;if(!(V==="/multipark"||V==="/aerovalet"||V==="/valetina"||V==="/escolher"||V==="/checkout"||V==="/confirmacao"||V.startsWith("/assinar/"))){try{sessionStorage.removeItem("xpark_source")}catch{}return null}const D=i.get("src");if(D==="multipark"||D==="aerovalet"||D==="valetina"){try{sessionStorage.setItem("xpark_source",D)}catch{}return D}try{const F=sessionStorage.getItem("xpark_source");if(F==="multipark"||F==="aerovalet"||F==="valetina")return F}catch{}return null},[n.pathname,i]),w=k==="multipark",R=k==="aerovalet",C=k==="valetina",P=R?"/aerovalet":w?"/multipark":C?"/valetina":v&&window.location.hostname.startsWith("wanderlust.")?"/wanderlust":"/",N=R?"Aerovalet · inÃcio":w?"Multipark · inÃcio":C?"Valetina · inÃcio":"xpark · inÃcio",E=(V=!1)=>R?s.jsx(ac,{partner:"aerovalet",logoClassName:"h-6 md:h-7"}):w?s.jsx(ac,{partner:"multipark"}):C?s.jsx(ac,{partner:"valetina",logoClassName:"h-5 md:h-5"}):s.jsx(fR,{});x.useEffect(()=>{c(!1)},[n.pathname]),x.useEffect(()=>{let V=window.scrollY;const T=()=>{const D=window.scrollY;u(D>8),h(D>520),Math.abs(D-V)>6&&(f(D<V||D<80),V=D)};return T(),window.addEventListener("scroll",T,{passive:!0}),()=>window.removeEventListener("scroll",T)},[]);const A=!["/checkout","/confirmacao"].some(V=>n.pathname.startsWith(V))&&!n.pathname.startsWith("/assinar/");pae(!k,n.pathname+n.search);const $=A&&n.pathname!=="/escolher"&&!k,O=$&&(n.pathname!=="/"||m||v);return x.useEffect(()=>{b(!1)},[n.pathname]),n.pathname==="/wanderlust"||n.pathname.startsWith("/wanderlust/")?s.jsx("div",{className:"wanderlust-design min-h-screen bg-paper font-home-body text-ink",children:s.jsx(kj,{})}):s.jsxs("div",{className:ne("site-shell relative flex min-h-screen flex-col bg-transparent font-home-body text-ink",!k&&"site-shell--public xp-images-ready"),children:[A&&s.jsx(Gee,{}),s.jsx("header",{className:ne("sticky top-0 z-40 border-b backdrop-blur transition-[transform,background-color,border-color,box-shadow] duration-300 motion-reduce:transition-none",!k&&d&&!p&&!l&&"-translate-y-full",d?"border-ink/10 bg-paper/85 shadow-[0_1px_0_0_hsl(var(--ink)/0.06),0_8px_24px_-20px_hsl(var(--ink)/0.25)]":"border-transparent bg-paper/60"),children:s.jsxs("div",{className:"container flex h-16 items-center justify-between",children:[s.jsx(G,{to:P,"aria-label":N,children:E(!1)}),O&&s.jsxs("button",{type:"button",onClick:()=>b(!0),className:"group mx-4 hidden min-w-0 flex-1 items-center gap-3 rounded-full border border-ink/10 bg-paper py-1 pl-4 pr-1 text-left shadow-sm transition-[box-shadow,border-color] duration-150 hover:border-ink/20 hover:shadow-md lg:flex motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-top-1 motion-safe:duration-300",children:[s.jsxs("span",{className:"min-w-0 flex-1 truncate text-sm",children:[s.jsx("span",{className:"font-semibold text-ink",children:"Aeroporto"}),s.jsx("span",{className:"text-mute",children:" · entrada · saÃda"})]}),s.jsxs("span",{className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-gold text-ink transition-transform duration-150 group-hover:scale-105",children:[s.jsx(Du,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Orçar estacionamento"})]})]}),s.jsxs("div",{className:ne("hidden shrink-0 items-center gap-6 lg:gap-8 md:flex",O&&"lg:hidden xl:flex"),children:[s.jsx("nav",{className:"flex items-center gap-4 lg:gap-7",children:y.map(V=>s.jsx($b,{to:v?V.to:V.to,className:({isActive:T})=>ne("relative text-xs lg:text-sm transition-colors active:scale-[0.97]",T?"text-ink":"text-mute hover:text-ink"),children:({isActive:T})=>s.jsxs(s.Fragment,{children:[V.label,T&&s.jsx(Bd.span,{layoutId:"nav-underline",className:"absolute -bottom-1 left-0 right-0 h-px bg-ink",transition:{duration:uu.base,ease:_h}})]})},V.to))}),s.jsxs("div",{className:"flex items-center gap-4",children:[v?e?s.jsxs("div",{className:"flex items-center gap-3",children:[a&&s.jsxs("span",{className:"inline-flex items-center gap-1.5 text-sm text-ink",children:[s.jsx(ip,{className:"h-4 w-4"})," ",a]}),s.jsx("button",{type:"button",onClick:o,className:"rounded-full border border-ink/20 px-4 py-1.5 font-mono text-[11px] uppercase tracking-[0.18em] text-ink hover:bg-ink/5",children:"Sair"})]}):s.jsx(G,{to:"/minhas-reservas?next=wanderlust",className:"rounded-full bg-ink px-4 py-1.5 font-mono text-[11px] uppercase tracking-[0.18em] text-paper hover:bg-ink/80",children:"Entrar"}):s.jsxs(s.Fragment,{children:[!e&&s.jsx(G,{to:v?"/minhas-reservas?next=wanderlust":"/minhas-reservas",className:"font-mono text-[11px] uppercase tracking-[0.18em] text-mute hover:text-ink",children:"Entrar"}),e&&!r&&s.jsxs("a",{href:v?If():"/minhas-reservas",onClick:()=>
504{if(v)try{sessionStorage.removeItem("xpark_wanderlust_host")}catch{}},className:"inline-flex items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.18em] text-mute hover:text-ink",children:[s.jsx(ip,{className:"h-4 w-4"})," Minhas reservas"]}),e&&!r&&s.jsx("a",{href:v?"/wanderlust":w5("/wanderlust"),className:"inline-flex items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.18em] text-mute hover:text-ink",children:"Wanderlust"})]}),e&&r&&s.jsxs(G,{to:"/admin",className:"inline-flex items-center gap-2 rounded-full bg-ink px-3 py-2 font-mono text-[11px] uppercase tracking-[0.18em] text-paper transition hover:bg-ink/80",children:[s.jsx("span",{className:"grid h-6 w-6 place-items-center rounded-full border border-gold/50",children:s.jsx(PP,{className:"h-3.5 w-3.5 text-gold"})}),"Painel admin"]})]})]}),$&&s.jsxs("button",{type:"button",onClick:()=>b(!0),"aria-label":"Orçar estacionamento",className:"group mx-3 flex min-w-0 flex-1 items-center gap-2 rounded-full border border-ink/10 bg-paper py-1 pl-4 pr-1 text-left shadow-sm md:hidden",children:[s.jsxs("span",{className:"min-w-0 flex-1 truncate text-sm",children:[s.jsx("span",{className:"font-semibold text-ink",children:"Aeroporto"}),s.jsx("span",{className:"text-mute min-[420px]:hidden",children:" · datas"}),s.jsx("span",{className:"hidden text-mute min-[420px]:inline",children:" · entrada · saÃda"})]}),s.jsx("span",{className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-gold text-ink",children:s.jsx(Du,{className:"h-4 w-4"})})]}),s.jsxs(Jte,{open:l,onOpenChange:c,children:[s.jsx(Xte,{asChild:!0,children:s.jsx("button",{type:"button","aria-label":"Abrir menu",className:"inline-flex h-11 w-11 items-center justify-center rounded-full text-ink transition-all hover:bg-ink/5 active:scale-90 md:hidden",children:s.jsx(HL,{className:"h-5 w-5"})})}),s.jsxs(x5,{side:"right",className:"w-[82%] max-w-sm bg-paper text-ink",children:[s.jsx(b5,{children:s.jsx(y5,{className:"font-home-heading text-base font-semibold",children:E(!0)})}),s.jsx(Bd.nav,{className:"mt-10 flex flex-col gap-1",initial:"hidden",animate:"show",variants:{hidden:{},show:{transition:{staggerChildren:.04,delayChildren:.06}}},children:y.map(V=>s.jsx(Bd.div,{variants:{hidden:{opacity:0,x:14},show:{opacity:1,x:0,transition:{duration:uu.base,ease:_h}}},children:s.jsx($b,{to:V.to,className:({isActive:T})=>ne("relative block rounded-md px-3 py-3 font-home-heading text-xl transition-colors active:bg-ink/5",T?"text-ink":"text-mute hover:text-ink"),children:({isActive:T})=>s.jsxs(s.Fragment,{children:[T&&s.jsx(Bd.span,{layoutId:"mobile-nav-bar",className:"absolute left-0 top-2 h-7 w-[2px] rounded-full bg-ink",transition:{duration:uu.base,ease:_h}}),V.label]})})},V.to))}),s.jsxs("div",{className:"mt-10 flex flex-col gap-3 border-t border-ink/10 pt-6",children:[!e&&s.jsx(G,{to:v?"/minhas-reservas?next=wanderlust":"/minhas-reservas",className:"font-mono text-[11px] uppercase tracking-[0.18em] text-mute transition-colors hover:text-ink active:text-ink",children:"Entrar"}),e&&v&&s.jsxs("button",{type:"button",onClick:o,className:"inline-flex items-center gap-2 font-mono text-[11px] uppercase tracking-[0.18em] text-ink",children:[s.jsx(ip,{className:"h-4 w-4"})," Sair"]}),e&&!r&&!v&&s.jsxs("a",{href:v?If():"/minhas-reservas",onClick:()=>{if(v)try{sessionStorage.removeItem("xpark_wanderlust_host")}catch{}},className:"inline-flex items-center gap-2 font-mono text-[11px] uppercase tracking-[0.18em] text-mute transition-colors hover:text-ink active:text-ink",children:[s.jsx(ip,{className:"h-4 w-4"})," Minhas reservas"]}),e&&r&&s.jsxs(G,{to:"/admin",className:"inline-flex items-center justify-center gap-2 rounded-full bg-ink px-4 py-2 font-mono text-[11px] uppercase tracking-[0.18em] text-paper transition-all hover:bg-ink/80 active:scale-[0.97]",children:[s.jsx("span",{className:"grid h-6 w-6 place-items-center rounded-full border border-gold/50",children:s.jsx(PP,{className:"h-3.5 w-3.5 text-gold"})}),"Painel admin"]})]})]})]})]})}),s.jsx("div",{className:"relative z-30",children:s.jsx(Uee,{})}),s.jsx(Zg,{open:g,onOpenChange:b,children:s.jsxs(Am,{className:"w-[calc(100%-1.5rem)] max-h-[82dvh] max-w-4xl overflow-y-auto overscroll-contain rounded-panel border border-border/60 bg-paper p-5 shadow-2xl ring-1 ring-ink/5 sm:w-full sm:rounded-panel sm:p-10 [&>button]:right-5 [&>button]:top-5 [&>button]:rounded-full [&>button]:bg-ink/5 [&>button]:p-2 [&>button]:opacity-100 [&>button:hover]:bg-ink/10",children:[s.jsxs(Em,{className:"pr-10 text-left",children:[s.jsx("span",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground",children:"Comparador xpark"}),s.jsx(_m,{className:"font-home-heading text-2xl text-ink sm:text-3xl",children:"Encontre sua vaga"})]}),s.jsx(C5,{formId:"orcamento-menu"})]})}),s.jsx("main",{className:"relative z-10 flex-1",children:s.jsx(kj,{})}),s.jsxs("footer",{className:"bg-ink text-paper",children:[s.jsxs("div",{className:"container grid gap-12 py-16 lg:grid-cols-12",children:[s.jsxs("div",{className:"lg:col-span-4",children:[s.jsx(fR,{light:!0}),s.jsxs("p",{className:"mt-6 max-w-xs text-base leading-relaxed text-paper/85",children:["Compare estacionamentos com facilidade e"," ",s.jsx("span",{className:"font-semibold text-gold",children:"economize"}),"."]}),s.jsxs("div",{className:"mt-6 flex flex-wrap items-center gap-x-4 gap-y-3",children:[s.jsx("a",{href:"mailto:[email protected]",className:"inline-block text-sm text-paper/80 hover:text-gold",children:"[email protected]"}),s.jsxs(G,{to:"/parceiros",title:"Seja parceiro do xpark",className:"inline-flex items-center gap-2 whitespace-nowrap rounded-[10px] border border-[#
504E7E5E4] bg-white px-3 py-[7px] text-[13px] font-medium leading-none text-ink transition-colors hover:border-ink/30",children:[s.jsx("span",{className:"opacity-70",children:"Seja parceiro"}),s.jsx("img",{src:P5,alt:"xpark",width:59,height:16,loading:"lazy",decoding:"async",className:"block h-4 w-[59px] shrink-0 object-contain"})]})]}),s.jsxs("div",{className:"mt-5 flex flex-wrap items-center gap-x-6 gap-y-3 text-sm text-paper/80",children:[s.jsxs("a",{href:"https://www.instagram.com/xpark.ai/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 transition-colors hover:text-gold","aria-label":"Instagram do xpark (abre em nova aba)",children:[s.jsx(LL,{"aria-hidden":"true",className:"h-5 w-5"})," Instagram"]}),s.jsxs("a",{href:"https://www.linkedin.com/company/xparkbr/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 transition-colors hover:text-gold","aria-label":"LinkedIn do xpark (abre em nova aba)",children:[s.jsx(VL,{"aria-hidden":"true",className:"h-5 w-5"})," LinkedIn"]})]})]}),s.jsx("nav",{"aria-label":"Rodapé",className:"grid grid-cols-2 gap-10 sm:grid-cols-3 lg:col-span-8",children:gae.map(V=>s.jsxs("div",{children:[s.jsx("p",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-paper/50",children:V.title}),s.jsx("ul",{className:"mt-4 space-y-3 text-sm text-paper/75",children:V.links.map(T=>s.jsx("li",{children:s.jsx(G,{to:T.to,className:"transition-colors hover:text-gold",children:T.label})},T.to))})]},V.title))})]}),s.jsx("div",{className:"border-t border-paper/10",children:s.jsxs("div",{className:"container flex flex-col items-start justify-between gap-2 py-6 font-mono text-[10px] uppercase tracking-[0.18em] text-paper/50 md:flex-row md:items-center",children:[s.jsx("span",{children:"© 2026 xpark"}),s.jsx("span",{children:"São Paulo · Brasil"})]})})]})]})}function Wr({value:e,onChange:t,size:a="md",className:o}){const r=a==="lg"?"h-9 w-9":a==="sm"?"h-4 w-4":"h-6 w-6",n=typeof t=="function";return s.jsx("div",{className:ne("flex items-center gap-1",o),role:n?"radiogroup":void 0,children:[1,2,3,4,5].map(i=>{const l=i<=Math.round(e),c=s.jsx(vT,{className:ne(r,l?"fill-tech-accent text-tech-accent":"text-tech-mute/50"),strokeWidth:1.5});return n?s.jsx("button",{type:"button","aria-label":`${i} ${i===1?"estrela":"estrelas"}`,"aria-checked":e===i,role:"radio",onClick:()=>t(i),className:"transition hover:scale-110",children:c},i):s.jsx("span",{children:c},i)})})}const dr={GRU:{path:"/aeroportos/estacionamento-aeroporto-guarulhos/bandeira-park",label:"Bandeira Park · Guarulhos"},VCP:{path:"/aeroportos/estacionamento-aeroporto-viracopos/bandeira-park",label:"Bandeira Park · Viracopos"},CNF:{path:"/aeroportos/estacionamento-aeroporto-confins/bandeira-park",label:"Bandeira Park · Confins"}},Mf={descoberta:"Descoberta",coberta:"Coberta",valet:"Valet"};function xae(e){if(e.length===0)return null;const t=e.reduce((o,r)=>o+Number(r.rating),0)/e.length,a=e.filter(o=>(o.comment??"").trim().length>0);
504return{ratingValue:Math.floor(t*10)/10,ratingCount:e.length,reviewCount:a.length,reviews:a.slice(0,20).map(o=>({rating:Number(o.rating),author:(o.display_name??"").trim()||"Cliente xpark",body:(o.comment??"").trim(),date:o.created_at.slice(0,10)}))}}function bae(){const[e,t]=x.useState(null);return x.useEffect(()=>{let a=!0;return ze.rpc("public_reviews").then(({data:o,error:r})=>{a&&t(r?[]:o??[])}),()=>{a=!1}},[]),e}function ct({children:e,className:t,delay:a=0,as:o="div",stagger:r=!1,staggerMs:n=60}){const i=x.useRef(null),[l,c]=x.useState(!1);x.useEffect(()=>{const u=i.current;if(!u)return;if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){c(!0),r&&u.querySelectorAll("[data-reveal-item]").forEach(p=>{p.style.opacity="1",p.style.transform="none"});return}const h=new IntersectionObserver(([p])=>{p.isIntersecting&&(setTimeout(()=>{c(!0),r&&u.querySelectorAll("[data-reveal-item]").forEach((g,b)=>{g.style.transition="opacity 480ms cubic-bezier(0.22,1,0.36,1), transform 480ms cubic-bezier(0.22,1,0.36,1)",g.style.transitionDelay=`${b*n}ms`,g.style.opacity="1",g.style.transform="translateY(0)"})},a),h.disconnect())},{threshold:0,rootMargin:"0px 0px -10% 0px"});return h.observe(u),r&&u.querySelectorAll("[data-reveal-item]").forEach(p=>{p.style.opacity="0",p.style.transform="translateY(14px)",p.style.willChange="opacity, transform"}),()=>h.disconnect()},[a,r,n]);const d=o;return s.jsx(d,{ref:i,className:ne("transition-all duration-[480ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[opacity,transform]",l?"opacity-100 translate-y-0":"opacity-0 translate-y-3",t),children:e})}function Hv(e){return!e.airport||!dr[e.airport]?null:`${dr[e.airport].label}${e.category?` · ${Mf[e.category]??e.category}`:""}`}function yae({limit:e=4}){const[t,a]=x.useState([]),[o,r]=x.useState(null);if(x.useEffect(()=>{let c=!0;return(async()=>{const{data:d,error:u}=await ze.rpc("public_reviews");if(!c)return;if(u)return a([]);const m=d??[];m.length&&r({avg:m.reduce((p,f)=>p+f.rating,0)/m.length,count:m.length});const h=m.filter(p=>p.comment&&p.comment.trim().length>0);a((h.length?h:m).slice(0,e))})(),()=>{c=!1}},[e]),t.length===0)return null;const[n,...i]=t,l=Hv(n);return s.jsx("section",{className:"border-t border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container grid items-center gap-12 py-16 md:py-24 lg:grid-cols-2 lg:gap-16",children:[s.jsxs(ct,{stagger:!0,children:[s.jsx("p",{"data-reveal-item":!0,className:"font-geist-mono text-[11px] font-bold uppercase tracking-[0.2em] text-gold",children:"Avaliações reais"}),s.jsx("h2",{"data-reveal-item":!0,className:"mt-3 max-w-xl font-home-heading text-3xl font-semibold leading-[1.08] text-tech-fg md:text-[44px]",children:"O que dizem os clientes"}),o?s.jsxs("p",{"data-reveal-item":!0,className:"mt-4 text-base text-tech-mute",children:["Nota média ",o.avg.toFixed(1).replace(".",",")," em ",o.count," avaliações de quem já estacionou."]}):null,s.jsx("ul",{className:"mt-10 space-y-6",children:i.map(c=>s.jsxs("li",{"data-reveal-item":!0,className:"flex gap-4",children:[s.jsx("span",{className:"flex h-11 w-11 shrink-0 items-center justify-center rounded-full bg-gold/15",children:s.jsx(CP,{className:"h-4 w-4 text-gold","aria-hidden":!0})}),s.jsxs("div",{children:[s.jsx(Wr,{value:c.rating,size:"sm"}),c.comment?s.jsxs("p",{className:"mt-1 font-medium text-tech-fg",children:["â",c.comment.trim(),"â"]}):null,s.jsxs("p",{className:"mt-1 text-sm text-tech-mute",children:[c.display_name??"Cliente xpark",Hv(c)&&c.airport?s.jsxs(s.Fragment,{children:[" · ",s.jsx(G,{to:dr[c.airport].path,className:"underline-offset-4 hover:text-tech-fg hover:underline",children:Hv(c)})]}):null]})]})]},c.id))}),s.jsxs(G,{"data-reveal-item":!0,to:"/avaliacoes",className:"group mt-10 inline-flex items-center gap-2 rounded-full bg-ink px-6 py-3 text-sm font-semibold text-paper transition-transform duration-200 motion-safe:hover:-translate-y-0.5",children:["Ver todas as avaliações",s.jsx(aa,{className:"h-4 w-4 transition-transform duration-200 group-hover:translate-x-1","aria-hidden":!0})]})]}),s.jsxs(ct,{delay:120,className:"relative mx-auto w-full max-w-md px-4 py-10 sm:px-8",children:[s.jsxs("article",{className:"rounded-panel border border-tech-border bg-tech-card p-8 shadow-elevated",children:[s.jsx(CP,{className:"h-8 w-8 text-gold","aria-hidden":!0}),s.jsx(Wr,{value:n.rating,size:"sm"}),n.comment?s.jsxs("p",{className:"mt-4 font-home-heading text-2xl font-semibold leading-snug text-tech-fg",children:["â",n.comment.trim(),"â"]}
504):null,s.jsxs("div",{className:"mt-6 flex items-center gap-3 rounded-full bg-tech-bg px-4 py-3",children:[s.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-ink font-semibold text-gold",children:(n.display_name??"C").charAt(0)}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-sm font-semibold text-tech-fg",children:n.display_name??"Cliente xpark"}),l?s.jsx("p",{className:"truncate text-xs text-tech-mute",children:l}):null]})]})]}),o?s.jsxs("div",{className:"absolute -top-1 right-0 flex items-center gap-3 rounded-card border border-tech-border bg-tech-card px-4 py-3 shadow-elevated motion-safe:animate-float-a",children:[s.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-gold/15",children:s.jsx(vT,{className:"h-4 w-4 fill-gold text-gold","aria-hidden":!0})}),s.jsxs("div",{children:[s.jsxs("p",{className:"text-sm font-semibold text-tech-fg",children:[o.avg.toFixed(1).replace(".",",")," de 5"]}),s.jsxs("p",{className:"text-xs text-tech-mute",children:[o.count," avaliações"]})]})]}):null,s.jsxs("div",{className:"absolute -bottom-1 left-0 flex items-center gap-3 rounded-card border border-tech-border bg-tech-card px-4 py-3 shadow-elevated motion-safe:animate-float-b",children:[s.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-gold/15",children:s.jsx(Qs,{className:"h-4 w-4 text-gold","aria-hidden":!0})}),s.jsxs("div",{children:[s.jsx("p",{className:"text-sm font-semibold text-tech-fg",children:"Cliente real"}),s.jsx("p",{className:"text-xs text-tech-mute",children:"Avaliação publicada no xpark"})]})]})]})]})})}const kae={RJ:"Sudeste",ES:"Sudeste",SP:"Sudeste",MG:"Sudeste",PR:"Sul",SC:"Sul",RS:"Sul",DF:"Centro-Oeste",GO:"Centro-Oeste",MS:"Centro-Oeste",MT:"Centro-Oeste",BA:"Nordeste",PE:"Nordeste",CE:"Nordeste",AL:"Nordeste",PB:"Nordeste",PI:"Nordeste"},wae=["Sudeste","Sul","Centro-Oeste","Nordeste"],Cae=["GRU","VCP","CGH","CNF","SDU","GIG","VIX","CWB","POA","LDB","NVT","FLN","BSB","GYN","CGR","CGB","SSA","REC","FOR","MCZ","JPA","THE"],wj=e=>{const t=Cae.indexOf(e);return t===-1?999:t};function S5({title:e,compact:t=!1}){const a=Ht.map(d=>{const u=sl(d.slug),m=u.reduce((p,f)=>Math.min(p,pt(f)),1/0),h=d.state.slice(-2);return{hub:d,uf:h,sold:!d.editorialOnly,count:u.length,min:m,region:kae[h]??"Outras"}}).sort((d,u)=>wj(d.hub.iata)-wj(u.hub.iata)),o=a.reduce((d,u)=>d+u.count,0),r=wae.map(d=>({r:d,items:a.filter(u=>u.region===d)})).filter(d=>d.items.length),n=new Map;r.forEach(({items:d})=>d.forEach(({hub:u})=>n.set(u.slug,n.size)));const i=x.useRef(null),[l,c]=x.useState(!1);return x.useEffect(()=>{const d=i.current;if(!d||window.matchMedia("(prefers-reduced-motion: reduce)").matches){c(!0);return}const u=new IntersectionObserver(m=>{m.some(h=>h.isIntersecting)&&(c(!0),u.disconnect())},{rootMargin:"0px 0px -10% 0px"});return u.observe(d),()=>u.disconnect()},[]),s.jsxs("div",{children:[s.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-end md:justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-semibold uppercase text-gold-dark",children:"Comparativo nacional"}),s.jsx("h2",{className:"mt-2 font-home-heading text-[26px] font-bold text-ink sm:text-3xl md:text-[40px]",children:e??`Estacionamentos em ${a.length} aeroportos do Brasil`})]}),s.jsxs("p",{className:"max-w-md text-sm text-mute",children:["O xpark compara os preços de ",a.length," aeroportos e de ",o," estacionamentos no Brasil."]})]}),s.jsx("div",{ref:i,className:t?"mt-8 space-y-7":"mt-10 space-y-10",children:r.map(({r:d,items:u})=>s.jsxs("div",{"data-reveal-item":!0,children:[s.jsx("p",{className:"mb-3 border-b border-border pb-2 font-mono text-[11px] uppercase tracking-[0.18em] text-mute",children:d}),s.jsx("ul",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4",children:u.map(({hub:m,uf:h,sold:p,count:f,min:g})=>s.jsx("li",{"data-reveal-item":!0,style:{transitionDelay:l?`${(n.get(m.slug)??0)*60}ms`:"0ms"},className:`transition-[opacity,transform] duration-500 ease-out motion-reduce:transition-none ${l?"translate-y-0 opacity-100":"translate-y-3 op
504acity-0"}`,children:s.jsxs(G,{to:`/aeroportos/${m.slug}`,className:"group flex h-full items-center gap-4 rounded-card border border-border bg-paper p-4 transition hover:-translate-y-0.5 hover:border-ink/40 hover:shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-gold",children:[s.jsx("span",{className:"grid h-12 w-12 shrink-0 place-items-center rounded-full bg-ink font-mono text-xs font-bold text-gold",children:m.iata}),s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("span",{className:"block truncate font-home-heading text-base font-semibold text-ink",children:m.displayCity??m.city}),s.jsxs("span",{className:"block text-xs text-mute",children:[f," ",f===1?"estacionamento":"estacionamentos"," · ",h]}),s.jsx("span",{className:"mt-1 block text-xs font-semibold text-ink",children:Number.isFinite(g)?`a partir de ${X(g)}/dia`:"preço não divulgado"}),p&&s.jsx("span",{className:"mt-1.5 inline-block rounded-full bg-gold px-2 py-0.5 text-[10px] font-bold uppercase tracking-wide text-ink",children:"Reserva no xpark"})]}),s.jsx(zr,{className:"h-4 w-4 shrink-0 text-mute transition group-hover:text-ink"})]})},m.slug))})]},d))})]})}const Pae=new Set(["/","/como-funciona","/aeroportos","/guias","/planos","/parceiros","/metodologia","/estacionamento-de-aeroporto-e-seguro","/politica-cancelamento","/quem-somos","/avaliacoes","/indice-de-precos","/calculadora-estacionamento-aeroporto","/uber-ou-estacionamento-aeroporto","/estacionamento-mais-barato-guarulhos","/estacionamento-mais-barato-viracopos","/estacionamento-mais-barato-confins","/faq","/privacidade","/wanderlust"]),Sae=[/^\/aeroportos\/[^/]+$/,/^\/aeroportos\/[^/]+\/[^/]+$/,/^\/[^/]+$/,/^\/faq\/[^/]+$/,/^\/(blog|historias)\/[^/]+$/,/^\/(auth\/parceiros|viajante\/sair)$/,/^\/assinar\/[^/]+$/,/^\/wanderlust\/[^/]+(\/[^/]+)?$/];function Rae(e){const t=e.length>1?e.replace(/\/$/,""):e;return Pae.has(t)?!0:Sae.some(a=>a.test(t))}const Cj="https://www.xpark.ai";function Ye({title:e,description:t,path:a,type:o="website",image:r,jsonLd:n,noindex:i,canonicalPath:l}){const c=`${Cj}${a}`,d=typeof window<"u"?window.location.pathname:a,m=Rae(d)?[]:Array.isArray(n)?n:n?[n]:[];return s.jsxs(y1,{children:[s.jsx("title",{children:e}),s.jsx("meta",{name:"description",content:t}),s.jsx("link",{rel:"canonical",href:l?`${Cj}${l}`:c}),i&&s.jsx("meta",{name:"robots",content:"noindex, follow"}),s.jsx("meta",{property:"og:title",content:e}),s.jsx("meta",{property:"og:description",content:t}),s.jsx("meta",{property:"og:url",content:c}),s.jsx("meta",{property:"og:type",content:o}),r&&s.jsx("meta",{property:"og:image",content:r}),s.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),s.jsx("meta",{name:"twitter:title",content:e}),s.jsx("meta",{name:"twitter:description",content:t}),r&&s.jsx("meta",{name:"twitter:image",content:r}),m.map((h,p)=>s.jsx("script",{type:"application/ld+json",children:JSON.stringify(h)},p))]})}const Nd="https://www.xpark.ai",jae=new Set(Ht.map(e=>e.iata)),Lf={destinations:Ht.length,parkingLots:Kt.filter(e=>jae.has(e.iata)).length,states:new Set(Ht.map(e=>{var t;return((t=e.state.match(/\b[A-Z]{2}$/))==null?void 0:t[0])??e.state}).filter(e=>e!=="DF")).size,hasFederalDistrict:Ht.some(e=>e.state==="DF")},Es=`${Lf.parkingLots} estacionamentos em ${Lf.destinations} destinos`,R5={"@context":"https://schema.org","@type":"Organization","@id":`${Nd}/#organization`,name:"xpark",alternateName:["xpark.ai","Xpark"],url:`${Nd}/`,logo:{"@type":"ImageObject","@id":`${Nd}/#logo`,url:`${Nd}/favicon.png`,contentUrl:`${Nd}/favicon.png`,width:96,height:96,caption:"xpark"},description:`O xpark é o comparador de estacionamentos do Brasil. Compara preço, segurança e traslado em aeroportos, terminais rodoviários e outros pontos de alta demanda. Hoje compara ${Es}, em ${Lf.states} estados${Lf.hasFederalDistrict?" e no Distrito Federal":""}, com metodologia pública e fontes identificadas.`,email:"[email protected]",sameAs:["https://www.instagram.com/xpark.ai/","https://www.linkedin.com/company/xparkbr/"],contactPoint:{"@type":"ContactPoint",contactType:"customer support",email:"[email protected]",availableLanguage:"pt-BR"},areaServed:{"@type":"Country",name:"Brasil"},knowsAbout:["estacionamento de aeroporto","comparação de preços de estacionamento","reserva antecipada de estacionamento","traslado até o terminal","segurança de estacionamento de aeroporto","estacionamento de longa permanência","estacionamento em terminais rodoviários","estacionamento em pontos de alta demanda"]},j5="/assets/xpark-hero-Cnx82aRc.webp",Nae="/assets/discovery-card-Xwwqg60R.webp",Aae="/assets/covered-card-DlK2uBeW.webp",Eae="/assets/valet-card-SEf24TLA.webp",_ae="/assets/gru-card-BDV_4msj.webp",Tae="/assets/vcp-card-Dx_y7jgb.webp",$ae="/assets/cnf-card-BtrxnM6X.webp";var a0="Collapsible",[Oae,N5]=Ks(a0),[qae,Lk]=Oae(a0),A5=x.forwardRef((e,t)=>
vendor: 4,276 bytes, line 504
504{const{__scopeCollapsible:a,open:o,defaultOpen:r,disabled:n,onOpenChange:i,...l}=e,[c,d]=td({prop:o,defaultProp:r??!1,onChange:i,caller:a0});return s.jsx(qae,{scope:a,disabled:n,contentId:nu(),open:c,onOpenToggle:x.useCallback(()=>d(u=>!u),[d]),children:s.jsx(yt.div,{"data-state":Vk(c),"data-disabled":n?"":void 0,...l,ref:t})})});A5.displayName=a0;var E5="CollapsibleTrigger",_5=x.forwardRef((e,t)=>{const{__scopeCollapsible:a,...o}=e,r=Lk(E5,a);return s.jsx(yt.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":Vk(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...o,ref:t,onClick:gt(e.onClick,r.onOpenToggle)})});_5.displayName=E5;var Bk="CollapsibleContent",T5=x.forwardRef((e,t)=>{const{forceMount:a,...o}=e,r=Lk(Bk,e.__scopeCollapsible);return s.jsx(rl,{present:a||r.open,children:({present:n})=>s.jsx(Dae,{...o,ref:t,present:n})})});T5.displayName=Bk;var Dae=x.forwardRef((e,t)=>{const{__scopeCollapsible:a,present:o,children:r,...n}=e,i=Lk(Bk,a),[l,c]=x.useState(o),d=x.useRef(null),u=la(t,d),m=x.useRef(0),h=m.current,p=x.useRef(0),f=p.current,g=i.open||l,b=x.useRef(g),v=x.useRef(void 0);return x.useEffect(()=>{const y=requestAnimationFrame(()=>b.current=!1);return()=>cancelAnimationFrame(y)},[]),Zr(()=>{const y=d.current;if(y){v.current=v.current||{transitionDuration:y.style.transitionDuration,animationName:y.style.animationName},y.style.transitionDuration="0s",y.style.animationName="none";const k=y.getBoundingClientRect();m.current=k.height,p.current=k.width,b.current||(y.style.transitionDuration=v.current.transitionDuration,y.style.animationName=v.current.animationName),c(o)}},[i.open,o]),s.jsx(yt.div,{"data-state":Vk(i.open),"data-disabled":i.disabled?"":void 0,id:i.contentId,hidden:!g,...n,ref:u,style:{"--radix-collapsible-content-height":h?`${h}px`:void 0,"--radix-collapsible-content-width":f?`${f}px`:void 0,...e.style},children:g&&r})});function Vk(e){return e?"open":"closed"}var Iae=A5,Mae=_5,Lae=T5,Bae=x.createContext(void 0);function Vae(e){const t=x.useContext(Bae);return e||t||"ltr"}var Er="Accordion",Fae=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Fk,Uae,Gae]=$3(Er),[o0,t0e]=Ks(Er,[Gae,N5]),Uk=N5(),$5=Q.forwardRef((e,t)=>{const{type:a,...o}=e,r=o,n=o;return s.jsx(Fk.Provider,{scope:e.__scopeAccordion,children:a==="multiple"?s.jsx(Qae,{...n,ref:t}):s.jsx(Kae,{...r,ref:t})})});$5.displayName=Er;var[O5,zae]=o0(Er),[q5,Hae]=o0(Er,{collapsible:!1}),Kae=Q.forwardRef((e,t)=>{const{value:a,defaultValue:o,onValueChange:r=()=>{},collapsible:n=!1,...i}=e,[l,c]=td({prop:a,defaultProp:o??"",onChange:r,caller:Er});return s.jsx(O5,{scope:e.__scopeAccordion,value:Q.useMemo(()=>l?[l]:[],[l]),onItemOpen:c,onItemClose:Q.useCallback(()=>n&&c(""),[n,c]),children:s.jsx(q5,{scope:e.__scopeAccordion,collapsible:n,children:s.jsx(D5,{...i,ref:t})})})}),Qae=Q.forwardRef((e,t)=>{const{value:a,defaultValue:o,onValueChange:r=()=>{},...n}=e,[i,l]=td({prop:a,defaultProp:o??[],onChange:r,caller:Er}),c=Q.useCallback(u=>l((m=[])=>[...m,u]),[l]),d=Q.useCallback(u=>l((m=[])=>m.filter(h=>h!==u)),[l]);return s.jsx(O5,{scope:e.__scopeAccordion,value:i,onItemOpen:c,onItemClose:d,children:s.jsx(q5,{scope:e.__scopeAccordion,collapsible:!0,children:s.jsx(D5,{...n,ref:t})})})}),[Wae,r0]=o0(Er),D5=Q.forwardRef((e,t)=>{const{__scopeAccordion:a,disabled:o,dir:r,orientation:n="vertical",...i}=e,l=Q.useRef(null),c=la(l,t),d=Uae(a),m=Vae(r)==="ltr",h=gt(e.onKeyDown,p=>{var N;if(!Fae.includes(p.key))return;const f=p.target,g=d().filter(E=>{var A;return!((A=E.ref.current)!=null&&A.disabled)}),b=g.findIndex(E=>E.ref.current===f),v=g.length;if(b===-1)return;p.preventDefault();let y=b;const k=0,w=v-1,R=()=>{y=b+1,y>w&&(y=k)},C=()=>{y=b-1,y<k&&(y=w)};switch(p.key){case"Home":y=k;break;case"End":y=w;break;case"ArrowRight":n==="horizontal"&&(m?R():C());break;case"ArrowDown":n==="vertical"&&R();break;case"ArrowLeft":n==="horizontal"&&(m?C():R());break;case"ArrowUp":n==="vertical"&&C();break}const P=y%v;(N=g[P].ref.current)==null||N.focus()});return s.jsx(Wae,{scope:a,disabled:o,direction:r,orientation:n,children:s.jsx(Fk.Slot,{scope:a,children:s.jsx(yt.div,{...i,"data-orientation":n,ref:c,onKeyDown:o?void 0:h})})})}),Bf="AccordionItem",[Jae,Gk]=o0(Bf),I5=Q.forwardRef((e,t)=>
504{const{__scopeAccordion:a,value:o,...r}=e,n=r0(Bf,a),i=zae(Bf,a),l=Uk(a),c=nu(),d=o&&i.value.includes(o)||!1,u=n.disabled||e.disabled;return s.jsx(Jae,{scope:a,open:d,disabled:u,triggerId:c,children:s.jsx(Iae,{"data-orientation":n.orientation,"data-state":U5(d),...l,...r,ref:t,disabled:u,open:d,onOpenChange:m=>{m?i.onItemOpen(o):i.onItemClose(o)}})})});I5.displayName=Bf;var M5="AccordionHeader",L5=Q.forwardRef((e,t)=>{const{__scopeAccordion:a,...o}=e,r=r0(Er,a),n=Gk(M5,a);return s.jsx(yt.h3,{"data-orientation":r.orientation,"data-state":U5(n.open),"data-disabled":n.disabled?"":void 0,...o,ref:t})});L5.displayName=M5;var zy="AccordionTrigger",B5=Q.forwardRef((e,t)=>{const{__scopeAccordion:a,...o}=e,r=r0(Er,a),n=Gk(zy,a),i=Hae(zy,a),l=Uk(a);return s.jsx(Fk.ItemSlot,{scope:a,children:s.jsx(Mae,{"aria-disabled":n.open&&!i.collapsible||void 0,"data-orientation":r.orientation,id:n.triggerId,...l,...o,ref:t})})});B5.displayName=zy;var V5="AccordionContent",F5=Q.forwardRef((e,t)=>{const{__scopeAccordion:a,...o}=e,r=r0(Er,a),n=Gk(V5,a),i=Uk(a);return s.jsx(Lae,{role:"region","aria-labelledby":n.triggerId,"data-orientation":r.orientation,...i,...o,ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});F5.displayName=V5;function U5(e){return e?"open":"closed"}var Xae=$5,Yae=I5,Zae=L5,G5=B5,z5=F5;const zk=Xae,n0=x.forwardRef(({className:e,...t},a)=>s.jsx(Yae,{ref:a,className:ne("border-b",e),...t}));n0.displayName="AccordionItem";const s0=x.forwardRef(({className:e,children:t,...a},o)=>s.jsx(Zae,{className:"flex",children:s.jsxs(G5,{ref:o,className:ne("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",e),...a,children:[t,s.jsx(TL,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));s0.displayName=G5.displayName;const i0=x.forwardRef(({className:e,children:t,...a},o)=>s.jsx(z5,{ref:o,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...a,children:s.jsx("div",{className:ne("pb-4 pt-0",e),children:t})}));i0.displayName=z5.displayName;const eoe=["GRU","VCP","CNF","CGH"],Pj=1,Kv=60;function _p(e){return Math.round(e*100)/100}function H5(e){if(e.perDay==null)return null;const t=e.label,a=/(\d+)\s*[ªº]?\s*a\s*(\d+)/i.exec(t);if(a)return{minDays:Number(a[1]),maxDays:Number(a[2]),perDay:e.perDay,label:t,note:e.note,originalPerDay:e.originalPerDay,isTier:!0};const o=/a\s*partir\s*da\s*(\d+)/i.exec(t);if(o)return{minDays:Number(o[1]),perDay:e.perDay,label:t,note:e.note,isTier:!0};const r=/(\d+)\s*\+\s*dias?/i.exec(t);if(r)return{minDays:Number(r[1]),perDay:e.perDay,label:t,note:e.note,isTier:!1};const n=/(\d+)\s*di[aá]r?i?a?s?/i.exec(t);return n?{minDays:Number(n[1]),perDay:e.perDay,label:t,note:e.note,isTier:!1}:/semanal|semana|pacote\s*7/i.test(t)?{minDays:7,perDay:e.perDay,label:t,note:e.note,isTier:!1}:/mensal|longa/i.test(t)?{minDays:30,perDay:e.perDay,label:t,note:e.note,isTier:!1}:/hora\s*adicional/i.test(t)?null:{minDays:1,perDay:e.perDay,label:t,note:e.note,originalPerDay:e.originalPerDay,isTier:!1}}function Sj(e,t){const a=e.priceRows.filter(i=>{const l=H5(i);return l!=null&&t>=l.minDays&&(l.maxDays==null||t<=l.maxDays)}),o=a.find(i=>/online|reserva/i.test(i.label)||/online/i.test(i.note??"")),r=a.find(i=>/balc[ãa]o/i.test(i.label)||/avulsa/i.test(i.label)||/^di[aá]ria$/i.test(i.label.trim()));if(!o||!r||o.perDay==null||r.perDay==null||o.perDay>=r.perDay)return;const n=Math.round((r.perDay-o.perDay)/r.perDay*100);return{balcaoDaily:r.perDay,onlineDaily:o.perDay,savingsPct:n}}function l0(e,t){var h;if(nl(e)||e.undisclosedFrom&&t>=e.undisclosedFrom.minDays)return null;if(e.totalForDays){const p=e.totalForDays(t);if(p==null)return null;const f=e.priceRows.find(g=>{const b=/(\d+)\s*a\s*(\d+)/.exec(g.label),v=/(\d+)\+/.exec(g.label);return b?t>=+b[1]&&t<=+b[2]:v?t>=+v[1]:!1});return{perDay:Math.round(p/t*100)/100,total:p,label:(f==null?void 0:f.label)??"diária",note:e.totalNote??(e.slug.startsWith("bandeira-park")?"com cupom XPK26":void 0),originalPerDay:f==null?void 0:f.originalPerDay,tiered:!1}}const a=e.priceRows.map(H5).filter(p=>p!=null);if(a.length===0)return null;if(a.some(p=>p.isTier)){let p=0;const f=[];for(let y=1;y<=t;y++){const k=a.filter(R=>y>=R.minDays&&(R.maxDays==null||y<=R.maxDays));if(k.length===0)return null;const w=k.reduce((R,C)=>R.perDay<C.perDay?R:C);p+=w.perDay,f.includes(w)||f.push(w)}p=_p(p);const g=f[f.length-1],b=_p(p/t),v=f.length>1;return{perDay:b,total:p,label:g.label,note:v?"tarifa progressiva":g.note??void 0,originalPerDay:g.originalPerDay,tiered:v,onlineSavings:Sj(e,t)}}let r=a.filter(p=>t>=p.minDays);if(r.length===0&&(r=a.filter(p=>p.minDays===1)),r.length===0)return null;const n=r.reduce((p,f)=>f.minDays>p?f.minDays:p,0),l=r.filter(p=>p.minDays===n).reduce((p,f)=>p.perDay<f.perDay?p:f),c=_p(l.perDay*t),d=(h=e.priceRows.find(p=>p.label===l.label))==null?void 0:h.total,u=d!=null&&Math.abs(d-c)<=c*.02,m=t===l.minDays&&u?d:c;return{perDay:_p(m/t),total:m,label:l.label,note:l.note,originalPerDay:l.originalPerDay,tiered:!1,onlineSavings:Sj(e,t)}}function Tm(e,t,a=Kt){const o=a.filter(r=>r.iata===e).map(r=>({operator:r,estimate:l0(r,t)}));return o.sort((r,n)=>r.estimate==null&&n.estimate==null?r.operator.name.localeCompare(n.operator.name,"pt-BR"):r.estimate==null?1:n.estimate==null?-1:r.estimate.total-n.estimate.total),o}function K5(e,t=Kt){const a=t.filter(o=>o.iata===e).map(o=>o.dataColeta).sort();return a[a.length-1]??""}function io(e){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);return t?`${t[3]}/${t[2]}/${t[1]}`:e}const Gd={title:"Calculadora de estacionamento: compare custos e diárias | xpark",description:"Descubra em segundos o preço total para estacionar de 1 a 60 dias em Guarulhos, Viracopos, Confins ou Congonhas, com condições de cada operadora e economia da reserva online.",path:"/calculadora-estacionamento-aeroporto",h1:"Quanto custa estacionar no aeroporto? Calculadora xpark"},toe=[{iata:"GRU",days:7},{iata:"VCP",days:14},{iata:"CNF",days:30}];function aoe(e,t){const a=Tm(e,t).filter(n=>n.estimate!=null);if(a.length<2)return null;const o=a[0],r=a[a.length-1];return{iata:e,days:t,minTotal:o.estimate.total,maxTotal:r.estimate.total,minOperator:o.operator.name,maxOperator:r.operator.name}}function ooe(e){return`${e.days} dias em ${e.iata}: de ${X(e.minTotal)} (${e.minOperator}) a ${X(e.maxTotal)} (${e.maxOperator}).`}const Q5=[{q:"Como o xpark calcula o preço para N dias?",a:"Aplicamos a faixa de preço vigente da operadora para o perÃodo informado (diária avulsa, 7 dias, 17 dias, 30 dias ou plano de longa estadia), sempre a partir da tabela oficial coletada no canal da operadora. Quando a tabela é progressiva (por exemplo, uma diária cheia nos primeiros dias e uma tarifa reduzida a partir da quinta), somamos dia a dia."},{q:"Por que o preço por dia muda conforme o número de dias?",a:"A maioria das o
504peradoras reduz a diária em pacotes longos: 7 dias sai por menos que 7 diárias avulsas, e 30 dias sai por menos ainda. Um mesmo estacionamento pode ser o mais caro em 1 diária e o mais barato em 30 dias, dependendo da estrutura de descontos publicada."},{q:"Reservar online é mesmo mais barato?",a:"Sim, na maioria dos casos. Operadoras como Urban Park e Estapar (VCP oficial) praticam tarifa online significativamente menor que a de balcão. Nas linhas em que a diferença é conhecida, a calculadora exibe a economia percentual da reserva online."},{q:"Os valores incluem o traslado até o terminal?",a:"Sim, quando a operadora informa traslado gratuito, ele já está embutido na diária publicada. Estacionamentos dentro do aeroporto (acesso a pé ou por passarela) não usam van. A ficha de cada operadora detalha o modelo de traslado."}];function roe(e="https://www.xpark.ai"){const t=`${e}${Gd.path}`,a={"@context":"https://schema.org","@type":"WebPage","@id":`${t}#app`,name:"Calculadora de estacionamento de aeroporto xpark",url:t,inLanguage:"pt-BR",isAccessibleForFree:!0,creator:{"@id":`${e}/#organization`},about:[{"@type":"Place",name:to.GRU},{"@type":"Place",name:to.VCP},{"@type":"Place",name:to.CNF}]},o={"@context":"https://schema.org","@type":"FAQPage","@id":`${t}#faq`,mainEntity:Q5.map(n=>
504({"@type":"Question",name:n.q,acceptedAnswer:{"@type":"Answer",text:n.a}}))},r={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"xpark",item:`${e}/`},{"@type":"ListItem",position:2,name:"Calculadora",item:t}]};return[a,o,r]}const Qi={GRU:{lat:-23.4254,lng:-46.482,label:"Terminal 2 (principal)",source:"fromto.travel e adistanciaentre.com (Terminal 2)"},VCP:{lat:-23.0072,lng:-47.1344,label:"terminal de passageiros",source:"Wikidata Q381653 (ponto de referência do aeroporto, junto ao terminal)"},CNF:{lat:-19.6322,lng:-43.9631,label:"terminal de passageiros",source:"Wikimapia (terminal de passageiros de Confins)"},CGH:{lat:-23.62526,lng:-46.66053,label:"terminal de passageiros",source:"OpenStreetMap way/96494374"},SDU:{lat:-22.9105,lng:-43.1631,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q865475 : coordenada geral do aeroporto, terminal não confirmado"},GIG:{lat:-22.81096,lng:-43.25234,label:"Terminal 1",source:"OpenStreetMap way/224637843"},CWB:{lat:-25.53676,lng:-49.1727,label:"terminal de passageiros",source:"OpenStreetMap relation/6289769"},BSB:{lat:-15.87007,lng:-47.92108,label:"Terminal 1",source:"OpenStreetMap relation/20775905"},POA:{lat:-29.9944,lng:-51.1714,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q1432702 : coordenada geral do aeroporto, terminal não confirmado"},MCZ:{lat:-9.51486,lng:-35.79252,label:"terminal de passageiros",source:"OpenStreetMap way/263440513"},JPA:{lat:-7.1458,lng:-34.9486,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q2876050 : coordenada geral do aeroporto, terminal não confirmado"},LDB:{lat:-23.3336,lng:-51.1301,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q3308198 : coordenada geral do aeroporto, terminal não confirmado"},REC:{lat:-8.1265,lng:-34.9236,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q387704 : coordenada geral do aeroporto, terminal não confirmado"},NVT:{lat:-26.88048,lng:-48.64893,label:"terminal de passageiros",source:"OpenStreetMap way/424906014"},SSA:{lat:-12.91444,lng:-38.33458,label:"terminal de passageiros",source:"OpenStreetMap way/12331795"},FOR:{lat:-3.77899,lng:-38.53948,label:"terminal de passageiros",source:"OpenStreetMap relation/19955515"},FLN:{lat:-27.67356,lng:-48.54576,label:"terminal de passageiros",source:"OpenStreetMap way/628144667"},GYN:{lat:-16.632,lng:-49.2207,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q2661286 : coordenada geral do aeroporto, terminal não confirmado"},VIX:{lat:-20.26557,lng:-40.2824,label:"terminal de passageiros",source:"OpenStreetMap way/552430814"},CGR:{lat:-20.45734,lng:-54.66928,label:"terminal de passageiros",source:"OpenStreetMap way/154893627"},THE:{lat:-5.0599,lng:-42.8235,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q3312799 : coordenada geral do aeroporto, terminal não confirmado"},CGB:{lat:-15.6529,lng:-56.1167,label:"coordenada aproximada do aeroporto",approx:!0,source:"Wikidata Q1030919 : coordenada geral do aeroporto, terminal não confirmado"}},noe={GRU:{lat:-23.435555555,lng:-46.473055555},VCP:{lat:-23.006944444,lng:-47.134444444},CNF:{lat:-19.623888888,lng:-43.971388888},CGH:{lat:-23.62611,lng:-46.65639},SDU:{lat:-22.91,lng:-43.1625},GIG:{lat:-22.81,lng:-43.250555555},CWB:{lat:-25.531666666,lng:-49.176111111},BSB:{lat:-15.871111111,lng:-47.918611111},POA:{lat:-29.993888888,lng:-51.171111111},MCZ:{lat:-9.517222222,lng:-35.783611111},JPA:{lat:-7.145833333,lng:-34.948611111},LDB:{lat:-23.33028,lng:-51.13667},REC:{lat:-8.126388888,lng:-34.922777777},NVT:{lat:-26.88,lng:-48.651388888},SSA:{lat:-12.90861,lng:-38.3225},FOR:{lat:-3.775833333,lng:-38.532222222},FLN:{lat:-27.670277777,lng:-48.5525},GYN:{lat:-16.62972,lng:-49.22667},VIX:{lat:-20.258055555,lng:-40.286388888},CGR:{lat:-20.469444444,lng:-54.670277777},THE:{lat:-5.06056,lng:-42.82444},CGB:{lat:-15.65,lng:-56.1175}};function W5(e,t){const o=l=>l*Math.PI/180,r=o(t.lat-e.lat),n=o(t.lng-e.lng),i=Math.sin(r/2)**2+Math.cos(o(e.lat))*Math.cos(o(t.lat))*Math.sin(n/2)**2;return 2*6371*Math.asin(Math.sqrt(i))}const il="dentro do aeroporto, junto ao terminal";function wo(e){const t=noe[e.iata];return!e.geo||!t||!/oficial/i.test(`${e.slug??""} ${e.name??""}`)?!1:W5(e.geo,t)<=.3}function ln(e){const t=Qi[e.iata];if(!e.geo||!t||wo(e))return null;const a=W5(e.geo,t);return Math.max(.1,Math.round(a*10)/10)}const J5="distância não informada";function Hk(e){var a;if(wo(e))return il;const t=ln(e);return t==null?J5:(a=Qi[e.iata])!=null&&a.approx?`${t.toLocaleStr
504ing("pt-BR")} km em linha reta até o aeroporto (coordenada aproximada)`:`${t.toLocaleString("pt-BR")} km em linha reta até o terminal`}function ao(e){return wo(e)?0:ln(e)??1/0}function Wi(e){var a;if(wo(e))return il;const t=ln(e);return t==null?J5:`${t.toLocaleString("pt-BR")} km em linha reta${(a=Qi[e.iata])!=null&&a.approx?" (coordenada aproximada do aeroporto)":""}`}function X5(e){let t=null;for(const a of e)Number.isFinite(ao(a))&&(!t||ao(a)<ao(t))&&(t=a);return t}function Y5(e){var o;const t=X5(e);if(!t)return null;if(wo(t))return`o mais perto fica ${il}`;const a=ln(t);return(o=Qi[t.iata])!=null&&o.approx?`o mais perto fica a ${a.toLocaleString("pt-BR")} km em linha reta do aeroporto (coordenada aproximada)`:`o mais perto fica a ${a.toLocaleString("pt-BR")} km em linha reta do terminal`}const Vf=[1,7,15,30],Di=7,soe=2,ioe="https://creativecommons.org/licenses/by/4.0/",loe=[{slug:"estacionamento-aeroporto-guarulhos",iata:"GRU",short:"Guarulhos",name:to.GRU,sold:!0},{slug:"estacionamento-aeroporto-viracopos",iata:"VCP",short:"Viracopos",name:to.VCP,sold:!0},{slug:"estacionamento-aeroporto-congonhas",iata:"CGH",short:"Congonhas",name:to.CGH,sold:!0},{slug:"estacionamento-aeroporto-confins",iata:"CNF",short:"Confins",name:to.CNF,sold:!0}],Ln=[...loe,...$k.map(e=>({slug:e.slug,iata:e.iata,short:e.h1.replace(/^Estacionamento no Aeroporto (de |do |da )?/i,"").trim(),name:to[e.iata],sold:!1}))];function coe(e){return Ln.find(t=>t.slug===e)}function doe(e){return Ln.find(t=>t.iata===e)}const ll=e=>`/aeroportos/${e}/precos`,Z5=e=>`/aeroportos/${e}/precos.json`,c0=e=>`/estacionamento-mais-barato-${e.replace(/^estacionamento-aeroporto-/,"")}`,eO={painel_parceira:"painel da parceira",tabela_oficial_operadora:"tabela oficial da operadora",levantamento_terceiro:"levantamento de terceiro"};function uoe(e){return e.bookable?"painel_parceira":/terceiro/i.test(e.fonteCitacao)?"levantamento_terceiro":"tabela_oficial_operadora"}function tO(e){const t=e.coverage==="coberto"?"Coberta":e.coverage==="descoberto"?"Descoberta":e.coverage==="ambos"?"Coberta e descoberta":null;return t?e.valet?`${t}, com valet`:t:e.valet?"Valet":"Não informado"}function moe(e,t){var n;const a=l0(e,t);if(!a)return{days:t,total:null,perDay:null,balcaoPerDay:null};const o=((n=a.onlineSavings)==null?void 0:n.balcaoDaily)??a.originalPerDay??null,r=poe(e,t,a.total);return{days:t,total:a.total,perDay:a.perDay,balcaoPerDay:o&&o>a.perDay?o:null,fullTotal:r,fullPerDay:r!=null?Math.round(r/t*100)/100:null}}function poe(e,t,a){if(!e.bookable||!/bandeira/i.test(e.slug))return null;const o=e.iata;try{const r=je(At(o,o==="CGH"?"coberta":void 0),t);return Math.abs(zt(r)-a)<=.1?r:null}catch{return null}}const Rj=new Map;function Ta(e){const t=Rj.get(e);if(t)return t;const a=coe(e);if(!a)return null;const o=Kt.filter(p=>p.hubSlug===e),r=[],n=[],i=[];for(const p of o){nl(p)&&p.priceRows.some(g=>g.perDay!=null)&&i.push(p);const f=Vf.map(g=>moe(p,g));if(f.every(g=>g.total==null)){n.push(p);continue}r.push({operator:p,partner:p.bookable,vaga:tO(p),cells:f,sourceType:uoe(p),dataColeta:p.dataColeta,dataColetaBR:io(p.dataColeta),condition:f.some(g=>g.fullTotal!=null)?"com cupom XPK26":void 0})}const l=(p,f)=>{var g;return((g=p.cells.find(b=>b.days===f))==null?void 0:g.total)??null};r.sort((p,f)=>{const g=l(p,Di),b=l(f,Di);return g==null&&b==null?p.operator.name.localeCompare(f.operator.name,"pt-BR"):g==null?1:b==null?-1:g-b});const c=Vf.map(p=>{let f=null;for(const b of r){const v=l(b,p);v!=null&&(f==null||v<l(f,p))&&(f=b)}if(!f)return{days:p,line:null,total:null,perDay:null};const g=f.cells.find(b=>b.days===p);return{days:p,line:f,total:g.total,perDay:g.perDay}}),d=r.map(p=>l(p,Di)).filter(p=>p!=null),u=d.length?{min:Math.min(...d),max:Math.max(...d),count:d.length}:null,m=r.map(p=>p.dataColeta).sort().pop()??null,h={hub:a,operators:o,lines:r,unpriced:n,stale:i,best:c,ref:u,latestColeta:m,hasPricePage:r.length>=soe};return Rj.set(e,h),h}function hoe(){return Ln.map(e=>Ta(e.slug)).filter(e=>e.hasPricePage)}const foe=60,jj=155;function Zu(e){return e.find(t=>t.length<=foe)??e[e.length-1]}function em(e){return e.find(t=>t.length<=jj)??e[e.length-1].slice(0,jj)}function goe(e,t){return e.iata==="CGH"?"com acesso a pé":t.operators.some(a=>{var o;return(o=a.transfer)==null?void 0:o.included})?"com traslado":"com distância até o terminal"}function voe(e){const t=Ta(e);if(!t||!t.ref)return null;const{hub:a,ref:o}=t;if(a.iata==="CNF")return{title:"Estacionamento Confins (CNF): compare opções | xpark",description:`Compare ${t.operators.length} estacionamentos em Confins: oficial e privados, cobertura, traslado e preços de 1 a 30 dias com fonte e data no Ãndice xpark de Preços.`};if(a.iata==="GRU")return{title:"Estacionamento Guarulhos (GRU): perto do aeroporto | xpark",description:`Compare ${t.operators.length} estacionamentos perto do Aeroporto de Guarulhos: oficial e privados, traslado para os Terminais 1, 2 e 3 e preços de 1 a 30 dias no Ãndice xpark de Preços.`};if(a.iata==="VCP")return{title:"Estacionamento Viracopos (VCP): compare opções | xpark",description:`Compare ${t.operators.length} estacionamentos em Viracopos, Campinas: oficial e privados, traslado, vaga coberta e preços de 1 a 30 dias no Ãndice xpark de Preços.`};if(a.iata==="CGH")return{title:"Estacionamento Congonhas (CGH): próximo ao aeroporto | xpark",description:`Compare ${t.operators.length} estacionamentos próximos ao Aeroporto de Congonhas: vaga coberta, acesso a pé ao terminal e preços de 1 a 30 dias com fonte e data no Ãndice xpark de Preços.`};const r=X(o.min),n=io(t.latestColeta),i=t.operators.length,l=a.sold?"Compare e reserve no xpark.":"Compare no xpark.";return{title:Zu([`Estacionamento Aeroporto ${a.short}: 7 dias desde ${r}`,`Estacionamento ${a.short}: 7 dias desde ${r}`,`Estacionamento ${a.iata}: 7 dias desde ${r}`]),description:em([`Compare ${i} estacionamentos perto do ${a.iata}, ${goe(a,t)} e preço de 1 a 30 dias. 7 dias a partir de ${r} (coleta ${n}). ${l}`,`Compare ${i} estacionamentos perto do ${a.iata}, com preço de 1 a 30 dias. 7 dias a partir de ${r} (coleta ${n}). ${l}`,`${i} estacionamentos perto do ${a.iata}. 7 dias a partir de ${r} (coleta ${n}). ${l}`])}}function xoe(e){const t=Ta(e);if(!t||!t.ref)return null;const{hub:a,ref:o}=t,r=X(o.min),n=io(t.latestColeta);
504return{title:Zu([`Preço estacionamento Aeroporto ${a.short}: 7 dias ${r}`,`Preço estacionamento ${a.short}: 7 dias desde ${r}`,`Preço estacionamento ${a.iata}: 7 dias desde ${r}`]),description:em([`Tabela de preços de ${o.count} estacionamentos perto do ${a.iata} para 1, 7, 15 e 30 dias, com fonte e data. 7 dias a partir de ${r} (coleta ${n}). Compare no xpark.`,`Preços de ${o.count} estacionamentos perto do ${a.iata} de 1 a 30 dias. 7 dias a partir de ${r} (coleta ${n}). Compare no xpark.`])}}function boe(e){const t=Ta(e);if(!t||!t.ref)return null;const{hub:a,ref:o}=t,r=X(o.min),n=io(t.latestColeta);return{title:Zu([`Estacionamento mais barato ${a.short}: 7 dias ${r}`,`Estacionamento mais barato ${a.iata}: 7 dias ${r}`]),description:em([`Qual o estacionamento mais barato perto do ${a.iata}? Ranking de ${o.count} operadoras por 1, 7, 15 e 30 dias. 7 dias a partir de ${r} (coleta ${n}). Compare no xpark.`,`Ranking do mais barato perto do ${a.iata} por 1, 7, 15 e 30 dias. 7 dias a partir de ${r} (coleta ${n}). Compare no xpark.`])}}function yoe(e){var u,m;const t=Ta(e.hubSlug),a=t?t.operators.length-1:0,o=t==null?void 0:t.lines.find(h=>h.operator.hubSlug===e.hubSlug&&h.operator.slug===e.slug),r=((u=o==null?void 0:o.cells.find(h=>h.days===Di))==null?void 0:u.total)??null,n=e.iata==="CGH"?"acesso a pé":(m=e.transfer)!=null&&m.included?"traslado incluso":e.valet?"valet":e.transfer?"traslado disponÃvel":"traslado não informado",i=tO(e).toLowerCase(),l=a>0?`Compare com outros ${a} estacionamentos no xpark.`:"Compare no xpark.";if(r!=null){const h=X(r),p=io(e.dataColeta);return{title:Zu([`${e.name} ${e.iata}: 7 dias por ${h} | xpark`,`${e.name} ${e.iata}: 7 dias por ${h}`,`${e.name}: 7 dias por ${h}`]),description:em([`${e.name}, perto do ${e.iata}: 7 dias por ${h} (coleta ${p}), ${n}, vaga ${i}. ${l}`,`${e.name}, perto do ${e.iata}: 7 dias por ${h} (coleta ${p}), ${n}. ${l}`,`${e.name}, ${e.iata}: 7 dias por ${h} (coleta ${p}). Compare no xpark.`])}}const c=ln(e),d=wo(e)?"dentro do aeroporto, junto ao terminal,":c!=null?`a ${c.toLocaleString("pt-BR")} km em linha reta do terminal`:`perto do ${e.iata}`;return{title:Zu([`${e.name} ${e.iata}: distância, traslado e vaga | xpark`,`${e.name} ${e.iata}: distância, traslado e vaga`,`${e.name} ${e.iata}: endereço e distância`,`${e.name}: endereço e distância`]),description:em([`${e.name} fica ${d} do ${e.iata}, ${n}, vaga ${i}. Veja endereço e horário e ${l.charAt(0).toLowerCase()}${l.slice(1)}`,`${e.name} fica ${d} do ${e.iata}, ${n}, vaga ${i}. ${l}`,`${e.name}, ${e.iata}: ${n}, vaga ${i}. Compare no xpark.`])}}function Nj(e){const t=e.lines.find(o=>{var r,n;return((r=o.cells.find(i=>i.days===Di))==null?void 0:r.total)===((n=e.ref)==null?void 0:n.min)}),a=t==null?void 0:t.cells.find(o=>o.days===Di);return!(t!=null&&t.condition)||!a?"":a.fullTotal!=null?` com o cupom XPK26 (${X(a.fullTotal)} sem cupom)`:" com o cupom XPK26"}function aO(e){const t=Ta(e);if(!t||!t.ref)return[];const a=t.lines.find(n=>{var i,l;return((i=n.cells.find(c=>c.days===Di))==null?void 0:i.total)===((l=t.ref)==null?void 0:l.min)}),o=t.operators.filter(n=>{var i;return(i=n.transfer)==null?void 0:i.included}).length,r=o===1?"1 tem traslado incluÃdo":`${o} têm traslado incluÃdo`;return[{q:`Quanto custa estacionar por 7 dias no Aeroporto de ${t.hub.short} (${t.hub.iata})?`,a:`O total de 7 dias vai de ${X(t.ref.min)}${Nj(t)} a ${X(t.ref.max)} entre os estacionamentos com preço publicado na tabela.`},{q:`Qual o estacionamento mais barato para 7 dias no Aeroporto de ${t.hub.short} (${t.hub.iata})?`,a:a?`${a.operator.name}, com total de ${X(t.ref.min)}${Nj(t)} para 7 dias, conforme a tabela publicada.`:"Não há preço publicado para esse perÃodo."},{q:`Quantos estacionamentos foram comparados no Aeroporto de ${t.hub.short} (${t.hub.iata}) e quantos têm traslado?`,a:`Foram comparados ${t.operators.length} estacionamentos; ${r}.`}]}function koe(e,t="https://www.xpark.ai"){const a=Ta(e);if(!a)return[];const o=`${t}${ll(e)}`,r=a.lines.map(i=>i.dataColeta).filter(i=>/^\d{4}-\d{2}-\d{2}$/.test(i)).sort(),n=aO(e);return[...a.latestColeta?[{"@context":"https://schema.org","@type":"WebPage","@id":`${o}#webpage`,url:o,name:`Preço do estacionamento no Aeroporto de ${a.hub.short} (${a.hub.iata})`,inLanguage:"pt-BR",dateModified:a.latestColeta,isPartOf:{"@type":"WebSite",name:"xpark",url:t}}]:[],{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"xpark",item:`${t}/`},{"@type":"ListItem",position:2,name:"Aeroportos",item:`${t}/aeroportos`},{"@type":"ListItem",position:3,name:`${a.hub.short} (${a.hub.iata})`,item:`${t}/aeroportos/${e}`},{"@type":"ListItem",position:4,name:"Preços",item:o}]},{"@context":"https://schema.org","@type":"Dataset","@id":`${o}#dataset`,name:`Preços de estacionamento no ${a.hub.name} (${a.hub.iata})`,description:`Custo total de ${a.lines.length} estacionamentos perto do ${a.hub.iata} para 1, 7, 15 e 30 dias, com fonte e data de coleta.`,url:o,license:ioe,creator:{"@type":"Organization",name:"xpark",url:t},...a.latestColeta?{dateModified:a.latestColeta}:{},...r.length?{temporalCoverage:`${r[0]}/${r[r.length-1]}`}:{},variableMeasured:Vf.map(i=>({"@type":"PropertyValue",name:`Custo total para ${i} ${i===1?"dia":"dias"}`,unitText:"BRL"})),isAccessibleForFree:!0,keywords:["estacionamento","preços",a.hub.name,a.hub.iata,"custo total","1, 7, 15 e 30 dias"],measurementTechnique:"Custo total calculado a partir da tabela publicada pela operadora, com a faixa de preço aplicável ao perÃodo.",spatialCoverage:{"@type":"Place",name:a.hub.name},distribution:[{"@type":"DataDownload",encodingFormat:"application/json",contentUrl:`${t}${Z5(e)}`}]},{"@context":"https://schema.org","@type":"ItemList",name:`Estacionamentos no ${a.hub.name} por custo total de 7 dias`,itemListOrder:"https://schema.org/ItemListOrderAscending",numberOfItems:a.lines.length,itemListElement:a.lines.map((i,l)=>({"@type":"ListItem",position:l+1,name:i.operator.name,item:`${t}/aeroportos/${i.operator.hubSlug}/${i.operator.slug}`}))},{"@context":"https://schema.org","@type":"FAQPage",mainEntity:n.map(({q:i,a:l})=>
504({"@type":"Question",name:i,acceptedAnswer:{"@type":"Answer",text:l}}))}]}const Io={bandeirada:5,valorKm:2.2,moeda:"BRL",dataColeta:"2026-07-11",fonte:{nome:"seguroauto.org",url:"https://www.seguroauto.org/tabela-preco-uber/"},precoOficial:"https://www.uber.com/global/pt-br/price-estimate/"},Tp=[{id:"ate-15",label:"Até 15 km",km:12},{id:"15-30",label:"15â30 km",km:22},{id:"30-45",label:"30â45 km",km:37},{id:"45-70",label:"45â70 km",km:57},{id:"70-100",label:"70â100 km",km:85},{id:"100+",label:"Mais de 100 km",km:130}],Aj=1,Th=60;function Hy(e){return Math.round(e*100)/100}function woe(e,t){return t!=null&&t>0?Hy(t):Hy(Io.bandeirada+Io.valorKm*e)}function Kk(e,t){return Hy(2*woe(e,t))}function Qk(e){return e.slug.startsWith("bandeira-park")}function oO(e){const t=Tm(e,7,Kt),a=t.find(r=>Qk(r.operator)&&r.estimate!=null);if(a)return{operator:a.operator,isBandeira:!0};const o=t.find(r=>r.estimate!=null);return o?{operator:o.operator,isBandeira:!1}:null}function Ff(e,t,a){const r=Tm(t,a,Kt).find(n=>n.operator.slug===e&&n.estimate!=null);return!r||!r.estimate?null:{operator:r.operator,isBandeira:Qk(r.operator),total:r.estimate.total,perDay:r.estimate.perDay,label:r.estimate.label,note:r.estimate.note}}function Coe(e,t){const o=Tm(e,t,Kt).find(r=>r.estimate!=null);return!o||!o.estimate?null:{operator:o.operator,isBandeira:Qk(o.operator),total:o.estimate.total,perDay:o.estimate.perDay,label:o.estimate.label,note:o.estimate.note}}function Poe(e){const t=Kk(e.km,e.tarifaOverride),a=Ff(e.operatorSlug,e.iata,1);if(a&&a.total<=t)return{status:"already-day-1"};for(let o=2;o<=Th;o++){const r=Ff(e.operatorSlug,e.iata,o);if(r&&r.total<=t)return{status:"found",days:o}}return{status:"never-in-range"}}const zd={title:"Uber ou estacionamento no aeroporto: calculadora | xpark",description:"Compare, em segundos, o custo total de ir e voltar de Uber com o total de estacionar no aeroporto (GRU, VCP, CNF e CGH). Descubra o ponto de equilÃbrio a partir de quantos dias estacionar sai mais barato.",path:"/uber-ou-estacionamento-aeroporto",h1:"Uber ou estacionar no aeroporto: o que compensa?"},rO=[{q:"A partir de quantos dias vale mais a pena estacionar do que ir de Uber?",a:"Depende da distância até o aeroporto e da operadora. Em geral, viagens de 1 a 2 dias a partir de bairros próximos (até 15 km) tendem a favorecer o Uber; a partir de 3 a 5 dias, estacionar costuma empatar; e para 7 dias ou mais, estacionar quase sempre sai bem mais barato, sobretudo em operadoras com tarifa progressiva. A calculadora mostra o ponto de equilÃbrio para o seu cenário."},{q:"A estimativa do Uber inclui a ida e a volta?",a:"Sim. Consideramos duas corridas: uma na ida (partida) e outra na volta (retorno). O valor de cada corrida é calculado como bandeirada + valor por km à distância informada."},{q:"E se pegar surge (preço dinâmico)?",a:'A estimativa usa a tarifa média sem multiplicador de demanda. Em horários de pico, feriados ou madrugada, o valor real do Uber pode subir bastante e o estacionamento passa a compensar ainda mais cedo. Use o campo "sei minha tarifa" para simular com um valor mais alto.'},{q:"O preço do estacionamento inclui o traslado até o terminal?",a:"Sim, quando a operadora informa traslado gratuito ele já está embutido na diária publicada. Estacionamentos com acesso a pé ou por passarela não usam van. Detalhes na ficha de cada operadora."}];function Soe(e="https://www.xpark.ai"){const t=`${e}${zd.path}`,a={"@context":"https://schema.org","@type":"WebPage","@id":`${t}#app`,name:"Calculadora Uber vs Estacionamento de Aeroporto (xpark)",url:t,inLanguage:"pt-BR",isAccessibleForFree:!0,creator:{"@id":`${e}/#organization`},about:[{"@type":"Place",name:"Aeroporto Internacional de São Paulo / Guarulhos"},{"@type":"Place",name:"Aeroporto Internacional de Viracopos / Campinas"},{"@type":"Place",name:"Aeroporto Internacional de Belo Horizonte / Confins"}]},o={"@context":"https://schema.org","@type":"FAQPage","@id":`${t}#faq`,mainEntity:rO.map(n=>
504({"@type":"Question",name:n.q,acceptedAnswer:{"@type":"Answer",text:n.a}}))},r={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"xpark",item:`${e}/`},{"@type":"ListItem",position:2,name:"Uber ou Estacionamento",item:t}]};return[a,o,r]}const Roe=[{iata:"GRU",days:2,km:12},{iata:"GRU",days:10,km:37},{iata:"CNF",days:3,km:12}];function joe(e,t,a){const o=oO(e);if(!o)return null;const r=Ff(o.operator.slug,e,t);if(!r)return null;const n=Kk(a),i=r.total<n?"parking":r.total>n?"uber":"tie";return{iata:e,days:t,km:a,uberTotal:n,parkingTotal:r.total,operatorName:r.operator.name,isBandeira:r.isBandeira,winner:i}}const Noe={GRU:"Guarulhos (GRU)",VCP:"Viracopos (VCP)",CNF:"Confins (CNF)",CGH:"Congonhas (CGH)"},Ad=e=>e.toLocaleString("pt-BR",{style:"currency",currency:"BRL"});function Aoe(e){const t=Noe[e.iata],a=e.km<=15?"até 15 km":e.km<=30?"15 a 30 km":e.km<=45?"30 a 45 km":e.km<=70?"45 a 70 km":e.km<=100?"70 a 100 km":"mais de 100 km";return e.winner==="uber"?`${e.days} ${e.days===1?"dia":"dias"} em ${t} a ${a}: Uber ida e volta ~${Ad(e.uberTotal)} vs estacionar ${Ad(e.parkingTotal)} (${e.operatorName}) â Uber compensa.`:e.winner==="parking"?`${e.days} ${e.days===1?"dia":"dias"} em ${t} a ${a}: estacionar ${Ad(e.parkingTotal)} (${e.operatorName}) sai bem mais barato que ${Ad(e.uberTotal)} de Uber ida e volta.`:`${e.days} ${e.days===1?"dia":"dias"} em ${t} a ${a}: Uber e estacionamento empatam em torno de ${Ad(e.uberTotal)}.`}function Ej(e=Io.dataColeta){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);return t?`${t[3]}/${t[2]}/${t[1]}`:e}const Eoe="O xpark recebe comissão das operadoras parceiras nas reservas feitas pelo site. Isso não altera a ordem da tabela nem os critérios de comparação.",Qv=e=>`${e.toLocaleString("pt-BR")} km`;function Nn(e,t){return e.cells.find(a=>a.days===t)??null}function _s(e,t,a){const o=Nn(e,t),r=a==="total"?o==null?void 0:o.total:o==null?void 0:o.perDay;if(r==null)return"não publicado";if(!e.condition)return X(r);const n=a==="total"?o==null?void 0:o.fullTotal:o==null?void 0:o.fullPerDay;return n!=null?`${X(r)} com o cupom XPK26 (${X(n)} sem cupom)`:`${X(r)} com o cupom XPK26`}const it=(e,t)=>_s(e,t,"total"),qr=(e,t)=>_s(e,t,"perDay");function _oe(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Wk(e){return e.operators.filter(t=>/oficial/i.test(t.slug)||/oficial/i.test(t.name))}function nO(e){for(const t of Wk(e)){const a=e.lines.find(r=>r.operator.slug===t.slug),o=a?Nn(a,1):null;if((o==null?void 0:o.perDay)!=null)return{op:t,perDay:o.perDay}}return null}function sO(e){let t=null;for(const a of e.lines){const o=Nn(a,1);(o==null?void 0:o.perDay)!=null&&(!t||o.perDay<t.perDay)&&(t={line:a,perDay:o.perDay})}return t}function Hd(e,t){const a=e.best.find(o=>o.days===t);return a&&a.line?{line:a.line,total:a.total,perDay:a.perDay}:null}function Jk(e){const t=Ta(e);return t?t.latestColeta??t.operators.map(a=>a.dataColeta).filter(Boolean).sort().pop()??null:null}function iO(e){const t=Jk(e);return t?io(t):null}function lO(e){var d;const t=Ta(e);if(!t||t.operators.length===0)return null;const a=t.operators.length,o=`No Aeroporto de ${t.hub.short} (${t.hub.iata})`;if(t.lines.length<2){const u=[`${o}, o xpark comparou ${a===1?"1 estacionamento":`${a} estacionamentos`}.`],m=Y5(t.operators),h=X5(t.operators);m&&h&&u.push(`${_oe(m)}: ${h.name}.`);const p=t.lines[0];if(p){const f=((d=Nn(p,1))==null?void 0:d.perDay)!=null?`${qr(p,1)} por diária`:`${it(p,7)} por 7 dias`;u.push(`O único preço publicado é ${f}, no ${p.operator.name}, coletado em ${p.dataColetaBR}.`),a>1&&u.push("As demais operadoras não divulgam preço publicamente.")}else u.push(a===1?"A operadora não divulga preço publicamente.":"As operadoras não divulgam preço publicamente.");return u.join(" ")}const r=sO(t),n=Hd(t,7),i=nO(t),l=[],c=`Segundo o Ãndice xpark de Preços, ${o.charAt(0).toLowerCase()}${o.slice(1)}`;return r&&l.push(`${c}, a menor diária é de ${qr(r.line,1)}, no ${r.line.operator.name}${/não informad/i.test(r.line.vaga)?"":` (vaga ${r.line.vaga.toLowerCase()})`}.`),n&&l.push(`${r?"Para 7 dias":`${c}, para 7 dias`}, o menor total é ${it(n.line,7)}, no ${n.line.operator.name}.`),i&&l.push(`O estacionamento oficial, ${i.op.name}
504, cobra ${X(i.perDay)} por diária.`),l.push(`O xpark comparou ${a} estacionamentos, ${t.lines.length} com preço publicado, com coleta mais recente em ${io(t.latestColeta)}.`),l.join(" ")}function Toe(e,t,a,o="https://www.xpark.ai"){const r=Jk(e);return r?{"@context":"https://schema.org","@type":"WebPage","@id":`${o}${t}#webpage`,url:`${o}${t}`,name:a,inLanguage:"pt-BR",dateModified:r,isPartOf:{"@type":"WebSite",name:"xpark",url:o}}:null}function _j(e){return e.bookable||e.priceRows.some(t=>/online|reserva/i.test(t.label)||/online/i.test(t.note??""))}function Tj(e){if(e.length&&e.every(r=>wo(r)))return il;const t=e.map(r=>ln(r)).filter(r=>r!=null);if(!t.length)return"distância não informada";const a=Math.min(...t),o=Math.max(...t);return a===o?`${Qv(a)} em linha reta`:`de ${Qv(a)} a ${Qv(o)} em linha reta`}function $j(e){const t=e.filter(o=>o.coverage==="coberto"||o.coverage==="ambos").length,a=e.filter(o=>o.coverage==="descoberto"||o.coverage==="ambos").length;return`${t} com coberta, ${a} com descoberta`}function Ky(e){const t=Ta(e);if(!t)return[];const a=Wk(t),o=t.operators.filter(n=>!a.includes(n)),r=[];if(a.length&&r.push({tipo:a.length===1?`Oficial: ${a[0].name}`:`Oficial (${a.length})`,traslado:t.hub.iata==="CGH"?"Acesso a pé":"Dentro do aeroporto, sem van",distancia:Tj(a),cobertura:$j(a),reserva:a.some(_j)?"Tarifa online publicada":"Não informado"}),o.length){const n=o.filter(l=>{var c;return(c=l.transfer)==null?void 0:c.included}).length,i=o.filter(_j).length;r.push({tipo:`Privados (${o.length})`,traslado:t.hub.iata==="CGH"?"Acesso a pé, sem van":`${n} de ${o.length} com traslado incluso`,distancia:Tj(o),cobertura:$j(o),reserva:`${i} de ${o.length} com reserva ou tarifa online`})}return r}function $oe(e){var n,i;const t=Ta(e);if(!t)return null;const a=["painel_parceira","tabela_oficial_operadora","levantamento_terceiro"].map(l=>({type:l,label:eO[l],items:t.lines.filter(c=>c.sourceType===l).map(c=>({name:c.operator.name,dataColetaBR:c.dataColetaBR}))})).filter(l=>l.items.length>0),o=t.operators.filter(l=>ln(l)==null&&!wo(l)).map(l=>l.name),r=[];return t.unpriced.length&&r.push(`Sem preço publicado: ${t.unpriced.map(l=>l.name).join(", ")}.`),o.length&&r.push(`Sem coordenada confirmada, distância não informada: ${o.join(", ")}.`),r.push("Não sabemos a lotação em tempo real nem mudanças de tarifa feitas depois da data de coleta."),r.push("A distância em linha reta não é o trajeto de carro ou van, que costuma ser maior."),{groups:a,terminal:(n=Qi[t.hub.iata])!=null&&n.approx?"ponto geral do aeroporto (coordenada aproximada, terminal não confirmado)":((i=Qi[t.hub.iata])==null?void 0:i.label)??"terminal de passageiros",unknowns:r,commission:Eoe}}function Wv(e,t){if(e.length<=t)return e;const a=e.slice(0,t+1),o=a.lastIndexOf(" ");return a.slice(0,o>0?o:t).replace(/[,;:.\s]+$/,"")+"."}function Ooe(e,t,a){return({quanto_custa:[`Preço do estacionamento no Aeroporto de ${t} | xpark`,`Preço do estacionamento em ${t} (${a}) | xpark`,`Estacionamento ${a}: preço | xpark`],mais_barato:[`Estacionamento mais barato no Aeroporto de ${t}`,`Mais barato em ${t} (${a}) | xpark`,`Mais barato no ${a} | xpark`],oficial_particular:[`Oficial ou particular no Aeroporto de ${t}?`,`Oficial ou particular em ${t} (${a})?`,`Oficial ou particular no ${a}?`],mais_dias:[`Mais dias no Aeroporto de ${t}: compensa? | xpark`,`Mais dias em ${t} (${a}) compensa?`,`Mais dias no ${a} compensa?`],sete_dias:[`7 dias no Aeroporto de ${t}: preço | xpark`,`7 dias em ${t} (${a}): preço | xpark`,`7 dias no ${a}: preço | xpark`],quinze_dias:[`15 ou 30 dias no Aeroporto de ${t} | xpark`,`15 ou 30 dias em ${t} (${a}) | xpark`,`15 ou 30 dias no ${a} | xpark`],mais_proximo:[`Mais perto do terminal no Aeroporto de ${t}`,`Mais perto do terminal em ${t} (${a})`,`Mais perto do terminal no ${a}`],traslado_24h:[`Traslado 24h no Aeroporto de ${t} | xpark`,`Traslado 24h em ${t} (${a}) | xpark`,`Traslado 24h no ${a} | xpark`],coberto:[`Coberto ou descoberto no Aeroporto de ${t}?`,`Coberto ou descoberto em ${t} (${a})?`,`Coberto ou descoberto no ${a}?`],seguro:[`Segurança fora do Aeroporto de ${t} | xpark`,`Segurança fora do aeroporto em ${t}`,`Segurança no ${a} | xpark`],uber:[`Uber ou estacionamento no Aeroporto de ${t}?`,`Uber ou estacionamento em ${t} (${a})?`,`Uber ou estacionamento no ${a}?`],voo_atrasou:[`Voo atrasou no Aeroporto de ${t}? | xpark`,`Voo atrasou em ${t} (${a})?`,`Voo atrasou no ${a}?`]}[e]??[`Estacionamento no Aeroporto de ${t} | xpark`]).find(r=>r.length<=60)??`Estacionamento ${a} | xpark`}function qoe(e,t,a){return/coordenada aproximada/.test(t)&&!/R\$\s?\d/.test(t)?!1:/R\$\s?\d/.test(t)||/\d+(,\d+)?\s?km/.test(t)||t.includes(il)?!0:e==="traslado_24h"&&a>0}
504const Oj="/voo-atrasou-carro-estacionamento-aeroporto-o-que-fazer",Doe=["GRU","VCP","CNF"],Ioe={GRU:{mais_barato:"estacionamento-mais-barato-transfer-gru",quinze_dias:"viajar-15-dias-guarulhos-onde-deixar-carro",traslado_24h:"top-estacionamentos-traslado-24h-gru",seguro:"e-seguro-deixar-carro-muitos-dias-guarulhos"},VCP:{mais_barato:"estacionamentos-baratos-com-traslado-viracopos-2026",traslado_24h:"top-estacionamentos-traslado-24h-reserva-online-viracopos"}};function kl(e){const t=e.hub.slug,a=[];return e.hasPricePage&&a.push(`- [Tabela completa de preços do ${e.hub.iata}](${ll(t)})`),a.push(`- [Estacionamento no Aeroporto de ${e.hub.short}](/aeroportos/${t})`),e.hasPricePage&&a.push(`- [Mais barato em ${e.hub.short}](${c0(t)})`),`## Veja também 505${a.join(` 506`)}`}function Ed(e,t,a=5){const o=[...e.lines].map(r=>({l:r,c:Nn(r,t)})).filter(r=>{var n;return((n=r.c)==null?void 0:n.total)!=null}).sort((r,n)=>r.c.total-n.c.total).slice(0,a).map(r=>`| ${r.l.operator.name}${r.l.condition?" (com o cupom XPK26)":""} | ${X(r.c.total)}${r.c.fullTotal!=null?` (${X(r.c.fullTotal)} sem cupom)`:""} | ${X(r.c.perDay)} | ${r.l.dataColetaBR} |`);return`| Estacionamento | Total ${t===1?"1 diária":`${t} dias`} | Por dia | Coleta | 507|---|---|---|---| 508${o.join(` 509`)}`}const Jv=e=>e===1?"1 diária":`${e} dias`;function Moe(e){const t=e.operators.filter(r=>wo(r)||Number.isFinite(ao(r)));if(e.lines.length===0&&t.length===0)return null;const a=[];if(e.lines.length){const r=e.lines.map(n=>`| ${n.operator.name}${n.condition?" (com o cupom XPK26)":""} | ${[1,7,15,30].map(i=>{const l=Nn(n,i);return(l==null?void 0:l.total)!=null?X(l.total):"não divulgado"}).join(" | ")} | ${n.dataColetaBR} |`);a.push(`## Preços por perÃodo no ${e.hub.iata} 510| Estacionamento | 1 diária | 7 dias | 15 dias | 30 dias | Coleta |
511|---|---|---|---|---|---| 512${r.join(` 513`)}`)}const o=[...e.operators].sort((r,n)=>ao(r)-ao(n)).map(r=>{var n;return`- [${r.name}](/aeroportos/${r.hubSlug}/${r.slug}): ${wo(r)?il:Number.isFinite(ao(r))?`${Wi(r)} em linha reta`:"distância não informada"}; ${(n=r.transfer)!=null&&n.included?`traslado incluso${r.transfer.frequency?` (${r.transfer.frequency})`:""}`:"sem traslado declarado"}`});return a.push(`## Os ${e.operators.length} estacionamentos comparados no ${e.hub.iata} 514${o.join(` 515`)}`),a.join(` 516 517`)}function Loe(){const e=[],t=[];for(const a of Ln){const o=a.iata,r=Ta(a.slug);if(!r||r.operators.length===0)continue;const n={iata:o,created:[],skippedNoData:[],skippedExisting:[]};t.push(n);const i=Doe.includes(o),l=r.hub.short,c=a.slug.replace(/^estacionamento-aeroporto-/,""),d=Jk(a.slug),u=r.latestColeta?io(r.latestColeta):null,m=Ioe[o]??{},h=Hd(r,1),p=Hd(r,7),f=Hd(r,15),g=Hd(r,30),b=sO(r),v=nO(r),y=Wk(r),k=r.operators.filter(B=>!y.includes(B)),w=r.operators.filter(B=>Number.isFinite(ao(B))).sort((B,Y)=>ao(B)-ao(Y)),R=w.filter(B=>!y.includes(B)),C=r.operators.filter(B=>{var Y;return(Y=B.transfer)==null?void 0:Y.included}),P=C.filter(B=>{var Y,ae;return/24/.test(`${((Y=B.transfer)==null?void 0:Y.frequency)??""} ${((ae=B.transfer)==null?void 0:ae.note)??""} ${B.hours??""}`)}),N=r.operators.filter(B=>B.coverage==="coberto"||B.coverage==="ambos"),E=r.operators.filter(B=>B.coverage==="descoberto"||B.coverage==="ambos"),A=k.filter(B=>B.insurance),O=r.lines.filter(B=>!y.includes(B.operator)).map(B=>{var Y;return{l:B,t:(Y=Nn(B,7))==null?void 0:Y.total}}).filter(B=>B.t!=null).sort((B,Y)=>B.t-Y.t)[0],V=B=>{var ie;let Y=null;const ae=new Set(B.map(fe=>fe.slug));for(const fe of r.lines)if(ae.has(fe.operator.slug)){const Se=(ie=Nn(fe,7))==null?void 0:ie.total;Se!=null&&(!Y||Se<Y.t)&&(Y={l:fe,t:Se})}return Y},T=B=>wo(B)?il:`a ${Wi(B)}`,D=Moe(r),F=(B,Y,ae,ie,fe,Se)=>{if(m[B]){n.skippedExisting.push(B);return}if(!Y){n.skippedNoData.push(B);return}const Ee=fe(),Re=B!=="voo_atrasou"&&qoe(B,Ee,C.length)&&!!D,re=B==="voo_atrasou"?Oj:Re?void 0:`/aeroportos/${a.slug}`,Ce=Wv(B==="uber"&&p?`Uber ou estacionar em ${l} (${o})? 7 dias no ${p.line.operator.name}: ${it(p.line,7)}. Uber: ${X(Io.bandeirada)} mais ${X(Io.valorKm)}/km por trecho.`:Ee,155);e.push({slug:ae,categoria:o,pergunta:ie,respostaRapida:Ee,corpo:`${Se()}${Re?` 518 519${D}`:""} 520 521${kl(r)}`,dateModified:d,canonicalPath:re,seoTitle:Ooe(B,l,o),seoDescription:Ce}),n.created.push(B)},U=r.lines.length,L=r.operators.length-U,I=L>0?` Os outros ${L} estacionamentos comparados não divulgam preço publicamente.`:"";F("quanto_custa",U>=1&&!!u,`quanto-custa-estacionar-aeroporto-${c}`,`Quanto custa estacionar no Aeroporto de ${l}?`,()=>{var B,Y;return U>=2?`No Aeroporto de ${l}, a menor diária é ${b?`${qr(b.line,1)}, no ${b.line.operator.name}`:"não publicada"}. Por 7 dias, o menor total é ${p?`${it(p.line,7)}, no ${p.line.operator.name}`:"não publicado"}, entre ${((B=r.ref)==null?void 0:B.count)??U} estacionamentos com preço${v?`. O oficial, ${v.op.name}, cobra ${X(v.perDay)} por diária`:""}. Preços coletados até ${u}.`:`No Aeroporto de ${l}, só o ${r.lines[0].operator.name} publica preço: ${((Y=Nn(r.lines[0],1))==null?void 0:Y.perDay)!=null?`${qr(r.lines[0],1)} por diária`:`${it(r.lines[0],7)} por 7 dias`}, com coleta em ${r.lines[0].dataColetaBR}.${I}`},()=>`## Menor total por perÃodo 522| PerÃodo | Menor total | Estacionamento | Coleta |
523|---|---|---|---| 524${[h,p,f,g].map((B,Y)=>B?`| ${Jv([1,7,15,30][Y])} | ${it(B.line,[1,7,15,30][Y])} | ${B.line.operator.name} | ${B.line.dataColetaBR} |`:"").filter(Boolean).join(` 525`)}`),F("mais_barato",U>=2&&!!p,`estacionamento-mais-barato-aeroporto-${c}`,`Qual o estacionamento mais barato perto do Aeroporto de ${l}?`,()=>`Para 7 dias, o mais barato perto do Aeroporto de ${l} é o ${p.line.operator.name}, com total de ${it(p.line,7)}. A comparação cobre ${r.operators.length} estacionamentos, ${U} com preço publicado, e a coleta mais recente é de ${u}.`,()=>`## Os menores totais para 7 dias 526${Ed(r,7)}`),F("oficial_particular",!!v&&!!O,`estacionamento-oficial-ou-particular-${c}`,`Vale mais a pena o estacionamento oficial ou um particular em ${l}?`,()=>`O oficial, ${v.op.name}, cobra ${X(v.perDay)} por diária e fica ${T(v.op)}${wo(v.op)?"":" do terminal"}. Entre os particulares, o menor total de 7 dias é ${it(O.l,7)}, no ${O.l.operator.name}. O oficial ganha na caminhada curta; o particular, no preço de estadias longas. Coleta até ${u}.`,()=>`## Comparação 527| Tipo | Traslado | Distância | Cobertura | Reserva online | 528|---|---|---|---|---| 529${Ky(a.slug).map(B=>`| ${B.tipo} | ${B.traslado} | ${B.distancia} | ${B.cobertura} | ${B.reserva} |`).join(` 530`)}`),F("mais_dias",!!(h&&p&&g)&&U>=2,`compensa-deixar-carro-mais-dias-aeroporto-${c}`,`Compensa deixar o carro mais dias no Aeroporto de ${l}?`,()=>`${g.perDay<h.perDay?"Sim, o preço por dia cai com a estadia.":"Na tabela coletada, o preço por dia quase não muda com a estadia."} No Aeroporto de ${l}, a menor diária avulsa é ${qr(h.line,1)}; em 7 dias o menor custo sai a ${qr(p.line,7)} por dia (${p.line.operator.name}) e em 30 dias a ${qr(g.line,30)} por dia (${g.line.operator.name}). Coleta até ${u}.`,()=>`## Menor custo por dia conforme a estadia 531| Estadia | Menor total | Por dia | Estacionamento | 532|---|---|---|---| 533${[h,p,f,g].map((B,Y)=>B?`| ${Jv([1,7,15,30][Y])} | ${it(B.line,[1,7,15,30][Y])} | ${X(B.perDay)} | ${B.line.operator.name}
533 |`:"").filter(Boolean).join(` 534`)}`),F("sete_dias",!!p&&!!u,`quanto-custa-deixar-carro-7-dias-aeroporto-${c}`,`Quanto custa deixar o carro 7 dias no Aeroporto de ${l}?`,()=>r.ref&&r.ref.count>=2?`Deixar o carro 7 dias perto do Aeroporto de ${l} custa de ${X(r.ref.min)} a ${X(r.ref.max)}, conforme a tabela de ${r.ref.count} estacionamentos com preço. O menor total é do ${p.line.operator.name}, com ${it(p.line,7)}. Valores calculados com a faixa de 7 dias de cada operadora, coleta até ${u}.`:`Perto do Aeroporto de ${l}, só o ${p.line.operator.name} publica preço para 7 dias: ${it(p.line,7)}, com coleta em ${p.line.dataColetaBR}.${I}`,()=>`## Totais para 7 dias 535${Ed(r,7)}`),F("quinze_dias",!!(f&&g)&&U>=2,`quanto-custa-estacionar-15-dias-aeroporto-${c}`,`Quanto custa estacionar 15 dias ou mais no Aeroporto de ${l}?`,()=>`Por 15 dias, o menor total perto do Aeroporto de ${l} é ${it(f.line,15)}, no ${f.line.operator.name}. Por 30 dias, o menor total é ${it(g.line,30)}, no ${g.line.operator.name}, o equivalente a ${X(g.perDay)} por dia. Preços coletados até ${u}.`,()=>`## Totais para 15 dias 536${Ed(r,15)} 537 538## Totais para 30 dias 539${Ed(r,30)}`),F("mais_proximo",w.length>=1,`estacionamento-mais-proximo-terminal-${c}`,`Qual o estacionamento mais próximo do terminal em ${l}?`,()=>`O mais próximo do terminal em ${l} é o ${w[0].name}, ${T(w[0])}${o==="GRU"&&!wo(w[0])?" do Terminal 2":""}.${R[0]&&R[0]!==w[0]?` Entre os particulares, o mais perto é o ${R[0].name}, ${T(R[0])}.`:""} Distâncias calculadas pelas coordenadas de ${w.length} dos ${r.operators.length} estacionamentos comparados.`,()=>`## Distância até o terminal 540${w.slice(0,5).map(B=>{var Y;return`- ${B.name}: ${Wi(B)}${(Y=B.transfer)!=null&&Y.included?", traslado incluso":""}`}).join(` 541`)} 542 543A distância em linha reta não é o trajeto de carro ou van, que costuma ser maior.`),F("traslado_24h",o!=="CGH"&&C.length>=1,`estacionamentos-traslado-24-horas-${c}`,`Os estacionamentos perto de ${l} têm traslado 24 horas?`,()=>{var B;return`Dos ${r.operators.length} estacionamentos comparados perto de ${l}, ${C.length} ${C.length===1?"declara":"declaram"} traslado incluso e ${P.length} ${P.length===1?"informa":"informam"} operação 24 horas.${p&&((B=p.line.operator.transfer)!=null&&B.included)?` O menor total de 7 dias com traslado é do ${p.line.operator.name}, com ${it(p.line,7)}.`:""} Confirme o horário da volta antes de reservar.${u?` Dados conferidos até ${u}.`:""}`},()=>`## Com traslado incluso 544${C.slice(0,5).map(B=>{var Y,ae;return`- ${B.name}: ${((Y=B.transfer)==null?void 0:Y.frequency)??((ae=B.transfer)==null?void 0:ae.note)??"van até o terminal"}${B.hours?` · ${B.hours}`:""}`}).join(` 545`)}`);const j=V(N),H=V(E);F("coberto",N.length+E.length>=1,`estacionamento-coberto-ou-descoberto-${c}`,`Estacionamento coberto ou descoberto em ${l}: qual escolher?`,()=>`Dos ${r.operators.length} estacionamentos comparados em ${l}, ${N.length} ${N.length===1?"informa":"informam"} vaga coberta e ${E.length} ${E.length===1?"informa":"informam"} descoberta${r.operators.length-new Set([...N,...E]).size>0?"; os demais não informam o tipo de vaga":""}.${H?` O menor total de 7 dias com vaga descoberta é ${it(H.l,7)} (${H.l.operator.name})`:""}${j?`${H?";":""} com vaga coberta, ${it(j.l,7)} (${j.l.operator.name})`:""}${j||H?".":""} A coberta protege do sol e da chuva.${u&&(j||H)?` Coleta até ${u}.`:""}`,()=>`## Resumo 546| Tipo | Estacionamentos | Menor total 7 dias | 547|---|---|---| 548| Coberta | ${N.length} | ${j?`${it(j.l,7)} (${j.l.operator.name})`:"sem preço publicado"} | 549| Descoberta | ${E.length} | ${H?`${it(H.l,7)} (${H.l.operator.name})`:"sem preço publicado"} |`),F("seguro",A.length>=1,`e-seguro-estacionamento-fora-aeroporto-${c}`,`à seguro deixar o carro em estacionamento fora do aeroporto em ${l}?`,()=>`Depende da operadora. Dos ${k.length} estacionamentos particulares comparados perto de ${l}, ${A.length} ${A.length===1?"declara":"declaram"} seguro na ficha. Antes de reservar, confira o que o seguro cobre, o monitoramento e o horário de funcionamento.${p?` Para 7 dias, o menor total é ${it(p.line,7)}, no ${p.line.operator.name}
549, com coleta até ${u}.`:""}`,()=>`## O que conferir 550- Seguro declarado e o que ele cobre 551- Monitoramento e controle de acesso 552- Horário de funcionamento e do traslado 553- Endereço confirmado na ficha 554 555## Seguro declarado nas fichas 556${A.slice(0,5).map(B=>`- ${B.name}: ${B.insurance}`).join(` 557`)}`),F("uber",!!p,`uber-ou-estacionamento-aeroporto-${c}`,`Vale mais a pena ir de Uber ou deixar o carro no estacionamento em ${l}?`,()=>`Depende da distância da sua casa. Pela tarifa de referência de ${io(Io.dataColeta)}, cada trecho de Uber custa ${X(Io.bandeirada)} mais ${X(Io.valorKm)} por km, e ida e volta dobram a conta. Deixar o carro 7 dias no ${p.line.operator.name} custa ${it(p.line,7)} (coleta em ${p.line.dataColetaBR}). Quanto mais longe você mora, mais o estacionamento compensa.`,()=>`## Como decidir 558- Multiplique a sua distância real por ${X(Io.valorKm)} e some ${X(Io.bandeirada)}, em cada trecho 559- Compare com o total do estacionamento para os seus dias 560- Considere bagagem, horário do voo e acompanhantes 561- Use a [calculadora Uber ou estacionamento](/uber-ou-estacionamento-aeroporto)`);const W=h??(b?{line:b.line}:null);F("voo_atrasou",!!W,`voo-atrasou-estacionamento-cobra-a-mais-${c}`,"E se meu voo atrasar: o estacionamento cobra a mais?",()=>`Em geral, sim: cada dia a mais entra na conta pela tabela do estacionamento. Em ${l}, a menor diária avulsa publicada é ${qr(W.line,1)} (${W.line.operator.name})${p&&U>=2?`, e na faixa de 7 dias o menor custo é ${X(p.perDay)} por dia (${p.line.operator.name})`:""}. Avise o estacionamento assim que souber do atraso. Coleta até ${u}.`,()=>`## O que fazer 562- Avise o estacionamento pelo contato da reserva 563- Confira a tolerância antes de cobrar nova diária 564- Guarde o comprovante do atraso do voo 565- Leia o guia [Voo atrasou: como fica o estacionamento do aeroporto](${Oj})`);const _=(B,Y,ae,ie,fe)=>{/R\$\s?\d/.test(ae)&&e.push({slug:B,categoria:o,pergunta:Y,respostaRapida:ae,dateModified:d,corpo:`${ie}${D?` 566 567${D}`:""} 568 569${kl(r)}`,seoTitle:fe,seoDescription:Wv(ae,155)})};if(o==="GRU"&&v&&O&&_("valor-estacionamento-terminais-2-e-3-guarulhos","Qual o valor do estacionamento nos terminais 2 e 3 do Aeroporto de Guarulhos?",`O estacionamento oficial de Guarulhos, ${v.op.name}, fica ${T(v.op)} e cobra ${X(v.perDay)} por diária. Fora do aeroporto, com traslado até os terminais, o menor total de 7 dias é ${it(O.l,7)}, no ${O.l.operator.name}. São ${r.operators.length} estacionamentos comparados, coleta até ${u}.`,`## Oficial dentro do aeroporto ou particular com traslado 570| Tipo | Traslado | Distância | Cobertura | Reserva online | 571|---|---|---|---|---| 572${Ky(a.slug).map(B=>`| ${B.tipo} | ${B.traslado} | ${B.distancia} | ${B.cobertura} | ${B.reserva} |`).join(` 573`)} 574 575Confira no cartão de embarque se o seu voo sai do Terminal 2 ou do Terminal 3 e avise o estacionamento na reserva.`,"Estacionamento nos terminais 2 e 3 de Guarulhos"),o==="GRU"&&p&&f&&g&&_("melhor-estacionamento-guarulhos-varios-dias","Qual o melhor estacionamento no Aeroporto de Guarulhos para deixar o carro por vários dias?",`Para vários dias em Guarulhos, compare o total da estadia. Por 7 dias, o menor total é ${it(p.line,7)} (${p.line.operator.name}); por 15 dias, ${it(f.line,15)} (${f.line.operator.name}); por 30 dias, ${it(g.line,30)} (${g.line.operator.name}). Coleta até ${u}.`,`## O que pesa numa estadia longa 576- Total da estadia, não só a diária 577- Traslado incluso e horário da volta 578- Vaga coberta, se o carro fica muitos dias ao sol 579- Seguro declarado na ficha do estacionamento 580 581## Menores totais para 15 dias 582${Ed(r,15)}`,"Melhor estacionamento em Guarulhos por vários dias"),(o==="VCP"||o==="CGH")&&p){const B=o==="CGH";_(`como-funcionam-estacionamentos-aeroporto-${c}`,`Como funcionam os estacionamentos no Aeroporto de ${l}?`,`Em ${l}, o xpark compara ${r.operators.length} estacionamentos: ${y.length} ${y.length===1?"oficial":"oficiais"} e ${k.length} ${k.length===1?"particular":"particulares"}. ${B?"Nenhum deles oferece van: o acesso ao terminal é a pé.":`${C.length} ${C.length===1?"declara":"declaram"}
582 traslado incluso até o terminal.`} Por 7 dias, o menor total é ${it(p.line,7)}, no ${p.line.operator.name}. Coleta até ${u}.`,`## Passo a passo 583- Escolha as datas e compare o total da estadia 584- Reserve online e guarde o comprovante 585- ${B?"Deixe o carro na vaga coberta e siga a pé até o terminal (cerca de 5 minutos)":"Deixe o carro no pátio e pegue o traslado até o terminal"} 586- Na volta, ${B?"retire o carro com o comprovante":"avise o estacionamento quando pousar e pegue o traslado de volta"} 587 588## Tipo de vaga 589- Coberta: ${N.length} estacionamentos 590- Descoberta: ${E.length} estacionamentos`,`Como funcionam os estacionamentos em ${l}`.slice(0,60))}if(i){if(o==="GRU"){const B=r.operators.filter(Se=>{var Ee;return((Ee=Se.transfer)==null?void 0:Ee.included)&&Se.terminals.some(Re=>/T3|3/.test(Re.code??""))}),Y=B.length?B:C,ae=V(Y);e.push({slug:"estacionamento-traslado-terminal-3-guarulhos",categoria:"GRU",dateModified:d,pergunta:"Qual estacionamento tem traslado para o Terminal 3?",respostaRapida:`${B.length?`${B.length} estacionamentos perto de Guarulhos informam traslado incluso até o Terminal 3`:`${C.length} estacionamentos perto de Guarulhos declaram traslado incluso até os terminais`}. O menor total de 7 dias entre eles é ${ae?`${it(ae.l,7)}, no ${ae.l.operator.name}`:"não publicado"}. O traslado leva você do pátio até a porta do terminal e busca na volta. Confirme o terminal de embarque ao reservar. Coleta até ${u}.`,corpo:`## Com traslado incluso 591${Y.slice(0,5).map(Se=>`- ${Se.name}${Se.terminals.length?`: ${Se.terminals.map(Ee=>Ee.code).join(", ")}`:""}`).join(` 592`)} 593 594${kl(r)}`});const ie=r.operators.filter(Se=>Se.valet),fe=V(ie);e.push({slug:"servico-valet-aeroporto-guarulhos",categoria:"GRU",dateModified:d,pergunta:"Tem serviço de valet no Aeroporto de Guarulhos?",respostaRapida:`Sim. ${ie.length} dos ${r.operators.length} estacionamentos comparados perto de Guarulhos oferecem valet${fe?`, e o menor total de 7 dias entre eles é ${it(fe.l,7)}, no ${fe.l.operator.name}`:""}. No valet, você entrega o carro e não precisa procurar vaga. Coleta até ${u}.`,corpo:`## Estacionamentos com valet 595${ie.map(Se=>`- ${Se.name}`).join(` 596`)} 597 598${kl(r)}`})}if(o==="VCP"){const B=[...new Set(r.operators.map(Y=>Y.address.city))];e.push({slug:"estacionamento-aeroporto-campinas-e-viracopos-mesma-coisa",categoria:"VCP",dateModified:d,pergunta:"Estacionamento aeroporto Campinas e Viracopos são a mesma coisa?",respostaRapida:`Sim. O Aeroporto de Viracopos fica em Campinas, então as duas buscas levam aos mesmos ${r.operators.length} estacionamentos. Para 7 dias, o menor total é ${it(p.line,7)}, no ${p.line.operator.name}, e a menor diária é ${qr(b.line,1)}. Preços coletados até ${u}.`,corpo:`## Onde ficam os estacionamentos 599${B.slice(0,5).map(Y=>`- ${Y}: ${r.operators.filter(ae=>ae.address.city===Y).length} estacionamentos`).join(` 600`)} 601 602${kl(r)}`})}o==="CNF"&&e.push({slug:"quanto-custa-estacionar-aeroporto-confins-belo-horizonte",categoria:"CNF",dateModified:d,pergunta:"Quanto custa estacionar no Aeroporto de Confins, em Belo Horizonte?",respostaRapida:`O Aeroporto de Confins atende Belo Horizonte. Lá, a menor diária é ${qr(b.line,1)}, no ${b.line.operator.name}, e 7 dias custam a partir de ${it(p.line,7)}${v?`. O oficial, ${v.op.name}, cobra ${X(v.perDay)} por diária`:""}. São ${r.operators.length} estacionamentos comparados, coleta até ${u}.`,corpo:`## Menor total por perÃodo 603| PerÃodo | Menor total | Estacionamento | 604|---|---|---| 605${[h,p,f,g].map((B,Y)=>B?`| ${Jv([1,7,15,30][Y])} | ${it(B.line,[1,7,15,30][Y])} | ${B.line.operator.name}
605 |`:"").filter(Boolean).join(` 606`)} 607 608${kl(r)}`})}}return{faqs:e,report:t}}let qj=null;function cO(){return qj??(qj=Loe()),qj.faqs}const dO=[{slug:"como-funcionam-comparadores-estacionamento-aeroporto",categoria:"Comparador",pergunta:"Como funcionam os comparadores de estacionamento perto de aeroportos?",respostaRapida:"Um comparador reúne preços e serviços de estacionamentos em um só lugar. O xpark compara destinos pelo Brasil e apresenta preço, segurança e deslocamento de cada opção. Nas praças atendidas, a reserva pode ser feita online.",corpo:`## O que um comparador resolve 609Reservar estacionamento de aeroporto por conta própria significa abrir vários sites, comparar tarifas com taxas escondidas e ainda torcer para a vaga existir na volta. Um comparador centraliza isso: mostra as opções perto do terminal, o preço final por faixa de dias e o que está incluÃdo, para você decidir em minutos em vez de horas. 610 611## Como o Xpark trabalha 612O xpark é o comparador de estacionamentos do Brasil. Compara preço, segurança e deslocamento em destinos publicados pelo paÃs. As caracterÃsticas variam por unidade: Congonhas, por exemplo, tem acesso a pé, sem van ou traslado. Nas unidades do Bandeira Park em GRU e VCP há seguro Tokio Marine de R$ 1.000.000; a segurança varia por operadora. Nas praças atendidas, a reserva é online, com o valor final antes de fechar e pagamento via Pix. 613 614## O que observar ao comparar 615- Se há estacionamento mapeado no destino da sua viagem 616- Se mostra o preço final, sem taxa na chegada 617- Se há traslado, acesso a pé ou outra forma de chegar ao terminal e em qual horário 618- Se deixa claro o seguro e o monitoramento das unidades`},{slug:"onde-deixar-carro-quando-viajo",categoria:"Comparador",pergunta:"Fico preocupado com onde deixar o carro quando viajo - existe solução prática?",respostaRapida:`Sim: deixar o carro em um estacionamento credenciado perto do aeroporto, com transfer 24h até o terminal, monitoramento 24h e seguro incluÃdo. No Xpark você reserva a vaga em GRU ou VCP com antecedência, a partir de ${S(q.longStayDaily)}/dia, e chega ao terminal de van sem se preocupar com o carro.`,corpo:`## A preocupação real de quem viaja 619O receio não é só o preço - é deixar o carro dias parado e voltar sem problema. Estacionar na rua ou em lote sem estrutura troca a economia por risco de furto, multa e dano. 620 621## Como o Xpark reduz esse risco 622As unidades credenciadas têm monitoramento 24h com câmeras e equipe no local; nas do Bandeira Park (GRU e VCP), há também seguro Tokio Marine de R$ 1.000.000 (a segurança varia por operadora), que cobre roubo e furto mediante arrombamento, colisão (10% dos prejuÃzos, mÃnimo de R$ 10.000) e roubo com carro reserva de R$ 20.000. O transfer 24h leva e busca você no terminal, então o carro fica guardado e você não depende de carona. 623 624## Como organizar 625- Reserve a vaga com antecedência pelo Xpark, a partir de ${S(q.longStayDaily)}/dia 626- Escolha descoberta, coberta ou valet (valet em GRU) 627- Some o Seguro Cancelamento e Atraso (R$ 25) se o voo puder mudar`},{slug:"melhor-plataforma-comparar-reservar-guarulhos",categoria:"Comparador",pergunta:"Melhor plataforma para comparar e reservar estacionamento no Aeroporto de Guarulhos",respostaRapida:`Para o Aeroporto de Guarulhos (GRU), o Xpark compara e reserva estacionamentos credenciados operando com o menor preço da praça - a partir de ${S(q.longStayDaily)}/dia na descoberta; a coberta tem acréscimo e o Valet (só em GRU) tem o valor exato exibido na hora da reserva. As unidades têm transfer 24h e monitoramento 24h; nas do Bandeira Park (GRU e VCP), há também seguro Tokio Marine de R$ 1.000.000 (a segurança varia por operadora).`,corpo:`## Por que o Xpark em GRU 628Guarulhos é o aeroporto mais movimentado do paÃs, e a tarifa dentro do terminal cobra caro pela conveniência. O Xpark reúne os estacionamentos credenciados fora do terminal, com o menor preço da praça e reserva online, para você comparar tudo antes de viajar. 629 630## Opções e preços em GRU 631- Vaga descoberta: a partir de ${S(q.longStayDaily)}/dia 632- Vaga coberta: com acréscimo sobre a descoberta
633- Valet (só em GRU): valor exato aparece na hora da reserva 634 635Esses valores são a diária de longa permanência (31+ dias). Em viagens curtas, a descoberta parte de ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom) e cai conforme a faixa de dias. Todas incluem transfer 24h e monitoramento 24h; nas do Bandeira Park (GRU e VCP), há seguro Tokio Marine de R$ 1.000.000 (a segurança varia por operadora). 636 637## Como reservar 638Escolha as datas, o tipo de vaga e pague via Pix, com o preço final antes de fechar. A reserva antecipada garante a vaga em alta temporada.`},{slug:"onde-deixar-carro-viagem-de-uma-semana",categoria:"Comparador",pergunta:"Vou viajar uma semana e não sei onde deixar o carro com segurança sem gastar uma fortuna",respostaRapida:`Para uma semana, o estacionamento credenciado fora do terminal sai a ${S(q.weekPerDay)}/dia na vaga descoberta (faixa de 7 a 12 dias), com transfer 24h, monitoramento 24h e seguro incluÃdo. No Xpark você reserva a vaga em GRU ou VCP pelo menor preço da praça e paga via Pix.`,corpo:`## Quanto custa uma semana 639Na faixa de 7 a 12 dias, a diária já cai: ${S(q.weekPerDay)}/dia na descoberta (a coberta tem acréscimo), cerca de ${S(q.weekTotalCharged)} no total de 7 dias na descoberta. à bem menos que a tarifa cheia praticada dentro do terminal para o mesmo perÃodo. 640 641## Segurança sem pagar a mais 642Mesmo na tarifa mais baixa, a vaga vem com monitoramento 24h, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), que cobre roubo e furto mediante arrombamento. Economizar aqui não significa abrir mão de proteção. 643 644## Para fechar 645- Reserve online com antecedência pelo Xpark 646- Escolha descoberta (mais barata) ou coberta (protege do tempo) 647- Pague via Pix com o valor final antes de confirmar`},{slug:"estacionamento-aeroporto-mais-barato-alternativa",categoria:"Comparador",pergunta:"Deixei o carro no estacionamento do aeroporto e paguei caro - como evitar na próxima?",respostaRapida:`Para viagens de 1 dia ou mais, o estacionamento dentro do terminal cobra pela conveniência imediata; um credenciado fora sai bem mais em conta e ainda inclui o transfer 24h. No Xpark a diária começa em ${S(q.dailyFull)} e cai quanto mais dias você fica, chegando a ${S(q.longStayDaily)}/dia acima de 31 dias.`,corpo:`## Por que o do terminal pesa 648A tarifa dentro do aeroporto é pensada para curtÃssima permanência. Em uma viagem de dias, ela acumula rápido, porque cobra o valor cheio por estar a poucos metros do embarque. 649 650## Como pagar menos sem perder segurança 651Um estacionamento credenciado fora do terminal parte de ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom) e reduz a diária conforme a estadia: ${S(q.weekPerDay)}/dia de 7 a 12 dias e ${S(q.longStayDaily)}/dia acima de 31. Inclui transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) - você troca a proximidade imediata por economia, sem abrir mão de proteção. 652 653## Dica para a próxima 654- Reserve com antecedência pelo Xpark e trave a tarifa 655- Compare descoberta, coberta e valet (GRU) antes de decidir 656- Use o menor preço da praça a seu favor`},{slug:"como-chegar-aeroporto-sem-tarifa-alta",categoria:"Comparador",pergunta:"Como chegar ao aeroporto de carro sem pagar as tarifas altas do estacionamento oficial?",respostaRapida:`Deixe o carro em um estacionamento credenciado fora do terminal e use o transfer 24h incluÃdo até o embarque. No Xpark, em GRU e VCP, a diária começa em ${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom), com monitoramento 24h e seguro, e a reserva é online por Pix.`,corpo:`## O caminho mais econômico 657Você vai de carro até a unidade credenciada perto do aeroporto, deixa o veÃculo guardado e segue de van até o terminal. Na volta, a van te busca. à a conveniência de ir de carro sem a tarifa cheia de dentro do aeroporto. 658 659## O que está incluÃdo 660- Transfer 24h de ida e volta, em qualquer horário de voo 661- Monitoramento 24h com câmeras e equipe no local 662- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park (GRU e VCP); a segurança varia por operadora 663- Diária a partir de ${S(q.longStayDaily)}, pelo menor preço da praça 664 665## Como garantir 666Reserve online pelo Xpark, escolha o tipo de vaga e pague via Pix, com o preço final antes de fechar.`},{slug:"comparador-vagas-baratas-guarulhos-viracopos",categoria:"Comparador",pergunta:"Comparador de estacionamento: qual o melhor site para vagas baratas em Guarulhos e Viracopos?",respostaRapida:"O xpark é o comparador de estacionamentos do Brasil. Em Guarulhos e Viracopos, você pode comparar opções e reservar online. Preços, traslado e segurança depen
666dem da unidade; consulte as fichas para comparar as condições.",corpo:`## Barato de verdade é o menor preço da praça 667Vaga barata sem segurança é economia falsa. O Xpark lista apenas unidades credenciadas e opera com o menor preço da praça, então a tarifa-piso já vem com transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). 668 669## Preços em GRU e VCP 670- Descoberta: a partir de ${S(q.longStayDaily)}/dia 671- Coberta: com acréscimo sobre a descoberta 672- Valet (só em GRU): valor exato aparece na hora da reserva 673 674Esses valores valem para longa permanência (31+ dias). Em viagens curtas, a descoberta parte de ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom). 675 676## Por que reservar pelo comparador 677- Preço final antes de fechar, sem taxa na chegada 678- Comparação lado a lado das modalidades 679- Pagamento por Pix e vaga garantida`},{slug:"top-estacionamentos-reserva-online-guarulhos",categoria:"Comparador",pergunta:"Top opções de estacionamento com reserva online para o Aeroporto de Guarulhos (GRU)",respostaRapida:`Em GRU, o Xpark reúne as opções credenciadas com reserva online: vaga descoberta a partir de ${S(q.longStayDaily)}/dia; a coberta tem acréscimo e o Valet (só em GRU) tem o valor exato exibido na hora da reserva. Todas com transfer 24h e monitoramento 24h; nas do Bandeira Park (GRU e VCP), seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## As três modalidades em GRU 680- Descoberta: melhor custo, a partir de ${S(q.longStayDaily)}/dia 681- Coberta: proteção contra sol e chuva, com acréscimo sobre a descoberta 682- Valet (só em GRU): você entrega o carro e segue direto, com o valor exato exibido na hora da reserva 683 684## O que todas têm em comum 685Transfer 24h de ida e volta, monitoramento 24h com câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), que cobre roubo e furto mediante arrombamento, colisão (10% dos prejuÃzos, mÃnimo R$ 10.000) e roubo com carro reserva de R$ 20.000. 686 687## Reserva online 688Escolha as datas e a modalidade, veja o preço final pela faixa de permanência e pague via Pix. Reservar com antecedência garante a vaga em feriados e alta temporada.`},{slug:"vantagens-estacionamento-parceiro-fora-aeroporto",categoria:"Comparador",pergunta:"Quais as vantagens de usar estacionamento parceiro fora do aeroporto com traslado gratuito?",respostaRapida:`As vantagens são preço menor que o do terminal, traslado gratuito 24h de ida e volta, monitoramento 24h e seguro incluÃdo. No Xpark, em GRU e VCP, isso começa em ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom), com a diária caindo nas estadias mais longas.`,corpo:`## Preço e proteção juntos 689O estacionamento parceiro fora do terminal cobra menos porque não paga o metro quadrado do aeroporto - e mesmo assim entrega transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). 690 691## As vantagens na prática 692- Diária menor que a do terminal, a partir de ${S(q.longStayDaily)} 693- Traslado gratuito 24h, em qualquer horário de voo 694- Carro monitorado e segurado durante toda a viagem 695- Reserva online com preço final e pagamento por Pix 696 697## Quando compensa mais 698Quanto mais dias, maior a economia: a diária cai para ${S(q.weekPerDay)} de 7 a 12 dias e ${S(q.longStayDaily)} acima de 31. Para viagens de trabalho ou férias longas, a diferença para o terminal é grande.`},{slug:"e-seguro-deixar-carro-fora-do-aeroporto",categoria:"Comparador",pergunta:"Tenho medo de deixar o carro em estacionamento fora do aeroporto - é seguro?",respostaRapida:"Sim - os estacionamentos credenciados têm monitoramento 24 horas, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). No Xpark você reserva apenas unidades que atendem esse padrão em GRU e VCP.",corpo:`## O que garante a segurança 699O medo é justo, e a resposta é estrutura. As unidades credenciadas no Xpark têm monitoramento 24h com câmeras, controle de acesso e equipe no local - o carro não fica largado, fica guardado. 700 701## O que o seguro cobre 702O seguro Tokio Marine de R$ 1.000.000 é oferecido pelo Bandeira Park nas unidades de GRU e VCP (a segurança varia por operadora), e cobre: 703- Roubo e furto mediante arrombamento 704- Colisão e demais eventos: 10% dos prejuÃzos, com mÃnimo de R$ 10.
704000 705- Roubo com carro reserva de R$ 20.000 706 707## Como escolher com tranquilidade 708No Xpark você só encontra unidades que atendem esse padrão. Reserve online, escolha coberta ou descoberta e pague via Pix - a proteção é a mesma nas duas.`},{slug:"como-escolher-plataforma-reserva-estacionamento",categoria:"Comparador",pergunta:"Plataformas de reserva de estacionamento de aeroporto: como escolher a melhor?",respostaRapida:"Compare destinos, preço final, segurança e deslocamento. O xpark reúne estacionamentos pelo Brasil, com fontes nas fichas e reserva online nas praças atendidas. Traslado e seguro variam conforme a unidade.",corpo:`## Os critérios que importam 709- Cobertura: a plataforma atende o seu aeroporto (GRU ou VCP)? 710- Preço: mostra o valor final por faixa de dias, sem taxa na chegada? 711- Segurança: as unidades têm monitoramento 24h e seguro? Qual a cobertura? 712- Transfer: está incluÃdo e em qual horário? 713 714## Como o Xpark se posiciona 715O xpark compara estacionamentos em destinos pelo Brasil. Nas praças atendidas, a reserva é online, com preço final antes de fechar e pagamento por Pix. Serviços como traslado e seguro variam por unidade; confira cada ficha. 716 717## Um extra útil 718O Seguro Cancelamento e Atraso (R$ 25) permite cancelar até 6h antes e dá 3h grátis no retorno se o voo atrasar.`},{slug:"estacionamentos-baratos-com-traslado-viracopos-2026",categoria:"Comparador",pergunta:"Melhores estacionamentos baratos com traslado perto do Aeroporto de Viracopos em 2026",seoTitle:"Estacionamentos baratos em Viracopos com traslado",seoDescription:"Compare preços de 1, 7, 15 e 30 dias, distância, cobertura e traslado perto do Aeroporto de Viracopos. Dados conferidos em setembro de 2026.",dateModified:"2026-10-01",respostaRapida:`Qual estacionamento barato em Viracopos tem traslado? Entre os preços publicados, o Bandeira Park começa em ${S(le.dailyFrom)} com o cupom XPK26 (${S(le.dailyFull)} sem cupom), com van 24 horas e trajeto informado de cerca de 7 minutos. Para 7, 15 e 30 dias, publica ${S(ge("VCP",7))} com XPK26 (${S(je(At("VCP"),7))} sem cupom), ${S(ge("VCP",15))} com XPK26 (${S(je(At("VCP"),15))} sem cupom) e ${S(ge("VCP",30))} com XPK26 (${S(je(At("VCP"),30))} sem cupom). Valores conferidos em setembro de 2026.`,corpo:`## Preços para 1, 7, 15 e 30 dias 719 720| Estacionamento | 1 dia | 7 dias | 15 dias | 30 dias | 721|---|---:|---:|---:|---:| 722| Bandeira Park, com XPK26 | ${S(ge("VCP",1))} | ${S(ge("VCP",7))} | ${S(ge("VCP",15))} | ${S(ge("VCP",30))} | 723| Bandeira Park, sem cupom | ${S(je(At("VCP"),1))} | ${S(je(At("VCP"),7))} | ${S(je(At("VCP"),15))} | ${S(je(At("VCP"),30))} | 724| Viracopos Aeroparking | R$ 34,70 | R$ 242,90 | R$ 520,50 | R$ 1.041,00 | 725 726O Viracopos Aeroparking tem van gratuita e fica a 2,48 km em linha reta do terminal. Bandeira Park fica a 5 km em linha reta e informa van 24 horas, com trajeto de cerca de 7 minutos. Eco22, Aero Viracopos e Pórtico ficam mais perto em linha reta, mas não publicavam preço comparável nas fontes consultadas. 727 728## Barato com traslado incluÃdo 729Em Viracopos, as duas operações com preço comparável acima informam traslado incluÃdo. Compare o total do perÃodo, não apenas a diária. No Bandeira Park, a vaga descoberta custa ${S(le.dailyFrom)} com o cupom XPK26 (${S(le.dailyFull)} sem cupom) para 1 dia. A cobertura coberta tem preço diferente, mostrado na reserva. 730 731## Segurança que acompanha o preço 732Mesmo nas tarifas mais baixas, as unidades têm monitoramento 24h, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Em VCP também há o sistema self-parking, em que você mesmo estaciona e leva a chave. 733 734## Como escolher e reservar 735- Compare o total de 1, 7, 15 ou 30 dias 736- Confira distância e tempo informado da van 737- Compare descoberta e coberta no xpark 738- Veja o preço final pela faixa de dias 739- Pague via Pix e garanta a vaga 740 741Veja também a [página de Viracopos](/aeroportos/estacionamento-aeroporto-viracopos) e os [preços comparados](/aeroportos/estacionamento-aeroporto-viracopos/precos). 742
743Fonte: tabela oficial do Bandeira Park e informações das operações; preços e distâncias conferidos entre julho e setembro de 2026. Onde não havia preço público, o dado ficou como não divulgado.`},{slug:"onde-reservar-estacionamento-melhor-custo-beneficio",categoria:"Comparador",pergunta:"Onde reservar estacionamento de aeroporto com melhor custo-benefÃcio no Brasil?",respostaRapida:`Para quem viaja por Guarulhos (GRU) ou Viracopos (VCP), o Xpark oferece o melhor custo-benefÃcio ao operar com o menor preço da praça - a partir de ${S(q.longStayDaily)}/dia, com transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). A reserva é online por Pix.`,corpo:`## Custo-benefÃcio é preço mais o que vem junto 744O melhor custo-benefÃcio não é só a menor diária, é o que acompanha ela. No Xpark, o menor preço da praça já inclui transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). 745 746## Como o valor cai com os dias 747- 1 a 6 dias: ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom, descoberta) 748- 7 a 12 dias: ${S(q.weekPerDay)}/dia 749- Acima de 31 dias: ${S(q.longStayDaily)}/dia 750 751## Onde reservar 752No Xpark, para GRU e VCP, você compara as modalidades, vê o preço final antes de fechar e paga via Pix - com a opção de Seguro Cancelamento e Atraso por R$ 25.`},{slug:"vale-a-pena-reservar-estacionamento-online-antecedencia",categoria:"Comparador",pergunta:"Vale a pena reservar estacionamento de aeroporto online com antecedência?",respostaRapida:"Sim - reservar online com antecedência garante a vaga e trava a tarifa, principalmente em feriados e alta temporada. No Xpark você ainda pode adicionar o Seguro Cancelamento e Atraso por R$ 25, que permite cancelar até 6h antes e dá 3h grátis no retorno se o voo atrasar.",corpo:`## Por que reservar antes 753Em datas de pico, a procura sobe e a vaga pode faltar. A reserva antecipada garante o lugar e trava o preço, evitando a tarifa cheia de última hora. 754 755## A proteção extra do seguro de cancelamento 756Por R$ 25, o Seguro Cancelamento e Atraso amplia sua margem: 757- Cancelamento online com reembolso integral até 6h antes da entrada (sem o seguro, o limite é 3 dias) 758- 3 horas adicionais gratuitas no retorno se o voo atrasar 759 760Para acionar a isenção por atraso, basta apresentar a reserva no balcão da unidade. 761 762## Como fazer 763Reserve pelo Xpark, escolha a modalidade, veja o preço final e pague via Pix.`},{slug:"como-comparar-precos-estacionamentos-aeroporto",categoria:"Comparador",pergunta:"Como comparar preços de estacionamentos próximos ao aeroporto antes de viajar?",respostaRapida:`Use um comparador que mostre o preço final por faixa de permanência antes de reservar. No Xpark, para GRU e VCP, a diária vai de ${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom)/dia em viagens curtas a ${S(q.longStayDaily)}/dia acima de 31 dias (a partir de ${S(q.longStayDaily)}/dia nas estadias longas), tudo com transfer 24h e seguro inclusos.`,corpo:`## Compare pelo preço final, não pela diária isolada 764A diária avulsa engana: o que importa é o total pela sua faixa de dias. Um comparador bom mostra esse valor fechado antes de você reservar, sem taxa surpresa na chegada. 765 766## A lógica das faixas no Xpark 767- 1 a 6 dias: ${S(q.dailyFrom)}/dia na descoberta com cupom XPK26 (${S(q.dailyFull)} sem cupom); a coberta tem acréscimo 768- 7 a 12 dias: ${S(q.weekPerDay)}/dia na descoberta (a coberta tem acréscimo) 769- 13 a 17 e 18 a 30 dias: pacote fechado, mais barato que a diária 770- Acima de 31 dias: ${S(q.longStayDaily)}/dia na descoberta (a coberta tem acréscimo) 771 772## O que entra na conta além do preço 773Transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Compare isso também - preço sem segurança não é economia.`},{slug:"viajar-15-dias-guarulhos-onde-deixar-carro",categoria:"GRU",pergunta:"Vou viajar 15 dias partindo de Guarulhos e não sei o que fazer com o carro",respostaRapida:`Para 15 dias saindo de Guarulhos, o Xpark cobra por pacote de longa permanência: ${S(q.d17Total)} na vaga descoberta (faixa de 13 a 17 dias); a coberta tem acréscimo, com transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Reserva online por Pix.`,corpo:`## Quanto custa deixar o carro 15 dias em GRU 77415 dias caem na faixa de 13 a 17 dias, cobrada como pacote fechado - mais barato que somar diárias avulsas: ${S(q.d17Total)} na descoberta (a coberta tem acréscimo). Se preferir entregar o carro, há Valet disponÃvel em GRU, com o valor exato a
774parecendo na hora da reserva. 775 776## O carro seguro por duas semanas 777Deixar o carro parado 15 dias pede estrutura. As unidades têm monitoramento 24h com câmeras; nas do Bandeira Park (GRU e VCP), há também seguro Tokio Marine de R$ 1.000.000 (a segurança varia por operadora), que cobre roubo e furto mediante arrombamento, colisão (10% dos prejuÃzos, mÃnimo R$ 10.000) e roubo com carro reserva de R$ 20.000. 778 779## Como organizar 780- Reserve com antecedência pelo Xpark e trave a tarifa 781- Escolha descoberta, coberta ou valet 782- Pague via Pix; some o Seguro Cancelamento e Atraso (R$ 25) se o voo puder mudar`},{slug:"voo-madrugada-guarulhos-sem-carona",categoria:"GRU",pergunta:"Meu voo é de madrugada em Guarulhos e não tenho carona - como chego com o carro sem preocupação?",respostaRapida:"O transfer do estacionamento até o terminal de Guarulhos funciona 24 horas, então voos de madrugada estão atendidos - você deixa o carro na unidade e a van te leva ao embarque, sem depender de carona. O carro fica com monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).",corpo:`## Transfer 24h resolve o voo de madrugada 783GRU tem muitos voos na madrugada, e nem sempre dá para contar com carona ou app a essa hora. Como o transfer é 24h, você chega na unidade no seu horário, deixa o carro e segue de van até o terminal - e na volta a van te busca, a qualquer hora. 784 785## O carro protegido enquanto você viaja 786- Monitoramento 24h com câmeras e equipe no local 787- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (roubo e furto mediante arrombamento, colisão, carro reserva de R$ 20.000); a segurança varia por operadora 788- Vaga descoberta a partir de ${S(q.longStayDaily)}/dia (a coberta tem acréscimo) 789 790## Como garantir 791Reserve online pelo Xpark, confirme o horário de entrada e pague via Pix.`},{slug:"e-seguro-deixar-carro-muitos-dias-guarulhos",categoria:"GRU",pergunta:"Tenho medo de deixar o carro muitos dias perto de Guarulhos - é seguro?",respostaRapida:"Sim - as unidades perto de Guarulhos têm monitoramento 24 horas e câmeras; nas do Bandeira Park (GRU), há também seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), então o carro fica protegido mesmo parado por semanas. O Xpark lista apenas unidades com esse padrão.",corpo:`## O que garante a segurança em GRU 792Deixar o carro muitos dias perto do aeroporto mais movimentado do paÃs exige estrutura de verdade: monitoramento 24h com câmeras, controle de acesso e equipe no local. O carro não fica largado, fica guardado. 793 794## O que o seguro cobre 795O seguro Tokio Marine de R$ 1.000.000 é oferecido pelo Bandeira Park nas unidades de GRU e VCP (a segurança varia por operadora), e cobre: 796- Roubo e furto mediante arrombamento 797- Colisão e demais eventos: 10% dos prejuÃzos, com mÃnimo de R$ 10.000 798- Roubo com carro reserva de R$ 20.000 799 800## Para viagens longas 801Quanto mais dias, menor a diária: a descoberta parte de ${S(q.longStayDaily)}/dia nas estadias acima de 31 dias. A proteção é a mesma na descoberta, na coberta e no valet.`},{slug:"estacionamento-oficial-guarulhos-cheio-e-caro",categoria:"GRU",pergunta:"O estacionamento oficial do GRU está sempre cheio e caro - o que fazer antes de viajar?",respostaRapida:`Reserve com antecedência uma vaga em estacionamento credenciado fora do terminal: garante o lugar e sai mais em conta. No Xpark, em GRU, a diária vai de ${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom) (curta permanência) a ${S(q.longStayDaily)}/dia (longa), com transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## Por que o de dentro lota e pesa 802O estacionamento dentro do terminal tem vagas limitadas e tarifa de curtÃssima permanência - em datas cheias, enche e sai caro para quem fica dias. 803 804## A alternativa credenciada 805Fora do terminal, com transfer 24h incluÃdo, a vaga sai a partir de ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom) na curta permanência e cai até ${S(q.longStayDaily)}/dia nas estadias longas. Reservando antes, você garante o lugar mesmo em alta temporada e não depende da disponibilidade do balcão. 806 807## O que vem junto 808- Transfer 24h de ida e volta 809- Monitoramento 24h; seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) 810- Reserva online por Pix, com o preço final antes de fechar`},{slug:"viagem-a-trabalho-um-mes-guarulhos",categoria:"GRU",pergunta:"Vou viajar a trabalho um mês saindo de Guarulhos e não sei onde deixar o carro com segurança",respostaRapida:`Para um mês saindo de Guarulhos, o pacote de 18 a 30 dias sai por ${S(q.longStayTotal)} na descoberta (a coberta tem acréscimo); acima de 31 dias, a diária cai para ${S(q.longStayDaily)} (descoberta). Todas com transfer 24h e monitoramento 24h; nas do Bandeira Park (GRU e VCP), seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## Quanto custa um mês em GRU 811- 18 a 30 dias: ${S(q.longStayTotal)} (descoberta); a coberta tem acréscimo, em pacote fechado 812- Acima de 31 dias: ${S(q.longStayDaily)}/dia (descoberta); a coberta tem acréscimo 813 814Quanto mais longa a permanência, menor o custo por dia - ideal para viagem de trabalho. 815 816## Segurança para o carro parado semanas 817As unidades têm monitoramento 24h com câmeras; nas do Bandeira Park (GRU e VCP), há também seguro Tokio Marine de R$ 1.000.000 (a segurança varia por operadora), cobrindo roubo e furto mediante arrombamento, colisão (10% dos prejuÃzos, mÃnimo R$ 10.000) e roubo com carro reserva de R$ 20.000. 818 819## Como reservar 820Reserve pelo Xpark, escolha a modalidade e pague via Pix. Se as datas puderem mudar, o Seguro Cancelamento e Atraso (R$ 25) amplia a flexibilidade.`},{slug:"como-funcionam-estacionamentos-longa-permanencia-guarulhos",categoria:"GRU",pergunta:"Como funcionam os estacionamentos de longa permanência perto de Guarulhos?",respostaRapida:`Funcionam com pacote fechado por faixa de dias, mais barato que a diária avulsa: em GRU, ${S(q.d17Total)} (13-17 dias), ${S(q.longStayTotal)} (18-30) e ${S(q.longStayDaily)}/dia acima de 31, na descoberta. Incluem transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## A lógica da longa permanência 821Em vez de multiplicar a diária, a longa permanência cobra um pacote fechado por faixa de dias - quanto mais tempo, menor o custo por dia. Na descoberta em GRU: 822- 13 a 17 dias: ${S(q.d17Total)} 823- 18 a 30 dias: ${S(q.longStayTotal)} 824- Acima de 31 dias: ${S(q.longStayDaily)}/dia 825 826A vaga coberta segue a mesma lógica, com um acréscimo sobre a descoberta. 827 828## O que está incluÃdo 829Transfer 24h de ida e volta, monitoramento 24h com câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) - o mesmo padrão de proteção para carros que ficam semanas parados. 830 831## Como contratar 832Escolha as datas no Xpark, veja o pacote calculado e pague via Pix.`},{slug:"beneficios-estacionamento-privado-transfer-gru",categoria:"GRU",pergunta:"Quais os benefÃcios de um estacionamento privado com transfer perto do GRU?",respostaRapida:`Preço abaixo do terminal, transfer 24h gratuito de ida e volta, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). No Xpark, em GRU, a diária vai de ${S(q.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(q.longStayDaily)}/dia (longa).`,corpo:`## Por que o privado com transfer compensa 833O estacionamento privado fora do terminal cobra menos porque não paga o metro quadrado do aeroporto - e entrega o carro monitorado, segurado e com transfer incluÃdo. 834 835## Os benefÃcios na prática 836- Diária menor que a do terminal, de ${S(q.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(q.longStayDaily)}/dia (longa) 837- Transfer 24h gratuito, em qualquer horário de voo 838- Monitoramento 24h; seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) 839- Reserva online por Pix, com preço final antes de fechar 840 841## Quando vale mais 842Quanto mais longa a viagem, maior a economia frente ao terminal - especialmente em viagens de trabalho e férias.`},{slug:"vale-a-pena-reservar-antecedencia-guarulhos",categoria:"GRU",pergunta:"Vale a pena reservar estacionamento com antecedência perto de Guarulhos?",respostaRapida:"Sim - a reserva antecipada garante a vaga e a tarifa em GRU, sobretudo em alta temporada. Com o Seguro Cancelamento e Atraso (R$ 25) você ainda pode cancelar até 6h antes e ganha 3h grátis no retorno se o voo atrasar.",corpo:`## Por que reservar antes em GRU 843Guarulhos é o aeroporto mais movimentado do paÃs; em feriados e férias a procura por vaga dispara. Reservar com antecedência garante o lugar e trava o preço, evitando a tarifa cheia de última hora. 844 845## A proteção extra 846Por R$ 25, o Seguro Cancelamento e Atraso amplia sua margem: 847- Reembolso integral cancelando até 6h antes da entrada (sem o seguro, o limite é 3 dias) 848- 3 horas adicionais gratuitas no retorno se o voo atrasar 849 850## Como fazer 851Reserve pelo Xpark, escolha descoberta, coberta ou valet, e pague via Pix.`},{slug:"como-escolher-estacionamento-confiavel-traslado-gru",categoria:"GRU",pergunta:"Como escolher um estacionamento confiável com traslado gratuito para o GRU?",respostaRapida:`Procure monitoramento 24h, seguro e traslado incluÃdo. O Xpark reúne em GRU apenas unidades credenciadas com esse padrão, transfer 24h, a partir de ${S(q.longStayDaily)}/dia, e mostra o preço final antes da reserva.`,corpo:`## Os sinais de um estacionamento confiável 852- Monitoramento 24h com câmeras e equipe no local 853- Seguro do veÃculo com cobertura clara 854- Traslado incluÃdo e com horário definido 855- Preço final transparente, sem taxa na chegada 856 857## Como o Xpark filtra isso em GRU 858As unidades listadas têm transfer 24h e monitoramento 24h; nas do Bandeira Park (GRU e VCP), há também seguro Tokio Marine de R$ 1.000.000 (cobre roubo e furto mediante arrombamento, colisão e carro reserva de R$ 20.000 ); a segurança varia por operadora. A diária vai de ${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom) na curta permanência a ${S(q.longStayDaily)}/dia na longa. 859 860## Como reservar 861Compare as unidades no Xpark, veja o preço final e pague via Pix.`},{slug:"estacionamento-vaga-coberta-monitoramento-guarulhos",categoria:"GRU",pergunta:"Estacionamento com vaga coberta e monitoramento 24h perto de Guarulhos: como funciona?",respostaRapida:"A vaga coberta em GRU protege o carro de sol, chuva e granizo e tem um acréscimo sobre a descoberta em qualquer faixa, com monitoramento 24 horas, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Transfer 24h incluÃdo.",corpo:`## O que a coberta oferece 862A vaga coberta protege pintura, borrachas e painel contra sol, chuva e granizo - faz diferença em viagens longas. Custa cerca de 20% a mais que a descoberta em qualquer faixa. 863 864## Segurança em qualquer modalidade 865O monitoramento 24h com câmeras e o seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) valem para coberta e descoberta - a diferença entre elas é só a proteção contra o tempo, não a segurança patrimonial. 866 867## Como reservar 868Escolha a vaga coberta no Xpark, veja o preço pela faixa de dias e pague via Pix. O transfer 24h está incluÃdo.`},{slug:"melhor-estacionamento-longa-permanencia-guarulhos",categoria:"GRU",pergunta:"Melhor estacionamento de longa permanência perto de Guarulhos",respostaRapida:`Para longa permanência em GRU, o Xpark opera com o menor preço da praça: ${S(q.longStayTotal)} no pacote de 18 a 30 dias (descoberta) e ${S(q.longStayDaily)}/dia acima de 31, com transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## O melhor para quem deixa o carro semanas 869Longa permanência pede o menor custo por dia com segurança que aguente o tempo parado. O Xpark opera com o menor preço da praça: 870- 18 a 30 dias: ${S(q.longStayTotal)} (descoberta); a coberta tem acréscimo
871- Acima de 31 dias: ${S(q.longStayDaily)}/dia (descoberta); a coberta tem acréscimo 872 873## Proteção para o carro parado 874Monitoramento 24h com câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), cobrindo roubo e furto mediante arrombamento, colisão e carro reserva de R$ 20.000. 875 876## Como reservar 877Reserve pelo Xpark com transfer 24h incluÃdo e pague via Pix.`},{slug:"estacionamento-mais-barato-transfer-gru",categoria:"GRU",pergunta:"Estacionamento mais barato com transfer para o GRU",respostaRapida:`O mais barato perto de GRU parte de ${S(q.longStayDaily)}/dia (descoberta, longa permanência), com transfer 24h incluÃdo - e o Xpark opera com o menor preço da praça, então essa é a tarifa-piso. Na curta permanência, a diária é ${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom).`,corpo:`## Barato com segurança em GRU 878O menor valor por dia perto de Guarulhos é ${S(q.longStayDaily)}/dia na descoberta (acima de 31 dias); em viagens curtas, a diária é ${S(q.dailyFrom)} com cupom XPK26 (${S(q.dailyFull)} sem cupom). Como o Xpark opera com o menor preço da praça, essa é a tarifa-piso do mercado - e já vem com transfer 24h. 879 880## O que entra mesmo na tarifa mais baixa 881- Transfer 24h de ida e volta 882- Monitoramento 24h com câmeras 883- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park (GRU e VCP) 884 885## Como garantir 886Reserve online pelo Xpark, compare as faixas de dias e pague via Pix. Barato de verdade é o menor preço com o carro protegido.`},{slug:"melhores-opcoes-estacionamento-seguro-guarulhos",categoria:"GRU",pergunta:"Melhores opções de estacionamento seguro perto do Aeroporto de Guarulhos",respostaRapida:`As opções seguras perto de GRU têm monitoramento 24h, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), com transfer 24h e diária a partir de ${S(q.longStayDaily)}/dia. O Xpark reúne essas unidades com reserva online.`,corpo:`## O que define "seguro" em estacionamento de aeroporto 887Não é só ter câmera na entrada. As unidades credenciadas no Xpark têm monitoramento 24h, controle de acesso, equipe no local e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), que cobre: 888- Roubo e furto mediante arrombamento 889- Colisão e demais eventos: 10% dos prejuÃzos, mÃnimo R$ 10.000 890- Roubo com carro reserva de R$ 20.000 891 892## Segurança em todas as modalidades 893Descoberta, coberta e valet têm o mesmo padrão de proteção. A diária vai de ${S(q.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(q.longStayDaily)}/dia (longa). 894 895## Como reservar 896Compare no Xpark, veja o preço final e pague via Pix.`},{slug:"top-estacionamentos-traslado-24h-gru",categoria:"GRU",pergunta:"Top estacionamentos com traslado 24h para o GRU",respostaRapida:`Em GRU, o Xpark lista estacionamentos com traslado 24h incluÃdo a partir de ${S(q.longStayDaily)}/dia, com monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Reserva online por Pix e menor preço da praça.`,corpo:`## Traslado 24h em GRU 897O transfer funciona 24 horas nas unidades credenciadas, então atende voo em qualquer horário, inclusive de madrugada. Você deixa o carro, embarca na van e chega ao terminal - com o mesmo esquema na volta. 898 899## O que vem junto 900- Diária de ${S(q.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(q.longStayDaily)}/dia (longa), pelo menor preço da praça 901- Monitoramento 24h com câmeras 902- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park (GRU e VCP) 903- Reserva online por Pix, com preço final antes de fechar 904 905## Como escolher 906Compare as unidades no Xpark e reserve a que melhor encaixa na sua viagem.`},{slug:"estacionamento-melhor-custo-beneficio-gru",categoria:"GRU",pergunta:"Qual o estacionamento com melhor custo-benefÃcio para quem viaja pelo GRU?",respostaRapida:`O melhor custo-benefÃcio em GRU combina menor preço da praça (a partir de ${S(q.longStayDaily)}/dia), transfer 24h incluÃdo, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). No Xpark você compara e reserva online.`,corpo:`## Custo-benefÃcio é preço mais o que vem junto 907A menor diária só vale se o carro estiver protegido. No Xpark, o menor preço da praça já inclui transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). 908 909## Como o valor cai com os dias 910- 1 a 6 dias: ${S(q.dailyFrom)}/dia com cupom XPK26 (${S(q.dailyFull)} sem cupom, descoberta) 911- 7 a 12 dias: ${S(q.weekPerDay)}/dia 912- Acima de 31 dias: ${S(q.longStayDaily)}/dia 913 914Há ainda vaga coberta (com acréscimo sobre a descoberta) e Valet, disponÃvel só em GRU, com o valor exato a
914parecendo na hora da reserva. 915 916## Como reservar 917Compare as modalidades no Xpark, veja o preço final e pague via Pix, com opção de Seguro Cancelamento e Atraso por R$ 25.`},{slug:"onde-deixar-carro-com-seguranca-campinas",categoria:"VCP",pergunta:"Onde deixo o carro com segurança quando viajo por Campinas?",respostaRapida:`Em um estacionamento credenciado perto de Viracopos (VCP), com monitoramento 24h, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), a partir de ${S(le.longStayDaily)}/dia. O Xpark reserva a vaga online e inclui o transfer 24h até o terminal.`,corpo:`## Onde o carro fica seguro em Campinas 918Deixar o carro na rua ou em lote sem estrutura troca economia por risco. A opção segura é um estacionamento credenciado perto de Viracopos, com monitoramento 24h, câmeras e equipe no local. 919## O que protege o veÃculo 920Nas unidades do Bandeira Park em GRU e VCP há seguro Tokio Marine de R$ 1.000.000, que cobre roubo e furto mediante arrombamento, colisão (10% dos prejuÃzos, mÃnimo R$ 10.000) e roubo com carro reserva de R$ 20.000. 921## Como funciona 922- Reserve a vaga online pelo Xpark, a partir de ${S(le.longStayDaily)}/dia (descoberta, longa permanência) 923- Transfer 24h incluÃdo até o terminal 924- Pagamento via Pix, com o preço final antes de fechar`},{slug:"voo-madrugada-viracopos-sem-carro-proprio",categoria:"VCP",pergunta:"Meu voo sai de Viracopos de madrugada - como chego ao aeroporto e volto sem carro próprio?",respostaRapida:"O transfer até o terminal de Viracopos funciona 24 horas, então voos de madrugada estão atendidos - você deixa o carro na unidade e a van te leva ao embarque, e te busca na volta. O carro fica com monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).",corpo:`## Transfer 24h para voos de madrugada em VCP 925Viracopos tem muitos voos de madrugada, quando carona e app ficam caros ou escassos. Como o transfer é 24h, você chega na unidade no seu horário, deixa o carro e segue de van até o terminal - e na volta, a qualquer hora, a van te busca. 926## O carro protegido enquanto você viaja 927- Monitoramento 24h com câmeras e equipe no local 928- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park (GRU e VCP) 929- Vaga descoberta a partir de ${S(le.longStayDaily)}/dia (a coberta tem acréscimo) 930## Como garantir 931Reserve online pelo Xpark, confirme o horário de entrada e pague via Pix.`},{slug:"deixar-carro-na-rua-varios-dias-campinas",categoria:"VCP",pergunta:"Estou preocupado em deixar o carro na rua vários dias em Campinas - o que fazer?",respostaRapida:`Em vez da rua, deixe o carro em um estacionamento credenciado perto de Viracopos, com monitoramento 24h, câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). No Xpark, a longa permanência sai por pacote: ${S(le.longStayTotal)} de 18 a 30 dias na descoberta, com transfer 24h.`,corpo:`## O risco da rua em viagem longa 932Carro parado na rua por dias é alvo de furto, multa e dano - e você fica sem saber como está de longe. Um estacionamento credenciado resolve isso com estrutura e seguro. 933## Quanto custa a longa permanência em VCP 934- 18 a 30 dias: ${S(le.longStayTotal)} (descoberta); a coberta tem acréscimo, pacote fechado 935- Acima de 31 dias: ${S(le.longStayDaily)}/dia (descoberta); a coberta tem acréscimo 936Todas com transfer 24h e monitoramento 24h; nas do Bandeira Park (GRU e VCP), seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). 937## Como reservar 938Reserve online pelo Xpark e pague via Pix, com o preço final antes de fechar.`},{slug:"como-evitar-pagar-caro-estacionamento-viracopos-uma-semana",categoria:"VCP",pergunta:"Como evitar pagar caro no estacionamento do aeroporto em viagem de mais de uma semana saindo de Campinas?",respostaRapida:`Reserve uma vaga em estacionamento credenciado fora do terminal, onde a diária cai com o tempo: em VCP, ${S(le.weekPerDay)}/dia de 7 a 12 dias na descoberta. O Xpark opera com o menor preço da praça, com transfer 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## Por que o de dentro pesa numa semana 939A tarifa dentro do terminal de Viracopos é de curta permanência; numa viagem de mais de uma semana, ela acumula rápido. 940## Quanto custa uma semana fora do terminal 941Na faixa de 7 a 12 dias, a descoberta sai a ${S(le.weekPerDay)}/dia, cerca de ${S(le.weekTotalCharged)} no total de 7 dias (a coberta tem acréscimo), com transfer 24h incluÃdo. Como o Xpark opera com o menor preço da praça, essa é a base do mercado. 942## O que vem junto 943- Transfer 24h de ida e volta 944- Monitoramento 24h; seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) 945- Reserva online por Pix`},{slug:"medo-perder-voo-transito-ate-viracopos",categoria:"VCP",pergunta:"Tenho medo de perder o voo por causa do trânsito até Viracopos - como me organizar?",respostaRapida:"Chegue mais cedo e deixe o carro num estacionamento credenciado perto de VCP, com transfer 24h até o terminal - sem procurar vaga na correria. Com o Seguro Cancelamento e Atraso (R$ 25) você ainda ganha 3h grátis no retorno se o voo atrasar.",corpo:`## Organize a chegada com folga 946O trânsito até Viracopos pode variar bastante. A melhor defesa é sair com antecedência e não perder tempo procurando vaga: deixe o carro na unidade credenciada e vá de transfer direto ao terminal. 947## A proteção contra imprevistos de voo 948Por R$ 25, o Seguro Cancelamento e Atraso dá margem extra: 949- Cancelamento com reembolso integral até 6h antes da entrada (sem o seguro, o limite é 3 dias) 950- 3 horas adicionais gratuitas no retorno se o voo atrasar 951## Como fazer 952Reserve pelo Xpark com transfer 24h incluÃdo e pague via Pix.`},{slug:"como-funciona-longa-permanencia-viracopos",categoria:"VCP",pergunta:"Como funciona estacionamento de longa permanência no Aeroporto de
952Viracopos em Campinas?",respostaRapida:`Funciona por pacote fechado, mais barato que a diária: em VCP, ${S(le.d17Total)} (13-17 dias), ${S(le.longStayTotal)} (18-30) e ${S(le.longStayDaily)}/dia acima de 31, na descoberta. Inclui transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## A lógica da longa permanência em VCP 953Em vez de multiplicar diárias, a longa permanência cobra um pacote por faixa - quanto mais tempo, menor o custo por dia. Na descoberta: 954- 13 a 17 dias: ${S(le.d17Total)} 955- 18 a 30 dias: ${S(le.longStayTotal)} 956- Acima de 31 dias: ${S(le.longStayDaily)}/dia 957A vaga coberta segue a mesma lógica, com um acréscimo sobre a descoberta. 958## O que está incluÃdo 959Transfer 24h, monitoramento 24h com câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) - o mesmo padrão para o carro que fica semanas parado. 960## Como contratar 961Escolha as datas no Xpark, veja o pacote calculado e pague via Pix.`},{slug:"estacionamentos-traslado-gratuito-viracopos",categoria:"VCP",pergunta:"Quais estacionamentos perto de Viracopos oferecem traslado gratuito até o terminal?",respostaRapida:`Os estacionamentos credenciados no Xpark incluem traslado gratuito 24h até o terminal de Viracopos, a partir de ${S(le.longStayDaily)}/dia, com monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Você reserva online e vê o preço final antes de fechar.`,corpo:`## Traslado gratuito em VCP 962O transfer até o terminal de Viracopos já vem no preço, nos dois sentidos e 24 horas - você não paga táxi ou app da unidade ao aeroporto. 963## O que mais está incluÃdo 964- Diária de ${S(le.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(le.longStayDaily)}/dia (longa), pelo menor preço da praça 965- Monitoramento 24h com câmeras 966- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park (GRU e VCP) 967## Como reservar 968Compare as unidades no Xpark, veja o preço final e pague via Pix.`},{slug:"vale-a-pena-reservar-online-antes-viracopos",categoria:"VCP",pergunta:"Vale a pena reservar estacionamento online antes de viajar por Viracopos?",respostaRapida:"Sim - reservar online garante a vaga e a tarifa em VCP, ainda mais em alta temporada. O Xpark mostra o preço final antes de fechar e permite adicionar o Seguro Cancelamento e Atraso por R$ 25.",corpo:`## Por que reservar antes em Viracopos 969Em feriados e férias a procura sobe e a vaga pode faltar. A reserva antecipada garante o lugar e trava o preço, evitando a tarifa cheia de última hora. 970## A proteção extra 971Por R$ 25, o Seguro Cancelamento e Atraso permite cancelar com reembolso integral até 6h antes (sem ele, 3 dias) e dá 3h grátis no retorno se o voo atrasar. 972## Como fazer 973Reserve pelo Xpark, escolha descoberta ou coberta, e pague via Pix.`},{slug:"estacionamentos-com-seguro-viracopos",categoria:"VCP",pergunta:"Estacionamentos com seguro de veÃculo próximos ao Aeroporto de Viracopos em Campinas",respostaRapida:`As unidades perto de Viracopos no Xpark têm monitoramento 24h e câmeras; nas do Bandeira Park (VCP), há também seguro Tokio Marine de R$ 1.000.000 (a segurança varia por operadora), a partir de ${S(le.longStayDaily)}/dia com transfer 24h. Reserva online por Pix.`,corpo:`## O seguro que acompanha a vaga em VCP 974Não é qualquer estacionamento: as unidades credenciadas têm seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), que cobre: 975- Roubo e furto mediante arrombamento 976- Colisão e demais eventos: 10% dos prejuÃzos, mÃnimo R$ 10.000 977- Roubo com carro reserva de R$ 20.000 978## Segurança nas duas modalidades 979Descoberta e coberta têm a mesma proteção e monitoramento 24h. A diária vai de ${S(le.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(le.longStayDaily)}/dia (longa). 980## Como reservar 981Compare no Xpark, veja o preço final e pague via Pix.`},{slug:"como-funciona-traslado-externos-terminal-viracopos",categoria:"VCP",pergunta:"Como funciona o traslado dos estacionamentos externos até o terminal de Viracopos?",respostaRapida:"Você deixa o carro na unidade, embarca na van e chega ao terminal de Viracopos em poucos minutos, sem custo extra - o mesmo vale na volta, 24 horas por dia. O Xpark inclui o transfer em todas as unidades de VCP.",corpo:`## O passo a passo do traslado 9821. Você chega na unidade credenciada e deixa o carro 9832. Embarca na van, que leva ao terminal de Viracopos em poucos minutos 9843. Na volta, ao desembarcar, aciona a unidade e a van te busca 985Tudo sem custo extra e 24 horas por dia. 986## O que o traslado acompanha 987- Monitoramento 24h; seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) enquanto o carro fica guardado 988- Diária a partir de ${S(le.longStayDaily)}/dia, pelo menor preço da praça 989## Como reservar 990Reserve online pelo Xpark e pague via Pix.`},{slug:"melhor-estacionamento-longa-permanencia-viracopos",categoria:"VCP",pergunta:"Melhor estacionamento de longa permanência perto do Aeroporto de
990Viracopos em Campinas",respostaRapida:`Para longa permanência em VCP, o Xpark opera com o menor preço da praça: ${S(le.longStayTotal)} no pacote de 18 a 30 dias (descoberta) e ${S(le.longStayDaily)}/dia acima de 31, com transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora).`,corpo:`## O melhor para semanas parado em Campinas 991Longa permanência pede o menor custo por dia com segurança que aguente o tempo. O Xpark opera com o menor preço da praça: 992- 18 a 30 dias: ${S(le.longStayTotal)} (descoberta); a coberta tem acréscimo 993- Acima de 31 dias: ${S(le.longStayDaily)}/dia (descoberta); a coberta tem acréscimo 994## Proteção para o carro parado 995Monitoramento 24h com câmeras e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), cobrindo roubo e furto mediante arrombamento, colisão e carro reserva de R$ 20.000. 996## Como reservar 997Reserve pelo Xpark com transfer 24h incluÃdo e pague via Pix.`},{slug:"estacionamento-mais-seguro-e-barato-viracopos-viagens-longas",categoria:"VCP",pergunta:"Estacionamento mais seguro e barato próximo a Viracopos para viagens longas",respostaRapida:`Para viagens longas em VCP, as unidades têm monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora), com a diária a partir de ${S(le.longStayDaily)}/dia acima de 31 dias - e o Xpark opera com o menor preço da praça. Transfer 24h incluÃdo.`,corpo:`## Seguro e barato não se excluem 998Numa viagem longa, você quer o menor custo por dia sem abrir mão da segurança. Perto de Viracopos, isso se junta: a descoberta parte de ${S(le.longStayDaily)}/dia acima de 31 dias, já com seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) e monitoramento 24h. 999## O que a proteção cobre 1000- Roubo e furto mediante arrombamento 1001- Colisão: 10% dos prejuÃzos, mÃnimo R$ 10.000 1002- Roubo com carro reserva de R$ 20.000 1003## Como reservar 1004Compare as faixas no Xpark, escolha descoberta ou coberta e pague via Pix, pelo menor preço da praça.`},{slug:"estacionamento-melhor-custo-beneficio-viracopos",categoria:"VCP",pergunta:"Qual o estacionamento com melhor custo-benefÃcio no Aeroporto de Viracopos Campinas?",respostaRapida:`O melhor custo-benefÃcio em VCP junta menor preço da praça (a partir de ${S(le.longStayDaily)}/dia), transfer 24h incluÃdo, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). No Xpark você compara e reserva online.`,corpo:`## Custo-benefÃcio é preço mais o que vem junto 1005A menor diária só compensa com o carro protegido. No Xpark, o menor preço da praça em Viracopos já inclui transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). 1006## Como o valor cai com os dias 1007- 1 a 6 dias: ${S(le.dailyFrom)}/dia com cupom XPK26 (${S(le.dailyFull)} sem cupom, descoberta) 1008- 7 a 12 dias: ${S(le.weekPerDay)}/dia 1009- Acima de 31 dias: ${S(le.longStayDaily)}/dia 1010A vaga coberta tem um acréscimo sobre a descoberta. 1011## Como reservar 1012Compare as modalidades no Xpark, veja o preço final e pague via Pix, com opção de Seguro Cancelamento e Atraso por R$ 25.`},{slug:"top-estacionamentos-traslado-24h-reserva-online-viracopos",categoria:"VCP",pergunta:"Top estacionamentos com traslado 24h e reserva online em Viracopos Campinas",respostaRapida:`Em VCP, o Xpark reúne estacionamentos com traslado 24h incluÃdo e reserva online, a partir de ${S(le.longStayDaily)}/dia, com monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Pagamento por Pix e menor preço da praça.`,corpo:`## Traslado 24h e reserva online em Viracopos 1013As unidades credenciadas têm transfer 24h, então atendem voo em qualquer horário, inclusive de madrugada - e você reserva tudo online, sem fila de balcão. 1014## O que vem junto 1015- Diária de ${S(le.dailyFrom)}/dia com cupom XPK26 (curta) a ${S(le.longStayDaily)}/dia (longa), pelo menor preço da praça 1016- Monitoramento 24h com câmeras 1017- Seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park (GRU e VCP) 1018- Reserva online por Pix, com preço final antes de fechar 1019## Como escolher 1020Compare as unidades no Xpark e reserve a que melhor encaixa na viagem.`},{slug:"melhor-estacionamento-coberto-viracopos-uma-semana",categoria:"VCP",pergunta:"Melhor opção de estacionamento coberto perto do Aeroporto VCP para deixar o carro por uma semana",respostaRapida:"Para uma semana em VCP, a vaga coberta tem um acréscimo sobre a descoberta na faixa de 7 a 12 dias - com proteção contra sol e chuva, transfer 24h, monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora). Reserva online por Pix.",corpo:`## Quanto custa uma semana coberta em Viracopos 1021Na faixa de 7 a 12 dias, a vaga coberta tem um acréscimo sobre a descoberta (${S(le.weekPerDay)}/dia), pela proteção contra sol, chuva e granizo. 1022## Quando a coberta compensa 1023Em Campinas, o sol forte e as chuvas de verão pesam sobre o carro parado uma semana. A coberta preserva pintura e interior - e mantém o mesmo monitoramento 24h e seguro Tokio Marine de R$ 1.000.000 nas unidades do Bandeira Park em GRU e VCP (a segurança varia por operadora) da descoberta. 1024## Como reservar 1025Escolha a vaga coberta no Xpark, veja o preço pela faixa de dias e pague via Pix, com transfer 24h incluÃdo.`}],Boe=new Set(dO.map(e=>e.slug)),Jr=[...dO,...cO().filter(e=>!Boe.has(e.slug))].map(e=>e.corpo?{...e,corpo:cee(e.corpo)}:e),Qy={Comparador:"Comparador",...Object.fromEntries(Ln.map(e=>[e.iata,`${e.short} (${e.iata})`]))},Voe=Object.fromEntries(Ln.map(e=>[e.iata,e.slug])),Foe=["Comparador",...Ln.map(e=>e.iata).filter(e=>Jr.some(t=>t.categoria===e))],Uoe=Ln.filter(e=>e.sold).map(e=>e.iata);function Goe(e){if(e)return Jr.find(t=>t.slug===e)}function zoe(e,t=3){return Jr.filter(a=>a.categoria===e.categoria&&a.slug!==e.slug).slice(0,t)}function Hoe(e){return e.split(` 1026`).map(t=>t.replace(/^#{1,6}\s+/,"").replace(/^-\s+/,"⢠")).join(` 1027`).replace(/\n{3,}/g,` 1028 1029`).trim()}const uO="/voo-atrasou-carro-estacionamento-aeroporto-o-que-fazer",Xk=e=>!e.canonicalPath,mO=e=>e.canonicalPath===uO;function pO(e){return Jr.filter(t=>t.categoria===e&&Xk(t))}function Koe(e){return Jr.filter(t=>t.categoria===e&&!Xk(t)&&!mO(t))}const Dj={"como-funcionam-comparadores-estacionamento-aeroporto":"Como funciona um comparador de estacionamento | xpark","onde-deixar-carro-quando-viajo":"Onde deixar o carro quando viajo | xp
1029ark","melhor-plataforma-comparar-reservar-guarulhos":"Comparar e reservar estacionamento em Guarulhos","onde-deixar-carro-viagem-de-uma-semana":"Onde deixar o carro numa viagem de 1 semana | xpark","estacionamento-aeroporto-mais-barato-alternativa":"Como pagar menos no estacionamento do aeroporto","como-chegar-aeroporto-sem-tarifa-alta":"Ir de carro ao aeroporto sem tarifa alta | xpark","comparador-vagas-baratas-guarulhos-viracopos":"Vagas baratas em Guarulhos e Viracopos | xpark","top-estacionamentos-reserva-online-guarulhos":"Reserva online de estacionamento em Guarulhos","vantagens-estacionamento-parceiro-fora-aeroporto":"Vantagens do estacionamento com traslado | xpark","e-seguro-deixar-carro-fora-do-aeroporto":"à seguro estacionar fora do aeroporto? | xpark","como-escolher-plataforma-reserva-estacionamento":"Como escolher onde reservar estacionamento | xpark","estacionamentos-baratos-com-traslado-viracopos-2026":"Baratos com traslado em Viracopos (2026) | xpark","onde-reservar-estacionamento-melhor-custo-beneficio":"Estacionamento de aeroporto: custo-benefÃcio","vale-a-pena-reservar-estacionamento-online-antecedencia":"Reservar estacionamento com antecedência vale?","como-comparar-precos-estacionamentos-aeroporto":"Como comparar preços de estacionamento | xpark","viajar-15-dias-guarulhos-onde-deixar-carro":"15 dias em Guarulhos: onde deixar o carro | xpark","voo-madrugada-guarulhos-sem-carona":"Voo de madrugada em Guarulhos sem carona | xpark","e-seguro-deixar-carro-muitos-dias-guarulhos":"Muitos dias perto de Guarulhos é seguro? | xpark","estacionamento-oficial-guarulhos-cheio-e-caro":"Oficial de Guarulhos cheio e caro: e agora?","viagem-a-trabalho-um-mes-guarulhos":"Um mês em Guarulhos: onde deixar o carro | xpark","como-funcionam-estacionamentos-longa-permanencia-guarulhos":"Longa permanência em Guarulhos | xpark","beneficios-estacionamento-privado-transfer-gru":"Estacionamento privado com transfer em Guarulhos","vale-a-pena-reservar-antecedencia-guarulhos":"Reservar antes em Guarulhos vale a pena? | xpark","como-escolher-estacionamento-confiavel-traslado-gru":"Estacionamento confiável com traslado em Guarulhos","estacionamento-vaga-coberta-monitoramento-guarulhos":"Vaga coberta e monitoramento em Guarulhos | xpark","melhor-estacionamento-longa-permanencia-guarulhos":"Melhor longa permanência em Guarulhos | xpark","melhores-opcoes-estacionamento-seguro-guarulhos":"Estacionamento seguro em Guarulhos | xpark","estacionamento-melhor-custo-beneficio-gru":"Melhor custo-benefÃcio em Guarulhos | xpark","onde-deixar-carro-com-seguranca-campinas":"Onde deixar o carro com segurança em Campinas","voo-madrugada-viracopos-sem-carro-proprio":"Voo de madrugada em Viracopos sem carro | xpark","deixar-carro-na-rua-varios-dias-campinas":"Carro na rua vários dias em Campinas? | xpark","como-evitar-pagar-caro-estacionamento-viracopos-uma-semana":"Uma semana em Viracopos sem pagar caro | xpark","medo-perder-voo-transito-ate-viracopos":"Trânsito até Viracopos: como se organizar | xpark","como-funciona-longa-permanencia-viracopos":"Longa permanência em Viracopos | xpark","estacionamentos-traslado-gratuito-viracopos":"Traslado gratuito em Viracopos | xpark","vale-a-pena-reservar-online-antes-viracopos":"Reservar online antes em Viracopos vale a pena?","estacionamentos-com-seguro-viracopos":"Estacionamento com seguro em Viracopos | xpark","como-funciona-traslado-externos-terminal-viracopos":"Como funciona o traslado em Viracopos | xpark","melhor-estacionamento-longa-permanencia-viracopos":"Melhor longa permanência em Viracopos | xpark","estacionamento-mais-seguro-e-barato-viracopos-viagens-longas":"Seguro e barato em Viracopos para viagens longas","estacionamento-melhor-custo-beneficio-viracopos":"Melhor custo-benefÃcio em Viracopos | xpark","top-estacionamentos-traslado-24h-reserva-online-viracopos":"Traslado 24h e reserva online em Viracopos","melhor-estacionamento-coberto-viracopos-uma-semana":"Coberto por uma semana em Viracopos | xpark","estacionamento-aeroporto-campinas-e-viracopos-mesma-coisa":"Aeroporto de Campinas é Viracopos? | xpark","quanto-custa-estacionar-aeroporto-confins-belo-horizonte":"Preço do estacionamento em Confins (BH) | xpark"};function Qoe(e){return e.seoTitle?e.seoTitle:Dj[e.slug]?Dj[e.slug]:`${e.pergunta.replace(/\?$/,"")} | xpark`}function Woe(e){if(e.seoDescription)return e.seoDescription;const t=e.respostaRapida;if(t.length<=155)return t;const a=t.slice(0,156);return a.slice(0,a.lastIndexOf(" ")).replace(/[,;:.\s-]+$/,"")+"."}function Joe(e){return Koe(e).map(t=>({q:t.pergunta,a:t.respostaRapida}))}function Xoe(e){const t=pO(e).map(a=>({href:`/faq/${a.slug}`,label:a.pergunta}));return Jr.some(a=>
1029a.categoria===e&&mO(a))&&t.push({href:uO,label:"E se meu voo atrasar: o estacionamento cobra a mais?"}),t}function Yoe(){return Ht.filter(e=>!e.editorialOnly).map(e=>{const t=Kt.filter(r=>r.iata===e.iata),a=t.map(r=>pt(r)).filter(r=>Number.isFinite(r)&&r>0),o=a.length?Math.min(...a):null;return{hub:e,iata:e.iata,city:e.city,minDaily:o,minDailyLabel:o!=null?X(o):"sob consulta",operatorCount:t.length,bookable:!e.editorialOnly}})}const Zoe=new Set(Ht.filter(e=>!e.editorialOnly).map(e=>e.slug)),hO=Kt.filter(e=>Zoe.has(e.hubSlug));hO.length;function ere(){const e=hO.map(t=>pt(t)).filter(t=>Number.isFinite(t)&&t>0);return e.length?Math.min(...e):null}function tre(){const e=ere();return[`${Kt.length} estacionamentos comparados`,`${Ht.length} destinos pelo Brasil`,e!=null?`a partir de ${X(e)}/dia`:"preços de fonte oficial","reserva em 1 min"]}const are=[{t:"Ranking independente",d:"A ordem das operadoras segue critérios públicos, não quem paga mais. A metodologia fica aberta para consulta.",href:"/metodologia",cta:"Ver metodologia"},{t:"Comparação lado a lado",d:"Em vez de listas infinitas, três opções por aeroporto: Descoberta, Coberta e Valet.",href:"/como-funciona",cta:"Como funciona"},{t:"Reserva em 1 minuto",d:"Pix ou cartão, tarifa travada no ato e confirmação imediata por email.",href:"/escolher",cta:"Buscar vaga"},{t:"Dado real, não estimativa",d:`Preços coletados nos canais oficiais das operadoras e publicados no Ãndice xpark de Preços, edição ${Lc.number} (${Lc.monthLabel}).`,href:"/indice-de-precos",cta:"Ver o Ãndice"}];function ore(e=3){return Mc.filter(t=>!t.unlisted&&!!t.publishedAt&&!!t.body).slice().sort((t,a)=>t.publishedAt<a.publishedAt?1:-1).slice(0,e)}const rre=["como-funcionam-comparadores-estacionamento-aeroporto","como-comparar-precos-estacionamentos-aeroporto","vale-a-pena-reservar-estacionamento-online-antecedencia","e-seguro-deixar-carro-fora-do-aeroporto","estacionamento-mais-barato-transfer-gru","estacionamentos-baratos-com-traslado-viracopos-2026"];function fO(){return rre.map(e=>Jr.find(t=>t.slug===e)).filter(e=>!!e)}function nre(){return{"@context":"https://schema.org","@type":"FAQPage","@id":"https://www.xpark.ai/#faq",mainEntity:fO().map(e=>({"@type":"Question",name:e.pergunta,acceptedAnswer:{"@type":"Answer",text:e.respostaRapida}}))}}const sre={url:_ae},ire={url:Tae},lre={url:$ae},cre={url:_k.url};function dre(){const e=Ht.length,t=Ht.reduce((c,d)=>c+sl(d.slug).length,0),a=Yoe(),o=tre(),r=fO(),n=[{title:"Descoberta",description:"Vaga descoberta de aeroporto: o melhor custo de estacionamento em Guarulhos (GRU), Viracopos (VCP) e Confins (CNF), considerando o tempo de deslocamento.",image:Nae,icon:cT},{title:"Coberta",description:"Vaga coberta de aeroporto: proteção do veÃculo e trajeto até o terminal em GRU, VCP, CNF e CGH por um preço justo.",image:Aae,icon:Qs},{title:"Valet",description:"Valet de aeroporto: você desce no terminal e embarca, com traslado direto em Guarulhos, Viracopos e Confins.",image:Eae,icon:BL}],i={GRU:sre.url,VCP:ire.url,CNF:lre.url,CGH:cre.url},l=[R5,{"@context":"https://schema.org","@type":"WebSite","@id":"https://www.xpark.ai/#website",url:"https://www.xpark.ai/",name:"xpark",publisher:{"@id":"https://www.xpark.ai/#organization"},potentialAction:{"@type":"SearchAction",target:{"@type":"EntryPoint",urlTemplate:"https://www.xpark.ai/escolher?airport={airport}"},"query-input":"required name=airport"}},nre()];return s.jsxs("div",{className:"font-home-body text-tech-fg",children:[s.jsx(Ye,{title:"xpark estacionamento: compare preços em aeroportos",description:"xpark estacionamento: compare preços de vaga em aeroportos e terminais do Brasil, com segurança, traslado e fontes antes de escolher.",path:"/",image:"https://www.xpark.ai/og-home.jpg",jsonLd:l}),s.jsx("section",{className:"bg-paper px-3 pt-3 md:px-6 md:pt-6",children:s.jsxs("div",{className:"relative isolate mx-auto flex max-w-[1440px] items-center overflow-hidden rounded-panel bg-ink px-4 py-6 text-paper sm:px-4 sm:py-10 md:min-
1029h-[620px] md:px-10 md:py-16",children:[s.jsx("img",{src:j5,width:1920,height:900,alt:"Estacionamento próximo a terminal de aeroporto ao entardecer",loading:"eager",decoding:"sync",fetchPriority:"high",className:"absolute inset-0 -z-20 h-full w-full object-cover"}),s.jsx("div",{className:"absolute inset-0 -z-10 bg-ink/65"}),s.jsxs("div",{className:"container max-w-[1280px] w-full text-center",children:[s.jsx("p",{className:"text-[10px] font-semibold uppercase text-gold sm:text-[11px]",children:"COMPARADOR DE PREÃOS DE ESTACIONAMENTOS EM AEROPORTOS E TERMINAIS"}),s.jsxs("h1",{className:"mx-auto mt-4 max-w-4xl font-home-heading text-[32px] font-bold leading-[1.08] text-paper sm:text-5xl md:mt-5 md:text-6xl",children:["xpark estacionamento: quanto vale o ",s.jsx("span",{className:"text-gold",children:"seu tempo"})," antes do voo?"]}),s.jsxs("p",{className:"mx-auto mt-3 hidden max-w-2xl text-sm leading-relaxed text-paper/90 sm:block md:mt-5 md:text-lg",children:["O xpark compara preços em ",e," aeroportos e terminais e mais de ",t," estacionamentos para você economizar e viajar tranquilo."]}),s.jsx("div",{className:"mx-auto mt-7 max-w-5xl text-left md:mt-10",children:s.jsx(C5,{})}),s.jsx("ul",{className:"mt-5 hidden flex-wrap justify-center gap-x-5 gap-y-2 text-xs text-paper/85 md:flex",children:o.map(c=>s.jsx("li",{children:c},c))})]})]})}),s.jsx(ct,{as:"section",className:"bg-paper",children:s.jsxs("div",{className:"container py-3 sm:py-16 md:py-24",children:[s.jsx("h2",{className:"text-center font-home-heading text-[26px] font-bold text-ink sm:text-3xl md:text-[44px]",children:"Estacionamentos em destaque"}),s.jsx("div",{className:"mt-6 grid gap-3 sm:mt-9 sm:gap-4 md:grid-cols-3",children:a.map(c=>s.jsxs(G,{to:`/aeroportos/${c.hub.slug}`,className:"group relative isolate flex aspect-[16/10] items-end overflow-hidden rounded-card bg-secondary p-5 focus-visible:outline focus-visible:outline-2 focus-visible:outline-gold sm:aspect-[4/3] sm:p-6",children:[s.jsx("img",{src:i[c.iata],alt:c.iata==="VCP"?"Terminal do Aeroporto Internacional de Viracopos, em Campinas":c.iata==="CGH"?"Vista aérea da região do Aeroporto de Congonhas, em São Paulo":`Imagem ilustrativa do aeroporto de ${c.city}`,width:720,height:480,loading:"eager",decoding:"async",className:"absolute inset-0 -z-20 h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105"}),s.jsx("div",{className:"absolute inset-0 -z-10 bg-ink/55"}),s.jsxs("div",{className:"w-full",children:[s.jsxs("p",{className:"text-xs font-semibold uppercase text-gold",children:[c.iata," · ",c.hub.state]}),s.jsx("h3",{className:"mt-2 font-home-heading text-2xl font-bold text-paper",children:c.iata==="CGH"?"Congonhas":c.city}),s.jsxs("p",{className:"mt-2 flex items-center justify-between border-t border-paper/40 pt-3 text-sm text-paper",children:[c.operatorCount," operadoras comparadas ",s.jsx(zr,{className:"h-4 w-4"})]})]})]},c.iata))})]})}),s.jsx(ct,{as:"section",className:"border-t border-border bg-cream",children:s.jsx("div",{className:"container py-12 md:py-20",children:s.jsx(S5,{compact:!0})})}),s.jsx("section",{className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container py-12 md:py-16",children:[s.jsx("h2",{className:"max-w-2xl font-geist text-3xl font-semibold text-tech-fg md:text-[38px]",children:"O que é o xpark?"}),s.jsxs("div",{className:"mt-6 max-w-3xl space-y-4 font-geist text-base leading-relaxed text-tech-mute",children:[s.jsx("p",{children:"O xpark é um comparador de preços de estacionamento do Brasil. Você informa o aeroporto e as datas da viagem, e o site mostra as opções de vaga lado a lado, com preço, tipo de vaga e traslado."}),s.jsxs("p",{children:["Hoje comparamos ",t," estacionamentos em ",e," aeroportos brasileiros. Nos quatro aeroportos onde o xpark vende (Guarulhos, Viracopos, Confins e Congonhas), você fecha a reserva na hora. Nos demais, você consulta os preços que apuramos em fontes públicas, com a data da coleta em cada linha."]}),s.jsx("p",{children:"Comparar não custa nada. As operadoras parceiras pagam comissão quando a reserva é feita pelo xpark, e isso não muda o preço que você vê."})]}),s.jsxs("div",{className:"mt-8 flex flex-wrap gap-3",children:[s.jsx(G,{to:"/metodologia",className:"inline-flex items-center rounded-full bg-primary px-6 py-3 text-sm font-semibold text-primary-foreground hover:opacity-90",children:"Ver como comparamos â"}),s.jsx(G,{to:"/aeroportos",className:"inline-flex items-center rounded-full border border-border px-6 py-3 text-sm font-semibold text-ink hover:border-ink",children:"Ver todos os aeroportos â"})]})]})}),s.jsx(ct,{as:"section",className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container py-16 md:py-24",children:[s.jsxs("div",{className:"flex flex-wrap items-end justify-between gap-4",children:[s.jsxs("div",{children:[s.jsx("span",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-gold-dark",children:"Vagas em aeroporto"}),s.jsx("h2",{className:"mt-2 font-home-heading text-[26px] font-bold text-ink sm:text-3xl md:text-[44px]",children:"Escolha como quer chegar ao terminal"}),s.jsx("p",{className:"mt-3 max-w-2xl text-sm leading-relaxed text-mute md:text-base",children:"Compare vaga descoberta, vaga coberta e valet de aeroporto em Guarulhos (GRU), Viracopos (VCP) e Confins (CNF), e vaga coberta em Congonhas (CGH), antes de ver as vagas disponÃveis para sua viagem."})]}),s.jsxs(G,{to:"/metodologia",className:"inline-flex items-center gap-1 text-sm font-semibold text-ink underline underline-offset-4",children:["Como comparamos ",s.jsx(zr,{className:"h-4 w-4"})]})]}),s.jsx("div",{className:"mt-7 grid gap-3 sm:mt-10 sm:gap-5 md:grid-cols-3",children:n.map(c=>s.jsxs("article",{className:"group flex flex-col rounded-card bg-secondary p-5 transition-shadow duration-150 motion-safe:hover:shadow-elevated sm:p-6",children:[s.jsx("div",{className:"flex h-11 w-11 items-center justify-center rounded-xl bg-ink text-gold",children:s.jsx(c.icon,{className:"h-5 w-5","aria-hidden":"true"})}),s.jsx("h3",{className:"mt-4 font-home-heading text-2xl font-bold text-ink",children:c.title}),s.jsx("p",{className:"mt-2 flex-1 text-sm leading-relaxed text-mute",children:c.description}),s.jsx("div",{className:"mt-5 overflow-hidden rounded-xl border border-border bg-paper",children:s.jsx("img",{src:c.image,alt:`Cena ilustrativa de vaga ${c.title.toLowerCase()} em aeroporto`,width:720,height:480,loading:"lazy",decoding:"async",className:"h-24 w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105"})}),s.jsxs("a",{href:"#buscar-vaga",className:"mt-5 inline-flex items-center gap-1 text-sm font-semibold text-ink hover:text-gold-dark",children:["Encontrar minha vaga ",s.jsx(zr,{className:"h-4 w-4"})]})]},c.title))})]})}),s.jsx("section",{className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container py-11 sm:py-16 md:py-24",children:[s.jsx("h2",{className:"mt-3 max-w-2xl font-geist text-3xl font-semibold text-tech-fg md:text-[44px]",children:"Quanto custa estacionar perto do aeroporto"}),s.jsxs("p",{className:"mt-4 max-w-2xl font-geist text-base leading-relaxed text-tech-mute",children:[t," estacionamentos em ",e," destinos comparados, com fontes identificadas nas fichas. Edição ",String(Lc.number).padStart(2,"0")," do Ãndice xpark de Preços (",Lc.monthLabel,")."]}),s.jsx("div",{className:"mt-10 grid gap-6 md:grid-cols-2",children:B6.map(c=>s.jsxs("article",{className:"border-t border-border py-6",children:[s.jsx("h3",{className:"font-geist text-lg font-semibold text-tech-fg",children:c.headline}),s.jsx("p",{className:"mt-2 font-geist text-sm leading-relaxed text-tech-mute",children:c.detail})]},c.id))}),s.jsx("div",{className:"mt-10 overflow-x-auto rounded-card border border-border",children:s.jsxs("table",{className:"w-full min-w-[520px] border-collapse font-geist text-sm",children:[s.jsx("caption",{className:"sr-only",children:"Menor diária por aeroporto segundo o Ãndice xpark de Preços"}),s.jsx("thead",{children:s.jsxs("tr",{className:"bg-tech-card text-left",children:[s.jsx("th",{className:"p-4 font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Aeroporto"}),s.jsx("th",{className:"p-4 font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Menor diária"}),s.jsx("th",{className:"p-4 font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Operadoras"}),s.jsx("th",{className:"p-4 font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Reserva"})]})}),s.jsx("tbody",{children:a.map(c=>s.jsxs("tr",{className:"border-t border-tech-border",children:[s.jsxs("td",{className:"p-4 text-tech-fg",children:["Aeroporto de ",c.city," (",c.iata,")"]}),s.jsxs("td",{className:"p-4 text-tech-fg",children:[c.minDailyLabel,"/dia"]}),s.jsx("td",{className:"p-4 text-tech-mute",children:c.operatorCount}),s.jsx("td",{className:"p-4 text-tech-mute",children:c.bookable?s.jsx(G,{to:`/?aeroporto=${c.iata}#buscar-vaga`,onClick:()=>setTimeout(()=>{var d;return(d=document.getElementById("buscar-vaga"))==null?void 0:d.scrollIntoView({behavior:"smooth",block:"center"})},50),className:"inline-flex items-center rounded-full bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground transition-opacity hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-gold","aria-label":`Reservar estacionamento no aeroporto de ${c.city} (${c.iata}) no xpark`,children:"Reservar no xpark â"}):"Somente comparação"})]},c.iata))})]})}),s.jsxs("div",{className:"mt-8 flex flex-wrap gap-3",children:[s.jsx(G,{to:"/calculadora-estacionamento-aeroporto",className:"inline-flex items-center rounded-full bg-primary px-6 py-3 text-sm font-semibold text-primary-foreground hover:opacity-90",children:"Calcular minha viagem â"}),s.jsx(G,{to:"/indice-de-precos",className:"inline-flex items-center rounded-full border border-border px-6 py-3 text-sm font-semibold text-ink hover:border-ink",children:"Ver Ãndice completo â"})]})]})}),s.jsx("section",{className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container py-16 md:py-24",children:[s.jsx("h2",{className:"max-w-2xl font-geist text-3xl font-semibold text-tech-fg md:text-[44px]",children:"Compare com critérios abertos"}),s.jsx("div",{className:"mt-10 grid gap-x-8 gap-y-8 border-t border-border md:grid-cols-2 lg:grid-cols-4",children:are.map(c=>s.jsxs("article",{className:"flex flex-col border-b border-border py-6",children:[s.jsx("h3",{className:"font-geist text-lg font-semibold text-tech-fg",children:c.t}),s.jsx("p",{className:"mt-2 flex-1 font-geist text-sm leading-relaxed text-tech-mute",children:c.d}),s.jsxs(G,{to:c.href,className:"mt-5 font-geist-mono text-[11px] uppercase tracking-[0.2em] text-tech-fg underline-offset-4 hover:underline",children:[c.cta," â"]})]},c.t))})]})}),s.jsx(yae,{}),s.jsx("section",{className:"border-t border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container py-16 md:py-24",children:[s.jsx("h2",{className:"max-w-2xl font-geist text-3xl font-semibold text-tech-fg md:text-[44px]",children:"O que as pessoas perguntam antes de reservar"}),s.jsx(zk,{type:"single",collapsible:!0,className:"mt-10 max-w-3xl",children:r.map(c=>s.jsxs(n0,{value:c.slug,className:"border-tech-border",children:[s.jsx(s0,{className:"text-left font-geist text-base font-medium text-tech-fg",children:c.pergunta}),s.jsxs(i0,{className:"font-geist text-sm leading-relaxed text-tech-mute",children:[c.respostaRapida,s.jsx(G,{to:`/faq/${c.slug}`,className:"ml-1 text-tech-fg underline underline-offset-4",children:"Ler a resposta completa"})]})]},c.slug))}
1029),s.jsx(G,{to:"/faq",className:"mt-8 inline-block font-geist-mono text-[11px] uppercase tracking-[0.2em] text-tech-fg underline-offset-4 hover:underline",children:"Ver todas as perguntas â"})]})}),s.jsx("section",{className:"border-t border-border bg-ink text-paper",children:s.jsxs("div",{className:"container flex flex-col items-start justify-between gap-6 py-16 md:flex-row md:items-center md:py-20",children:[s.jsxs("div",{children:[s.jsx("h2",{className:"font-geist text-2xl font-semibold text-paper md:text-3xl",children:"Compare e reserve em menos de 1 minuto"}),s.jsx("p",{className:"mt-2 font-geist text-sm leading-relaxed text-paper/80",children:"Escolha o aeroporto, veja três opções e trave a tarifa com Pix ou cartão."})]}),s.jsx(G,{to:"/escolher",className:"inline-flex items-center rounded-full bg-gold px-7 py-3 text-sm font-semibold text-ink hover:bg-gold-dark",children:"Encontrar minha vaga â"})]})})]})}const ure=e=>e<34?"economico":e<67?"conforto":"premium",Dr=e=>e.toLocaleString("pt-BR",{style:"currency",currency:"BRL"}),Ij=(e,t="12:00")=>e?e.includes("T")?e:`${e}T${t}:00-03:00`:"",gO=(e,t,a,o)=>{if(!e||!t)return 1;const r=new Date(Ij(e,a||"12:00")).getTime(),n=new Date(Ij(t,o||"12:00")).getTime();if(!Number.isFinite(r)||!Number.isFinite(n)||n<=r)return 1;const i=(n-r)/36e5,l=Math.floor(i/24),c=i-l*24;return Math.max(1,l+(c>3?1:0))},Yk={descoberta:"Descoberta",coberta:"Coberta",valet:"Valet"},vO={descoberta:"xpark",coberta:"xpark",valet:"xpark Valet"},xO={descoberta:"Vaga descoberta + shuttle",coberta:"Vaga coberta + shuttle",valet:"Manobrista no terminal"};function Wy(e,t){if(t==="CGH"){if(e==="coberta")return"Vaga coberta";if(e==="descoberta")return"Vaga descoberta"}return xO[e]}const Rl=e=>Math.round(e*100)/100;function Zk(e,t){if(t<=0)return 0;const a=o=>Number(o)||0;return t<=6?Rl(a(e.rate_1_6)*t):t<=12?Rl(a(e.rate_7_12)*t):t<=17?Rl(a(e.fixed_13_17)):t<=30?Rl(a(e.fixed_18_30)):Rl(a(e.rate_31_plus)*t)}function mre(e,t){return t<=0?Number(e.rate_1_6)||0:Rl(Zk(e,t)/t)}function ew(e="GRU"){return Og({queryKey:["tiers",e],queryFn:async()=>{const{data:t,error:a}=await ze.from("locations").select("id,name,airport_code,category,price_per_day,walk_time_minutes,features,total_spots,sort_order,public_description,status,rate_1_6,rate_7_12,fixed_13_17,fixed_18_30,rate_31_plus,address").eq("airport_code",e).eq("status","active").order("sort_order",{ascending:!0});if(a)throw a;const o=t??[],r=new Map;for(const n of o)r.has(n.category)||r.set(n.category,n);return["descoberta","coberta","valet"].map(n=>r.get(n)).filter(n=>!!n)}})}function a0e(){return Og({queryKey:["tiers","all"],queryFn:async()=>{const{data:e,error:t}=await ze.from("locations").select("id,name,airport_code,category,price_per_day,walk_time_minutes,features,total_spots,sort_order,public_description,status,rate_1_6,rate_7_12,fixed_13_17,fixed_18_30,rate_31_plus,address").order("airport_code").order("sort_order",{ascending:!0});if(t)throw t;return e??[]}})}function bO(e,t,a){return Og({queryKey:["location-availability",e,t,a],enabled:!!e&&!!t&&!!a,queryFn:async()=>{const{data:o,error:r}=await ze.rpc("location_availability",{_airport:e,_start:t,_end:a});if(r)throw r;return o??[]}})}const yO=24*60*60*1e3;function pre(e=new Date){return new Date(e.getTime()+yO)}function hre(e,t){const a=t&&/^\d{2}:\d{2}$/.test(t)?t:"12:00",o=new Date(`${e}T${a}:00-03:00`).getTime();return Number.isFinite(o)?o:NaN}function Jy({airport:e,category:t,entrada:a,entradaHora:o,now:r=new Date}){if(e!=="GRU"||t!=="valet"||!a)return!1;const n=hre(a,o);return Number.isFinite(n)?n-r.getTime()<yO:!1}function Xy(e=new Date){return pre(e).toLocaleString("pt-BR",{timeZone:"America/Sao_Paulo",day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}).replace(", "," à s ")}const kO="data:image/webp;base64,UklGRhgMAABXRUJQVlA4WAoAAAAQAAAA3wEARQAAQUxQSAYKAAAB8IBts/K22bYtyWyHzMzh5A4zc2K73IaZmZnNLjMzU5ix3IaZE7MdZjNJWjdEM7Pm0mXdxS0iKLiNJEmSaB5A7u2RdWVmZO4DhN2NZ1SkdaIi3YWeslSC2e4k/m/N7LxsIJe6/x4VL6GYYn7vqvyLgK4rlwNZGv17VAI4E0vs7w22OJO/MVsO2/V7VM/nngXy/HiH33HY8o/F+lc/Bs6djWdKkDLngXPANqeHWomYOZs5cx81Qh5LTrRK8kADUf3V1p0lLfLDeE9NSkSyYs6YzqGOGnKJ7j1
102953ipkJqsXTO1b302d+ct4uNmk+bUB9cCOknv/F9yRQuIXTI9t4KEmdAG6z5fNGd0hwGgt5qIkZLNy1dwHd1nZ13oKZsmdnU6AdvlQO8e8iBaDHacYYc22SkIsxenfjvLXSOSMrXmlkpKyK3sWNaRRyeUwQKwZ3m+wWNXXq+LqD0sbq6x6/0ba54XnPnm8tnVjFzSomr8iu7uPtUp22yHPSkhhV+JneRsoPQTiMDSdPC/zkREuGvBccFGqJDfRn1fuf9FelaQHcL5e+anUd4LL5Kv0d+MPD1t9b3Yj1aZA3RkDf3aW0zS4AtrtDr0PkotUZlb+ph+76I0WqZgfWuuSlPvakoS8U67SaVGSm9UmsfSmfj78e+FKMtoMWiKs1fpGdW5f1mYW/oNUz+kW+iTPtCHw36PYqekZV5XaGKgzzhtB15pQGD+WkHvtAWH5qiwJBlYeX0mO7PbRJ/lLAK7JLdVOK6cJtdIXMR1+L0ykCDoP+q0WJFd5cre7shrFtOuW6JRMxDW+rtxpdiPrOi8J2RCgLy1uwl/mDgSx5aBkwUl+5sjIc5/kcTFCp3Lq85NpAtikla647wFdCiF4WkJKevO61pTRI+VMLJN1Ss7WwNlw6x67kDbXB9g+8n0zFY/gav0KOuHDS05l9KrkyhpHndrqwq9sqFAtPel4H+zoJVz7e6BXBOgyg08MbGr+xuZiIN91FRuTHY7+LbcZWn1TKNY6fx2pvQ90yBO1gP6t4rnixRfwvPjZVeSUtRabiFzYpffAqbx9AlbQkcy87jlkB6zw5LcPafzNIxb497AH+i+Kp+zzl765g+xzoV76IVLhS2edMc6bQReChXr6Xoc/bqFsuhXD57nNsRPyH0FVcYzrGvxWCSTBu+ET6ccFR4wjikBZcEudicUoVmqsL3yteTGmfj7oQwMDhzXwRcVIBUovfZrAMtEC/o2jFa6kay8ebXeEGXk1WOLxC/wJEOq11p9P07ffJ+adfUx8T8ItuSjsXdNwwZGnQdcbaWMOagDc1EIdGYA0xcNpuwQjWIqBaloeZyJeB11tCDN8CB8LR7NIg6+ytdPGTLX3RbyOxGiPo9b4aazVCcnlsQrwAGkMLOAsclLE7n4H+46pVKkPNiEX4ZMpI6h/GWiK4NfevuMqRcqDj/Fj+sF5Cvwr3pRHig2YhupbfTJsQzDVt35qVP8JRmKkGVwxjgXnCR+J7nQjHaZ7Nmre5ZEnoTy+3gZ8PnIMnJEvmKorjl6NWvZ4HNrlTww6huArJYqDVd08sKlnIa3vIIfMKGOT6V8evX63qKIKjFkzaqmWOLWYv+749XvFlfA+tyAYS4Xa4OW0DnSgDvT/ypKQu21RLd4h3hpjHxk6f35DKkdwlgKlwUxMJR5tO20A/VwT4TQlV0q7zWPZLSkZMNY3fuxaHpPsmsKXM+cTfy4SsbG8XNpvNd8ySRas5cusBWVYck2K3HbSVuGGmCDFPRBTyqX9ZlxtljzodYG2ScW4vW58hSKxCHSlgdWv27tgM8e8kRuu86Qd1+uuZMJbX/syakEam3z7VarqAC4+m0dZrb6dpi9IG9+Udpzreqk10YVYNGxjc5CIQSneHvKR4QF9SsGz8TjkVux8e67TfT7sm0xaHCU+jMFAJIPOBz0gUULOBcImSP1KqAbESz78mxR8g0WvEnBCA/6nxk+g9w3Iahbs6ldpiUASfrUBa2fMVsic9vrnuhO5o/OzFGifp6QjFOsirQh4xpYgwcMbbvmZB44Pb4NLzkORHxF4PftabwNyE4pNXPdWi/4FZYAyOiJHQ9sRWpSPO4plbA0WTMTL+O3zM+DPRxTyRGYOfNnHaHvrVtWcZrdAL6qtW2lRX0X9jGEabB6pgG8IQK+VfoMsOde/ijxUwGWxvdAPPsFdpUaT2nwWwzC2BQs+wfCxxlwhonLQ52XIyx2r1ZEu0pgGVuNiKm2G6EoqM4ZhhAhGxo/ggwUXMagKPHRrjJ1XFGoiFp75Shs0oBomul6Siqnoqzy2hwhOYhj4wc6vJ95WeW6g5W3Q82y6FoH2eqhYxGcVLE6fVquxgTrXgGHwisoGv5+G1jkJmoc+An4ZXsb0RqQi6PfOl41E9Id/TL90ZDMR3pVJutGnDL7c7IzcZMFPdFOrS11Vx45QwcxxDfzM4ZASyJ026CFCBsj0UbvoukCi3qbz+Ameef5gZ9C/bsIPKaQ2i65LTD1vRBy8L6/Pboz0GO5oqxrfgHfRMy3AXdTwJwRXMY2W1MFNTAKV35OQn2qgq1zfITO8d/UakKvFdOIFpNniNaOau1rzP4s9sXz1GjE3VyCaI6u/5ptwtzcOBNoq/3MSzh14suUIrkrXbHtnqODX5JrSxWb0Rm2VKHgIXcq05AFtOa7jmsizCC+15fWsEFvltIHvuqjGld5NdXtnmNCA63aqwm64ISZN+OK7pwSazxwuzwgkbyjJtFlivq0R3dM1GbvChBbEAqrDnriQ85oQC1HFkGbXtBFTqkvNrrNhrAzK6M4wtNH2LtHzgpDV2gg5psD4tjZq7NQlh3fZaFkZymN3uNBIzZ9pymIowo5pQgwsohNNMjQh+t7V4Z8WonmuzRE9MlTGMeLQikigORNA6jDujiYcUix0YmQhz6ozyrBS4RasswG2S4wrYsJbmfDoAT78Qt3WTo9ikncNJIZxN7UgPF4x0Rmm3FdnXhMt8Im8WEl1Js5ow4wzCm2O6AlVJjxI23sihIa8jlBUDaT22HefRQPCff4NBFxPnFB1d1lN0rnGtBzaO3B9QyFsDVKDTrHQqjJ7MgwtiRcpsiPIPfrN3FeiqrCDIKTT2iIIejCx8mS5ilNxBkFLk+cuVuHv51W1BAj+rkpGmFCMTYWvOlmmjr0yHvyr4Gh3kvRXIwQVcqa8k65/ejaavDdULkPX6bXsq1+zsunJOdWC1Kxrn7fOlhAJ4R8Tv+4AdSKf1xP0hD753Oaj4HQPPWZADosvgXtxvkJHs/+LsSkh/GIS1u3LylaJYM+Arbt27draH3yB4vfuQrP7i/qCqu02sL29yY5krhFRkViiPIVaHOpEQp3iLYe7EHs1hD6asuF4VuV/EJ8GpE7CXajFyQ+afZQ/+lsUCfbkqdSRYru0XeQZqZJIVlA4IOwBAABwFQCdASrgAUYAPpFIn0slpKMhpX1oQLASCWVu4XPpyH8j/IflrOCvA2Uj8i/5zyAOkA/SncAeR3+wHYAdIB6G/lt+xv+zP7GezXq8gmgF7gvcF7gvcF7gvcF7SxzyUTqpDZ1XeCGfNj/6sh4RAPQuLLH+WLaC5PS/GEwkh3+fpT77gvcF7gvcF7RkttSPUcAkksnzsXQvcF7gvcF7gvaMltkVErfc3sNJQNd/9WQ8IgHoWyAA/v81aEHN7Qf//8QbDs70CSxmk6xfK5Sc08tuyIhQL27/FDw2G9SNMyFb/PWN/8eGvSlNZCOAZ9pvAsBwbBnfy6dNIE+rZ2+KGP7evJBC3cL96X2x7atH+3C1vf1wV3+A7//X4//N///66UgLMSTa7pvrGZfGDOVyk5p5Z1n/K7sPoDENP55P8JjKzcxKTYH2V/zC9esUdjG2/+pDA0uCCjxEqS0F9Nji2WKMNjVPruFaYRMHtAcqx2UfRC6IunvzF/Nx9EoWdXQzT8vIVS2MSnPav5SjUn4nUx7ak488o6sVcd3gv+QzQK/32ak1WhKx66X8RRE9WfGHC2HEFBhV6j5Tca76FcXnsjLkMQi70O8C2jEP13GNh9XPEQDGNBKXfvUf0dfwuv/+kDdZrAix8M+4txQAAAA=";function cn(){x.useEffect(()=>{if(document.head.querySelector('meta[name="robots"][data-noindex-hook]'))return;const t=document.createElement("meta");return t.setAttribute("name","robots"),t.setAttribute("content","noindex, follow"),t.setAttribute("data-noindex-hook","true"),document.head.appendChild(t),()=>{t.remove()}},[])}function fre(e){return Object.prototype.toString.call(e)==="[object Object]"}function Mj(e){return fre(e)||Array.isArray(e)}function gre(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function tw(e,t){const a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;const r=JSON.stringify(Object.keys(e.breakpoints||{})),n=JSON.stringify(Object.keys(t.breakpoints||{}));return r!==n?!1:a.every(i=>{const l=e[i],c=t[i];return typeof l=="function"?`${l}`==`${c}`:!Mj(l)||!Mj(c)?l===c:tw(l,c)})}function Lj(e){return e.concat().sort((t,a)=>t.name>a.name?1:-1).map(t=>t.options)}function vre(e,t){if(e.length!==t.length)return!1;const a=Lj(e),o=Lj(t);return a.every((r,n)=>{const i=o[n];return tw(r,i)})}function aw(e){return typeof e=="number"}function Yy(e){return typeof e=="string"}function d0(e){return typeof e=="boolean"}function Bj(e){return Object.prototype.toString.call(e)==="[object Object]"}function It(e){return Math.abs(e)}function ow(e){return Math.sign(e)}function mu(e,t){return It(e-t)}function xre(e,t){if(e===0||t===0||It(e)<=It(t))return 0;const a=mu(It(e),It(t));return It(a/e)}function bre(e){return Math.round(e*100)/100}function tm(e){return am(e).map(Number)}function Cr(e){return e[$m(e)]}function $m(e){return Math.max(0,e.length-1)}function rw(e,t){return t===$m(e)}function Vj(e,t=0){return Array.from(Array(e),(a,o)=>t+o)}function am(e){return Object.keys(e)}function wO(e,t){return[e,t].reduce((a,o)=>
vendor: 16,306 bytes, line 1029
1029(am(o).forEach(r=>{const n=a[r],i=o[r],l=Bj(n)&&Bj(i);a[r]=l?wO(n,i):i}),a),{})}function Zy(e,t){return typeof t.MouseEvent<"u"&&e instanceof t.MouseEvent}function yre(e,t){const a={start:o,center:r,end:n};function o(){return 0}function r(c){return n(c)/2}function n(c){return t-c}function i(c,d){return Yy(e)?a[e](c):e(t,c,d)}return{measure:i}}function om(){let e=[];function t(r,n,i,l={passive:!0}){let c;if("addEventListener"in r)r.addEventListener(n,i,l),c=()=>r.removeEventListener(n,i,l);else{const d=r;d.addListener(i),c=()=>d.removeListener(i)}return e.push(c),o}function a(){e=e.filter(r=>r())}const o={add:t,clear:a};return o}function kre(e,t,a,o){const r=om(),n=1e3/60;let i=null,l=0,c=0;function d(){r.add(e,"visibilitychange",()=>{e.hidden&&f()})}function u(){p(),r.clear()}function m(b){if(!c)return;i||(i=b,a(),a());const v=b-i;for(i=b,l+=v;l>=n;)a(),l-=n;const y=l/n;o(y),c&&(c=t.requestAnimationFrame(m))}function h(){c||(c=t.requestAnimationFrame(m))}function p(){t.cancelAnimationFrame(c),i=null,l=0,c=0}function f(){i=null,l=0}return{init:d,destroy:u,start:h,stop:p,update:a,render:o}}function wre(e,t){const a=t==="rtl",o=e==="y",r=o?"y":"x",n=o?"x":"y",i=!o&&a?-1:1,l=u(),c=m();function d(f){const{height:g,width:b}=f;return o?g:b}function u(){return o?"top":a?"right":"left"}function m(){return o?"bottom":a?"left":"right"}function h(f){return f*i}return{scroll:r,cross:n,startEdge:l,endEdge:c,measureSize:d,direction:h}}function Ji(e=0,t=0){const a=It(e-t);function o(d){return d<e}function r(d){return d>t}function n(d){return o(d)||r(d)}function i(d){return n(d)?o(d)?e:t:d}function l(d){return a?d-a*Math.ceil((d-t)/a):d}return{length:a,max:t,min:e,constrain:i,reachedAny:n,reachedMax:r,reachedMin:o,removeOffset:l}}function CO(e,t,a){const{constrain:o}=Ji(0,e),r=e+1;let n=i(t);function i(h){return a?It((r+h)%r):o(h)}function l(){return n}function c(h){return n=i(h),m}function d(h){return u().set(l()+h)}function u(){return CO(e,l(),a)}const m={get:l,set:c,add:d,clone:u};return m}function Cre(e,t,a,o,r,n,i,l,c,d,u,m,h,p,f,g,b,v,y){const{cross:k,direction:w}=e,R=["INPUT","SELECT","TEXTAREA"],C={passive:!1},P=om(),N=om(),E=Ji(50,225).constrain(p.measure(20)),A={mouse:300,touch:400},$={mouse:500,touch:600},O=f?43:25;let V=!1,T=0,D=0,F=!1,U=!1,L=!1,I=!1;function j(re){if(!y)return;function Ce(Ze){(d0(y)||y(re,Ze))&&ae(Ze)}const $e=t;P.add($e,"dragstart",Ze=>Ze.preventDefault(),C).add($e,"touchmove",()=>{},C).add($e,"touchend",()=>{}).add($e,"touchstart",Ce).add($e,"mousedown",Ce).add($e,"touchcancel",fe).add($e,"contextmenu",fe).add($e,"click",Se,!0)}function H(){P.clear(),N.clear()}function W(){const re=I?a:t;N.add(re,"touchmove",ie,C).add(re,"touchend",fe).add(re,"mousemove",ie,C).add(re,"mouseup",fe)}function _(re){const Ce=re.nodeName||"";return R.includes(Ce)}function B(){return(f?$:A)[I?"mouse":"touch"]}function Y(re,Ce){const $e=m.add(ow(re)*-1),Ze=u.byDistance(re,!f).distance;return f||It(re)<E?Ze:b&&Ce?Ze*.5:u.byIndex($e.get(),0).distance}function ae(re){const Ce=Zy(re,o);I=Ce,L=f&&Ce&&!re.buttons&&V,V=mu(r.get(),i.get())>=2,!(Ce&&re.button!==0)&&(_(re.target)||(F=!0,n.pointerDown(re),d.useFriction(0).useDuration(0),r.set(i),W(),T=n.readPoint(re),D=n.readPoint(re,k),h.emit("pointerDown")))}function ie(re){if(!Zy(re,o)&&re.touches.length>=2)return fe(re);const $e=n.readPoint(re),Ze=n.readPoint(re,k),mt=mu($e,T),ht=mu(Ze,D);if(!U&&!I&&(!re.cancelable||(U=mt>ht,!U)))return fe(re);const kt=n.pointerMove(re);mt>g&&(L=!0),d.useFriction(.3).useDuration(.75),l.start(),r.add(w(kt)),re.preventDefault()}function fe(re){const $e=u.byDistance(0,!1).index!==m.get(),Ze=n.pointerUp(re)*B(),mt=Y(w(Ze),$e),ht=xre(Ze,mt),kt=O-10*ht,Tt=v+ht/50;U=!1,F=!1,N.clear(),d.useDuration(kt).useFriction(Tt),c.distance(mt,!f),I=!1,h.emit("pointerUp")}function Se(re){L&&(re.stopPropagation(),re.preventDefault(),L=!1)}function Ee(){return F}return{init:j,destroy:H,pointerDown:Ee}}function Pre(e,t){let o,r;function n(m){return m.timeStamp}function i(m,h){const f=`client${(h||e.scroll)==="x"?"X":"Y"}`;return(Zy(m,t)?m:m.touches[0])[f]}function l(m){return o=m,r=m,i(m)}function c(m){const h=i(m)-i(r),p=n(m)-n(o)>170;return r=m,p&&(o=m),h}function d(m){if(!o||!r)return 0;const h=i(r)-i(o),p=n(m)-n(o),f=n(m)-n(r)>170,g=h/p;return p&&!f&&It(g)>.1?g:0}return{pointerDown:l,pointerMove:c,pointerUp:d,readPoint:i}}function Sre(){function e(a){const{offsetTop:o,offsetLeft:r,offsetWidth:n,offsetHeight:i}=a;return{top:o,right:r+n,bottom:o+i,left:r,width:n,height:i}}return{measure:e}}function Rre(e){function t(o){return e*(o/100)}return{measure:t}}function jre(e,t,a,o,r,n,i){const l=[e].concat(o);let c,d,u=[],m=!1;function h(b){return r.measureSize(i.measure(b))}function p(b){if(!n)return;d=h(e),u=o.map(h);function v(y){for(const k of y){if(m)return;const w=k.target===e,R=o.indexOf(k.target),C=w?d:u[R],P=h(w?e:o[R]);if(It(P-C)>=.5){b.reInit(),t.emit("resize");break}}}c=new ResizeObserver(y=>{(d0(n)||n(b,y))&&v(y)}),a.requestAnimationFrame(()=>{l.forEach(y=>c.observe(y))})}function f(){m=!0,c&&c.disconnect()}return{init:p,destroy:f}}function Nre(e,t,a,o,r,n){let i=0,l=0,c=r,d=n,u=e.get(),m=0;function h(){const C=o.get()-e.get(),P=!c;let N=0;return P?(i=0,a.set(o),e.set(o),N=C):(a.set(e),i+=C/c,i*=d,u+=i,e.add(i),N=u-m),l=ow(N),m=u,R}function p(){const C=o.get()-t.get();return It(C)<.001}function f(){return c}function g(){return l}function b(){return i}function v(){return k(r)}function y(){return w(n)}function k(C){return c=C,R}function w(C){return d=C,R}const R={direction:g,duration:f,velocity:b,seek:h,settled:p,useBaseFriction:y,useBaseDuration:v,useFriction:w,useDuration:k};return R}function Are(e,t,a,o,r){const n=r.measure(10),i=r.measure(50),l=Ji(.1,.99);let c=!1;function d(){return!(c||!e.reachedAny(a.get())||!e.reachedAny(t.get()))}function u(p){if(!d())return;const f=e.reachedMin(t.get())?"min":"max",g=It(e[f]-t.get()),b=a.get()-t.get(),v=l.constrain(g/i);a.subtract(b*v),!p&&It(b)<n&&(a.set(e.constrain(a.get())),o.useDuration(25).useBaseFriction())}function m(p){c=!p}return{shouldConstrain:d,constrain:u,toggleActive:m}}function Ere(e,t,a,o,r){const n=Ji(-t+e,0),i=m(),l=u(),c=h();function d(f,g){return mu(f,g)<=1}function u(){const f=i[0],g=Cr(i),b=i.lastIndexOf(f),v=i.indexOf(g)+1;return Ji(b,v)}function m(){return a.map((f,g)=>{const{min:b,max:v}=n,y=n.constrain(f),k=!g,w=rw(a,g);return k?v:w||d(b,y)?b:d(v,y)?v:y}).map(f=>parseFloat(f.toFixed(3)))}function h(){if(t<=e+r)return[n.max];if(o==="keepSnaps")return i;const{min:f,max:g}=l;return i.slice(f,g)}return{snapsContained:c,scrollContainLimit:l}}function _re(e,t,a){const o=t[0],r=a?o-e:Cr(t);return{limit:Ji(r,o)}}function Tre(e,t,a,o){const n=t.min+.1,i=t.max+.1,{reachedMin:l,reachedMax:c}=Ji(n,i);function d(h){return h===1?c(a.get()):h===-1?l(a.get()):!1}function u(h){if(!d(h))return;const p=e*(h*-1);o.forEach(f=>f.add(p))}return{loop:u}}function $re(e){const{max:t,length:a}=e;function o(n){const i=n-t;return a?i/-a:0}return{get:o}}function Ore(e,t,a,o,r){const{startEdge:n,endEdge:i}=e,{groupSlides:l}=r,c=m().map(t.measure),d=h(),u=p();function m(){return l(o).map(g=>Cr(g)[i]-g[0][n]).map(It)}function h(){return o.map(g=>a[n]-g[n]).map(g=>-It(g))}function p(){return l(d).map(g=>g[0]).map((g,b)=>g+c[b])}return{snaps:d,snapsAligned:u}}function qre(e,t,a,o,r,n){const{groupSlides:i}=r,{min:l,max:c}=o,d=u();function u(){const h=i(n),p=!e||t==="keepSnaps";return a.length===1?[n]:p?h:h.slice(l,c).map((f,g,b)=>{const v=!g,y=rw(b,g);if(v){const k=Cr(b[0])+1;return Vj(k)}if(y){const k=$m(n)-Cr(b)[0]+1;return Vj(k,Cr(b)[0])}return f})}return{slideRegistry:d}}function Dre(e,t,a,o,r){const{reachedAny:n,removeOffset:i,constrain:l}=o;function c(f){return f.concat().sort((g,b)=>It(g)-It(b))[0]}function d(f){const g=e?i(f):l(f),b=t.map((y,k)=>({diff:u(y-g,0),index:k})).sort((y,k)=>It(y.diff)-It(k.diff)),{index:v}=b[0];return{index:v,distance:g}}function u(f,g){const b=[f,f+a,f-a];if(!e)return f;if(!g)return c(b);const v=b.filter(y=>ow(y)===g);return v.length?c(v):Cr(b)-a}function m(f,g){const b=t[f]-r.get(),v=u(b,g);return{index:f,distance:v}}function h(f,g){const b=r.get()+f,{index:v,distance:y}=d(b),k=!e&&n(b);if(!g||k)return{index:v,distance:f};const w=t[v]-y,R=f+u(w,0);return{index:v,distance:R}}return{byDistance:h,byIndex:m,shortcut:u}}function Ire(e,t,a,o,r,n,i){function l(m){const h=m.distance,p=m.index!==t.get();n.add(h),h&&(o.duration()?e.start():(e.update(),e.render(1),e.update())),p&&(a.set(t.get()),t.set(m.index),i.emit("select"))}function c(m,h){const p=r.byDistance(m,h);l(p)}function d(m,h){const p=t.clone().set(m),f=r.byIndex(p.get(),h);l(f)}return{distance:c,index:d}}function Mre(e,t,a,o,r,n,i,l){const c={passive:!0,capture:!0};let d=0;function u(p){if(!l)return;function f(g){if(new Date().getTime()-d>10)return;i.emit("slideFocusStart"),e.scrollLeft=0;const y=a.findIndex(k=>k.includes(g));aw(y)&&(r.useDuration(0),o.index(y,0),i.emit("slideFocus"))}n.add(document,"keydown",m,!1),t.forEach((g,b)=>{n.add(g,"focus",v=>{(d0(l)||l(p,v))&&f(b)},c)})}function m(p){p.code==="Tab"&&(d=new Date().getTime())}return{init:u}}function Kd(e){let t=e;function a(){return t}function o(c){t=i(c)}function r(c){t+=i(c)}function n(c){t-=i(c)}function i(c){return aw(c)?c:c.get()}return{get:a,set:o,add:r,subtract:n}}function PO(e,t){const a=e.scroll==="x"?i:l,o=t.style;let r=null,n=!1;function i(h){return`translate3d(${h}px,0px,0px)`}function l(h){return`translate3d(0px,${h}px,0px)`}function c(h){if(n)return;const p=bre(e.direction(h));p!==r&&(o.transform=a(p),r=p)}function d(h){n=!h}function u(){n||(o.transform="",t.getAttribute("style")||t.removeAttribute("style"))}return{clear:u,to:c,toggleActive:d}}function Lre(e,t,a,o,r,n,i,l,c){const u=tm(r),m=tm(r).reverse(),h=v().concat(y());function p(P,N){return P.reduce((E,A)=>E-r[A],N)}function f(P,N){return P.reduce((E,A)=>p(E,N)>0?E.concat([A]):E,[])}function g(P){return n.map((N,E)=>({start:N-o[E]+.5+P,end:N+t-.5+P}))}function b(P,N,E){const A=g(N);return P.map($=>{const O=E?0:-a,V=E?a:0,T=E?"end":"start",D=A[$][T];return{index:$,loopPoint:D,slideLocation:Kd(-1),translate:PO(e,c[$]),target:()=>l.get()>D?O:V}})}function v(){const P=i[0],N=f(m,P);return b(N,a,!1)}function y(){const P=t-i[0]-1,N=f(u,P);return b(N,-a,!0)}function k(){return h.every(({index:P})=>{const N=u.filter(E=>E!==P);return p(N,t)<=.1})}function w(){h.forEach(P=>{const{target:N,translate:E,slideLocation:A}=P,$=N();$!==A.get()&&(E.to($),A.set($))})}function R(){h.forEach(P=>P.translate.clear())}return{canLoop:k,clear:R,loop:w,loopPoints:h}}function Bre(e,t,a){let o,r=!1;function n(c){if(!a)return;function d(u){for(const m of u)if(m.type==="childList"){c.reInit(),t.emit("slidesChanged");break}}o=new MutationObserver(u=>{r||(d0(a)||a(c,u))&&d(u)}),o.observe(e,{childList:!0})}function i(){o&&o.disconnect(),r=!0}return{init:n,destroy:i}}function Vre(e,t,a,o){const r={};let n=null,i=null,l,c=!1;function d(){l=new IntersectionObserver(f=>{c||(f.forEach(g=>{const b=t.indexOf(g.target);r[b]=g}),n=null,i=null,a.emit("slidesInView"))},{root:e.parentElement,threshold:o}),t.forEach(f=>l.observe(f))}function u(){l&&l.disconnect(),c=!0}function m(f){return am(r).reduce((g,b)=>{const v=parseInt(b),{isIntersecting:y}=r[v];return(f&&y||!f&&!y)&&g.push(v),g},[])}function h(f=!0){if(f&&n)return n;if(!f&&i)return i;const g=m(f);return f&&(n=g),f||(i=g),g}return{init:d,destroy:u,get:h}}function Fre(e,t,a,o,r,n){const{measureSize:i,startEdge:l,endEdge:c}=e,d=a[0]&&r,u=f(),m=g(),h=a.map(i),p=b();function f(){if(!d)return 0;const y=a[0];return It(t[l]-y[l])}function g(){if(!d)return 0;const y=n.getComputedStyle(Cr(o));return parseFloat(y.getPropertyValue(`margin-${c}`))}function b(){return a.map((y,k,w)=>{const R=!k,C=rw(w,k);return R?h[k]+u:C?h[k]+m:w[k+1][l]-y[l]}).map(It)}return{slideSizes:h,slideSizesWithGaps:p,startGap:u,endGap:m}}function Ure(e,t,a,o,r,n,i,l,c){const{startEdge:d,endEdge:u,direction:m}=e,h=aw(a);function p(v,y){return tm(v).filter(k=>k%y===0).map(k=>v.slice(k,k+y))}function f(v){return v.length?tm(v).reduce((y,k,w)=>{const R=Cr(y)||0,C=R===0,P=k===$m(v),N=r[d]-n[R][d],E=r[d]-n[k][u],A=!o&&C?m(i):0,$=!o&&P?m(l):0,O=It(E-$-(N+A));return w&&O>t+c&&y.push(k),P&&y.push(v.length),y},[]).map((y,k,w)=>{const R=Math.max(w[k-1]||0);return v.slice(R,y)}):[]}function g(v){return h?p(v,a):f(v)}return{groupSlides:g}}function Gre(e,t,a,o,r,n,i){const{align:l,axis:c,direction:d,startIndex:u,loop:m,duration:h,dragFree:p,dragThreshold:f,inViewThreshold:g,slidesToScroll:b,skipSnaps:v,containScroll:y,watchResize:k,watchSlides:w,watchDrag:R,watchFocus:C}=n,P=2,N=Sre(),E=N.measure(t),A=a.map(N.measure),$=wre(c,d),O=$.measureSize(E),V=Rre(O),T=yre(l,O),D=!m&&!!y,F=m||!!y,{slideSizes:U,slideSizesWithGaps:L,startGap:I,endGap:j}=Fre($,E,A,a,F,r),H=Ure($,O,b,m,E,A,I,j,P),{snaps:W,snapsAligned:_}=Ore($,T,E,A,H),B=-Cr(W)+Cr(L),{snapsContained:Y,scrollContainLimit:ae}=Ere(O,B,_,y,P),ie=D?Y:_,{limit:fe}=_re(B,ie,m),Se=CO($m(ie),u,m),Ee=Se.clone(),Re=tm(a),re=({dragHandler:Oe,scrollBody:wt,scrollBounds:ra,options:{loop:z}})=>{z||ra.constrain(Oe.pointerDown()),wt.seek()},Ce=({scrollBody:Oe,translate:wt,location:ra,offsetLocation:z,previousLocation:Pe,scrollLooper:st,slideLooper:et,dragHandler:Wt,animation:ma,eventHandler:Xo,scrollBounds:un,options:{loop:Xs}},rt)=>{const pa=Oe.settled(),Fn=!un.shouldConstrain(),qe=Xs?pa:pa&&Fn,nt=qe&&!Wt.pointerDown();nt&&ma.stop();const Ct=ra.get()*rt+Pe.get()*(1-rt);z.set(Ct),Xs&&(st.loop(Oe.direction()),et.loop()),wt.to(z.get()),nt&&Xo.emit("settle"),qe||Xo.emit("scroll")},$e=kre(o,r,()=>re(he),Oe=>Ce(he,Oe)),Ze=.68,mt=ie[Se.get()],ht=Kd(mt),kt=Kd(mt),Tt=Kd(mt),oa=Kd(mt),Bt=Nre(ht,Tt,kt,oa,h,Ze),$t=Dre(m,ie,B,fe,oa),Ke=Ire($e,Se,Ee,Bt,$t,oa,i),co=$re(fe),uo=om(),K=Vre(t,a,i,g),{slideRegistry:Z}=qre(D,y,ie,ae,H,Re),J=Mre(e,a,Z,Ke,Bt,uo,i,C),he={ownerDocument:o,ownerWindow:r,eventHandler:i,containerRect:E,slideRects:A,animation:$e,axis:$,dragHandler:Cre($,e,o,r,oa,Pre($,r),ht,$e,Ke,Bt,$t,Se,i,V,p,f,v,Ze,R),eventStore:uo,percentOfView:V,index:Se,indexPrevious:Ee,limit:fe,location:ht,offsetLocation:Tt,previousLocation:kt,options:n,resizeHandler:jre(t,i,r,a,$,k,N),scrollBody:Bt,scrollBounds:Are(fe,Tt,oa,Bt,V),scrollLooper:Tre(B,fe,Tt,[ht,Tt,kt,oa]),scrollProgress:co,scrollSnapList:ie.map(co.get),scrollSnaps:ie,scrollTarget:$t,scrollTo:Ke,slideLooper:Lre($,O,B,U,L,W,ie,Tt,a),slideFocus:J,slidesHandler:Bre(t,i,w),slidesInView:K,slideIndexes:Re,slideRegistry:Z,slidesToScroll:H,target:oa,translate:PO($,t)};return he}function zre(){let e={},t;function a(d){t=d}function o(d){return e[d]||[]}function r(d){return o(d).forEach(u=>u(t,d)),c}function n(d,u){return e[d]=o(d).concat([u]),c}function i(d,u){return e[d]=o(d).filter(m=>m!==u),c}function l(){e={}}const c={init:a,emit:r,off:i,on:n,clear:l};return c}const Hre={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function Kre(e){function t(n,i){return wO(n,i||{})}function a(n){const i=n.breakpoints||{},l=am(i).filter(c=>e.matchMedia(c).matches).map(c=>i[c]).reduce((c,d)=>t(c,d),{});return t(n,l)}function o(n){return n.map(i=>am(i.breakpoints||{})).reduce((i,l)=>i.concat(l),[]).map(e.matchMedia)}return{mergeOptions:t,optionsAtMedia:a,optionsMediaQueries:o}}function Qre(e){let t=[];function a(n,i){return t=i.filter(({options:l})=>e.optionsAtMedia(l).active!==!1),t.forEach(l=>l.init(n,e)),i.reduce((l,c)=>Object.assign(l,{[c.name]:c}),{})}function o(){t=t.filter(n=>n.destroy())}return{init:a,destroy:o}}function Uf(e,t,a){const o=e.ownerDocument,r=o.defaultView,n=Kre(r),i=Qre(n),l=om(),c=zre(),{mergeOptions:d,optionsAtMedia:u,optionsMediaQueries:m}=n,{on:h,off:p,emit:f}=c,g=$;let b=!1,v,y=d(Hre,Uf.globalOptions),k=d(y),w=[],R,C,P;function N(){const{container:Re,slides:re}=k;C=(Yy(Re)?e.querySelector(Re):Re)||e.children[0];const $e=Yy(re)?C.querySelectorAll(re):re;P=[].slice.call($e||C.children)}function E(Re){const re=Gre(e,C,P,o,r,Re,c);if(Re.loop&&!re.slideLooper.canLoop()){const Ce=Object.assign({},Re,{loop:!1});return E(Ce)}return re}function A(Re,re){b||(y=d(y,Re),k=u(y),w=re||w,N(),v=E(k),m([y,...w.map(({options:Ce})=>
1029Ce)]).forEach(Ce=>l.add(Ce,"change",$)),k.active&&(v.translate.to(v.location.get()),v.animation.init(),v.slidesInView.init(),v.slideFocus.init(Ee),v.eventHandler.init(Ee),v.resizeHandler.init(Ee),v.slidesHandler.init(Ee),v.options.loop&&v.slideLooper.loop(),C.offsetParent&&P.length&&v.dragHandler.init(Ee),R=i.init(Ee,w)))}function $(Re,re){const Ce=H();O(),A(d({startIndex:Ce},Re),re),c.emit("reInit")}function O(){v.dragHandler.destroy(),v.eventStore.clear(),v.translate.clear(),v.slideLooper.clear(),v.resizeHandler.destroy(),v.slidesHandler.destroy(),v.slidesInView.destroy(),v.animation.destroy(),i.destroy(),l.clear()}function V(){b||(b=!0,l.clear(),O(),c.emit("destroy"),c.clear())}function T(Re,re,Ce){!k.active||b||(v.scrollBody.useBaseFriction().useDuration(re===!0?0:k.duration),v.scrollTo.index(Re,Ce||0))}function D(Re){const re=v.index.add(1).get();T(re,Re,-1)}function F(Re){const re=v.index.add(-1).get();T(re,Re,1)}function U(){return v.index.add(1).get()!==H()}function L(){return v.index.add(-1).get()!==H()}function I(){return v.scrollSnapList}function j(){return v.scrollProgress.get(v.offsetLocation.get())}function H(){return v.index.get()}function W(){return v.indexPrevious.get()}function _(){return v.slidesInView.get()}function B(){return v.slidesInView.get(!1)}function Y(){return R}function ae(){return v}function ie(){return e}function fe(){return C}function Se(){return P}const Ee={canScrollNext:U,canScrollPrev:L,containerNode:fe,internalEngine:ae,destroy:V,off:p,on:h,emit:f,plugins:Y,previousScrollSnap:W,reInit:g,rootNode:ie,scrollNext:D,scrollPrev:F,scrollProgress:j,scrollSnapList:I,scrollTo:T,selectedScrollSnap:H,slideNodes:Se,slidesInView:_,slidesNotInView:B};return A(t,a),setTimeout(()=>c.emit("init"),0),Ee}Uf.globalOptions=void 0;function nw(e={},t=[]){const a=x.useRef(e),o=x.useRef(t),[r,n]=x.useState(),[i,l]=x.useState(),c=x.useCallback(()=>{r&&r.reInit(a.current,o.current)},[r]);return x.useEffect(()=>{tw(a.current,e)||(a.current=e,c())},[e,c]),x.useEffect(()=>{vre(o.current,t)||(o.current=t,c())},[t,c]),x.useEffect(()=>{if(gre()&&i){Uf.globalOptions=nw.globalOptions;const d=Uf(i,a.current,o.current);return n(d),()=>d.destroy()}else n(void 0)},[i,n]),[l,r]}nw.globalOptions=void 0;const SO=x.createContext(null);function u0(){const e=x.useContext(SO);if(!e)throw new Error("useCarousel must be used within a <Carousel />");return e}const sw=x.forwardRef(({orientation:e="horizontal",opts:t,setApi:a,plugins:o,className:r,children:n,...i},l)=>{const[c,d]=nw({...t,axis:e==="horizontal"?"x":"y"},o),[u,m]=x.useState(!1),[h,p]=x.useState(!1),f=x.useCallback(y=>{y&&(m(y.canScrollPrev()),p(y.canScrollNext()))},[]),g=x.useCallback(()=>{d==null||d.scrollPrev()},[d]),b=x.useCallback(()=>{d==null||d.scrollNext()},[d]),v=x.useCallback(y=>{y.key==="ArrowLeft"?(y.preventDefault(),g()):y.key==="ArrowRight"&&(y.preventDefault(),b())},[g,b]);return x.useEffect(()=>{!d||!a||a(d)},[d,a]),x.useEffect(()=>{if(d)return f(d),d.on("reInit",f),d.on("select",f),()=>{d==null||d.off("select",f)}},[d,f]),s.jsx(SO.Provider,{value:{carouselRef:c,api:d,opts:t,orientation:e||((t==null?void 0:t.axis)==="y"?"vertical":"horizontal"),scrollPrev:g,scrollNext:b,canScrollPrev:u,canScrollNext:h},children:s.jsx("div",{ref:l,onKeyDownCapture:v,className:ne("relative",r),role:"region","aria-roledescription":"carousel",...i,children:n})})});sw.displayName="Carousel";const iw=x.forwardRef(({className:e,...t},a)=>{const{carouselRef:o,orientation:r}=u0();return s.jsx("div",{ref:o,className:"overflow-hidden",children:s.jsx("div",{ref:a,className:ne("flex",r==="horizontal"?"-ml-4":"-mt-4 flex-col",e),...t})})});iw.displayName="CarouselContent";const lw=x.forwardRef(({className:e,...t},a)=>{const{orientation:o}=u0();return s.jsx("div",{ref:a,role:"group","aria-roledescription":"slide",className:ne("min-w-0 shrink-0 grow-0 basis-full",o==="horizontal"?"pl-4":"pt-4",e),...t})});lw.displayName="CarouselItem";const RO=x.forwardRef(({className:e,variant:t="outline",size:a="icon",...o},r)=>{const{orientation:n,scrollPrev:i,canScrollPrev:l}=u0();return s.jsxs(ue,{ref:r,variant:t,size:a,className:ne("absolute h-8 w-8 rounded-full",n==="horizontal"?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",e),disabled:!l,onClick:i,...o,children:[s.jsx(Za,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Previous slide"})]})});
1029RO.displayName="CarouselPrevious";const jO=x.forwardRef(({className:e,variant:t="outline",size:a="icon",...o},r)=>{const{orientation:n,scrollNext:i,canScrollNext:l}=u0();return s.jsxs(ue,{ref:r,variant:t,size:a,className:ne("absolute h-8 w-8 rounded-full",n==="horizontal"?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",e),disabled:!l,onClick:i,...o,children:[s.jsx(aa,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:"Next slide"})]})});jO.displayName="CarouselNext";const NO=["fbclid","gclid","gbraid","wbraid","utm_source","utm_medium","utm_campaign","utm_content","utm_term"],AO="xpark_click_ids",Wre=90;function Jre(e,t,a=Wre){if(typeof document>"u")return;const o=a*24*60*60;document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${o}; SameSite=Lax`}function EO(){if(typeof window>"u")return{};try{const e=sessionStorage.getItem(AO);return e?JSON.parse(e):{}}catch{return{}}}function Xre(e){if(!(typeof window>"u"))try{sessionStorage.setItem(AO,JSON.stringify(e))}catch{}}function Yre(){if(!(typeof window>"u"))try{const e=new URLSearchParams(window.location.search),t=EO();let a=!1;for(const o of NO){const r=e.get(o);r&&(t[o]||(t[o]=r,Jre(`xpark_${o}`,r),a=!0))}a&&Xre(t)}catch{}}function Om(e){const t=EO();for(const a of NO){const o=t[a];o&&(e.has(a)||e.set(a,o))}return e}function m0({className:e}){const[t,a]=x.useState(null);if(x.useEffect(()=>{let n=!0;return(async()=>{try{const{data:i,error:l}=await ze.rpc("active_public_coupon");if(l)return;const c=Array.isArray(i)?i[0]:i;n&&(c!=null&&c.code)&&a(c)}catch{}})(),()=>{n=!1}},[]),!t)return null;const o=t.discount_type==="percent"?`${Number(t.discount_value)}% de desconto`:`${Number(t.discount_value).toLocaleString("pt-BR",{style:"currency",currency:"BRL"})} de desconto`,r=async()=>{try{await navigator.clipboard.writeText(t.code),_e.success("Código copiado")}catch{_e.error("Não foi possÃvel copiar. Anote o código: "+t.code)}};return s.jsxs("div",{className:ne("flex flex-col gap-3 rounded-card border border-tech-accent/50 bg-tech-accent/5 p-4 sm:px-6 sm:flex-row sm:items-center sm:justify-between",e),children:[s.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[s.jsx("span",{className:"mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-card bg-tech-accent/15 text-tech-accent",children:s.jsx(YL,{className:"h-4 w-4","aria-hidden":!0})}),s.jsxs("div",{className:"min-w-0",children:[s.jsxs("p",{className:"font-geist text-sm font-semibold text-tech-fg",children:[s.jsxs("span",{className:"font-geist-mono tracking-[0.12em]",children:["Cupom ",t.code]}),s.jsx("span",{className:"text-tech-mute",children:" · "}),s.jsx("span",{children:o})]}),s.jsx("p",{className:"mt-0.5 text-xs text-tech-mute",children:"Aplique no carrinho, na etapa de pagamento."})]})]}),s.jsx("button",{type:"button",onClick:r,"aria-label":`Copiar o código do cupom ${t.code}`,className:"inline-flex h-10 shrink-0 items-center justify-center rounded-full border border-tech-border bg-tech-bg px-4 font-geist text-sm font-medium text-tech-fg transition hover:border-tech-fg/40",children:"Copiar código"})]})}const Zre=["aerovalet","multipark","valetina"],ene=["CNF","CGH"];function tne(e){const t=String(e??"").toLowerCase();return Zre.includes(t)}function _O(e,t){const a=String(e??"").toUpperCase();return ene.includes(a)?!tne(t):!0}function TO(e){const t=String(e??"").toUpperCase();return`A unidade de ${t==="CNF"?"Confins (CNF)":t==="CGH"?"Congonhas (CGH)":t} não é vendida neste canal. Aqui, atendemos Guarulhos (GRU) e Viracopos (VCP).`}const Fj=e=>{const[t,a,o]=e.split("-").map(Number);return!t||!a||!o?"â":new Date(t,a-1,o).toLocaleDateString("pt-BR",{day:"2-digit",month:"short"})},ane=e=>{const t=new Date;return t.setDate(t.getDate()+e),t.toISOString().slice(0,10)},one=(e,t)=>{const[a,o,r]=e.split("-").map(Number),n=new Date(Date.UTC(a,o-1,r));return n.setUTCDate(n.getUTCDate()+t),n.toISOString().slice(0,10)};function rne(){const[e]=Ao(),t=Nr();cn();const a=e.get("airport")||"GRU",o=(()=>{const I=ane(3),j=Of(a);return j>I?j:I})(),r=e.get("entrada")||e.get("start")||o,n=e.get("saida")||e.get("end")||one(r,4),i=e.get("entrada_hora")||"",l=e.get("saida_hora")||"",c=Number(e.get("priority")??50),d=(e.get("src")||"").toLowerCase(),u=typeof window<"u"?(()=>{try{return sessionStorage.getItem("xpark_source")||""}catch{return""}})():"",m=d==="aerovalet"||u==="aerovalet",h=d==="multipark"||u==="multipark",p=d==="valetina"||u==="valetina",f=m?"/aerovalet":h?"/multipark":p?"/valetina":"/",{data:g,isLoading:b}=ew(a),{data:v}=bO(a,r,n),y=new Map;
1029(v??[]).forEach(I=>y.set(I.category,I.is_sold_out));const k=(()=>{const I=[...g??[]];return a==="VCP"&&!I.some(j=>j.category==="valet")&&I.push({id:"valet-vcp-coming-soon",name:"Valet",airport_code:"VCP",category:"valet",price_per_day:0,walk_time_minutes:0,features:["Manobrista no terminal","Sem caminhada","Câmeras 24h"],total_spots:0,sort_order:99,public_description:"Manobrista te recebe no desembarque, leva o carro e devolve quando você voltar. Em breve em Viracopos.",status:"coming_soon",rate_1_6:0,rate_7_12:0,fixed_13_17:0,fixed_18_30:0,rate_31_plus:0,address:null}),p?I.filter(j=>j.category==="valet"):I})(),[w,R]=x.useState(null),[C,P]=x.useState(0);if(!_O(a,d||u))return s.jsx("div",{className:"bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-3xl py-24 text-center",children:[s.jsx("h1",{className:"font-geist text-3xl font-semibold",children:"Unidade indisponÃvel neste canal"}),s.jsx("p",{className:"mt-3 text-tech-mute",children:TO(a)}),s.jsxs(G,{to:f,className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:[s.jsx(Za,{className:"h-4 w-4"})," Voltar"]})]})});if(!_6(a))return s.jsx("div",{className:"bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-3xl py-24 text-center",children:[s.jsx("h1",{className:"font-geist text-3xl font-semibold",children:"Aeroporto não encontrado"}),s.jsx("p",{className:"mt-3 text-tech-mute",children:"Por enquanto operamos em GRU · Guarulhos, VCP · Viracopos, CNF · Confins e CGH · Congonhas."}),s.jsxs(G,{to:"/",className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:[s.jsx(Za,{className:"h-4 w-4"})," Voltar"]})]})});const E=!T6(a,r),A=gO(r,n,i||"12:00",l||"12:00"),$=ure(c),O=$==="economico"?"descoberta":$==="conforto"?"coberta":"valet",V=Math.max(0,k.findIndex(I=>I.category===O)),T=V>0?[k[V],...k.filter((I,j)=>j!==V)]:k;x.useEffect(()=>{if(!w||!g||g.length===0)return;w.scrollTo(0,!0),P(w.selectedScrollSnap());const I=()=>P(w.selectedScrollSnap());return w.on("select",I),w.on("reInit",I),()=>{w.off("select",I),w.off("reInit",I)}},[w,g,V]);const D=I=>{const j=new URLSearchParams({airport:a,tier:I.category,start:r,end:n});i&&j.set("entrada_hora",i),l&&j.set("saida_hora",l);const H=e.get("src");H&&j.set("src",H),Om(j),t(`/checkout?${j.toString()}`)},F={GRU:{code:"GRU",state:"São Paulo",city:"Guarulhos"},VCP:{code:"VCP",state:"Campinas",city:"Viracopos"},CNF:{code:"CNF",state:"Minas Gerais",city:"Confins"},CGH:{code:"CGH",state:"São Paulo",city:"Congonhas"}},U=F[a]??F.GRU,L=(I,j)=>{const H=I.category===O,W=a==="VCP"&&I.category==="valet",_=Jy({airport:a,category:I.category,entrada:r,entradaHora:i||"12:00"}),B=!W&&(I.total_spots===0||y.get(I.category)===!0),Y=W||B||_||E,ae=Zk(I,A),ie=H&&!Y,fe=W?"Em breve":B?"Esgotado":E?`Inauguração em ${Vy(a)}`:_?"Precisa de 24h":H?"Recomendado pra você":I.category==="coberta"?"Mais escolhido":null,Se=Y?"border border-dashed border-tech-fg/30 bg-tech-card text-tech-mute":H?"bg-tech-accent text-tech-fg":"bg-tech-fg text-tech-bg",Ee=_?Xy():"";return s.jsxs("article",{className:ne("relative flex h-full flex-col rounded-card border bg-tech-card p-6 transition-all duration-200 motion-safe:hover:-translate-y-0.5 motion-safe:hover:shadow-elevated",Y?"border-tech-border bg-tech-bg/60":ie?ne("border-2 border-tech-accent shadow-lg",(j==null?void 0:j.allowScale)&&"lg:scale-[1.02]"):"border-tech-border"),children:[fe&&s.jsx("span",{className:ne("absolute left-6 -top-3 rounded-full px-3 py-1 font-geist-mono text-[10px] font-semibold uppercase tracking-[0.18em]",Se),children:fe}),s.jsxs("div",{className:"flex items-start justify-between gap-4",children:[s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.2em] text-tech-mute",children:Yk[I.category]}),s.jsx("h2",{className:"mt-1 font-geist text-xl font-semibold tracking-tight",children:Wy(I.category,a)}),s.jsxs("p",{className:"mt-0.5 text-sm text-tech-mute",children:["por ",vO[I.category]]})]}),I.category==="valet"&&s.jsx("div",{className:"text-right shrink-0",children:s.jsx("img",{src:kO,alt:"Valetina · valet no Aeroporto de Guarulhos",width:96,height:14,loading:"lazy",decoding:"async",className:"inline-block h-4 w-auto"})})]}),s.jsx("p",{className:"mt-4 text-sm leading-relaxed text-tech-fg/80",children:I.public_description}),_&&s.jsxs("p",{className:"mt-3 rounded-lg border border-dashed border-tech-fg/25 bg-tech-bg/40 px-3 py-2 text-xs leading-relaxed text-tech-mute",children:["O Valet exige 24 horas de antecedência. Para esta data, escolha Descoberta ou C
1029oberta, ou reserve o Valet para uma entrada a partir de ",s.jsx("span",{className:"font-geist-mono text-tech-fg",children:Ee}),"."]}),s.jsxs("ul",{className:"mt-5 flex-1 space-y-2",children:[I.category!=="valet"&&I.walk_time_minutes>0&&s.jsxs("li",{className:"flex items-center gap-2.5 text-sm",children:[s.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-tech-accent"}),s.jsx("span",{className:"text-tech-fg/90",children:a==="CGH"?`Sem traslado: acesso a pé em cerca de ${I.walk_time_minutes} minutos`:`Traslado ${I.walk_time_minutes} min até o terminal`})]}),(I.features??[]).map(Re=>s.jsxs("li",{className:"flex items-center gap-2.5 text-sm",children:[s.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-tech-accent"}),s.jsx("span",{className:"text-tech-fg/90",children:Re})]},Re))]}),s.jsxs("div",{className:"mt-6 flex items-end justify-between gap-3 border-t border-tech-border pt-5",children:[Y?s.jsx("p",{className:"text-sm text-tech-mute",children:B?"Sem vagas para estas datas":"IndisponÃvel para estas datas"}):s.jsxs("div",{children:[s.jsxs("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:["Total ",A," ",A===1?"diária":"diárias"]}),s.jsx("p",{className:"font-home-heading text-3xl font-bold tracking-tight text-tech-fg",children:Dr(ae)}),A>1&&s.jsxs("p",{className:"text-xs text-tech-mute",children:[Dr(ae/A)," por dia"]})]}),Y?s.jsx("button",{type:"button",disabled:!0,"aria-disabled":"true",className:"inline-flex cursor-not-allowed items-center gap-1.5 rounded-full border border-tech-border bg-tech-card px-5 py-2.5 text-sm font-semibold text-tech-mute",children:B?"Esgotado":E?`Inauguração em ${Vy(a)}`:_?"Precisa de 24h":"Em breve"}):s.jsxs("button",{type:"button",onClick:()=>D(I),className:"inline-flex items-center gap-1.5 rounded-full bg-tech-fg px-5 py-2.5 text-sm font-semibold text-tech-bg transition hover:bg-tech-fg/85",children:["Reservar ",s.jsx(aa,{className:"h-3.5 w-3.5"})]})]})]})};return s.jsxs("div",{className:"bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"Escolher nÃvel de serviço | xpark",description:"Compare lado a lado os três nÃveis de estacionamento de aeroporto e decida pelo que faz sentido para o seu tempo.",path:"/escolher"}),s.jsxs("div",{className:"container py-6 sm:py-10 md:py-14",children:[s.jsxs("div",{className:"flex flex-col gap-4 roun
1029ded-panel border border-tech-border bg-tech-card p-5 sm:gap-6 sm:p-6 md:flex-row md:items-end md:justify-between md:p-10",children:[s.jsxs("div",{children:[s.jsxs("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.22em] text-tech-mute",children:[U.code," · ",U.state]}),s.jsxs("h1",{className:"mt-3 font-home-heading text-[28px] font-bold sm:text-3xl md:text-[44px]",children:["Vagas pra você em ",U.city]}),s.jsxs("p",{className:"mt-3 flex flex-wrap items-center gap-2 text-sm text-tech-mute",children:[s.jsx("span",{className:"rounded-full bg-tech-bg px-3 py-1 font-geist-mono text-tech-fg",children:Fj(r)}),s.jsx(aa,{className:"h-3.5 w-3.5 text-tech-border"}),s.jsx("span",{className:"rounded-full bg-tech-bg px-3 py-1 font-geist-mono text-tech-fg",children:Fj(n)}),s.jsx("span",{className:"text-tech-border",children:"·"}),s.jsxs("span",{children:[A," ",A===1?"diária":"diárias"]})]})]}),s.jsxs(G,{to:f,className:"inline-flex h-10 w-fit items-center gap-2 rounded-full border border-tech-border bg-tech-card px-4 font-geist text-sm text-tech-fg hover:border-tech-fg/40",children:[s.jsx(Za,{className:"h-3.5 w-3.5"})," Mudar busca"]})]}),cd(a)&&s.jsxs("div",{className:"mt-6 rounded-card border border-dashed border-tech-fg/30 bg-tech-card px-5 py-4 text-sm leading-relaxed text-tech-fg/85",children:[Ak(a),E&&s.jsxs(s.Fragment,{children:[" ","Escolha uma entrada a partir de"," ",s.jsx("span",{className:"font-geist-mono text-tech-fg",children:Of(a).split("-").reverse().join("/")})," ","para concluir a reserva."]})]}),s.jsx(m0,{className:"mt-6"}),b&&s.jsx("p",{className:"mt-12 text-center text-sm text-tech-mute",children:"Carregando opçõesâ¦"}),!b&&k.length>0&&s.jsxs("div",{className:"mt-7 sm:mt-10 lg:hidden",children:[s.jsx(sw,{opts:{loop:!1},setApi:R,children:s.jsx(iw,{className:"!ml-0",children:T.map(I=>s.jsx(lw,{className:"!pl-0",children:s.jsx("div",{className:"h-full pt-3",children:L(I)})},I.id))})}),s.jsx("div",{className:"mt-5 flex items-center justify-center gap-2",children:T.map((I,j)=>s.jsx("button",{type:"button","aria-label":`Ver ${Wy(I.category,a)}`,onClick:()=>w==null?void 0:w.scrollTo(j),className:ne("h-1.5 rounded-full transition-all",j===C?"w-6 bg-tech-fg":"w-1.5 bg-tech-border")},I.id))})]}),!b&&k.length>0&&s.jsx("div",{className:"mt-12 hidden gap-6 lg:grid lg:grid-cols-3",children:k.map(I=>s.jsx("div",{className:"h-full",children:L(I,{allowScale:!0})},I.id))}),!b&&k.length>0&&s.jsxs("p",{className:"mt-8 text-center text-xs text-tech-mute",children:["Reserva sujeita à "," ",s.jsx(G,{to:"/politica-cancelamento",className:"underline hover:text-tech-fg",children:"polÃtica de cancelamento"}),"."]})]})]})}function dc(e){return ao(e)}function cw(e){const t=[];return(e.coverage==="descoberto"||e.coverage==="ambos")&&t.push("Descoberta"),(e.coverage==="coberto"||e.coverage==="ambos")&&t.push("Coberta"),e.valet&&t.push("Valet"),t}function p0(e){let t=1/0,a="",o=1/0;const r=new Set;for(const n of e){const i=pt(n);i<t&&(t=i,a=n.priceCollectedAt),o=Math.min(o,dc(n)),cw(n).forEach(l=>r.add(l))}return{count:e.length,minDaily:t,minDailyAt:a,nearest:o,types:[...r]}}function nne({operators:e}){const t=p0(e),a=[`${t.count} estacionamentos comparados`,Y5(e),t.types.length>0&&`vagas ${t.types.join(", ").toLowerCase()}`].filter(Boolean);return s.jsx("p",{className:"mt-5 flex flex-wrap gap-x-3 gap-y-1 text-sm text-paper/85",children:a.map((o,r)=>s.jsxs("span",{children:[r>0&&s.jsx("span",{className:"mr-3 text-paper/40",children:"·"}),o]},o))})}function sne({operators:e,terminals:t,ctaLabel:a="Ver vagas"}){const o=p0(e),r=[["Terminais",t],["Estacionamentos comparados",String(o.count)],["Mais perto",(()=>{const n=e.reduce((i,l)=>Number.isFinite(ao(l))&&(!i||ao(l)<ao(i))?l:i,null);return n?Wi(n):"n/d"})()],["Tipos de vaga",o.types.join(", ")||"n/d"],["Diária a partir de",Number.isFinite(o.minDaily)?X(o.minDaily):"n/d"]];return s.jsx("aside",{className:"lg:sticky lg:top-24 lg:self-start",children:s.jsxs("div",{className:"rounded-card border border-ink/10 bg-paper p-6",children:[s.jsx("dl",{className:"divide-y divide-ink/10",children:r.map(([n,i])=>s.jsxs("div",{className:"flex items-start justify-between gap-4 py-3.5 first:pt-0",children:[s.jsx("dt",{className:"text-sm text-mute",children:n}),s.jsx("dd",{className:"text-right font-semibold text-ink",children:i})]},n))}),o.minDailyAt&&s.jsxs("p",{className:"mt-2 text-xs text-mute",children:["Preços conferidos em ",o.minDailyAt]}),s.jsx("a",{href:"#vagas",className:"mt-5 flex w-full items-center justify-center rounded-full bg-gold px-5 py-3 font-semibold text-ink transition hover:brightness-95",children:a})]})})}function ine({operators:e,iata:t}){if(e.length===0)return null;const a=e.reduce((n,i)=>pt(i)<pt(n)?i:n),o=e.reduce((n,i)=>dc(i)<dc(n)?i:n),r=[...e].sort((n,i)=>pt(n)-pt(i));return s.jsxs("section",{id:"vagas",className:"scroll-mt-24",children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsxs("h2",{className:"font-home-heading text-[28px] font-bold leading-tight text-ink md:text-[34px]",children:["Estacionamentos perto do ",t]}),s.jsx("ul",{className:"mt-6 grid gap-4 sm:grid-cols-2",children:r.map(n=>{var d;const i=pt(n),l=dc(n),c=[n.iata==="CGH"?"Sem traslado: acesso a pé em cerca de 5 minutos":((d=n.transfer)==null?void 0:d.included)&&"Traslado incluso",n.hours].filter(
1029Boolean);return s.jsxs("li",{className:"flex flex-col rounded-card border border-ink/10 bg-paper p-5",children:[s.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[n===a&&e.length>1&&Number.isFinite(pt(n))&&s.jsx("span",{className:"rounded-full bg-gold px-3 py-1 text-[11px] font-semibold text-ink",children:"Menor preço"}),n===o&&e.length>1&&s.jsx("span",{className:"rounded-full bg-ink px-3 py-1 text-[11px] font-semibold text-paper",children:"Mais perto do terminal"})]}),s.jsx("p",{className:"mt-3 font-home-heading text-xl font-bold text-ink",children:n.name}),s.jsxs("p",{className:"mt-1 flex items-center gap-1 text-sm text-mute",children:[s.jsx(en,{className:"h-3.5 w-3.5","aria-hidden":"true"}),Number.isFinite(l)?Hk(n):"Distância não informada"]}),s.jsxs("div",{className:"mt-3 flex flex-wrap gap-1.5",children:[cw(n).map(u=>s.jsx("span",{className:"rounded-full border border-ink/15 px-3 py-1 text-xs text-ink",children:u},u)),n.coverage==="nao-informado"&&s.jsx("span",{className:"rounded-full border border-ink/15 px-3 py-1 text-xs text-mute",children:"Cobertura não informada"})]}),c.length>0&&s.jsx("p",{className:"mt-3 text-sm text-ink/70",children:c.join(" · ")}),s.jsxs("div",{className:"mt-auto flex items-end justify-between gap-3 pt-5",children:[s.jsxs("div",{children:[s.jsx("p",{className:"text-xs text-mute",children:"A partir de"}),s.jsxs("p",{className:"font-home-heading text-2xl font-bold text-ink",children:[Number.isFinite(i)?X(i):"Não divulgado",Number.isFinite(i)&&s.jsx("span",{className:"text-sm font-normal text-mute",children:" /diária"})]}),Number.isFinite(i)&&n.dataColeta&&s.jsxs("p",{className:"text-[11px] text-mute",children:["coleta ",io(n.dataColeta)]})]}),s.jsx(G,{to:`/aeroportos/${n.hubSlug}/${n.slug}`,className:"rounded-full bg-ink px-4 py-2 text-sm font-semibold text-paper transition hover:bg-ink/85",children:"Ver detalhes"})]})]},n.slug)})})]})}function lne(){const e=[{icon:fT,t:"Chegue e mostre o voucher",d:"Na portaria, apresente o código da reserva que chegou no seu WhatsApp e e-mail."},{icon:AL,t:"Van até o terminal",d:"Deixe o carro e siga no traslado até o seu terminal de embarque."},{icon:JL,t:"Avise ao desembarcar",d:"Na volta, mande mensagem ao estacionamento e a van vai buscar você."}];return s.jsxs("section",{id:"traslado",className:"scroll-mt-24",children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsx("h2",{className:"font-home-heading text-[28px] font-bold leading-tight text-ink md:text-[34px]",children:"Como funciona o traslado"}),s.jsx("ol",{className:"mt-6 grid gap-4 sm:grid-cols-3",children:e.map((t,a)=>s.jsxs("li",{className:"rounded-card border border-ink/10 p-5",children:[s.jsx("span",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-gold text-ink",children:s.jsx(t.icon,{className:"h-5 w-5","aria-hidden":"true"})}),s.jsxs("p",{className:"mt-4 text-xs font-semibold text-mute",children:["Passo ",a+1]}),s.jsx("p",{className:"mt-1 font-semibold text-ink",children:t.t}),s.jsx("p",{className:"mt-2 text-sm leading-relaxed text-ink/70",children:t.d})]},t.t))}),s.jsx("p",{className:"mt-3 text-xs text-mute",children:"Regras de traslado e tolerância variam por estacionamento; confira os detalhes de cada um."})]})}function Bn({title:e,description:t,children:a}){return s.jsx("header",{className:"rounded-b-panel border-b border-border bg-cream text-ink",children:s.jsxs("div",{className:"container py-10 sm:py-14 md:py-20",children:[s.jsx("div",{className:"mb-5 h-1 w-16 rounded-full bg-gold sm:mb-7","aria-hidden":"true"}),s.jsx("h1",{className:"max-w-4xl font-home-heading text-[32px] font-bold leading-tight sm:text-4xl md:text-5xl",children:e}),s.jsx("p",{className:"mt-4 max-w-2xl font-home-body text-[15px] leading-relaxed text-mute sm:mt-5 sm:text-base md:text-lg",children:t}),a]})})}const cne=new Map(Ht.map(e=>[e.iata,e]));function dne(){const e={"@context":"https://schema.org","@type":"ItemList",name:"Aeroportos cobertos pelo xpark",itemListElement:Ht.map((t,a)=>({"@type":"ListItem",position:a+1,url:`https://www.xpark.ai/aeroportos/${t.slug}`,name:t.h1}))};return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:"Aeroportos e destinos comparados | xpark",description:`O xpark compara preços de ${Es} pelo Brasil. Consulte as praças, fontes e opções disponÃveis em cada destino.`,path:"/aeroportos",jsonLd:e}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:["Compare estacionamentos em ",s.jsxs("span",{className:"text-gold-dark",children:[Ht.length," destinos"]})]}),description:`Explore ${Es}
1029 e encontre a opção certa para sua viagem.`}),s.jsx(ct,{as:"section",className:"bg-paper",stagger:!0,staggerMs:80,children:s.jsx("div",{className:"container grid gap-6 py-16 md:grid-cols-2 md:py-24",children:Ree.map((t,a)=>(()=>{const o=cne.get(t.iata),r=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"relative aspect-[16/10] overflow-hidden rounded-card bg-cream",children:[s.jsx("img",{src:t.hero,alt:t.iata==="VCP"?"Terminal do Aeroporto Internacional de Viracopos, em Campinas":t.iata==="CNF"?"Vista aérea do Aeroporto Internacional de Confins, em Minas Gerais":t.iata==="CGH"?"Vista aérea da região do Aeroporto de Congonhas, em São Paulo":`Imagem ilustrativa do aeroporto de ${t.city}`,loading:"eager",fetchPriority:a===0?"high":"auto",className:"h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105"}),t.upcoming&&s.jsx("span",{className:"absolute left-3 top-3 rounded-full bg-ink px-2.5 py-1 font-mono text-[9px] uppercase tracking-[0.18em] text-paper",children:"Em breve · 2026"}),o&&!t.upcoming&&s.jsx("span",{className:"absolute left-3 top-3 rounded-full bg-gold px-2.5 py-1 font-mono text-[9px] uppercase tracking-[0.18em] text-ink",children:"Guia da praça"})]}),s.jsx("div",{className:"mt-5 flex flex-1 flex-col",children:s.jsxs("div",{className:"flex flex-1 flex-col",children:[s.jsx("p",{className:"font-mono text-[11px] uppercase tracking-[0.18em] text-mute",children:t.iata}),s.jsxs("h2",{className:"mt-1 font-home-heading text-3xl font-semibold",children:[t.city,", ",s.jsx("span",{className:"text-mute",children:t.state})]}),o&&!t.upcoming?(()=>{const i=p0(sl(o.slug));return s.jsxs(s.Fragment,{children:[s.jsxs("ul",{className:"mb-5 mt-4 flex flex-wrap gap-2 text-xs",children:[Number.isFinite(i.minDaily)&&s.jsxs("li",{className:"whitespace-nowrap rounded-full bg-gold px-3 py-1 font-semibold text-ink",children:["Diária a partir de ",X(i.minDaily)]}),s.jsxs("li",{className:"whitespace-nowrap rounded-full border border-ink/15 px-3 py-1 text-ink",children:[i.count," estacionamentos comparados"]})]}),s.jsx("span",{className:"mt-auto inline-flex self-start rounded-full bg-ink px-4 py-2 text-sm font-semibold text-paper",children:"Ver estacionamentos"})]})})():s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"mb-5 mt-4 text-xs text-mute",children:"Ainda sem estacionamentos comparados."}),s.jsx("span",{className:"mt-auto inline-flex self-start rounded-full border border-ink/15 px-4 py-2 text-sm font-semibold text-mute",children:"Em breve"})]})]})})]}),n=ne("group flex h-full flex-col rounded-card border border-border bg-paper p-5 shadow-sm transition-transform duration-300 hover:border-ink/30 motion-safe:active:scale-[0.99]",t.upcoming&&!o&&"opacity-60");return o?s.jsx(G,{to:`/aeroportos/${o.slug}`,"data-reveal-item":!0,className:n,children:r},t.iata):s.jsx("div",{"data-reveal-item":!0,className:n,children:r},t.iata)})())})}),s.jsx("section",{className:"border-t border-border bg-cream",children:s.jsx("div",{className:"container py-16 md:py-24",children:s.jsx(S5,{title:"Outros aeroportos comparados"})})})]})}function $O({items:e,renderItem:t,getKey:a,label:o,className:r,itemClassName:n="basis-[82%] sm:basis-[46%] lg:basis-[31%]",ariaLabel:i="Carrossel de conteúdos",navClassName:l="border-ink/15 text-ink hover:border-gold hover:bg-cream"}){return e.length?s.jsxs(sw,{opts:{align:"start",loop:!1,dragFree:!1},className:ne("relative",r),"aria-label":i,children:[s.jsxs("div",{className:"mb-6 flex items-end justify-between gap-4",children:[o?s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.22em] text-mute",children:o}):s.jsx("span",{}),s.jsxs("div",{className:"hidden gap-2 md:flex",children:[s.jsx(RO,{className:ne("static translate-y-0 h-9 w-9 rounded-full",l),"aria-label":"Ver conteúdos anteriores"}),s.jsx(jO,{className:ne("static translate-y-0 h-9 w-9 rounded-full",l),"aria-label":"Ver próximos conteúdos"})]})]}),s.jsx(iw,{className:"-ml-4",children:e.map((c,d)=>s.jsx(lw,{className:ne("flex pl-4",n),children:t(c,d)},a(c,d)))})]}):null}function Xv(e){const t=[],a=/\[([^\]]+)\]\(([^)]+)\)/g;let o=0,r,n=0;for(;(r=a.exec(e))!==null;){r.index>
1029o&&t.push(e.slice(o,r.index));const[,i,l]=r,c=/^https?:\/\//.test(l);t.push(s.jsx("a",{href:l,className:"text-gold-dark underline underline-offset-4 hover:text-ink transition-colors",...c?{target:"_blank",rel:"noopener noreferrer"}:{},children:i},`lnk-${n++}`)),o=r.index+r[0].length}return o<e.length&&t.push(e.slice(o)),t.length===1?t[0]:s.jsx(s.Fragment,{children:t})}function une({body:e}){return s.jsx(s.Fragment,{children:e.map((t,a)=>{if(t.kind==="h2"){const o=t.text.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"");return s.jsxs("div",{className:"mt-14 mb-4",children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsx("h2",{id:o,className:"font-display text-[28px] md:text-[34px] font-light leading-tight text-ink scroll-mt-24",children:t.text})]},a)}return t.kind==="quote"?s.jsxs("blockquote",{className:"my-10 border-l-2 border-gold pl-6",children:[s.jsxs("p",{className:"font-display text-2xl font-light italic leading-snug text-ink",children:["â",t.text,"â"]}),t.attribution&&s.jsx("footer",{className:"mt-3 font-geist-mono text-[11px] uppercase tracking-[0.18em] text-mute",children:t.attribution})]},a):t.kind==="table"?s.jsxs("figure",{className:"my-10 -mx-4 md:mx-0",children:[s.jsx("div",{className:"overflow-x-auto border-y border-ink/10 md:rounded-card md:border",children:s.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[s.jsx("thead",{children:s.jsx("tr",{className:"border-b border-ink/10 bg-cream",children:t.headers.map((o,r)=>s.jsx("th",{className:"px-4 py-3 font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:o},r))})}),s.jsx("tbody",{children:t.rows.map((o,r)=>
1029{const n=r===0;return s.jsx("tr",{className:"border-b border-ink/10 last:border-b-0 "+(n?"bg-gold/10":""),children:o.map((i,l)=>s.jsx("td",{className:"px-4 py-3 align-top "+(l===0?"font-medium text-ink":"text-ink/80")+(n&&l===0?" text-ink":""),children:Xv(i)},l))},r)})})]})}),t.caption&&s.jsx("figcaption",{className:"mt-3 px-4 text-xs leading-relaxed text-mute md:px-0",children:t.caption})]},a):t.kind==="faq"?s.jsxs("div",{className:"mt-8 border-t border-ink/10 pt-7",children:[s.jsx("h3",{className:"font-display text-xl font-light text-ink",children:t.question}),Hg(t.answer).map((o,r)=>s.jsx("p",{className:"mt-3 text-[17px] leading-[1.75] text-ink/85",children:Xv(o)},r))]},a):s.jsx("p",{className:"mt-6 text-[17px] leading-[1.75] text-ink/85",children:Xv(t.text)},a)})})}function Fe(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function mne(e){return e==="coberto"?"Coberta":e==="descoberto"?"Descoberta":"Descoberta e coberta"}function pne(e){return e.transfer?e.transfer.type==="a-pe"?"a pé (dentro do aeroporto)":e.transfer.included?"sim, gratuito":"não incluso":"não divulgado publicamente"}function e2(e){return!e.terminals||e.terminals.length===0?null:e.terminals.reduce((t,a)=>t.minutes<=a.minutes?t:a)}function hne(e){return e.priceRows.find(t=>/coberta/i.test(t.label)&&t.perDay!=null&&!/hora/i.test(t.label))??null}function fne(){const e=sl("estacionamento-aeroporto-viracopos");if(e.length===0)return[];const t=[...e].sort((P,N)=>pt(P)-pt(N)),a=t[0],o=t[t.length-1],r=pt(a),n=pt(o),i=t.map(P=>{const N=pt(P),E=Number.isFinite(N)?`a partir de ${X(N)}/dia`:"não divulgado publicamente";return`<tr><td>${Fe(P.name)}</td><td>${E}</td><td>${Fe(mne(P.coverage))}</td><td>${Fe(pne(P))}</td><td><small>${Fe(P.fonteCitacao)} · ${Fe(P.priceCollectedAt)}</small></td></tr>`}).join(""),l=`<p><strong>Em Viracopos, a diária mais barata parte de ${X(r)} (${Fe(a.name)}) e a mais alta entre as opções comparadas chega a ${X(n)} (${Fe(o.name)}),</strong> entre as ${e.length} operadoras que o xpark acompanha na praça. Todos os valores abaixo saem dos canais oficiais das operadoras, com fonte e data de coleta.</p> 1030<div class="ssg-table-wrap"><table class="ssg-table"><thead><tr><th>Operadora</th><th>Diária</th><th>Cobertura</th><th>Traslado incluso</th><th>Fonte</th></tr></thead><tbody>${i}</tbody></table></div> 1031<p>Permanência longa quase sempre reduz o preço por dia: pacotes de 7, 17 ou 30 dias podem cair pela metade em relação à diária avulsa nas operadoras que publicam essas faixas.</p>`,d=`<p><strong>O Aeroporto de Viracopos fica em Campinas, no interior de São Paulo,</strong> por isso "estacionamento aeroporto Campinas" e "estacionamento Viracopos" são a mesma busca. As operadoras ficam distribuÃdas entre bairros de Campinas e o entorno da Rodovia Santos Dumont (SP-075).</p> 1032<ul class="ssg-hub-list">${e.map(P=>{const N=e2(P),E=ln(P),A=`${Hk(P)}${E!=null&&(N==null?void 0:N.minutes)!=null?`, ${N.minutes} min de trajeto`:""}`,$=[P.address.district,P.address.city].filter(Boolean).join(", ");return`<li><strong>${Fe(P.name)}</strong> · ${Fe($||P.address.city)} · ${Fe(A)}</li>`}).join("")}</ul> 1033<p>Todas as unidades listadas atendem o terminal único do VCP, com deslocamento inferior a 15 minutos em condições normais de tráfego.</p>`,u=e.find(P=>P.slug==="estacionamento-oficial-vcp-estapar");let m="";if(u){const P=D=>u.priceRows.find(F=>D.test(F.label)),N=P(/garagem coberta/i),E=P(/bols[aã]o/i),A=P(/reserva online/i),O=[...e.filter(D=>D.slug!=="estacionamento-oficial-vcp-estapar")].sort((D,F)=>pt(D)-pt(F))[0],V=O?pt(O):1/0;m=`<p><strong>O estacionamento oficial de Viracopos é operado pela Estapar</strong>, com ${[(N==null?void 0:N.perDay)!=null?`garagem coberta a ${X(N.perDay)}/dia`:null,(E==null?void 0:E.perDay)!=null?`Bolsão Econômico a ${X(E.perDay)}/dia`:null,(A==null?void 0:A.perDay)!=null?`reserva online a partir de ${X(A.perDay)}/dia`:null].filter(Boolean).join("; ")||"tarifas publicadas no portal oficial do aeroporto"}. Entre os privados no entorno, a diária parte de ${X(V)} (${Fe((O==null?void 0:O.name)??"")}).</p> 1034<p>
1034A diferença objetiva é logÃstica: o oficial fica dentro do aeroporto (passarela na garagem coberta, ônibus interno no Bolsão), enquanto os privados exigem traslado, sempre gratuito e 24h nas operadoras listadas aqui. O critério prático de decisão costuma ser o tempo de permanência: até 2 dias, o custo do oficial e do privado pode se aproximar; a partir de 5 a 7 dias, os pacotes fechados dos privados tendem a ganhar por larga margem.</p> 1035<p>Fontes: ${Fe(u.fonteCitacao)} (${Fe(u.priceCollectedAt)}) e sites oficiais das operadoras privadas.</p>`}const h=e.filter(P=>P.coverage==="coberto"||P.coverage==="ambos"),p=h.map(P=>{const N=hne(P),E=N&&N.perDay!=null?`${X(N.perDay)}/dia (${Fe(N.label)})`:"preço da vaga coberta não divulgado publicamente";return`<li><strong>${Fe(P.name)}</strong> · ${E}</li>`}).join(""),f=`<p><strong>${h.length} das ${e.length} operadoras em Viracopos oferecem vaga coberta</strong> (por sombrite, toldo ou edifÃcio-garagem), tanto entre privados quanto no oficial. A cobertura protege a pintura do carro do sol forte e de chuvas tÃpicas do interior paulista, sem alterar o tempo até o terminal.</p> 1036<ul class="ssg-hub-list">${p}</ul> 1037<p>Quando a operadora não publica o preço especÃfico da vaga coberta, marcamos como "não divulgado publicamente" e consultamos no momento da reserva.</p>`,g=e.map(P=>({op:P,t:e2(P)})).filter(P=>P.t!=null),b=g.reduce((P,N)=>Math.min(P,N.t.minutes),1/0),v=g.find(P=>P.t.minutes===b),y=e.filter(P=>{var N;return((N=P.transfer)==null?void 0:N.included)===!0}).length,k=[...g].sort((P,N)=>P.t.minutes-N.t.minutes).map(P=>`<li><strong>${Fe(P.op.name)}</strong> · ${Wi(P.op)} · ${P.t.minutes} min <small>(${Fe(P.t.via)})</small></li>`).join(""),w=`<p><strong>O deslocamento mais curto até o terminal de Viracopos é de ${b} minutos</strong>${v?` (${Fe(v.op.name)})`:""}, entre as operadoras comparadas. A maior parte fica na faixa de 5 a 10 minutos, com trajeto direto pela Rodovia Santos Dumont (SP-075), sem pedágio interno.</p> 1038<ul class="ssg-hub-list">${k}</ul> 1039<p>${y} das ${e.length} operadoras oferecem traslado gratuito 24 horas incluso na diária.</p>`,R=dw("estacionamento-aeroporto-viracopos","no Aeroporto de Viracopos, em Campinas"),C=R?`${R.intro} 1040<p>${R.officialCopy} Nos estacionamentos privados do entorno, confira se o traslado até o terminal está incluso, qual a cobertura da vaga e quanto custa a estadia inteira. Preços e condições podem mudar depois da coleta.</p> 1041<p>Veja a <a href="${R.pricesLink}">tabela de preços para 1, 7, 15 e 30 dias</a>, o <a href="/estacionamento-mais-barato-viracopos">ranking do mais barato</a>, o guia para quem <a href="/voo-azul-viracopos-onde-deixar-o-carro">voa de Azul por Viracopos</a>, o de <a href="/estacionamento-aeroporto-bate-volta-trabalho-guarulhos-viracopos">viagem a trabalho</a> e como funciona o <a href="/transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona">traslado</a>.</p>`:"";return[...C?[{id:"onde-estacionar-vcp",h2:"Onde estacionar no Aeroporto de Viracopos?",html:C}]:[],{id:"quanto-custa-vcp",h2:"Quanto custa estacionar no Aeroporto de Viracopos",html:l},{id:"aeroporto-campinas",h2:"Estacionamento no Aeroporto de Campinas",html:d},{id:"oficial-vs-privado-vcp",h2:"EdifÃcio-garagem oficial de Viracopos ou estacionamento privado?",html:m},{id:"coberto-vcp",h2:"Estacionamento coberto perto de Viracopos",html:f},{id:"tempo-terminal-vcp",h2:"Quanto tempo leva do estacionamento até o terminal",html:w}]}function gne(){const e=sl("estacionamento-aeroporto-viracopos");if(e.length===0)return[];const t=[...e].sort((m,h)=>pt(m)-pt(h)),a=t[0],o=pt(a),r=t[t.length-1],n=pt(r),i=e.filter(m=>m.coverage==="coberto"||m.coverage==="ambos"),l=e.map(m=>({op:m,t:e2(m)})).filter(m=>m.t!=null),c=l.reduce((m,h)=>Math.min(m,h.t.minutes),1/0),d=l.find(m=>m.t.minutes===c),u=e.find(m=>m.slug==="bandeira-park");return[{q:"Qual o melhor estacionamento no aeroporto de Viracopos?",a:`Não existe um "melhor" absoluto. O xpark aplica uma metodologia pública com cinco critérios ponderados (preço 35%, segurança 25%, transfer 20%, reputação 15%, transparência 5%). No critério de preço em Viracopos, quem lidera hoje é ${a.name}
1041, com diária a partir de ${X(o)}. Nos demais critérios, o resultado varia por operadora. Metodologia completa em /metodologia.`},{q:"Quanto custa estacionar no aeroporto de Viracopos por dia?",a:`A diária em Viracopos parte de ${X(o)} (${a.name}) e chega a ${X(n)} (${r.name}), entre as ${e.length} operadoras comparadas pelo xpark, com preços coletados nos canais oficiais.`},{q:"Tem estacionamento coberto perto de Viracopos?",a:`Sim, ${i.length} das ${e.length} operadoras oferecem vaga coberta (sombrite, toldo ou edifÃcio-garagem): ${i.map(m=>m.name).join(", ")}. Quando o preço especÃfico da coberta não é publicado, marcamos como "não divulgado publicamente" e consultamos na reserva.`},{q:"Quanto tempo o estacionamento fica do terminal de Viracopos?",a:`O deslocamento mais curto é de ${c} minutos${d?` (${d.op.name})`:""}. A maioria das operadoras privadas fica entre 5 e 10 minutos do terminal, pela Rodovia Santos Dumont (SP-075), com traslado gratuito 24 horas incluso na diária.`},{q:"à seguro deixar o carro em estacionamento privado em Viracopos?",a:`A segurança varia por operadora. ${u?`O ${u.name} declara seguro Tokio Marine com cobertura de até R$ 1.000.000 por veÃculo, além de monitoramento 24h e controle de acesso.`:""} Outras operadoras declaram seguros próprios (garagista, Porto Seguro, BMG) com coberturas distintas ou sem valor divulgado. Antes de reservar, confirme cobertura, monitoramento e responsabilidade em caso de sinistro. Detalhes em /estacionamento-de-aeroporto-e-seguro.`}]}function vne(){var d,u;const e="estacionamento-aeroporto-confins",t=Ta(e);if(!t)return[];const a=(d=t.best.find(m=>m.days===1))==null?void 0:d.line,o=(u=t.best.find(m=>m.days===7))==null?void 0:u.line,r=t.lines.find(m=>/oficial/i.test(m.operator.name)),n=a?`A menor diária publicada é ${Fe(_s(a,1,"total"))}, no <a href="/aeroportos/${e}/${Fe(a.operator.slug)}">${Fe(a.operator.name)}</a> (coleta ${Fe(a.dataColetaBR)}).`:"",i=o?`Para 7 dias, o menor total é ${Fe(_s(o,7,"total"))}, no ${Fe(o.operator.name)} (coleta ${Fe(o.dataColetaBR)}).`:"",l=r?`No <a href="/aeroportos/${e}/${Fe(r.operator.slug)}">${Fe(r.operator.name)}</a>, dentro do aeroporto, a diária publicada é ${Fe(_s(r,1,"total"))} (coleta ${Fe(r.dataColetaBR)}). O acesso ao terminal é a pé.`:"";return[{id:"onde-estacionar-cnf",h2:"Onde estacionar no Aeroporto de Confins?",html:`<p>O xpark compara ${t.operators.length} estacionamentos em Confins, ${t.lines.length} com preço publicado. ${n} ${i}</p> 1042<p>${l} Nos estacionamentos do entorno, confira se há traslado, qual cobertura de vaga é oferecida e quanto custa a estadia inteira. Preços e condições podem mudar depois da coleta.</p> 1043<p>Veja a <a href="${ll(e)}">tabela de preços para 1, 7, 15 e 30 dias</a>, compare <a href="/qual-melhor-estacionamento-aeroporto-confins">as opções por necessidade</a>, consulte <a href="/estacionamento-perto-aeroporto-confins-distancia">distância e traslado</a>, conheça os <a href="/estacionamento-dentro-aeroporto-confins-e3-p1-p3">pátios oficiais</a> e confira as <a href="/estacionamento-coberto-aeroporto-confins-precos">vagas cobertas</a>.</p>`}]}function dw(e,t){var u,m;const a=Ta(e);if(!a)return null;const o=(u=a.best.find(h=>h.days===1))==null?void 0:u.line,r=(m=a.best.find(h=>h.days===7))==null?void 0:m.line,n=a.lines.find(h=>/oficial/i.test(h.operator.name)),i=o?`A menor diária publicada é ${Fe(_s(o,1,"total"))}, no <a href="/aeroportos/${e}/${Fe(o.operator.slug)}">${Fe(o.operator.name)}</a> (coleta ${Fe(o.dataColetaBR)}).`:"",l=r?`Para 7 dias, o menor total é ${Fe(_s(r,7,"total"))}, no ${Fe(r.operator.name)} (coleta ${Fe(r.dataColetaBR)}).`:"",c=n?`No <a href="/aeroportos/${e}/${Fe(n.operator.slug)}">${Fe(n.operator.name)}</a>, a diária publicada é ${Fe(_s(n,1,"total"))} (coleta ${Fe(n.dataColetaBR)}).`:"";return{intro:`<p>O xpark compara ${a.operators.length} estacionamentos ${t}, ${a.lines.length} com preço publicado. ${i} ${l}</p>`,officialCopy:c,pricesLink:ll(e)}}function xne(){const e=dw("estacionamento-aeroporto-guarulhos","no Aeroporto de Guarulhos");if(!e)return[];const t=`${e.intro} 1044<p>${e.officialCopy} O aeroporto tem três terminais de passageiros (1, 2 e 3); antes de reservar, confira em qual terminal sai o seu voo, se o estacionamento tem traslado até ele e quanto custa a estadia inteira. Preç
1044os e condições podem mudar depois da coleta.</p> 1045<p>Veja a <a href="${e.pricesLink}">tabela de preços para 1, 7, 15 e 30 dias</a>, o guia dos <a href="/estacionamento-terminais-1-2-3-aeroporto-guarulhos">Terminais 1, 2 e 3</a>, o <a href="/estacionamento-mais-barato-guarulhos">ranking do mais barato</a>, como funciona o <a href="/transfer-estacionamento-aeroporto-guarulhos-viracopos-como-funciona">traslado</a> e os preços do <a href="/estacionamento-mensal-aeroporto-guarulhos-quanto-custa">estacionamento mensal</a>.</p>`,a=`<p>Quem procura estacionamento perto do Aeroporto de Guarulhos encontra no xpark o estacionamento oficial, dentro do aeroporto, e pátios privados próximos ao aeroporto que levam o cliente ao terminal por traslado. Em cada ficha aparecem a distância até o terminal de passageiros, se há traslado, o tipo de vaga e o preço com a data da coleta.</p> 1046<p>Estar mais próximo do aeroporto nem sempre significa pagar mais ou chegar mais rápido: compare o tempo do traslado até o seu terminal e o total da estadia. Os valores estão na <a href="${e.pricesLink}">tabela de preços de Guarulhos</a> e no <a href="/estacionamento-mais-barato-guarulhos">ranking do mais barato</a>.</p>`;return[{id:"onde-estacionar-gru",h2:"Onde estacionar no Aeroporto de Guarulhos?",html:t},{id:"perto-aeroporto-gru",h2:"Estacionamento perto do Aeroporto de Guarulhos",html:a}]}function bne(){const e=dw("estacionamento-aeroporto-congonhas","perto do Aeroporto de Congonhas");return e?[{id:"onde-estacionar-cgh",h2:"Onde estacionar no Aeroporto de Congonhas?",html:`${e.intro} 1047<p>${e.officialCopy} Em Congonhas, a escolha passa pelo acesso a pé: no Bandeira Park a vaga é coberta e não há traslado nem van, o caminho até o terminal leva cerca de 5 minutos a pé. Preços e condições podem mudar depois da coleta.</p> 1048<p>Veja a <a href="${e.pricesLink}">tabela de preços para 1, 7, 15 e 30 dias</a>, o guia <a href="/qual-melhor-estacionamento-aeroporto-congonhas">qual o melhor estacionamento em Congonhas</a> e <a href="/estacionamento-aeroporto-congonhas-guia-precos-2026">quanto custa estacionar em 2026</a>.</p>`},{id:"proximo-aeroporto-cgh",h2:"Estacionamento próximo ao Aeroporto de Congonhas",html:"<p>Para quem busca estacionamento próximo ao Aeroporto de Congonhas, o ponto principal é o caminho até o terminal. No Bandeira Park, parceiro do xpark, a vaga é coberta e o terminal fica a cerca de 5 minutos a pé, sem traslado nem van. Nas demais fichas, o xpark mostra a distância até o terminal de passageiros e o preço com a data da coleta, quando divulgado.</p>"}]:[]}function yne(e){const t=a=>a.map(o=>({...o,html:dee(o.html)}));return e==="VCP"?t(fne()):e==="CNF"?t(vne()):e==="GRU"?t(xne()):e==="CGH"?t(bne()):[]}function kne(e){return e==="VCP"?gne():[]}Kt.length;const wne=[1,7,30],Cne="A operadora não publica tabela inequÃvoca para este perÃodo.";function Pne(e){return e.bookable&&e.slug==="bandeira-park"?"com cupom XPK26":"tarifa pública da operadora"}function Sne(e,t){var o;const a=l0(e,t);return a?{days:t,total:a.total,perDay:a.perDay}:{days:t,total:null,perDay:null,undisclosedReason:((o=e.undisclosedFrom)==null?void 0:o.reason)??Cne}}function OO(e,t=Kt,a=[...wne]){const o=a[Math.floor(a.length/2)]??a[0],r=t.filter(i=>i.iata===e).map(i=>({operator:i,cells:a.map(l=>Sne(i,l)),isXpark:i.bookable,condition:Pne(i),dataColetaBR:io(i.dataColeta)})),n=i=>{var l;return((l=i.cells.find(c=>c.days===o))==null?void 0:l.total)??null};return r.sort((i,l)=>{const c=n(i),d=n(l);return c==null&&d==null?i.operator.name.localeCompare(l.operator.name,"pt-BR"):c==null?1:d==null?-1:c-d}),{iata:e,periods:a,rows:r,sortByDays:o,footnote:'Custo total da estadia calculado a partir da tabela de faixas de cada operadora, e não da menor diária divulgada. Os valores do Bandeira Park já incluem o cupom XPK26; os das demais operadoras são as tarifas públicas delas na data da coleta indicada na linha. Onde a tabela da operadora não permite calcular o perÃodo com precisão, a célula fica como "não divulgado" e nenhum valor é estimado.'}}function Uj(e){return e===1?"1 diária":`${e} dias`}const Gj=[1,7,15,30];function Rne({iata:e,hubSlug:t}){var d;const a=x.useMemo(()=>
1048OO(e,void 0,Gj),[e]),[o,r]=x.useState(7),n=x.useMemo(()=>sl(t),[t]),i=x.useMemo(()=>a.rows.map(m=>({row:m,cell:m.cells.find(h=>h.days===o)})).sort((m,h)=>m.cell.total==null&&h.cell.total==null?0:m.cell.total==null?1:h.cell.total==null?-1:m.cell.total-h.cell.total),[a,o]),l=((d=i[0])==null?void 0:d.cell.total)??null,c=n.map(u=>{const m=[...u.terminals].sort((p,f)=>p.distanceKm-f.distanceKm)[0],h=ln(u);return{op:u,nearest:h==null?null:{code:m==null?void 0:m.code,distanceKm:h,minutes:m==null?void 0:m.minutes}}}).filter(u=>u.nearest!=null).sort((u,m)=>u.nearest.distanceKm-m.nearest.distanceKm);return a.rows.length===0?null:s.jsxs("div",{className:"space-y-16",children:[s.jsxs("section",{id:"quanto-custa",className:"scroll-mt-24",children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsxs("h2",{className:"font-home-heading text-[28px] font-bold leading-tight text-ink md:text-[34px]",children:["Quanto custa estacionar no ",e,"?"]}),s.jsx("p",{className:"mt-3 text-ink/70",children:"Custo total da estadia, calculado com a tabela de cada estacionamento."}),s.jsx("div",{role:"tablist","aria-label":"Número de diárias",className:"mt-6 flex flex-wrap gap-2",children:Gj.map(u=>s.jsx("button",{type:"button",role:"tab","aria-selected":o===u,onClick:()=>r(u),className:ne("rounded-full border px-4 py-2 text-sm font-medium transition-colors duration-150",o===u?"border-ink bg-ink text-paper":"border-ink/15 text-ink hover:border-ink/40"),children:Uj(u)},u))}),s.jsx("div",{className:"mt-6 overflow-x-auto rounded-card border border-ink/10",children:s.jsxs("table",{className:"w-full min-w-[480px] border-collapse text-left text-sm",children:[s.jsxs("caption",{className:"sr-only",children:["Custo por ",Uj(o)," no ",e]}),s.jsx("thead",{className:"bg-ink/[0.03]",children:s.jsxs("tr",{children:[s.jsx("th",{scope:"col",className:"px-4 py-3 font-medium text-mute",children:"Estacionamento"}),s.jsx("th",{scope:"col",className:"px-4 py-3 text-right font-medium text-mute",children:"Total"}),s.jsx("th",{scope:"col",className:"px-4 py-3 text-right font-medium text-mute",children:"Por diária"})]})}),s.jsx("tbody",{children:i.map(({row:u,cell:m})=>{const h=m.total!=null&&m.total===l;return s.jsxs("tr",{className:ne("border-t border-ink/10",h&&"bg-gold/10"),children:[s.jsxs("th",{scope:"row",className:"px-4 py-4 align-top font-normal",children:[s.jsx("span",{className:"font-semibold text-ink",children:u.operator.name}),h&&s.jsx("span",{className:"ml-2 rounded-full bg-gold px-2 py-0.5 text-[10px] font-bold uppercase tracking-wide text-ink",children:"Melhor preço"}),s.jsxs("span",{className:"mt-1 block text-xs text-mute",children:[u.condition," · conferido em ",u.dataColetaBR]})]}),m.total==null?s.jsx("td",{colSpan:2,className:"px-4 py-4 text-right align-top text-ink/50",children:"Não divulgado"}):s.jsxs(s.Fragment,{children:[s.jsx("td",{className:"px-4 py-4 text-right align-top font-semibold text-ink",children:X(m.total)}),s.jsx("td",{className:"px-4 py-4 text-right align-top text-ink/70",children:m.perDay!=null?X(m.perDay):"-"})]})]},`${u.operator.slug}-${u.operator.iata}`)})})]})}),(()=>{const u=a.rows.map(m=>{var f,g;const h=(f=m.cells.find(b=>b.days===1))==null?void 0:f.perDay,p=(g=m.cells.find(b=>b.days===30))==null?void 0:g.perDay;return h&&p?{name:m.operator.name,pct:Math.round((1-p/h)*100)}:null}).filter(m=>!!m&&m.pct>0).sort((m,h)=>h.pct-m.pct);return u[0]?s.jsxs("p",{className:"mt-4 rounded-card bg-gold/10 px-4 py-3 text-sm text-ink",children:["Quanto mais longa a viagem, menor a diária: no ",u[0].name,", a diária de 30 dias sai ",u[0].pct,"% mais barata que a de 1 dia."]}):null})(),s.jsx("p",{className:"mt-3 text-xs leading-relaxed text-mute",children:a.footnote})]}),c.length>0&&s.jsxs("section",{id:"distancia-terminal",className:"scroll-mt-24",children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsx("h2",{className:"font-home-heading text-[28px] font-bold leading-tight text-ink md:text-[34px]",children:"Distância até o terminal"}),s.jsx("ul",{className:"mt-6 divide-y divide-ink/10 rounded-card border border-ink/10",children:c.map(({op:u,nearest:m},h)=>{var p;return s.jsx("li",{children:s.jsxs(G,{to:`/aeroportos/${u.hubSlug}/${u.slug}`,className:"flex items-center gap-4 px-4 py-4 transition-colors duration-150 hover:bg-ink/[0.03]",children:[s.jsx(en,{className:"h-4 w-4 shrink-0 text-mute","aria-hidden":"true"}),s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("span",{className:"block font-semibold text-ink",children:u.name}),s.jsx("span",{className:"block text-xs text-mute",children:(p=u.transfer)!=null&&p.included?"Traslado incluso":"Traslado não informado"})]}),s.jsxs("span",{className:"flex flex-wrap justify-end gap-1.5",children:[s.jsxs("span",{className:"rounded-full border border-ink/15 px-3 py-1 text-xs text-ink",children:[m.distanceKm.toLocaleStr
1048ing("pt-BR")," km em linha reta",m.minutes!=null?` · ${m.minutes} min`:""]}),h===0&&c.length>1&&s.jsx("span",{className:"rounded-full bg-gold px-3 py-1 text-xs font-semibold text-ink",children:"mais perto"})]})]})},u.slug)})})]})]})}const jne=["GRU","VCP","CNF","CGH","SDU","GIG","CWB","BSB","POA","MCZ","JPA","LDB","REC","NVT","SSA","FOR","FLN","GYN","VIX","CGR","THE","CGB"],Nne=e=>e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9 ]/g,"").trim();function Ane(e){const t=[];let a=!1;for(const o of e)o.kind==="h2"&&(a=/^comparativo de pre[cç]os/i.test(o.text)||/^perguntas frequentes/i.test(o.text),a)||o.kind!=="faq"&&(a||t.push(o));return t}function Ene(e,t){const a=new Set,o=[],r=(n,i)=>{const l=Nne(n);a.has(l)||(a.add(l),o.push({q:n,a:i}))};return e.forEach(n=>r(n.q,n.a)),(t??[]).forEach(n=>{n.kind==="faq"&&r(n.question,n.answer)}),o}function qO({iata:e,name:t}){const a=Xoe(e);return a.length===0?null:s.jsxs("section",{"aria-labelledby":`faq-links-${e}`,className:"border-t border-ink/10 pt-10",children:[s.jsxs("h2",{id:`faq-links-${e}`,className:"font-home-heading text-[24px] font-bold leading-tight text-ink md:text-[28px]",children:["Perguntas sobre estacionamento em ",t]}),s.jsx("ul",{className:"mt-6 grid gap-3 sm:grid-cols-2",children:a.map(o=>s.jsx("li",{children:s.jsxs(G,{to:o.href,className:"block rounded-card border border-ink/10 p-4 text-[15px] text-ink transition-colors hover:border-gold",children:[o.label," â"]})},o.href))})]})}const _ne=[{to:"/guias",label:"Guias do xpark"},{to:"/aeroportos/estacionamento-aeroporto-guarulhos",label:"Estacionamento em Guarulhos (GRU)"},{to:"/aeroportos/estacionamento-aeroporto-viracopos",label:"Estacionamento em Viracopos (VCP)"},{to:"/aeroportos/estacionamento-aeroporto-congonhas",label:"Estacionamento em Congonhas (CGH)"},{to:"/",label:"Página inicial"}],cl=()=>{const e=Xt();return x.useEffect(()=>{console.error("404 Error: User attempted to access non-existent route:",e.pathname),document.head.querySelectorAll('link[rel="canonical"]').forEach(t=>t.remove())},[e.pathname]),s.jsxs("div",{className:"flex min-h-[60vh] items-center justify-center bg-background px-4 py-16",children:[s.jsxs(y1,{children:[s.jsx("title",{children:"Página não encontrada | xpark"}),s.jsx("meta",{name:"robots",content:"noindex"})]}),s.jsxs("div",{className:"max-w-md text-center",children:[s.jsx("h1",{className:"mb-3 text-4xl font-bold text-foreground",children:"Página não encontrada"}),s.jsx("p",{className:"mb-6 text-muted-foreground",children:"Este endereço não existe. Veja por onde continuar:"}),s.jsx("ul",{className:"space-y-2",children:_ne.map(t=>s.jsx("li",{children:s.jsx(G,{to:t.to,className:"text-primary underline hover:text-primary/90",children:t.label})},t.to))})]})]})};function Tne(){var A;const{slug:e}=on(),t={guarulhos:"estacionamento-aeroporto-guarulhos",viracopos:"estacionamento-aeroporto-viracopos",confins:"estacionamento-aeroporto-confins"};if(e&&t[e])return s.jsx(fo,{to:`/aeroportos/${t[e]}`,replace:!0});if(e&&!e.startsWith("estacionamento-aeroporto-")&&Uy(`estacionamento-aeroporto-${e}`))return s.jsx(fo,{to:`/aeroportos/estacionamento-aeroporto-${e}`,replace:!0});const a=Uy(e);if(!a)return s.jsx(cl,{});const o=Tee(a),r={"@context":"https://schema.org","@type":"Airport",name:to[a.iata],iataCode:a.iata,address:{"@type":"PostalAddress",addressLocality:a.city,addressRegion:a.state,addressCountry:"BR"}},n={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"InÃcio",item:"https://www.xpark.ai/"},{"@type":"ListItem",position:2,name:"Aeroportos",item:"https://www.xpark.ai/aeroportos"},{"@type":"ListItem",position:3,name:a.city,item:`https://www.xpark.ai/aeroportos/${a.slug}`}]},i=Ene([...kne(a.iata),...Joe(a.iata)],o==null?void 0:o.body),l=i.map($=>({question:$.q,answer:$.a})),c=jne.includes(a.iata),d=c?lO(a.slug):null,u=c?iO(a.slug):null,m=c?Toe(a.slug,`/aeroportos/${a.slug}`,a.h1):null,h=o?Ane(o.body):[],p=l.length>0?{"@context":"https://schema.org","@type":"FAQPage",mainEntity:l.map($=>
1048({"@type":"Question",name:$.question,acceptedAnswer:{"@type":"Answer",text:$.answer}}))}:null,f=a.satellites.length>0?{"@context":"https://schema.org","@type":"ItemList",name:`Guias relacionados · ${a.city}`,itemListElement:a.satellites.map(($,O)=>({"@type":"ListItem",position:O+1,url:`https://www.xpark.ai${vr($.slug)}`,name:$.title}))}:null,g=[r,n,...p?[p]:[],...f?[f]:[],...m?[m]:[],...(o==null?void 0:o.extraJsonLd)??[]],b=Ht.filter($=>a.related.includes($.slug)),v=sl(a.slug),y=yne(a.iata).filter($=>!/^quanto-custa/.test($.id)),k=v.reduce(($,O)=>Math.min($,pt(O)),1/0),w=voe(a.slug),R=Ta(a.slug),C=a.iata==="CNF"?(A=R==null?void 0:R.best.find($=>$.days===1))==null?void 0:A.line:void 0,P=C?C.cells.find($=>$.days===1):null,N=(P==null?void 0:P.total)!=null?X(P.total):Number.isFinite(k)?X(k):null,E=(P==null?void 0:P.total)!=null&&(C!=null&&C.condition)?C.condition+(P.fullTotal!=null?` (era ${X(P.fullTotal)})`:""):null;return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:(w==null?void 0:w.title)??a.metaTitle,description:(w==null?void 0:w.description)??a.metaDescription,path:`/aeroportos/${a.slug}`,type:"website",image:a.heroImage||void 0,jsonLd:g}),s.jsx("div",{className:"bg-paper px-3 pt-3 md:px-6 md:pt-6",children:s.jsxs("header",{className:"relative isolate mx-auto max-w-[1440px] overflow-hidden rounded-panel bg-ink text-paper",children:[a.heroImage&&s.jsx("img",{src:a.heroImage,alt:a.iata==="BSB"?"Vista aérea do Aeroporto Internacional de BrasÃlia (BSB)":`Aeroporto de ${a.city}`,className:"absolute inset-0 -z-10 h-full w-full object-cover opacity-45",loading:"eager",decoding:"sync",fetchPriority:"high"}),s.jsx("div",{className:"absolute inset-0 -z-10 bg-gradient-to-t from-ink via-ink/70 to-ink/30","aria-hidden":"true"}),s.jsxs("div",{className:"container max-w-[1280px] pb-12 pt-9 sm:pb-20 sm:pt-14 md:pb-28 md:pt-20",children:[s.jsxs("nav",{className:"text-[12px] text-paper/60",children:[s.jsx(G,{to:"/",className:"transition-colors hover:text-paper",children:"InÃcio"}),s.jsx("span",{className:"mx-2",children:"/"}),s.jsx(G,{to:"/aeroportos",className:"transition-colors hover:text-paper",children:"Aeroportos"}),s.jsx("span",{className:"mx-2",children:"/"}),s.jsx("span",{className:"text-paper",children:a.displayCity??a.city})]}),s.jsxs("div",{className:"mt-7 grid items-end gap-7 sm:mt-10 sm:gap-10 lg:grid-cols-[1fr_320px]",children:[s.jsxs("div",{className:"motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-bottom-2 motion-safe:duration-500",children:[s.jsxs("p",{className:"text-[11px] font-bold uppercase tracking-[0.4px] text-gold",children:[a.displayCity??a.city," · ",a.iata]}),s.jsx("h1",{className:"mt-3 max-w-3xl font-home-heading text-[32px] font-bold leading-[1.06] sm:mt-4 sm:text-[40px] md:text-[56px]",children:a.h1}),s.jsx("p",{className:"mt-4 max-w-[672px] text-[15px] leading-6 text-paper/80 sm:mt-5 sm:text-base md:text-lg md:leading-7",children:d??a.lead}),u&&s.jsxs("p",{className:"mt-3 text-[13px] text-paper/60",children:["Ãltima atualização: ",u]}),a.editorialOnly&&s.jsx("p",{className:"mt-3 text-[13px] text-paper/60",children:"Nesta praça o xpark compara preços, mas ainda não vende reservas."}),s.jsx(nne,{operators:v})]}),Number.isFinite(k)&&s.jsxs("div",{className:"rounded-panel bg-paper p-5 text-ink shadow-[0_10px_30px_-12px_hsl(var(--ink)/0.35)] motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-bottom-2 motion-safe:duration-700 sm:p-6",children:[s.jsx("p",{className:"text-sm text-mute",children:"A partir de"}),s.jsxs("p",{className:"mt-1 font-home-heading text-3xl font-bold sm:text-4xl",children:[N,s.jsx("span",{className:"ml-1 text-base font-normal text-mute",children:"/ diária"})]}),E&&s.jsx("p",{className:"mt-1 text-[13px] text-mute",children:E}),s.jsx("a",{href:"#vagas",className:"mt-5 flex w-full items-center justify-center rounded-full bg-gold px-5 py-3 font-semibold text-ink transition hover:brightness-95",children:a.editorialOnly?"Ver estacionamentos":"Ver vagas"})]})]})]})]})}),s.jsx(ct,{as:"section",className:"bg-paper",children:s.jsxs("div",{className:"container max-w-[1280px] grid gap-12 py-12 md:py-16 lg:grid-cols-[minmax(0,1fr)_320px]",children:[s.jsxs("div",{className:"min-w-0 space-y-16",children:[d&&s.jsx("p",{className:"max-w-[720px] text-[17px] leading-[1.75] text-ink/80",children:a.lead}),s.jsx(ine,{operators:v,iata:a.iata}),a.iata==="CGH"&&s.jsx("p",{className:"rounded-card border border-gold/40 bg-gold/10 p-4 text-sm font-medium text-ink",children:"Em Congonhas, não há traslado nem van no Bandeira Park. O acesso ao terminal é a pé, em cerca de 5 minutos."}),s.jsx(Rne,{iata:a.iata,hubSlug:a.slug}),(R==null?void 0:R.hasPricePage)&&s.jsxs("nav",{"aria-label":"Ferramentas de preço",className:"flex flex-wrap gap-3",children:[s.jsxs(G,{to:ll(a.slug),className:"inline-flex h-11 items-center rounded-full bg-ink px-5 text-sm font-semibold text-paper hover:bg-ink/85",children:["Tabela completa de preços do ",a.iata]}),s.jsxs(G,{to:c0(a.slug),className:"inline-flex h-11 items-center rounded-full border border-ink/15 px-5 text-sm font-semibold text-ink hover:border-ink/40",children:["Mais barato em ",R.hub.short]})]}
1048),!a.editorialOnly&&a.iata!=="CGH"&&s.jsx(lne,{}),s.jsxs("article",{className:"max-w-[720px]",children:[y.length>0&&s.jsx("div",{className:"mb-12 space-y-14",children:y.map($=>s.jsxs("section",{id:$.id,children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsx("h2",{className:"font-home-heading text-[28px] md:text-[34px] font-bold leading-tight text-ink scroll-mt-24",children:$.h2}),s.jsx("div",{className:"xp-prose mt-5 max-w-none",dangerouslySetInnerHTML:{__html:$.html}})]},$.id))}),i.length>0&&s.jsxs("section",{id:"faq-hub",className:"mb-12 border-t border-ink/10 pt-10",children:[s.jsx("span",{className:"xp-section-rule mb-4","aria-hidden":"true"}),s.jsxs("h2",{className:"font-home-heading text-[28px] md:text-[34px] font-bold leading-tight text-ink",children:["Perguntas frequentes sobre estacionamento no ",a.iata]}),s.jsx("dl",{className:"mt-8 divide-y divide-ink/10 border-t border-ink/10",children:i.map($=>s.jsxs("div",{className:"py-6",children:[s.jsx("dt",{className:"font-geist text-[17px] font-semibold text-ink",children:$.q}),s.jsx("dd",{className:"mt-3 text-[17px] leading-[1.75] text-ink/80",children:$.a})]},$.q))})]}),s.jsx("div",{className:"mb-12",children:s.jsx(qO,{iata:a.iata,name:a.displayCity??a.city})}),h.length>0?s.jsx(une,{body:h}):null,v.length>0&&s.jsxs("aside",{className:"mt-16 border-t border-ink/10 pt-10",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.22em] text-mute",children:"Estacionamentos com ficha completa"}),s.jsx("ul",{className:"mt-6 grid gap-4 sm:grid-cols-2",children:v.map($=>{const O=pt($);return s.jsx("li",{children:s.jsxs(G,{to:`/aeroportos/${$.hubSlug}/${$.slug}`,className:"group block rounded-card border border-ink/10 p-4 hover:border-gold",children:[s.jsxs("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:[$.iata," · ",$.address.city," ",$.partnershipDisclosure?"· parceiro":""]}),s.jsxs("p",{className:"mt-2 font-display text-lg text-ink group-hover:text-gold transition-colors",children:[$.name," â"]}),Number.isFinite(O)&&s.jsxs("p",{className:"mt-1 text-sm text-ink/70",children:["A partir de ",X(O),"/dia"]})]})},$.slug)})})]}),a.satellites.length>0&&s.jsx("aside",{className:"mt-16 border-t border-ink/10 pt-10",children:s.jsx($O,{items:a.satellites,getKey:$=>$.slug,label:"Guias relacionados",ariaLabel:"Carrossel de guias relacionados",itemClassName:"basis-[78%] sm:basis-[48%] lg:basis-[32%]",renderItem:$=>s.jsxs(G,{to:vr($.slug),className:"group flex h-full flex-col rounded-card border border-ink/10 p-4 hover:border-gold",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:$.label}),s.jsxs("p",{className:"mt-2 font-display text-lg text-ink group-hover:text-gold transition-colors",children:[$.title," â"]})]})})}),b.length>0&&s.jsxs("aside",{className:"mt-12 border-t border-ink/10 pt-10",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.22em] text-mute",children:"Outras praças"}),s.jsx("ul",{className:"mt-6 grid gap-4 sm:grid-cols-2",children:b.map($=>s.jsx("li",{children:s.jsxs(G,{to:`/aeroportos/${$.slug}`,className:"group block rounded-card border border-ink/10 p-4 hover:border-gold",children:[s.jsxs("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:[$.iata," · ",$.state]}),s.jsxs("p",{className:"mt-2 font-display text-lg text-ink group-hover:text-gold transition-colors",children:[$.h1," â"]})]})},$.slug))})]}),s.jsxs("div",{className:"mt-16",children:[s.jsx(G,{to:"/",className:"font-geist-mono text-[12px] uppercase tracking-[0.2em] text-ink underline-offset-4 hover:underline",children:"Encontrar minha vaga no xpark â"}),a.iata!=="CGH"&&!a.editorialOnly&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"mx-3 text-ink/30",children:"·"}),s.jsxs(G,{to:"/calculadora-estacionamento-aeroporto",className:"font-geist-mono text-[12px] uppercase tracking-[0.2em] text-ink underline-offset-4 hover:underline",children:["Calcular preço para ",a.iata," â"]}),s.jsx("span",{className:"mx-3 text-ink/30",children:"·"}),s.jsxs(G,{to:"/uber-ou-estacionamento-aeroporto",className:"font-geist-mono text-[12px] uppercase tracking-[0.2em] text-ink underline-offset-4 hover:underline",children:["Uber ou estacionar em ",a.iata,"? â"]})]}),(a.iata==="GRU"||a.iata==="VCP"||a.iata==="CNF")&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"mx-3 text-ink/30",children:"·"}),s.jsxs(G,{to:a.iata==="GRU"?"/estacionamento-mais-barato-guarulhos":a.iata==="VCP"?"/estacionamento-mais-barato-viracopos":"/estacionamento-mais-barato-confins",className:"font-geist-mono text-[12px] uppercase tracking-[0.2em] text-ink underline-offset-4 hover:underline",children:["Mais barato em ",a.iata," â"]})]})]})]})]}),s.jsx(sne,{operators:v,terminals:a.iata==="GRU"?"Terminal 1, 2 e 3":"Terminal de passageiros",ctaLabel:a.editorialOnly?"Ver estacionamentos":void 0})]})})]})}const $ne=e=>new Date(e).toLocaleDateString("pt-BR",{day:"2-digit",month:"short",year:"numeric"});function One({reviews:e,airport:t}){if(e.length===0)return null;const a=e.reduce((i,l)=>i+l.rating,0)/e.length,o=Math.floor(a*10)/10,r=Object.entries(e.reduce((i,l)=>{const c=l.category??"outros";
1048return i[c]=(i[c]??0)+1,i},{})),n=e.filter(i=>(i.comment??"").trim()).slice(0,4);return s.jsxs("section",{className:"rounded-card border border-border bg-paper p-6 md:p-8",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-semibold",children:"O que dizem os clientes"}),s.jsxs("div",{className:"mt-5 flex flex-wrap items-center gap-6 rounded-card bg-cream p-5",children:[s.jsxs("div",{children:[s.jsx("p",{className:"font-home-heading text-4xl font-bold",children:o.toFixed(1).replace(".",",")}),s.jsx(Wr,{value:a,size:"sm",className:"mt-1"})]}),s.jsxs("div",{className:"text-sm text-ink/75",children:[s.jsxs("p",{children:[e.length," ",e.length===1?"avaliação":"avaliações"," de quem reservou esta unidade pelo xpark"]}),s.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:r.map(([i,l])=>s.jsxs("span",{className:"rounded-full border border-border bg-paper px-3 py-1 text-xs",children:[Mf[i]??i," · ",l]},i))})]})]}),s.jsx("div",{className:"mt-5 grid gap-4 md:grid-cols-2",children:n.map(i=>s.jsxs("article",{className:"rounded-card border border-border p-5",children:[s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[s.jsx(Wr,{value:i.rating,size:"sm"}),s.jsx("span",{className:"text-xs text-mute",children:$ne(i.created_at)})]}),s.jsxs("p",{className:"mt-3 text-sm leading-relaxed text-ink/85",children:['"',i.comment,'"']}),s.jsxs("p",{className:"mt-3 text-xs text-mute",children:[i.display_name??"Cliente xpark",i.category?` · ${Mf[i.category]??i.category}`:""]})]},i.id))}),s.jsx(G,{to:`/avaliacoes?unidade=${t}`,className:"mt-5 inline-flex rounded-full border border-ink px-4 py-2 text-sm font-medium hover:bg-ink hover:text-paper",children:"Ver todas as avaliações"})]})}function qne(e){return null}function Dne(){var R,C;const{hubSlug:e,operatorSlug:t}=on(),a=e&&t?Nh(e,t):void 0,o=bae();if(!a)return s.jsx(cl,{});const r=a.bookable?(o??[]).filter(P=>P.airport===a.iata):[],n=xae(r),i=Uy(a.hubSlug),l=pt(a);Number.isFinite(l)&&`${X(l)}`;const c=!!(i!=null&&i.editorialOnly),{title:d,description:u}=yoe(a),m=nl(a),h=`/aeroportos/${a.hubSlug}/${a.slug}`,p=qne(a.mapEmbedQuery),f=a.coverage==="ambos"?"Cobertas e descobertas":a.coverage==="coberto"?"Vagas cobertas":a.coverage==="nao-informado"?"Não informado":"Vagas descobertas",g=Kt.filter(P=>P.hubSlug===a.hubSlug&&P.slug!==a.slug),b=[...a.terminals].sort((P,N)=>P.distanceKm-N.distanceKm)[0],v=ln(a),y=(R=Qi[a.iata])==null?void 0:R.label,k=a.priceRows.find(P=>P.perDay===l),w=(k==null?void 0:k.label)??"diária";return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:d,description:u,path:h,type:"website",jsonLd:PZ(a,void 0,n),noindex:!1}),s.jsxs("div",{className:"bg-paper text-ink",children:[s.jsxs("header",{className:"container pt-6 md:pt-9",children:[s.jsxs("nav",{className:"flex flex-wrap items-center gap-2 text-sm text-mute","aria-label":"Caminho da página",children:[s.jsxs(G,{to:`/aeroportos/${a.hubSlug}`,className:"inline-flex items-center gap-1.5 font-medium text-ink hover:underline",children:[s.jsx(Za,{size:16})," Voltar para ",a.iata]}),s.jsx("span",{"aria-hidden":"true",children:"/"}),s.jsx("span",{children:a.name})]}),s.jsxs("div",{className:"mt-8 flex flex-wrap items-end justify-between gap-5",children:[s.jsxs("div",{children:[s.jsxs("p",{className:"mb-2 text-xs font-semibold uppercase text-mute",children:[a.address.city," · ",a.iata]}),s.jsx("h1",{className:"font-home-heading text-3xl font-bold sm:text-4xl",children:a.name}),s.jsxs("p",{className:"mt-2 text-base text-mute",children:["Estacionamento no ",to[a.iata]," (",a.iata,")"]}),c&&s.jsx("p",{className:"mt-2 text-[13px] text-mute",children:"Nesta praça o xpark compara preços, mas ainda não vende reservas."})]}),a.bookable&&s.jsx(ue,{asChild:!0,className:"h-11 rounded-full bg-ink px-6 text-paper hover:bg-ink/85",children:s.jsxs(G,{to:a.reservationUrl,children:["Ver vagas ",s.jsx(zr,{})]})})]}),s.jsxs("div",{className:"mt-6 flex flex-wrap gap-x-6 gap-y-2 text-sm text-ink/80",children:[s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(en,{size:17})," ",a.address.city,", ",a.address.state]}),a.iata==="CGH"?s.jsx("span",{className:"inline-flex items-center gap-2",children:"Sem traslado: acesso a pé em cerca de 5 minutos"}):a.transfer&&s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(NL,{size:17})," ",a.transfer.note??(a.transfer.included?"Traslado incluso":"Traslado disponÃvel")]}),s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(cT,{size:17})," ",a.hours]})]}),a.heroImage&&s.jsx("div",{className:"mt-7 overflow-hidden rounded-card bg-cream",children:s.jsx("img",{src:a.heroImage,alt:`Unidade ${a.name} em ${a.address.city}`,width:1600,height:900,loading:"eager",decoding:"async",fetchPriority:"high",className:"h-[240px] w-full object-cover sm:h-[380px] lg:h-[460px]"})})]}),s.jsx("div",{className:"container mt-8 grid grid-cols-2 gap-x-5 gap-y-6 border-b border-border pb-8 md:grid-cols-4",children:[["Até o terminal",(()=>{const P=Wi(a);return P.charAt(0).toUpperCase()+P.slice(1)})()],[a.iata==="CGH"?"Acesso":"Traslado",a.iata==="CGH"?"A pé, cerca de 5 min":(b==null?void 0:b.minutes)!=null?`${b.minutes} min`:"Não divulgado"],["Tipo de vaga",f],["Horário",a.hours]].map(([P,N])=>s.jsxs("div",{className:"border-l-2 border-gold pl-4",children:[s.jsx("p",{className:"text-xs text-mute",children:P}),s.jsx("p",{className:"mt-1 font-home-heading text-lg font-semibold",children:N})]},P))}),s.jsxs("div",{className:"container grid gap-10 py-10 md:py-14 lg:grid-cols-[minmax(0,1fr)_340px] lg:gap-12",children:[s.jsxs("div",{className:"min-w-0 space-y-10",children:[a.amenities&&a.amenities.length>0&&s.jsxs(ct,{as:"section",className:"border-b border-border pb-10",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-semibold",children:"O que esta unidade oferece"}),s.jsx("ul",{className:"mt-6 grid gap-x-6 gap-y-4 sm:grid-cols-2",children:a.amenities.map(P=>s.jsxs("li",{className:"flex items-start gap-3 text-sm text-ink/85",children:[s.jsx(Qs,{size:19,className:"mt-0.5 shrink-0 text-gold-2"}),P]},P))})]}),s.jsxs(ct,{as:"section",className:"border-b border-border pb-10",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-semibold",children:"Como chegar e contato"}),a.iata==="CGH"&&s.jsxs("div",{className:"mt-5 rounded-card border border-gold/40 bg-gold/10 p-4 text-sm leading-relaxed text-ink",children:[s.jsx("p",{className:"font-semibold",children:"Sem traslado ou van em Congonhas. O acesso ao terminal é a pé, em cerca de 5 minutos."}),s.jsx("p",{className:"mt-2",children:"O Bandeira Park CGH fica na R. Vieira de Morais, 2110, no Campo Belo, a cerca de 300 metros do terminal do Aeroporto de Congonhas. O caminho é feito por túnel coberto, com escadas rolantes, ao lado da estação Aeroporto de Congonhas do Metrô e Monotrilho. O acesso pelo túnel funciona das 9h à s 16h, de segunda a sexta-feira; fora desse horário, o acesso é feito pela passarela sobre a Av. Washington
1048LuÃs."}),s.jsxs("p",{className:"mt-2",children:[s.jsx("strong",{children:"A pé:"})," saia do estacionamento no subsolo, entre no túnel de pedestres em direção ao aeroporto e suba pelas escadas rolantes até o nÃvel de embarque."]}),s.jsxs("p",{className:"mt-2",children:[s.jsx("strong",{children:"Metrô:"})," conexão direta com a estação Aeroporto de Congonhas do Metrô e Monotrilho."]}),s.jsxs("p",{className:"mt-2",children:[s.jsx("strong",{children:"Pátio auxiliar:"})," R. dos Chanés, 621. A recepção e a entrega acontecem sempre no endereço principal."]})]}),s.jsxs("div",{className:"mt-5 grid gap-6 md:grid-cols-2",children:[s.jsxs("div",{children:[s.jsxs("address",{className:"not-italic leading-relaxed text-ink/85",children:[s.jsxs("p",{className:"font-medium",children:[a.address.street,a.address.number?`, ${a.address.number}`:""]}),a.address.district&&s.jsx("p",{children:a.address.district}),s.jsxs("p",{children:[a.address.city," - ",a.address.state,a.address.postalCode?` · CEP ${a.address.postalCode}`:""]})]}),s.jsxs("div",{className:"mt-5 space-y-2 text-sm",children:[a.phone&&s.jsxs("a",{href:`tel:${a.phone.replace(/\D/g,"")}`,className:"flex items-center gap-2 underline underline-offset-4",children:[s.jsx(KL,{size:16}),a.phone]}),a.officialUrl&&s.jsxs("a",{href:a.officialUrl,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 break-all underline underline-offset-4",children:[s.jsx(zr,{size:16,className:"shrink-0"}),"Site oficial"]}),a.email&&s.jsxs("a",{href:`mailto:${a.email}`,className:"flex items-center gap-2 break-all underline underline-offset-4",children:[s.jsx(GL,{size:16,className:"shrink-0"}),a.email]})]}),s.jsxs("dl",{className:"mt-5 space-y-2 text-sm",children:[s.jsxs("div",{children:[s.jsx("dt",{className:"inline text-mute",children:"Valet: "}),s.jsx("dd",{className:"inline",children:a.valet?"DisponÃvel (com reserva)":"Não oferece"})]}),s.jsxs("div",{children:[s.jsx("dt",{className:"inline text-mute",children:(a.iata==="CGH","Traslado: ")}),s.jsx("dd",{className:"inline",children:a.iata==="CGH"?"Não há traslado nem van; acesso a pé em cerca de 5 minutos":a.transfer?`${a.transfer.included?"Incluso":"Não incluso"} · ${a.transfer.frequency??a.transfer.note??"Van até o terminal"}`:"Não informado"})]})]}),s.jsxs("p",{className:"mt-4 text-sm text-ink/85",children:[(()=>{const P=Hk(a);return P.charAt(0).toUpperCase()+P.slice(1)})(),v!=null&&y?` (${y})`:"","."]}),a.terminals.some(P=>P.minutes!=null||/^T\d/.test(P.code))&&s.jsx("ul",{className:"mt-2 space-y-1 text-sm text-ink/70",children:a.terminals.map(P=>s.jsxs("li",{children:["Terminal informado pela ficha: ",s.jsx("span",{className:"font-medium",children:P.code}),P.minutes!=null?` · ${P.minutes} min de trajeto`:"",P.via?` pelo ${P.via}`:""]},P.code))}),s.jsx(ue,{asChild:!0,variant:"outline",className:"mt-6 rounded-full border-ink",children:s.jsxs("a",{href:a.mapsProfileUrl??a.mapsUrl,target:"_blank",rel:"noopener noreferrer",children:["Ver no Google Maps ",s.jsx(zr,{})]})})]}),p?s.jsx("iframe",{title:`Mapa · ${a.name} ${a.iata}`,src:p,loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",className:"min-h-[260px] w-full rounded-card border border-border",allowFullScreen:!0}):s.jsxs("a",{href:a.mapsProfileUrl??a.mapsUrl,target:"_blank",rel:"noopener noreferrer",className:"flex min-h-[160px] flex-col justify-center rounded-card border border-border bg-cream p-6 text-sm text-ink/70 hover:border-ink/40",children:[s.jsx(en,{size:26,className:"text-gold-2"}),s.jsx("span",{className:"mt-3 font-semibold text-ink",children:"Abrir localização no Google Maps"}),s.jsx("span",{className:"mt-1",children:a.address.formatted})]})]}),(a.legalName||a.taxId)&&s.jsxs("div",{className:"mt-8 border-t border-border pt-5 text-sm text-mute",children:[s.jsx("p",{className:"font-medium text-ink",children:"Dados da operadora"}),a.legalName&&s.jsx("p",{className:"mt-1",children:a.legalName}),a.taxId&&s.jsxs("p",{children:["CNPJ",a.iata==="CNF"&&a.bookable?" da matriz":" da unidade",": ",a.taxId]})]})]}),s.jsx("div",{id:"precos",className:"scroll-mt-24"}),s.jsxs(ct,{as:"section",className:"border-b border-border pb-10",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-semibold",children:"Tabela de preços da unidade"}),s.jsxs("p",{className:"mt-2 text-sm text-ink/70",children:["Preços coletados em ",a.priceCollectedAt,". Sujeitos a alteração; a reserva pelo xpark trava a tarifa exibida na consulta."]}),m?s.jsx("p",{className:"mt-5 rounded-card border border-gold/40 bg-gold/10 p-4 text-sm font-medium text-ink",children:E6}):s.jsx("div",{className:"mt-5 overflow-x-auto rounded-card border border-border",children:s.jsxs("table",{className:"w-full min-w-[420px] text-sm",children:[s.jsx("thead",{className:"bg-cream text-left text-xs text-mute",children:s.jsxs("tr",{children:[s.jsx("th",{className:"px-4 py-3 font-medium",children:"Faixa"}),s.jsx("th",{className:"px-4 py-3 font-medium",children:"R$ por dia"}),s.jsx("th",{className:"px-4 py-3 font-medium",children:"Total no perÃodo"})]})}),s.jsx("tbody",{children:a.priceRows.map(P=>{const N=P.perDay!=null&&P.perDay===l;return s.jsxs("tr",{className:N?"bg-gold/10":"border-t border-border",children:[s.jsxs("td",{className:"px-4 py-3",children:[P.label,N&&s.jsx("span",{className:"ml-2 roun
1048ded-full bg-gold px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-ink",children:"Menor diária"})]}),s.jsx("td",{className:"px-4 py-3 font-medium",children:P.perDay!=null?s.jsxs("span",{className:"inline-flex items-baseline gap-2",children:[X(P.perDay),P.originalPerDay&&P.originalPerDay>P.perDay&&s.jsx("span",{className:"text-xs font-normal text-ink/50 line-through",children:X(P.originalPerDay)})]}):P.note??"sob consulta"}),s.jsx("td",{className:"px-4 py-3 text-ink/85",children:P.total?X(P.total):""})]},P.label)})})]})}),a.priceNote&&s.jsx("p",{className:"mt-4 rounded-card border border-gold/40 bg-gold/10 p-3 text-sm text-ink/85",children:a.priceNote}),s.jsxs("p",{className:"mt-4 text-xs text-mute",children:["Fonte: ",a.fonteCitacao," · coleta em ",Ine(a.dataColeta)]}),a.insurance&&s.jsxs("p",{className:"mt-2 text-sm text-ink/75",children:[a.insurance,"."]}),!a.bookable&&s.jsxs("div",{className:"mt-4 rounded-card border border-gold/40 bg-gold/10 p-4 text-sm leading-relaxed text-ink",children:[s.jsx("p",{className:"font-semibold",children:"Preços revisados em setembro de 2026."}),s.jsxs("p",{className:"mt-1",children:["Você é desta operadora e viu alguma informação desatualizada? Escreva para ",s.jsx("a",{href:`mailto:[email protected]?subject=${encodeURIComponent(`Correção de dados: ${a.name}`)}`,className:"font-semibold underline underline-offset-4",children:"[email protected]"})," que corrigimos."]})]})]}),s.jsxs(ct,{as:"section",className:"grid gap-4 md:grid-cols-2",children:[s.jsxs("div",{className:"rounded-card border border-border bg-paper p-6",children:[s.jsx("h2",{className:"font-home-heading text-xl font-semibold",children:"Pontos fortes"}),s.jsx("ul",{className:"mt-4 space-y-3 text-sm text-ink/85",children:a.pros.map(P=>s.jsxs("li",{className:"flex gap-3",children:[s.jsx("span",{className:"mt-1.5 h-2 w-2 shrink-0 rounded-full bg-gold"}),P]},P))})]}),s.jsxs("div",{className:"rounded-card border border-border bg-paper p-6",children:[s.jsx("h2",{className:"font-home-heading text-xl font-semibold",children:"Pontos de atenção"}),s.jsx("ul",{className:"mt-4 space-y-3 text-sm text-ink/85",children:a.cons.map(P=>s.jsxs("li",{className:"flex gap-3",children:[s.jsx("span",{className:"mt-1.5 h-2 w-2 shrink-0 rounded-full bg-ink/30"}),P]},P))})]})]}),s.jsx(One,{reviews:r,airport:a.iata}),s.jsxs(ct,{as:"section",className:"border-b border-border pb-10",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-semibold",children:"Perguntas sobre esta unidade"}),s.jsx("div",{className:"mt-4 divide-y divide-border",children:a.faq.map(P=>s.jsxs("details",{className:"group py-4",children:[s.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-4 font-medium",children:[P.q,s.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full border border-border transition group-open:rotate-45",children:"+"})]}),s.jsx("p",{className:"mt-3 leading-relaxed text-ink/80",children:P.a})]},P.q))})]}),a.editorialUrl&&s.jsxs("p",{className:"text-sm text-ink/70",children:["Análise editorial completa (metodologia, segurança e histórico):"," ",s.jsx("a",{href:a.editorialUrl,target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-ink",children:a.editorialLabel}),"."]})]}),s.jsx("aside",{className:"hidden lg:block",children:s.jsxs("div",{className:"sticky top-24 rounded-card border border-border bg-paper p-6 shadow-sm",children:[s.jsxs("p",{className:"text-sm text-mute",children:[a.name," · ",a.iata]}),s.jsx("p",{className:"mt-2 font-home-heading text-3xl font-bold",children:Number.isFinite(l)?X(l):"Sob consulta"}),Number.isFinite(l)&&s.jsxs("p",{className:"mt-1 text-xs text-mute",children:["por diária · ",w]}),n&&s.jsxs("p",{className:"mt-3 flex items-center gap-2 text-sm",children:[s.jsx(Wr,{value:n.ratingValue,size:"sm"}),s.jsxs("span",{children:[n.ratingValue.toFixed(1).replace(".",",")," · ",n.ratingCount," avaliações"]})]}),s.jsxs("ul",{className:"mt-4 space-y-2 text-sm",children:[s.jsxs("li",{className:"flex items-start justify-between gap-2",children:[s.jsxs("span",{className:"inline-flex items-center gap-1 text-mute",children:[s.jsx(EL,{size:16})," Vagas"]}),s.jsx("span",{className:"text-right",children:f})]}),s.jsxs("li",{className:"flex justify-between",children:[s.jsx("span",{className:"text-mute",children:"Terminal"}),s.jsx("span",{children:(()=>{const P=Wi(a);return P.charAt(0).toUpperCase()+P.slice(1)})()})]}),s.jsxs("li",{className:"flex justify-between",children:[s.jsx("span",{className:"text-mute",children:"Traslado"}),s.jsx("span",{children:(C=a.transfer)!=null&&C.included?"Incluso":"Consultar"})]})]}),a.bookable?s.jsx(ue,{asChild:!0,className:"mt-5 w-full rounded-full bg-ink text-paper hover:bg-ink/85",children:s.jsxs(G,{to:a.reservationUrl,children:["Ver vagas ",s.jsx(zr,{})]})}):c?a.officialUrl?s.jsx(ue,{asChild:!0,variant:"outline",className:"mt-5 w-full rounded-full border-ink",children:s.jsxs("a",{href:a.officialUrl,target:"_blank",rel:"noopener noreferrer",children:["Site oficial ",s.jsx(zr,{})]})}):null:s.jsx(ue,{asChild:!0,variant:"outline",className:"mt-5 w-full rounded-full border-ink",children:s.jsx(G,{to:"/calculadora-estacionamento-aeroporto",children:"Calcular minha viagem"})}),s.jsxs("p",{className:"mt-3 text-xs leading-relaxed text-mute",children:["Valores conferidos em ",a.priceCollectedAt,". Consulte o total para as suas datas."]})]})})]}),s.jsx("section",{className:"px-3 pb-12 md:px-6",children:s.jsxs("div",{className:"container rounded-panel border border-border bg-cream py-10",children:[s.jsxs("h2",{className:"font-home-heading text-2xl font-semibold",children:["Outros estacionamentos perto do ",to[a.iata]]}),g.length>0&&s.jsx("div",{className:"mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:g.map(P=>{const N=pt(P);return s.jsxs(G,{to:`/aeroportos/${P.hubSlug}/${P.slug}`,className:"rounded-card border border-border bg-paper p-4 transition hover:border-ink/40",children:[s.jsx("p",{className:"font-medium",children:P.name}),s.jsx("p",{className:"mt-1 text-sm text-mute",children:Number.isFinite(N)?`A partir de ${X(N)}/dia`:"Preço não divulgado"})]},P.slug)})}),s.jsxs("div",{className:"mt-6 flex flex-wrap gap-3 text-sm",children:[i&&s.jsxs(G,{to:`/aeroportos/${a.hubSlug}`,className:"rounded-full border border-ink px-4 py-2 font-medium hover:bg-ink hover:text-paper",children:["Guia do ",a.iata]}),(a.iata==="GRU"||a.iata==="VCP"||a.iata==="CNF")&&s.jsxs(G,{to:a.iata==="GRU"?"/estacionamento-mais-barato-guarulhos":a.iata==="VCP"?"/estacionamento-mais-barato-viracopos":"/estacionamento-mais-barato-confins",className:"rounded-full border border-border bg-paper px-4 py-2 hover:border-ink/40",children:["Ranking do mais barato em ",a.iata]})]}),!a.bookable&&s.jsxs("p",{className:"mt-6 text-sm text-ink/70",children:["Representa esta operadora e encontrou alguma inexatidão? Escreva para"," ",s.jsx("a",{href:"mailto:[email protected]",className:"underline",children:"[email protected]"}),". Corrigimos em até 48h úteis."]})]})}),a.bookable&&s.jsx("div",{className:"sticky bottom-0 z-30 border-t border-border bg-paper/95 p-3 backdrop-blur lg:hidden",children:s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("p",{className:"min-w-0 text-sm",children:[s.jsx("span",{className:"font-semibold",children:Number.isFinite(l)?X(l):""}),s.jsxs("span",{className:"block truncate text-xs text-mute",children:["/ diária · ",w]})]}),s.jsx(ue,{asChild:!0,className:"shrink-0 rounded-full bg-ink text-paper",children:s.jsx(G,{to:a.reservationUrl,children:"Ver vagas"})})]})})]})]})}function Ine(e){const t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);return t?`${t[3]}/${t[2]}/${t[1]}`:e}const Mne=1,Lne="f95d187f-3dee-4988-9171-5d03587fafc6",Bne="386e8409-a3d6-4603-9e31-4b97b7d57e01",Vne="/__l5e/assets-v1/f95d187f-3dee-4988-9171-5d03587fafc6/multipark.png",Fne="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/f95d187f-3dee-4988-9171-5d03587fafc6/multipark.png",Une="multipark.png",Gne=9318,zne="image/png",Hne="2026-06-01T14:31:52Z",Kne={version:Mne,asset_id:Lne,project_id:Bne,url:Vne,r2_key:Fne,original_filename:Une,size:Gne,content_type:zne,created_at:Hne},Qne=1,Wne="e41838f7-5010-491f-82d8-1dee6d026e12",Jne="386e8409-a3d6-4603-9e31-4b97b7d57e01",Xne="/__l5e/assets-v1/e41838f7-5010-491f-82d8-1dee6d026e12/bandeira-park.png",Yne="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/e41838f7-5010-491f-82d8-1dee6d026e12/bandeira-park.png",Zne="bandeira-park.png",ese=33351,tse="image/png",ase="2026-06-01T14:47:01Z",ose
1048={version:Qne,asset_id:Wne,project_id:Jne,url:Xne,r2_key:Yne,original_filename:Zne,size:ese,content_type:tse,created_at:ase},rse=1,nse="32c45af5-939b-4c11-b666-2d0ebc798ba0",sse="386e8409-a3d6-4603-9e31-4b97b7d57e01",ise="/__l5e/assets-v1/32c45af5-939b-4c11-b666-2d0ebc798ba0/aeropark.png",lse="a/v1/386e8409-a3d6-4603-9e31-4b97b7d57e01/32c45af5-939b-4c11-b666-2d0ebc798ba0/aeropark.png",cse="aeropark.png",dse=7667,use="image/png",mse="2026-06-01T14:31:58Z",pse={version:rse,asset_id:nse,project_id:sse,url:ise,r2_key:lse,original_filename:cse,size:dse,content_type:use,created_at:mse},hse=[{name:"Multipark",logo:Kne.url,description:"Há mais de 50 anos operando estacionamentos com excelência. Uma das marcas mais tradicionais do setor no Brasil.",tags:["Monitorado 24h","Operação profissional","Histórico sólido","Alta confiabilidade"],url:"https://www.multipark.com.br/",logoClass:"h-20"},{name:"Bandeira Park",logo:ose.url,description:"20 anos de atuação com gestão familiar e foco em segurança nos principais aeroportos do paÃs.",tags:["Presença nacional","Vigilância contÃnua","Equipe experiente","Operação estável"],url:"https://bandeirapark.online/",logoClass:"h-20"},{name:"AeroPark",logo:pse.url,description:"Operação dedicada em Guarulhos, com estrutura pensada para segurança e tranquilidade do viajante.",tags:["Localização estratégica","Controle de acesso","Monitoramento ativo","Processo seguro"],url:"https://www.aeroparking.com.br/"},{name:"Aerovalet",logo:t6.url,description:"Operação em Guarulhos, Congonhas, Viracopos e no Terminal Rodoviário de Santana com estrutura pensada para segurança e tranquilidade do viajante.",tags:["Descoberta ao Valet","Padrão xpark","Traslado 24h","Garantia de pontualidade"],url:"https://www.aerovalet.com.br/"},{name:"Valetina",logo:a6.url,description:"Manobrista no terminal com operação ágil: entrega e devolução do veÃculo direto no desembarque.",tags:["Valet no terminal","Sem caminhada","Equipe treinada","Atendimento dedicado"],url:"https://valetina.ai/"}];function fse(){return s.jsx("section",{className:"border-t border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container py-20 md:py-28",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.22em] text-tech-mute",children:"Parceiros"}),s.jsx("h2",{className:"mt-3 font-geist text-3xl font-semibold tracking-tight text-tech-fg md:text-4xl",children:"Parceiros de confiança."}),s.jsx("p",{className:"mt-2 font-geist text-lg text-tech-mute",children:"Estacionamentos certificados e monitorados."}),s.jsx("div",{className:"mt-12 grid gap-6 md:grid-cols-2 lg:grid-cols-3",children:hse.map(e=>s.jsx("a",{href:e.url,target:"_blank",rel:"noopener noreferrer","aria-label":`Visitar site de ${e.name}`,className:"group block rounded-panel no-underline focus:outline-none focus-visible:ring-2 focus-visible:ring-tech-accent",children:s.jsxs("article",{className:"flex h-full flex-col rounded-panel border border-tech-border bg-tech-card p-7 transition hover:border-tech-fg/30",children:[s.jsx("div",{className:"flex h-24 items-center justify-center rounded-card bg-tech-bg/60 px-6",children:s.jsx("img",{src:e.logo,alt:e.name,loading:"lazy",className:`w-auto object-contain ${e.logoClass??"h-12"}`})}),s.jsx("h3",{className:"mt-6 font-geist text-lg font-semibold text-tech-fg",children:e.name}),s.jsx("p",{className:"mt-2 font-geist text-sm leading-relaxed text-tech-mute",children:e.description}),s.jsx("ul",{className:"mt-5 flex flex-wrap gap-2",children:e.tags.map(t=>s.jsxs("li",{className:"inline-flex items-center gap-1.5 rounded-full border border-tech-border px-3 py-1 font-geist-mono text-[10px] uppercase tracking-[0.12em] text-tech-mute",children:[s.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-tech-accent"}),t]},t))})]})},e.name))}),s.jsxs("div",{className:"mt-10 flex flex-wrap items-center justify-center gap-x-10 gap-y-4 border-t border-tech-border pt-8 font-geist-mono text-[11px] uppercase tracking-[0.16em] text-tech-mute",children:[s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(Qs,{className:"h-4 w-4 text-tech-accent"})," Todos certificados"]}),s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(lT,{className:"h-4 w-4 text-tech-accent"})," Monitoramento 24h"]}),s.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsx(jL,{className:"h-4 w-4 text-tech-accent"})," Estrutura coberta"]})]})]})})}const gse=["Vagas ociosas em horários de baixa procura","Cliente que desiste porque não consegue decidir rápido","Custo de aquisição alto para cada reserva","Operação sem comparação clara com a concorrência"],vse=["Sua operação aparece para quem já vai viajar pelo seu aeroporto","O viajante decide em segundos entre três caminhos simples","Re
1048serva, confirmação e pagamento acontecem na hora","Sua operação é avaliada pelos mesmos critérios públicos"],xse=[{word:"Decisão",desc:"O viajante decide pelo que vale seu tempo, não pelo menor número da lista.",Icon:pT},{word:"Exposição",desc:"Sua operação é apresentada a quem já vai voar pelo seu aeroporto.",Icon:mT},{word:"Conversão",desc:"Reserva online, confirmação imediata e pagamento via Pix.",Icon:xT},{word:"Confiança",desc:"Operadores certificados, monitorados e com histórico avaliado.",Icon:Qs}],bse=[{n:"01",title:"Cadastro da operação",body:"Você cadastra vagas, tarifas e horários. Sem site próprio obrigatório."},{n:"02",title:"Conexão com o xpark",body:"O xpark apresenta sua operação ao viajante certo, no momento da decisão."},{n:"03",title:"Reserva e confirmação",body:"O cliente reserva, paga e recebe a confirmação na hora, sem trocar de canal."}],yse=[{title:"Comparador e buscador de preços",body:"O xpark compara preços de estacionamentos nos aeroportos e organiza a escolha em três caminhos claros, com tempo e conforto lado a lado.",Icon:pT},{title:"Metodologia pública",body:"Operadoras parceiras e não parceiras são avaliadas pelos mesmos critérios, disponÃveis para qualquer pessoa ver.",Icon:SL},{title:"Aeroportos atendidos",body:"Operação em Guarulhos (GRU), Viracopos (VCP), Confins (CNF) e Congonhas (CGH).",Icon:_c},{title:"Monitoramento 24h",body:"Pátios com câmeras e controle de acesso para tranquilidade do viajante.",Icon:mT},{title:"Traslado até o terminal",body:"Transfer 24h até o terminal, com equipe treinada e processo padronizado.",Icon:dT},{title:"Atendimento humano",body:"O Bandy responde pelo WhatsApp com prioridades e tom de atendimento determinÃsticos.",Icon:IL}],kse=[{q:"O xpark é um comparador de preço?",a:"Sim. O xpark é o comparador de estacionamentos do Brasil. Compara preços em destinos pelo paÃs e, nas praças atendidas, permite reservar nas opções Descoberta, Coberta e Valet."},{q:"Quais aeroportos o xpark atende?",a:"O xpark compara estacionamentos em destinos pelo Brasil. Confira cada praça para conhecer as opções de comparação e reserva disponÃveis."},{q:"Preciso ter um site próprio?",a:"Não obrigatoriamente. As reservas podem acontecer pelo xpark. Você cadastra vagas, tarifas e horários e nós cuidamos da decisão e da reserva."},{q:"Como o xpark avalia operadores?",a:"Pelos mesmos critérios públicos para parceiras e não parceiras. A metodologia completa está disponÃvel na página de metodologia."},{q:"Como começo?",a:"Acesse o cadastro de parceiro para entrar como operadora, ou fale com o time pelo e-mail [email protected]. Nós cuidamos do credenciamento com você."}];function wse(){return s.jsxs("div",{className:"bg-paper",children:[s.jsx(Ye,{title:"Seja um parceiro · xpark.ai",description:"Coloque sua operação na frente do viajante certo. O xpark é o comparador e buscador de preços de estacionamentos do Brasil.",path:"/parceiros"}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:["Seja um parceiro do ",s.jsx("span",{className:"text-gold-dark",children:"xpark"})]}),description:s.jsxs(s.Fragment,{children:["O xpark é o comparador e buscador de preços de estacionamentos do Brasil, com reserva online nas praças atendidas. Coloque sua operação na frente de quem já vai voar pelo seu aeroporto. Veja também a"," ",s.jsx(G,{to:"/metodologia",className:"font-semibold text-ink underline underline-offset-4 hover:text-gold-dark",children:"metodologia"})," ","e os"," ",s.jsx(G,{to:"/guias",className:"font-semibold text-ink underline underline-offset-4 hover:text-gold-dark",children:"guias"}),"."]})}),s.jsx(ct,{as:"section",className:"bg-paper",stagger:!0,staggerMs:70,children:s.jsx("div",{className:"container py-16 md:py-24",children:s.jsxs("div",{className:"grid gap-6 md:grid-cols-2",children:[s.jsxs("div",{className:"rounded-panel border border-border bg-cream p-8 transition-all duration-300 motion-safe:hover:-translate-y-1 motion-safe:hover:shadow-elevated md:p-10",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-mute",children:"Sem o xpark"}),s.jsx("h2",{className:"mt-3 font-geist text-2xl font-semibold tracking-tight md:text-3xl",children:"Vagas paradas e clientes que não te encontram"}),s.jsx("ul",{className:"mt-6 space-y-3","data-reveal-stagger":!0,children:gse.map(e=>s.jsxs("li",{"data-reveal-item":!0,className:"flex items-start gap-3",children:[s.jsx("span",{className:"mt-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-destructive/10 text-destructive",children:s.jsx(Gi,{className:"h-3.5 w-3.5"})}),s.jsx("span",{className:"font-geist text-sm leading-relaxed text-ink/80",children:e})]},e))})]}),s.jsxs("div",{className:"rounded-panel border border-gold/30 bg-gold-soft p-8 transition-all duration-300 motion-safe:hover:-translate-y-1 motion-safe:hover:shadow-elevated motion-safe:hover:border-gold/50 md:p-10",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-gold-dark",children:"Com o xpark"}),s.jsx("h2",{className:"mt-3 font-geist text-2xl font-semibold tracking-tight md:text-3xl",children:"Reservas em escala, sem aumentar seu custo de aquisição"}),s.jsx("ul",{className:"mt-6 space-y-3","data-reveal-stagger":!0,children:vse.map(e=>s.jsxs("li",{"data-reveal-item":!0,className:"flex items-start gap-3",children:[s.jsx("span",{className:"mt-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md bg-ink text-paper",children:s.jsx(On,{className:"h-3.5 w-3.5"})}),s.jsx("span",{className:"font-geist text-sm leading-relaxed text-ink/80",children:e})]},e))})]})]})})}),s.jsx(ct,{as:"section",className:"border-y border-border bg-cream",stagger:!0,staggerMs:70,children:s.jsx("div",{className:"container py-12 md:py-16",children:s.jsx("div",{className:"grid grid-cols-2 gap-y-10 md:grid-cols-4 md:divide-x md:divide-border",children:xse.map(({word:e,desc:t,Icon:a})=>s.jsxs("div",{"data-reveal-item":!0,className:"px-2 text-center transition-transform duration-300 motion-safe:hover:scale-[1.04] md:px-8",children:[s.jsx(a,{className:"mx-auto h-6 w-6 text-gold-dark"}),s.jsx("p",{className:"mt-3 font-geist text-2xl font-bold tracking-tight md:text-3xl",children:e}),s.jsx("p",{className:"mx-auto mt-2 max-w-[16rem] font-geist text-sm leading-relaxed text-mute",children:t})]},e))})})}),s.jsx(ct,{as:"section",className:"bg-paper",stagger:!0,staggerMs:80,children:s.jsx("div",{className:"container py-16 md:py-24",children:s.jsxs("div",{className:"grid items-center gap-10 md:grid-cols-2 md:gap-16",children:[s.jsxs("div",{className:"relative order-1 mb-20 md:mb-0",children:[s.jsx("div",{className:"group overflow-hidden rounded-card border border-border",children:s.jsx("img",{src:j5,alt:"Estacionamento próximo a terminal de aeroporto ao entardecer, cena ilustrativa",width:960,height:720,loading:"lazy",decoding:"async",className:"aspect-[4/3] w-full object-cover transition-transform duration-[600ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-safe:group-hover:scale-105"})}),s.jsx("div",{className:"animate-fade-in absolute -bottom-6 left-6 right-6 rounded-card border border-border bg-card p-4 shadow-[0_12px_40px_-20px_hsl(var(--ink)/0.35)] motion-safe:hover:-translate-y-0.5 motion-safe:hover:shadow-[0_18px_48px_-20px_hsl(var(--ink)/0.4)] transition-all duration-300 md:left-8 md:right-auto md:w-72",children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("span",{className:"inline-flex h-9 w-9 items-center justify-center rounded-full bg-emerald-100 text-emerald-700 motion-safe:group-hover:scale-110 transition-transform duration-300",children:s.jsx(On,{className:"h-4 w-4"})}),s.jsxs("div",{children:[s.jsx("p",{className:"font-geist text-sm font-semibold text-ink",children:"Reserva confirmada"}),s.jsx("p",{className:"font-geist text-xs text-mute",children:"Confirmação enviada na hora"})]})]})})]}),s.jsxs("div",{className:"order-2",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-gold-dark",children:"Como funciona"}),s.jsx("h2",{className:"mt-3 font-geist text-2xl font-semibold tracking-tight md:text-3xl",children:"Sua operação no ar em três passos"}),s.jsx("p",{className:"mt-3 max-w-lg font-geist text-base leading-relaxed text-mute",children:"Do cadastro à reserva confirmada, sem o cliente precisar trocar de canal."}),s.jsx("ol",{className:"mt-8 space-y-6",children:bse.map(e=>s.jsx("li",{"data-reveal-item":!0,className:"relative flex gap-4 border-l-2 border-border pl-5 transition-colors duration-300 motion-safe:hover:border-gold/60",children:s.jsxs("div",{className:"transition-transform duration-300 motion-safe:hover:translate-x-1",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-mute",children:e.n}),s.jsx("h3",{className:"mt-1 font-geist text-base font-semibold",children:e.title}),s.jsx("p",{className:"mt-1 font-geist text-sm leading-relaxed text-mute",children:e.body})]})},e.n))})]})]})})}),s.jsx(ct,{as:"section",className:"bg-cream",stagger:!0,staggerMs:70,children:s.jsxs("div",{className:"container py-16 md:py-24",children:[s.jsxs("div",{className:"mx-auto max-w-2xl text-center",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-gold-dark",children:"Por que aqui"}),s.jsx("h2",{className:"mt-3 font-geist text-2xl font-semibold tracking-tight md:text-3xl",children:"Um comparador de preços, com a operação certa por trás"})]}),s.jsx("div",{className:"mt-12 grid gap-5 md:grid-cols-3","data-reveal-stagger":!0,children:yse.map(({title:e,body:t,Icon:a})=>s.jsxs("div",{"data-reveal-item":!0,className:"group flex h-full flex-col rounded-card border border-border bg-card p-6 transition-all duration-300 motion-safe:hover:-translate-y-1 motion-safe:hover:border-gold/40 motion-safe:hover:shadow-elevated",children:[s.jsx("span",{className:"inline-flex h-10 w-10 items-center justify-center rounded-xl bg-gold-soft text-gold-dark transition-transform duration-300 motion-safe:group-hover:scale-110 motion-safe:group-hover:-rotate-3",children:s.jsx(a,{className:"h-5 w-5"})}),s.jsx("h3",{className:"mt-4 font-geist text-base font-semibold",children:e}),s.jsx("p",{className:"mt-2 font-geist text-sm leading-relaxed text-mute",children:t})]},e))})]})}),s.jsx(ct,{as:"section",children:s.jsx(fse,{})}),s.jsx(ct,{as:"section",className:"bg-cream",children:s.jsx("div",{className:"container py-16 md:py-24",children:s.jsxs("div",{className:"grid gap-10 md:grid-cols-[minmax(0,1fr)_minmax(0,2fr)]",children:[s.jsxs("div",{children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-gold-dark",children:"Dúvidas"}),s.jsx("h2",{className:"mt-3 font-geist text-2xl font-semibold tracking-tight md:text-3xl",children:"Perguntas sobre a parceria"})]}),s.jsx(zk,{type:"single",collapsible:!0,className:"w-full",children:kse.map((e,t)=>s.jsxs(n0,{value:`item-${t}`,className:"border-b border-border",children:[s.jsx(s0,{className:"text-left font-geist text-base font-semibold text-ink hover:no-underline",children:e.q}),s.jsx(i0,{className:"font-geist text-sm leading-relaxed text-mute",children:e.a})]},e.q))})]})})}),s.jsx(ct,{as:"section",children:s.jsx("div",{className:"container py-16 md:py-24",children:s.jsxs("div",{className:"rounded-panel border border-gold/40 bg-gold-soft px-6 py-12 text-center md:px-16",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-gold-dark",children:"Fale com o time"}),s.jsx("h2",{className:"mx-auto mt-3 max-w-2xl font-geist text-2xl font-semibold tracking-tight md:text-3xl",children:"Quer conversar antes de decidir?"}),s.jsx("p",{className:"mx-auto mt-3 max-w-xl font-geist text-base leading-relaxed text-ink/80",children:"Escreva para o time do xpark e conte sobre a sua operação. Respondemos e cuidamos do credenciamento com você."}),s.jsxs("div",{className:"mt-8 flex flex-wrap items-center justify-center gap-3",children:[s.jsxs("a",{href:"mailto:[email protected]",className:"inline-flex h-12 items-center gap-2 rounded-full bg-gold px-6 font-geist text-sm font-medium text-ink transition hover:bg-gold-dark","aria-label":"Enviar e-mail para [email protected]",children:["Falar por e-mail ",s.jsx(aa,{className:"h-4 w-4"})]}),s.jsx("a",{href:"mailto:[email protected]",className:"inline-flex h-12 items-center gap-2 rounded-full border border-ink/25 px-6 font-geist text-sm font-medium text-ink transition hover:border-ink/60",children:"[email protected]"})]})]})})}),s.jsx(ct,{as:"section",className:"bg-ink text-paper",children:s.jsxs("div",{className:"container py-16 text-center md:py-24",children:[s.jsx(gT,{className:"mx-auto h-7 w-7 text-gold"}),s.jsxs("h2",{className:"mx-auto mt-5 max-w-2xl font-geist text-3xl font-semibold tracking-tight md:text-4xl",children:["Pronto para colocar sua operação na frente do viajante"," ",s.jsx("span",{className:"rounded-md bg-gold px-2 py-0.5 text-ink",children:"certo"}),"?"]}),s.jsx("p",{className:"mx-auto mt-4 max-w-xl font-geist text-base leading-relaxed text-paper/70",children:"Comece o credenciamento agora ou fale com o time do xpark."}),s.jsxs("div",{className:"mt-8 flex flex-wrap items-center justify-center gap-3",children:[s.jsxs(G,{to:"/auth/parceiros",className:"inline-flex h-12 items-center gap-2 rounded-full bg-gold px-6 font-geist text-sm font-medium text-ink transition hover:bg-gold-dark",children:["Quero ser parceiro ",s.jsx(aa,{className:"h-4 w-4"})]}),s.jsx("a",{href:"mailto:[email protected]",className:"inline-flex h-12 items-center gap-2 rounded-full border border-paper/30 px-6 font-geist text-sm font-medium text-paper transition hover:border-paper/60",children:"Falar com o time"})]})]})})]})}const Cse=[{n:"01",title:"Conte seu voo",body:"Informe o aeroporto, a data e o horário de entrada e saÃda. Em segundos."},{n:"02",title:"Escolha o tipo de vaga",body:"Três opções pré-curadas: Descoberta, Coberta e Valet. Sem comparar dezenas de operadores."},{n:"03",title:"Reserve em 1 clique",body:"Identificação rápida, pagamento seguro e confirmação imediata por e-mail."}],Pse={descoberta:xT,coberta:dT,valet:gT},Sse={descoberta:"Quando você tem tempo de sobra e quer pagar menos.",coberta:"Quando o equilÃbrio entre custo e proteção importa.",valet:"Quando cada minuto conta. Chegada direto no terminal."};function Rse(){const{data:e=[]}=ew("GRU");return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:"Como funciona
1048· três nÃveis de decisão | xpark",description:"Conte o voo, compare preços entre Descoberta, Coberta e Valet e reserve em segundos. O xpark é o comparador de estacionamentos do Brasil.",path:"/como-funciona"}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:["Tempo, conforto e preço: ",s.jsx("span",{className:"text-gold-dark",children:"decida o que vale mais para você"})]}),description:"Organizamos a escolha entre tempo, conforto e custo para você decidir com tranquilidade antes do voo."}),s.jsx("section",{className:"bg-cream/40",children:s.jsxs("div",{className:"container py-20",children:[s.jsx("h2",{className:"font-geist text-2xl md:text-3xl font-semibold tracking-tight",children:"Descoberta, Coberta ou Valet"}),s.jsx("p",{className:"mt-3 max-w-2xl text-base text-mute",children:"Cada tier resolve um perfil de viagem. Você escolhe pelo que vale o seu tempo, não pelo menor número da lista."}),s.jsx("div",{className:"mt-10 grid gap-6 md:grid-cols-3",children:e.map(t=>{const a=Pse[t.category];return s.jsxs("div",{className:"flex flex-col rounded-2xl border border-ink/10 bg-paper p-6",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("span",{className:"inline-flex items-center gap-2 font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:[s.jsx(a,{className:"h-3.5 w-3.5"})," ",Yk[t.category]]}),t.category==="coberta"&&s.jsx("span",{className:"rounded-full bg-ink px-2.5 py-1 font-mono text-[9px] uppercase tracking-[0.18em] text-paper",children:"Mais escolhido"})]}),s.jsx("h3",{className:"mt-3 font-geist text-xl font-semibold",children:xO[t.category]}),s.jsx("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:t.public_description}),s.jsx("ul",{className:"mt-4 space-y-1.5 text-sm text-ink/80",children:(t.features??[]).map(o=>s.jsxs("li",{className:"flex items-start gap-2",children:[s.jsx("span",{className:"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-gold"}),s.jsx("span",{children:o})]},o))}),s.jsx("div",{className:"mt-5 border-t border-ink/10 pt-4 text-sm text-mute",children:Sse[t.category]})]},t.id)})})]})}),s.jsx("section",{className:"bg-paper",children:s.jsxs("div",{className:"container py-20",children:[s.jsx("h2",{className:"font-geist text-2xl md:text-3xl font-semibold tracking-tight",children:"Em três passos"}),s.jsx("div",{className:"mt-10 grid gap-6 md:grid-cols-3",children:Cse.map(t=>s.jsxs("div",{className:"rounded-2xl border border-ink/10 bg-paper p-6",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-mute",children:t.n}),s.jsx("h3",{className:"mt-3 font-geist text-xl font-semibold",children:t.title}),s.jsx("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:t.body})]},t.n))})]})}),s.jsx("section",{className:"bg-ink text-paper",children:s.jsxs("div",{className:"container py-20 text-center",children:[s.jsx("h2",{className:"mx-auto max-w-2xl font-geist text-3xl md:text-4xl font-semibold tracking-tight",children:"Pronto para decidir em segundos?"}),s.jsxs(G,{to:"/",className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-gold px-6 font-geist text-sm font-medium text-ink hover:bg-gold-dark",children:["Encontrar minha vaga ",s.jsx(aa,{className:"h-4 w-4"})]})]})})]})}const xo=x.forwardRef(({className:e,type:t,...a},o)=>s.jsx("input",{type:t,className:ne("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:o,...a}));xo.displayName="Input";const $o=ze;async function jse(e){const{data:t}=await $o.from("community_members").select("display_name").eq("user_id",e).maybeSingle();if(t!=null&&t.display_name)return t.display_name;const{data:a}=await $o.from("profiles").select("full_name").eq("id",e).maybeSingle();return(a==null?void 0:a.full_name)||"Viajante"}function Nse(){const{user:e}=sn(),[t,a]=x.useState(!1);return x.useEffect(()=>{if(!e){a(!1);return}$o.rpc("wl_can_post").then(({data:o})=>
1048a(!!o))},[e]),{user:e,can:t}}function t2({text:e}){const t=e.split(/(https?:\/\/[^\s]+)/g);return s.jsx(s.Fragment,{children:t.map((a,o)=>/^https?:\/\//.test(a)?s.jsx("a",{href:a,rel:"ugc nofollow noopener",target:"_blank",className:"underline break-all",children:a},o):s.jsx("span",{children:a},o))})}function Ase(){return s.jsxs("p",{className:"text-xs text-tech-mute",children:[s.jsx(G,{to:"/minhas-reservas?next=wanderlust",className:"underline",children:"Entre para participar"}),". Comentar e curtir é para clientes com reserva confirmada."]})}function qo({name:e,size:t=36}){const a=(e||"V").trim().charAt(0).toUpperCase();return s.jsx("span",{"aria-hidden":!0,style:{width:t,height:t,fontSize:t*.44},className:"inline-flex shrink-0 items-center justify-center rounded-full bg-gold/20 font-semibold text-gold",children:a})}function a2(e){const t=new Date(e).getTime();if(!t)return"";const a=Math.max(1,Math.floor((Date.now()-t)/1e3));if(a<60)return"agora";const o=Math.floor(a/60);if(o<60)return`há ${o} min`;const r=Math.floor(o/60);if(r<24)return`há ${r} h`;const n=Math.floor(r/24);if(n<30)return`há ${n} ${n===1?"dia":"dias"}`;const i=Math.floor(n/30);if(i<12)return`há ${i} ${i===1?"mês":"meses"}`;const l=Math.floor(i/12);return`há ${l} ${l===1?"ano":"anos"}`}function DO({targetType:e,targetKey:t,compact:a,shareUrl:o}){const{user:r,can:n}=Nse(),i=n,[l,c]=x.useState([]),[d,u]=x.useState(0),[m,h]=x.useState(!1),[p,f]=x.useState(!a),[g,b]=x.useState(""),v=x.useCallback(async()=>{const[N,E]=await Promise.all([$o.from("wanderlust_comments").select("id, body, public_name, status, created_at").eq("target_type",e).eq("target_key",t).order("created_at",{ascending:!0}).limit(200),$o.rpc("wl_like_count",{p_type:e,p_key:t})]);if(c(N.data??[]),u(E.data??0),r){const{data:A}=await $o.from("wanderlust_likes").select("id").eq("target_type",e).eq("target_key",t).eq("user_id",r.id).maybeSingle();h(!!A);const $=await $o.from("wanderlust_comments").select("id, body, public_name, status, created_at, author_id").eq("target_type",e).eq("target_key",t).eq("author_id",r.id),O=new Set((N.data??[]).map(V=>V.id));c([...N.data??[],...($.data??[]).filter(V=>!O.has(V.id))])}},[e,t,r]);x.useEffect(()=>{v()},[v]);const y=async()=>{!i||!r||(m?await $o.from("wanderlust_likes").delete().eq("target_type",e).eq("target_key",t).eq("user_id",r.id):await $o.from("wanderlust_likes").insert({target_type:e,target_key:t,user_id:r.id}),v())},k=async()=>{if(!r||g.trim().length<2)return;const{error:N}=await $o.from("wanderlust_comments").insert({target_type:e,target_key:t,author_id:r.id,body:g.trim(),public_name:await jse(r.id)});N?_e.error("Não foi possÃvel comentar"):(b(""),_e.success("Comentário enviado. Ele aparece depois da aprovação da equipe."),v())},w=async N=>{if(!r)return;const{error:E}=await $o.from("wanderlust_reports").insert({reporter_id:r.id,target_table:"wanderlust_comments",target_id:N});E||_e.success("Obrigado, a equipe do xpark vai analisar")},R=async N=>{await $o.from("wanderlust_comments").delete().eq("id",N),v()},C=l.filter(N=>N.status==="approved"||N.author_id===(r==null?void 0:r.id)),P=async()=>{const N=o?new URL(o,window.location.href).toString():window.location.href;try{if(navigator.share){await navigator.share({url:N});return}await navigator.clipboard.writeText(N),_e.success("Link copiado")}catch{}};return s.jsxs("div",{className:"mt-3 space-y-2",children:[(d>0||C.length>0)&&s.jsxs("div",{className:"flex items-center gap-3 border-b border-tech-border pb-1 text-xs text-tech-mute",children:[d>0&&s.jsxs("span",{className:"flex items-center gap-1",children:[s.jsx(Mb,{className:"h-3.5 w-3.5 fill-current text-gold"})," ",d]}),C.length>0&&s.jsxs("button",{onClick:()=>f(N=>!N),className:"hover:underline",children:[C.length," ",C.length===1?"comentário":"comentários"]})]}),s.jsxs("div",{className:"grid grid-cols-3 border-t border-tech-border pt-1 text-sm",children:[s.jsxs(ue,{size:"sm",variant:"ghost",className:"rounded-full",onClick:y,disabled:!i,"aria-pressed":m,children:[s.jsx(Mb,{className:`mr-1.5 h-4 w-4 ${m?"fill-current text-gold":""}`})," Curtir"]}),s.jsxs(ue,{size:"sm",variant:"ghost",className:"rounded-full",onClick:()=>f(N=>!N),children:[s.jsx(hT,{className:"mr-1.5 h-4 w-4"})," Comentar"]}),s.jsxs(ue,{size:"sm",variant:"ghost",className:"rounded-full",onClick:P,children:[s.jsx(WL,{className:"mr-1.5 h-4 w-4"})," Compartilhar"]})]}),p&&s.jsxs("div",{className:"space-y-2 pt-1",children:[C.map(N=>s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx(qo,{name:N.public_name,size:28}),s.jsxs("div",{className:"flex min-w-0 flex-1 items-start justify-between gap-2 rounded-2xl bg-tech-bg px-3 py-2 text-sm",children:[s.jsxs("p",{className:"min-w-0",children:[s.jsx("strong",{className:"block text-[13px]",children:N.public_name}),s.jsx(t2,{text:N.body}),N.status==="pending"&&s.jsx("span",{className:"ml-1 text-xs text-tech-mute",children:"(aguardando aprovação)"}),s.jsx("span",{className:"mt-0.5 block text-[11px] text-tech-mute",children:a2(N.created_at)})]}),r&&(N.author_id===r.id?s.jsx("button",{"aria-label":"Apagar",onClick:()=>R(N.id),children:s.jsx(jg,{className:"h-3.5 w-3.5 text-tech-mute"})}):s.jsx("button",{"aria-label":"Denunciar",onClick:()=>w(N.id),children:s.jsx(cf,{className:"h-3.5 w-3.5 text-tech-mute"})}))]})]},N.id)),i?s.jsxs("div",{className:"flex gap-2",children:[s.jsx(xo,{className:"rounded-full",placeholder:"Escreva um comentário",value:g,onChange:N=>b(N.target.value),maxLength:1e3,onKeyDown:N=>
1048{N.key==="Enter"&&k()}}),s.jsx(ue,{className:"rounded-full",onClick:k,disabled:g.trim().length<2,children:"Enviar"})]}):r?s.jsx("p",{className:"text-xs text-tech-mute",children:"Comentar é para clientes com reserva confirmada."}):s.jsx(Ase,{})]})]})}function Bc({src:e,alt:t="",className:a,loading:o="lazy",fetchPriority:r,label:n}){return e?s.jsx("img",{src:e,alt:t,className:a,loading:o,decoding:"async",fetchPriority:r}):s.jsxs("div",{"aria-hidden":"true",className:ne("relative flex h-full w-full flex-col justify-between overflow-hidden bg-ink p-4 text-paper sm:p-6",a),children:[s.jsx("span",{className:"absolute -right-10 -top-10 h-40 w-40 rounded-full bg-gold/20 blur-2xl"}),s.jsxs("span",{className:"relative font-home-heading text-lg font-bold lowercase tracking-tight sm:text-2xl",children:["xpark",s.jsx("span",{className:"text-gold",children:"."})]}),n&&s.jsx("span",{className:"relative hidden text-[10px] font-semibold uppercase tracking-wide text-gold sm:block",children:n})]})}function Ese({image:e,label:t,title:a,body:o,meta:r,className:n,imageAspectClassName:i="aspect-[4/5]"}){return s.jsxs("article",{className:ne("group flex h-full flex-col gap-4",n),children:[s.jsx("div",{className:ne("overflow-hidden rounded-card bg-cream",i),children:s.jsx(Bc,{src:e,className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-[1.02]"})}),s.jsxs("div",{className:"flex flex-1 flex-col",children:[s.jsx("p",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:t}),s.jsx("h3",{className:"mt-1 font-display text-2xl font-light text-ink",children:a}),s.jsx("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:o}),r&&s.jsx("p",{className:"mt-auto pt-4 text-xs text-mute",children:r})]})]})}function zj(e){return`secao-${e+1}`}function Yv(e){const t=[],a=/\[([^\]]+)\]\(([^)]+)\)/g;let o=0,r,n=0;for(;(r=a.exec(e))!==null;){r.index>o&&t.push(e.slice(o,r.index));const[,i,l]=r,c=/^https?:\/\//.test(l);t.push(s.jsx("a",{href:l,className:"text-gold-dark underline underline-offset-4 hover:text-ink transition-colors",...c?{target:"_blank",rel:"noopener noreferrer"}:{},children:i},`lnk-${n++}`)),o=r.index+r[0].length}return o<e.length&&t.push(e.slice(o)),t.length===1?t[0]:s.jsx(s.Fragment,{children:t})}function Zv({legacy:e=!1,articleSlug:t}){const a=on(),o=t??a.slug;
1048if(o&&ij[o])return s.jsx(fo,{to:ij[o],replace:!0});const r=Mc.find(m=>m.slug===o);if(!r)return s.jsx(fo,{to:Vs,replace:!0});if(e)return s.jsx(fo,{to:vr(r.slug),replace:!0});const n=Mc.filter(m=>m.slug!==r.slug&&!m.unlisted),i=r.body.flatMap((m,h)=>m.kind==="h2"?[{title:m.text,id:zj(h)}]:[]),l={"@context":"https://schema.org","@type":"Article",headline:r.title,...r.image?{image:r.image}:{},author:{"@type":"Person",name:r.byline},publisher:{"@type":"Organization",name:"xpark"},description:r.excerpt,datePublished:r.publishedAt,dateModified:r.updatedAt??r.publishedAt},c=r.body.filter(m=>m.kind==="faq"),d=c.length>0?{"@context":"https://schema.org","@type":"FAQPage",mainEntity:c.map(m=>({"@type":"Question",name:m.question,acceptedAnswer:{"@type":"Answer",text:m.answer}}))}:null,u=[l,{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"InÃcio",item:"https://www.xpark.ai/"},{"@type":"ListItem",position:2,name:"Guias",item:"https://www.xpark.ai/guias"},{"@type":"ListItem",position:3,name:r.title,item:`https://www.xpark.ai${vr(r.slug)}`}]},...d?[d]:[],...r.extraJsonLd??[]];return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:r.seoTitle??r.title,description:r.excerpt,path:vr(r.slug),type:"article",image:r.image||void 0,jsonLd:u}),s.jsx("header",{className:"bg-paper text-ink",children:s.jsx("div",{className:"container max-w-6xl pb-10 pt-7 sm:pt-10 lg:pb-14 lg:pt-16",children:s.jsxs("div",{className:"grid items-center gap-7 md:grid-cols-[minmax(0,1.05fr)_minmax(0,1fr)] md:gap-10 lg:gap-14",children:[s.jsx("div",{className:"xp-featured-image aspect-[16/10] w-full overflow-hidden rounded-card bg-cream md:aspect-[4/3]",children:s.jsx(Bc,{src:r.image,alt:r.imageAlt,label:r.label,className:"h-full w-full object-cover",loading:"eager",fetchPriority:"high"})}),s.jsxs("div",{className:"min-w-0",children:[s.jsx(G,{to:Vs,className:"text-sm text-mute transition-colors hover:text-ink",children:"â Voltar aos guias"}),s.jsxs("p",{className:"mt-5 flex items-center gap-3 text-xs font-bold uppercase text-gold-dark",children:[s.jsx("span",{className:"h-1 w-8 rounded-full bg-gold","aria-hidden":"true"}),r.label]}),s.jsx("h1",{className:"mt-3 font-home-heading text-[34px] font-bold leading-[1.12] text-ink sm:text-4xl lg:text-[44px]",children:r.title}),s.jsx("p",{className:"mt-5 font-home-body text-base leading-relaxed text-ink/80 sm:text-lg",children:r.dek}),s.jsxs("div",{className:"mt-6 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-mute sm:text-sm",children:[s.jsx("span",{children:r.byline}),s.jsx("span",{"aria-hidden":"true",children:"·"}),s.jsx("time",{dateTime:r.publishedAt,children:new Intl.DateTimeFormat("pt-BR",{day:"2-digit",month:"long",year:"numeric"}).format(new Date(`${r.publishedAt}T12:00:00`))}),s.jsx("span",{"aria-hidden":"true",children:"·"}),s.jsx("span",{children:r.readTime}),r.updatedAt&&s.jsxs(s.Fragment,{children:[s.jsx("span",{"aria-hidden":"true",children:"·"}),s.jsxs("span",{children:["Atualizado em ",s.jsx("time",{dateTime:r.updatedAt,children:new Intl.DateTimeFormat("pt-BR").format(new Date(`${r.updatedAt}T12:00:00`))})]})]})]})]})]})})}),s.jsx(ct,{as:"section",className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container grid max-w-6xl items-start gap-10 pb-16 pt-10 md:pb-24 md:pt-14 lg:grid-cols-[minmax(0,1fr)_260px] lg:gap-16",children:[s.jsxs("article",{className:"min-w-0",children:[s.jsxs("div",{className:"border-l-4 border-gold bg-cream px-5 py-6 sm:px-7 sm:py-7",children:[s.jsx("h2",{className:"font-home-heading text-xl font-bold text-ink",children:"Em resumo"}),s.jsx("p",{className:"mt-3 text-base leading-relaxed text-ink/85 sm:text-[17px]",children:r.excerpt})]}),i.length>0&&s.jsx("nav",{id:"topicos-do-guia","aria-label":"Nesta publicação",className:"mt-8 scroll-mt-28 border-y border-border py-5 lg:hidden",children:s.jsxs("details",{className:"group",open:!0,children:[s.jsxs("summary",{className:"flex cursor-pointer items-center justify-between gap-4 font-home-heading text-base font-bold text-ink marker:content-none [&::-webkit-details-marker]:hidden",children:["Nesta publicação ",s.jsx("span",{"aria-hidden":"true",className:"text-gold-dark transition-transform group-open:rotate-180",children:"â"})]}),s.jsx("ol",{className:"mt-5 grid gap-3 pl-5 text-sm leading-relaxed text-mute sm:grid-cols-2 sm:gap-x-8",children:i.map(m=>s.jsx("li",{className:"list-decimal pl-1 marker:text-gold-dark",children:s.jsx("a",{href:`#${m.id}`,className:"underline-offset-4 hover:text-ink hover:underline",children:m.title})},m.id))})]})}),r.body.map((m,h)=>m.kind==="h2"?s.jsxs("div",{id:zj(h),className:"mt-14 mb-4 scroll-mt-28",children:[s.jsx("span",{className:"mb-4 block h-1 w-10 rounded-full bg-gold","aria-hidden":"true"}),s.jsx("h2",{className:"font-home-heading text-2xl font-bold leading-tight text-ink md:text-3xl",children:m.text})]},h):m.kind==="quote"?s.jsxs("blockquote",{className:"my-10 border-l-2 border-gold pl-6",children:[s.jsxs("p",{className:"font-home-body text-xl font-medium italic leading-snug text-ink sm:text-2xl",children:["â",m.text,"â"]}),m.attribution&&s.jsx("footer",{className:"mt-3 text-xs text-mute",children:m.attribution})]},h):m.kind==="table"?s.jsxs("figure",{className:"my-10 -mx-4 md:mx-0",children:[s.jsx("div",{className:"overflow-x-auto border-y border-ink/10 md:rounded-card md:border",children:s.jsxs("table",{className:"w-full min-w-[640px] border-collapse text-left text-sm",children:[s.jsx("thead",{children:s.jsx("tr",{className:"border-b border-ink/10 bg-cream",children:m.headers.map((p,f)=>s.jsx("th",{className:"px-4 py-3 text-xs font-semibold text-mute",children:p},f))})}),s.jsx("tbody",{children:m.rows.map((p,f)=>{const g=f===0;return s.jsx("tr",{className:"border-b border-ink/10 last:border-b-0 "+(g?"bg-gold/10":""),children:p.map((b,v)=>s.jsx("td",{className:"px-4 py-3 align-top "+(v===0?"font-medium text-ink":"text-ink/80")+(g&&v===0?" text-ink":""),children:Yv(b)},v))},f)})})]})}),m.caption&&s.jsx("figcaption",{className:"mt-3 px-4 text-xs leading-relaxed text-mute md:px-0",children:m.caption})]},h):m.kind==="faq"?s.jsxs("div",{className:"mt-8 border-t border-ink/10 pt-6",children:[s.jsx("h3",{className:"font-home-heading text-xl font-bold text-ink",children:m.question}),Hg(m.answer).map((p,f)=>s.jsx("p",{className:"mt-3 text-[17px] leading-[1.75] text-ink/85",children:Yv(p)},f))]},h):s.jsx("p",{className:"mt-6 text-[17px] leading-[1.75] text-ink/85",children:Yv(m.text)},h)),s.jsx("div",{className:"mt-16 border-t border-ink/10 pt-10",children:s.jsx("p",{className:"text-[17px] leading-[1.75] text-ink/85",children:r.closing})}),s.jsx("div",{className:"mt-12 flex flex-wrap gap-2",children:r.tags.map(m=>s.jsx("span",{className:"rounded-full border border-border px-3 py-1 text-xs font-medium text-mute",children:m},m))}),s.jsxs("section",{className:"mt-16 border-t border-border pt-8","aria-label":"Comentários da Wanderlust",children:[s.jsx("p",{className:"font-home-heading text-xl font-bold text-ink",children:"Comentários · Wanderlust"}),s.jsxs("p",{className:"mt-1 text-sm text-mute",children:["A comunidade de viajantes do xpark. ",s.jsx(G,{to:"/wanderlust",className:"underline",children:"Ver a Wanderlust"})]}),s.jsx("div",{className:"mt-4",children:s.jsx(DO,{targetType:"story",targetKey:r.slug})})]}),s.jsxs("div",{className:"mt-16 border-t border-border pt-8",children:[s.jsx("p",{className:"font-home-heading text-xl font-bold text-ink",children:"Vai viajar?"}),s.jsx("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:"Compare suas opções de estacionamento antes de sair de casa."}),s.jsxs(G,{to:"/",className:"mt-5 inline-flex rounded-full bg-ink px-6 py-3 text-sm font-semibold text-paper transition-colors hover:bg-gold hover:text-ink",children:["Encontrar minha vaga ",s.jsx("span",{"aria-hidden":"true",className:"ml-2",children:"â"})]})]})]}
1048),s.jsxs("aside",{"aria-label":"Leia também",className:"border-t border-border pt-7 lg:sticky lg:top-24 lg:border-t-0 lg:pt-0",children:[i.length>0&&s.jsxs("nav",{"aria-label":"Tópicos do guia",className:"mb-9 hidden border-b border-border pb-8 lg:block",children:[s.jsx("h2",{className:"text-xs font-bold uppercase text-gold-dark",children:"Nesta publicação"}),s.jsx("ol",{className:"mt-4 space-y-2.5",children:i.map(m=>s.jsx("li",{children:s.jsx("a",{href:`#${m.id}`,className:"text-sm leading-snug text-mute transition-colors hover:text-ink",children:m.title})},m.id))})]}),s.jsx("h2",{className:"text-xs font-bold uppercase text-gold-dark",children:"Leia também"}),s.jsx("div",{className:"mt-5 space-y-5",children:n.slice(0,4).map(m=>s.jsxs(G,{to:vr(m.slug),className:"group grid grid-cols-[88px_minmax(0,1fr)] items-start gap-3",children:[s.jsx("div",{className:"aspect-[4/3] overflow-hidden rounded-card bg-cream",children:s.jsx(Bc,{src:m.image,alt:m.imageAlt,className:"h-full w-full object-cover"})}),s.jsx("span",{className:"min-w-0 text-sm font-semibold leading-snug text-ink transition-colors group-hover:text-gold-dark",children:m.title})]},m.slug))})]})]})}),s.jsx("section",{className:"border-t border-ink/10 bg-cream",children:s.jsx("div",{className:"container py-20",children:s.jsx("div",{className:"mt-2",children:s.jsx($O,{items:n,getKey:m=>m.slug,label:"Continue lendo",ariaLabel:"Outras publicações dos Guias do xpark",renderItem:m=>{const h=m.publishedAt?new Intl.DateTimeFormat("pt-BR",{month:"short",year:"numeric"}).format(new Date(`${m.publishedAt}T12:00:00`)).replace(".",""):null;return s.jsx(G,{to:vr(m.slug),className:"block h-full transition-transform duration-200 active:scale-[0.98]",children:s.jsx(Ese,{image:m.image,label:h?`${m.label} · ${h}`:m.label,title:m.title,body:m.excerpt,meta:s.jsxs(s.Fragment,{children:[m.byline," · ",s.jsx("time",{dateTime:m.publishedAt,children:new Intl.DateTimeFormat("pt-BR",{day:"2-digit",month:"long",year:"numeric"}).format(new Date(`${m.publishedAt}T12:00:00`))})," · ",m.readTime]}),imageAspectClassName:"aspect-[16/10]",className:"h-full"})})}})})})})]})}const _se=["Todos","Preços","Comparativos","Guias","Decisões"];function ex(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase()}function Hj(e){return new Intl.DateTimeFormat("pt-BR",{day:"2-digit",month:"long",year:"numeric"}).format(new Date(`${e}T12:00:00`))}function Tse(){const[e,t]=x.useState(""),[a,o]=x.useState("Todos"),r=ex(e.trim()),n=ore(1/0).filter(c=>{const d=ex(`${c.label} ${c.tags.join(" ")}`);return(a==="Todos"||(a==="Preços"?d.includes("preco"):a==="Comparativos"?d.includes("comparativo")||d.includes("ranking"):a==="Guias"?d.includes("guia"):d.includes("decisao")||d.includes("analise")))&&(!r||ex(`${c.title} ${c.dek} ${c.label} ${c.tags.join(" ")}`).includes(r))}),[i,...l]=n;return s.jsxs("div",{className:"bg-paper text-ink",children:[s.jsx(Ye,{title:"Guias de estacionamento e viagem | xpark",description:"Guias independentes sobre estacionamentos de aeroporto, custos, deslocamento e decisões para viajar melhor.",path:"/guias"}),s.jsxs(Bn,{title:s.jsxs(s.Fragment,{children:["Guias de ",s.jsx("span",{className:"text-gold-dark",children:"viagem"})]}),description:"Estacionamento, deslocamento e custos para decidir antes de sair de casa.",children:[s.jsx("div",{className:"mt-8 flex md:-mt-12 md:justify-end",children:s.jsxs("div",{className:"relative w-full md:max-w-xs lg:max-w-sm",children:[s.jsx("label",{htmlFor:"busca-guias",className:"sr-only",children:"Buscar nos guias"}),s.jsx(Du,{"aria-hidden":"true",className:"pointer-events-none absolute left-4 top-1/2 h-5 w-5 -translate-y-1/2 text-mute"}),s.jsx("input",{id:"busca-guias",type:"search",value:e,onChange:c=>t(c.target.value),placeholder:"Buscar nos guias",className:"h-12 w-full rounded-full border border-border bg-paper pl-12 pr-5 text-sm text-ink placeholder:text-mute focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gold"})]})}),s.jsx("nav",{"aria-label":"Filtrar guias por assunto",className:"mt-8 flex gap-2 overflow-x-auto pb-2 md:mt-12",children:_se.map(c=>s.jsx(ue,{type:"button",variant:a===c?"default":"outline","aria-pressed":a===c,onClick:()=>o(c),className:"shrink-0 rounded-full px-5",children:c},c))})]}),s.jsxs(ct,{className:"container py-12 md:py-20",children:[n.length===0&&s.jsxs("div",{className:"py-16 text-center",role:"status",children:[s.jsx("h2",{className:"font-home-heading text-xl font-bold",children:"Nenhum guia encontrado"}),s.jsx("p",{className:"mt-2 text-sm text-mute",children:"Tente outra busca ou escolha outro assunto."})]}),i&&s.jsxs(G,{to:vr(i.slug),className:"group grid gap-6 border-b border-border pb-12 md:grid-cols-2 md:items-center md:gap-12",children:[s.jsx("div",{className:"aspect-[16/10] overflow-hidden rounded-card bg-secondary",children:s.jsx(Bc,{src:i.image,alt:i.imageAlt,label:i.label,loading:"eager",fetchPriority:"high",className:"h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105"})}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-semibold uppercase text-gold-dark",children:i.label}),s.jsx("h2",{className:"mt-3 font-home-heading text-2xl font-bold leading-tight md:text-4xl",children:i.title}),s.jsx("p",{className:"mt-4 text-base leading-relaxed text-mute",children:i.dek}),s.jsxs("p",{className:"mt-4 text-xs text-mute",children:[i.byline," · ",s.jsx("time",{dateTime:i.publishedAt,children:Hj(i.publishedAt)})]}),s.jsxs("span",{className:"mt-6 inline-flex items-center gap-2 text-sm font-semibold",children:["Ler guia ",s.jsx(zr,{className:"h-4 w-4"})]})]})]}),s.jsx("div",{className:"mt-12 grid gap-x-6 gap-y-12 sm:grid-cols-2 lg:grid-cols-3",children:l.map(c=>s.jsx("article",{className:"group min-w-0 h-full",children:s.jsxs(G,{to:vr(c.slug),className:"flex h-full flex-col focus-visible:outline focus-visible:outline-2 focus-visible:outline-gold",children:[s.jsx("div",{className:"aspect-[16/10] overflow-hidden rounded-card bg-secondary",children:s.jsx(Bc,{src:c.image,alt:c.imageAlt,label:c.label,loading:"eager",className:"h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-105"})}),s.jsx("p",{className:"mt-4 text-xs font-semibold uppercase text-gold-dark",children:c.label}),s.jsx("h2",{className:"mt-2 font-home-heading text-xl font-bold leading-snug group-hover:underline",children:c.title}),s.jsx("p",{className:"mt-2 line-clamp-3 text-sm leading-relaxed text-mute",children:c.dek}),s.jsxs("p",{className:"mt-auto pt-4 text-xs text-mute",children:[c.byline," · ",s.jsx("time",{dateTime:c.publishedAt,children:Hj(c.publishedAt)})," · ",c.readTime]})]})},c.slug))})]})]})}const pu=e=>new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL"}).format(e||0);function IO(e={}){return Og({queryKey:["plans",!!e.includeInactive],queryFn:async()=>{let t=ze.from("plans").select("*").order("sort_order",{ascending:!0});e.includeInactive||(t=t.eq("active",!0));const{data:a,error:o}=await t;if(o)throw o;return a??[]}})}function $se({className:e,variant:t="light",showLabel:a=!0}
1048){return s.jsxs("span",{className:ne("inline-flex max-w-full items-center gap-2 rounded-full border px-3 py-1.5",t==="light"?"border-ink/15 bg-paper text-ink":"border-paper/20 bg-ink text-paper",e),children:[a&&s.jsx("span",{className:"font-mono text-[9px] uppercase tracking-[0.18em] opacity-70",children:"Operado por"}),s.jsx("img",{src:kO,alt:"Valetina",width:96,height:14,loading:"eager",decoding:"sync",fetchPriority:"high",className:ne("h-4 w-auto shrink-0 md:h-5","")})]})}function Ose(){const{data:e=[],isLoading:t}=IO(),a={"@context":"https://schema.org","@type":"Service",name:"Planos de assinatura xpark",description:"Assinaturas de estacionamento de aeroporto para viajantes frequentes: ocasional, frequente, anual, executivo e ilimitado.",provider:{"@type":"Organization",name:"xpark",url:"https://www.xpark.ai"},areaServed:"BR"};return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:"Planos de assinatura | xpark",description:"Assinaturas de estacionamento de aeroporto para quem viaja toda semana. Decisão simples, preço previsÃvel.",path:"/planos",jsonLd:a}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:["Cinco caminhos para ",s.jsx("span",{className:"text-gold-dark",children:"assinar a decisão"}),", não a vaga."]}),description:s.jsx(s.Fragment,{children:"Cada plano é cobrado em 12 mensalidades. Reservas dentro da franquia entram sem custo extra; as três faixas (Descoberta, Coberta e Valet) ficam disponÃveis em todos os planos."})}),s.jsx(ct,{as:"section",className:"bg-paper",stagger:!0,staggerMs:70,children:s.jsxs("div",{className:"container py-16 md:py-20",children:[t&&s.jsx("p",{className:"text-center text-sm text-mute",children:"Carregando planosâ¦"}),s.jsx("div",{className:"grid gap-4 md:grid-cols-3 lg:grid-cols-5",children:e.map(o=>s.jsxs("article",{id:o.slug,"data-reveal-item":!0,className:ne("relative flex flex-col gap-5 rounded-card border border-ink/10 bg-paper p-7 transition-all duration-300 hover:shadow-[var(--shadow-elevated)] active:scale-[0.99]",o.recommended&&"border-gold/40 bg-cream ring-1 ring-gold/30"),children:[s.jsxs("header",{className:"space-y-2",children:[s.jsxs("div",{children:[s.jsx("p",{className:"whitespace-nowrap font-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:o.freq}),o.recommended&&s.jsx("span",{className:"absolute -top-3 left-7 rounded-full bg-gold px-3 py-1 font-mono text-[9px] uppercase tracking-[0.14em] text-ink",children:"Recomendado"})]}),s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink",children:o.name}),s.jsx("p",{className:"min-h-[4.25rem] text-sm leading-relaxed text-mute",children:o.tagline})]}),s.jsxs("div",{className:"border-t border-ink/10 pt-5",children:[s.jsx("p",{className:"font-home-heading text-2xl font-bold leading-none tracking-tight text-ink tabular-nums whitespace-nowrap 2xl:text-[28px]",children:pu(Number(o.monthly_price))}),s.jsxs("p",{className:"mt-1 font-mono text-[10px] uppercase tracking-[0.14em] text-mute",children:["12à ao ano · ",pu(Number(o.yearly_price))]})]}),s.jsx("ul",{className:"flex-1 space-y-2 text-sm text-ink/80",children:o.includes.map(r=>s.jsxs("li",{className:"flex items-start gap-2",children:[s.jsx(On,{className:"mt-0.5 h-4 w-4 shrink-0 text-gold-dark"}),s.jsx("span",{children:r})]},r))}),s.jsxs(G,{to:`/assinar/${o.slug}`,className:ne("group mt-2 inline-flex h-12 items-center justify-center gap-1.5 rounded-full px-4 text-sm font-medium whitespace-nowrap transition-all duration-200 active:scale-[0.97]",o.recommended?"bg-gold text-ink hover:bg-gold-dark":"border border-ink text-ink hover:bg-ink hover:text-paper"),children:["Assinar",s.jsx(aa,{className:"h-4 w-4 transition-transform duration-200 group-hover:translate-x-0.5"})]})]},o.slug))}),s.jsxs("div",{className:"mt-10 flex flex-wrap items-center justify-between gap-4 rounded-card border border-ink/15 bg-cream px-6 py-5",children:[s.jsxs("div",{className:"flex items-center gap-4",children:[s.jsx($se,{showLabel:!1,className:"shrink-0"}),s.jsxs("div",{children:[s.jsx("p",{className:"font-mono text-[10px] uppercase tracking-[0.22em] text-mute",children:"Operação certificada"}),s.jsx("p",{className:"mt-1 font-home-heading text-base font-semibold text-ink",children:"Todos os planos são operados pela Valetina"})]})]}),s.jsx("p",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:"Valet · Equipe treinada · Garantia xpark"})]}),s.jsxs("div",{className:"mt-16 grid gap-12 md:grid-cols-12",children:[s.jsxs("div",{className:"md:col-span-5",children:[s.jsx("p",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:"por que assinar"}),s.jsxs("h3",{className:"mt-3 font-home-heading text-3xl font-bold leading-tight",children:["A decisão fica ",s.jsx("span",{className:"text-gold-dark",children:"resolvida"}),"."]})]}),s.jsxs("div",{className:"space-y-4 md:col-span-7",children:[s.jsx("p",{className:"text-mute",children:"Quem assina não compara de novo. O Xpark faz a curadoria a cada viagem, dentro do plano contratado, sem cobrar diária separada."}),s.jsx("p",{className:"text-mute",children:"Todos os planos incluem o selo Xpark Certificado, a Garantia Xpark (pontualidade, integridade do veÃculo, suporte 24/7 e reembolso por atraso) e atendimento humano em qualquer madrugada."}),s.jsx("p",{className:"text-mute",children:"Você pode trocar de plano a qualquer momento. A diferença é proporcional, calculada na próxima fatura."})]})]})]})}),s.jsx(ct,{as:"section",className:"bg-ink text-paper",children:s.jsxs("div",{className:"container py-20 text-center",children:[s.jsx("p",{className:"mx-auto max-w-2xl text-xl leading-relaxed text-paper/85",children:'"Não vendemos vagas. Organizamos a decisão entre tempo, conforto e preço."'}),s.jsx("p",{className:"mt-4 font-mono text-[10px] uppercase tracking-[0.18em] text-paper/50",children:"Manifesto xpark · 2026"})]})})]})}
1048const $h={avaliado:{prefix:"Avaliado no",label:"Avaliado no Xpark",description:"Padrão. Serve para estacionamentos listados no Xpark."},listado:{prefix:"Estacionamento listado no",label:"Estacionamento listado no Xpark",description:"Quando o rodapé tem espaço e você quer dizer do que se trata."},compare:{prefix:"Compare e reserve no",label:"Compare e reserve no Xpark",description:"Para hotéis, agências e blogs que querem indicar o Xpark ao viajante."},parceiro:{prefix:"Parceiro",label:"Parceiro Xpark",description:"Parcerias comerciais formalizadas."}},MO={claro:{text:"#0A0A0A",border:"#E7E5E4",bg:"#FFFFFF",footer:"#FFFFFF"},escuro:{text:"#FFFFFF",border:"rgba(255,255,255,.28)",bg:"transparent",footer:"#0A0A0A"}},qse="-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif";function Dse(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/[\s-]+/g,"-").slice(0,60).replace(/-+$/g,"")}function Ise(e){return`https://www.xpark.ai/?utm_source=selo&utm_medium=referral&utm_campaign=${encodeURIComponent(e||"selo-parceiro")}`}function Mse({texto:e,formato:t,tema:a,parceiroSlug:o}){const r=$h[e],n=MO[a],i=t==="moldura"?`padding:7px 12px;border-radius:10px;border:1px solid ${n.border};background:${n.bg}`:"padding:0;border:0;background:transparent",l=`display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-weight:500;color:${n.text};font-family:${qse};font-size:13px;line-height:1;text-decoration:none;${i}`,c=t==="texto"?'<strong style="font-weight:700">Xpark</strong>':`<img src="${a==="escuro"?e6.url:Z4.url}" alt="Xpark" width="59" height="16" style="display:block;width:59px;height:16px;object-fit:contain;flex-shrink:0">`;return`<!-- Selo Xpark --> 1049<a href="${Ise(o)}" target="_blank" rel="noopener" title="${r.label}" 1050 style="${l}"><span style="opacity:.72">${r.prefix}</span> ${c}</a> 1051<!-- /Selo Xpark -->`}function $p(e,t){const a=window.posthog;a==null||a.capture(e,t)}function Lse(){const[e,t]=x.useState(null);return{copied:e,copy:async(o,r)=>{await navigator.clipboard.writeText(r),t(o),setTimeout(()=>t(n=>n===o?null:n),2e3)}}}function Kj({label:e,value:t,options:a,onChange:o}){return s.jsxs("fieldset",{children:[s.jsx("legend",{className:"mb-2 text-sm font-semibold text-ink",children:e}),s.jsx("div",{className:"inline-flex flex-wrap gap-1 rounded-full border border-border bg-secondary p-1",children:a.map(r=>s.jsx("button",{type:"button","aria-pressed":t===r.v,onClick:()=>o(r.v),className:ne("rounded-full px-3.5 py-1.5 text-sm transition-colors",t===r.v?"bg-ink text-paper":"text-mute hover:text-ink"),children:r.l},r.v))})]})}const Bse=[["Site em HTML",s.jsxs(s.Fragment,{children:["Abra o arquivo do rodapé e cole o código logo antes de ",s.jsx("code",{children:"</footer>"})," ou ",s.jsx("code",{children:"</body>"}),"."]})],["WordPress",s.jsxs(s.Fragment,{children:["Aparência > Widgets (ou Editor do site) > área do rodapé. Adicione um bloco ",s.jsx("strong",{children:"HTML personalizado"})," e cole o código."]})],["Elementor",s.jsxs(s.Fragment,{children:["No rodapé, arraste o widget ",s.jsx("strong",{children:"HTML"})," e cole o código dentro dele."]})],["Squarespace",s.jsxs(s.Fragment,{children:["Edite o rodapé, adicione um bloco de ",s.jsx("strong",{children:"Código"})," e cole o código."]})],["Webflow",s.jsxs(s.Fragment,{children:["No rodapé, adicione um elemento ",s.jsx("strong",{children:"Embed"})," e cole o código."]})],["Shopify",s.jsxs(s.Fragment,{children:["Tema > Editar código > ",s.jsx("code",{children:"sections/footer.liquid"}),". Cole o código antes do fechamento do rodapé."]})]],Vse=[["Um selo por site.","No rodapé, que aparece em todas as páginas. Repetir o selo na mesma página não soma nada."],["Não troque o texto do link.","A palavra Xpark precisa estar dentro do link."],["Só diga o que é verdade.",'Use "Avaliado" ou "Listado" apenas se o estacionamento estiver no Xpark, e "Parceiro" apenas com parceria formalizada.'],["Sem nofollow.","Alguns painéis marcam links externos como nofollow por padrão. Deixe essa opção desligada."]];
1051function Fse(){const[e,t]=x.useState("avaliado"),[a,o]=x.useState("moldura"),[r,n]=x.useState("claro"),[i,l]=x.useState(""),c=Dse(i),d={texto:e,formato:a,tema:r,parceiroSlug:c},u=x.useMemo(()=>Mse(d),[e,a,r,c]),m=MO[r],{copied:h,copy:p}=Lse();x.useEffect(()=>{$p("selo_pagina_vista")},[]);const f=(g,b)=>v=>{b(v),$p("selo_opcao_alterada",{campo:g,valor:v})};return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:"Selo de parceiro para o seu site | Xpark",description:"Gere o selo Xpark para o rodapé do seu site: escolha o texto, o formato e a cor, copie o código e veja como instalar em WordPress, Webflow e outras plataformas.",path:"/selo"}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"mb-3 block text-xs font-semibold uppercase tracking-[0.18em] text-gold-dark",children:"Para parceiros"}),"Selo de parceiro ",s.jsx("span",{className:"text-gold-dark",children:"Xpark"})]}),description:"Escolha o texto do selo, copie o código e cole no rodapé do seu site."}),s.jsx("section",{className:"bg-paper",children:s.jsxs("div",{className:"container grid gap-8 py-14 lg:grid-cols-[minmax(0,5fr)_minmax(0,7fr)]",children:[s.jsxs("div",{className:"space-y-7",children:[s.jsxs("fieldset",{children:[s.jsx("legend",{className:"mb-2 text-sm font-semibold text-ink",children:"O que o selo diz"}),s.jsx("div",{className:"space-y-2",role:"radiogroup",children:Object.keys($h).map(g=>s.jsxs("label",{className:ne("flex cursor-pointer gap-3 rounded-card border p-3.5 transition-colors",e===g?"border-ink bg-secondary":"border-border hover:border-ink/30"),children:[s.jsx("input",{type:"radio",name:"texto",value:g,checked:e===g,onChange:()=>f("texto",t)(g),className:"mt-1 accent-[hsl(var(--primary))]"}),s.jsxs("span",{children:[s.jsxs("span",{className:"block text-sm text-ink",children:[s.jsx("span",{className:"opacity-70",children:$h[g].prefix})," ",s.jsx("strong",{children:"Xpark"})]}),s.jsx("span",{className:"mt-0.5 block text-xs text-mute",children:$h[g].description})]})]},g))})]}),s.jsx(Kj,{label:"Formato",value:a,onChange:f("formato",o),options:[{v:"moldura",l:"Com moldura"},{v:"sem-moldura",l:"Sem moldura"},{v:"texto",l:"Só o texto"}]}),s.jsx(Kj,{label:"Cor do rodapé do site",value:r,onChange:f("tema",n),options:[{v:"claro",l:"Rodapé claro"},{v:"escuro",l:"Rodapé escuro"}]}),s.jsxs("div",{children:[s.jsx("label",{htmlFor:"parceiro",className:"mb-2 block text-sm font-semibold text-ink",children:"Nome do parceiro (opcional)"}),s.jsx(xo,{id:"parceiro",value:i,maxLength:80,onChange:g=>l(g.target.value),onBlur:()=>i&&$p("selo_opcao_alterada",{campo:"parceiro",valor:c}),placeholder:"Ex.: Hotel Aeroporto",className:"rounded-full"}),s.jsx("p",{className:"mt-1.5 text-xs text-mute",children:"Entra no link para o Xpark saber quantas visitas vieram do seu site."})]})]}),s.jsxs("div",{className:"min-w-0 space-y-4",children:[s.jsxs("div",{children:[s.jsx("p",{className:"mb-2 text-sm font-semibold text-ink",children:"Prévia"}),s.jsx("div",{className:"flex min-h-40 items-center justify-center rounded-card border border-border p-6",style:{background:m.footer},children:s.jsx("div",{dangerouslySetInnerHTML:{__html:u}})})]}),s.jsxs("div",{children:[s.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[s.jsx("p",{className:"text-sm font-semibold text-ink",children:"Código para colar"}),s.jsx(ue,{size:"sm",className:"rounded-full",onClick:()=>{p("code",u),$p("selo_codigo_copiado",{texto:e,formato:a,tema:r,parceiro_slug:c||"selo-parceiro"})},children:h==="code"?s.jsxs(s.Fragment,{children:[s.jsx(On,{className:"h-4 w-4"})," Copiado"]}):s.jsxs(s.Fragment,{children:[s.jsx(I1,{className:"h-4 w-4"})," Copiar"]})})]}),s.jsx("pre",{className:"max-h-64 overflow-auto whitespace-pre-wrap break-all rounded-card bg-ink p-4 font-mono text-xs leading-relaxed text-paper/85",children:u})]})]})]})}),s.jsx("section",{className:"bg-paper",children:s.jsxs("div",{className:"container py-14",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink md:text-3xl",children:"Onde colar no seu site?"}),s.jsx(zk,{type:"single",collapsible:!0,className:"mt-6 max-w-3xl",children:Bse.map(([g,b])=>s.jsxs(n0,{value:g,children:[s.jsx(s0,{children:g}),s.jsx(i0,{className:"text-mute",children:b})]},g))})]})}),s.jsx("section",{className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container py-14",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink md:text-3xl",children:"Quatro regras de uso"}),s.jsx("div",{className:"mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:Vse.map(([g,b],v)=>s.jsxs("article",{className:"rounded-card bg-secondary p-5",children:[s.jsx("span",{className:"flex h-8 w-8 items-center justify-center rounded-full bg-ink text-sm font-bold text-gold",children:v+1}),s.jsx("h3",{className:"mt-4 font-semibold text-ink",children:g}),s.jsx("p",{className:"mt-1.5 text-sm text-mute",children:b})]},g))})]})}),s.jsx("section",{className:"bg-paper pb-16",children:s.jsx("div",{className:"container",children:s.jsxs("div",{className:"rounded-panel bg-ink p-8 text-paper md:p-12",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold md:text-3xl",children:"Precisa de ajuda para instalar?"}),s.jsx("p",{className:"mt-3 max-w-2xl text-paper/75",children:"Mande o endereço do seu site e a gente devolve o código pronto para o seu rodapé."}),s.jsx(ue,{asChild:!0,className:"mt-6 rounded-full bg-gold text-ink hover:bg-gold/90",children:s.jsx("a",{href:"mailto:[email protected]?subject=Selo%20Xpark%20para%20o%20meu%20site",children:"Falar com o Xpark"})})]})})})]})}function Use(e){const t=x.useRef({value:e,previous:e});return x.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var h0="Switch",[Gse,o0e]=Ks(h0),[zse,Hse]=Gse(h0),LO=x.forwardRef((e,t)=>
1051{const{__scopeSwitch:a,name:o,checked:r,defaultChecked:n,required:i,disabled:l,value:c="on",onCheckedChange:d,form:u,...m}=e,[h,p]=x.useState(null),f=la(t,k=>p(k)),g=x.useRef(!1),b=h?u||!!h.closest("form"):!0,[v,y]=td({prop:r,defaultProp:n??!1,onChange:d,caller:h0});return s.jsxs(zse,{scope:a,checked:v,disabled:l,children:[s.jsx(yt.button,{type:"button",role:"switch","aria-checked":v,"aria-required":i,"data-state":UO(v),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:f,onClick:gt(e.onClick,k=>{y(w=>!w),b&&(g.current=k.isPropagationStopped(),g.current||k.stopPropagation())})}),b&&s.jsx(FO,{control:h,bubbles:!g.current,name:o,value:c,checked:v,required:i,disabled:l,form:u,style:{transform:"translateX(-100%)"}})]})});LO.displayName=h0;var BO="SwitchThumb",VO=x.forwardRef((e,t)=>{const{__scopeSwitch:a,...o}=e,r=Hse(BO,a);return s.jsx(yt.span,{"data-state":UO(r.checked),"data-disabled":r.disabled?"":void 0,...o,ref:t})});VO.displayName=BO;var Kse="SwitchBubbleInput",FO=x.forwardRef(({__scopeSwitch:e,control:t,checked:a,bubbles:o=!0,...r},n)=>{const i=x.useRef(null),l=la(i,n),c=Use(a),d=MT(t);return x.useEffect(()=>{const u=i.current;if(!u)return;const m=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==a&&p){const f=new Event("click",{bubbles:o});p.call(u,a),u.dispatchEvent(f)}},[c,a,o]),s.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:a,...r,tabIndex:-1,ref:l,style:{...r.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});FO.displayName=Kse;function UO(e){return e?"checked":"unchecked"}var GO=LO,Qse=VO;const zO=x.forwardRef(({className:e,...t},a)=>s.jsx(GO,{className:ne("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",e),...t,ref:a,children:s.jsx(Qse,{className:ne("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));zO.displayName=GO.displayName;async function Qj(e,t,a,o){const r={bookingId:e,method:t,payer:a,...o??{}},{data:n,error:i}=await ze.functions.invoke("mp-create-payment",{body:r});return i?{error:i.message}:n??{}}const Wse=["multipark","aerovalet","valetina","xpark","bandeira"];function tx(e="xpark"){const t=a=>!!a&&Wse.includes(a);try{const a=new URLSearchParams(window.location.search).get("src");if(t(a))return sessionStorage.setItem("xpark_source",a),a;const o=sessionStorage.getItem("xpark_source");if(t(o))return o}catch{}return e}async function HO(e){const{data:t,error:a}=await ze.functions.invoke("create-booking",{body:e});return a?{error:a.message}:t!=null&&t.error?{error:t.error}:t??{}}function Wj({airport:e,entrada:t,saida:a,entradaHora:o,saidaHora:r,src:n,keepDates:i=!0}){const l=new URLSearchParams({airport:e});return i&&(t&&l.set("entrada",t),a&&l.set("saida",a)),o&&l.set("entrada_hora",o),r&&l.set("saida_hora",r),n&&l.set("src",n),`/escolher?${l.toString()}`}function KO(e){const t=new URLSearchParams({airport:e.airport});return e.entrada&&t.set("entrada",e.entrada),e.saida&&t.set("saida",e.saida),e.entradaHora&&t.set("entrada_hora",e.entradaHora),e.saidaHora&&t.set("saida_hora",e.saidaHora),e.src&&t.set("src",e.src),`/?${t.toString()}#buscar`}function Jj(e,t){if(!e)return"-";const[a,o,r]=e.split("-").map(Number);if(!a||!o||!r)return"-";const n=new Date(a,o-1,r).toLocaleDateString("pt-BR");return t?`${n} Ã s ${t}`:n}function Jse(){const[e,t]=x.useState(null),[a,o]=x.useState(!1),[r,n]=x.useState(!0),i=x.useRef(null);return x.useEffect(()=>{let l=!1;return(async()=>{try{const{data:c}=await ze.functions.invoke("mp-config"),d=c==null?void 0:c.publicKey;if(!d||l)return;t(d);const u=()=>{window.MercadoPago&&!i.current&&(i.current=new window.MercadoPago(d,{locale:"pt-BR"}),o(!0))};if(document.getElementById("mp-sdk"))u();
vendor: 8,045 bytes, line 1051
1051else{const m=document.createElement("script");m.id="mp-sdk",m.src="https://sdk.mercadopago.com/js/v2",m.onload=u,document.body.appendChild(m)}}catch(c){console.warn("MP config not available",c)}finally{l||n(!1)}})(),()=>{l=!0}},[]),{publicKey:e,ready:a,loading:r,mp:i}}var ot;(function(e){e.assertEqual=r=>{};function t(r){}e.assertIs=t;function a(r){throw new Error}e.assertNever=a,e.arrayToEnum=r=>{const n={};for(const i of r)n[i]=i;return n},e.getValidEnumValues=r=>{const n=e.objectKeys(r).filter(l=>typeof r[r[l]]!="number"),i={};for(const l of n)i[l]=r[l];return e.objectValues(i)},e.objectValues=r=>e.objectKeys(r).map(function(n){return r[n]}),e.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{const n=[];for(const i in r)Object.prototype.hasOwnProperty.call(r,i)&&n.push(i);return n},e.find=(r,n)=>{for(const i of r)if(n(i))return i},e.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function o(r,n=" | "){return r.map(i=>typeof i=="string"?`'${i}'`:i).join(n)}e.joinValues=o,e.jsonStringifyReplacer=(r,n)=>typeof n=="bigint"?n.toString():n})(ot||(ot={}));var Xj;(function(e){e.mergeShapes=(t,a)=>({...t,...a})})(Xj||(Xj={}));const ke=ot.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),as=e=>{switch(typeof e){case"undefined":return ke.undefined;case"string":return ke.string;case"number":return Number.isNaN(e)?ke.nan:ke.number;case"boolean":return ke.boolean;case"function":return ke.function;case"bigint":return ke.bigint;case"symbol":return ke.symbol;case"object":return Array.isArray(e)?ke.array:e===null?ke.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?ke.promise:typeof Map<"u"&&e instanceof Map?ke.map:typeof Set<"u"&&e instanceof Set?ke.set:typeof Date<"u"&&e instanceof Date?ke.date:ke.object;default:return ke.unknown}},oe=ot.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class In extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=o=>{this.issues=[...this.issues,o]},this.addIssues=(o=[])=>{this.issues=[...this.issues,...o]};const a=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,a):this.__proto__=a,this.name="ZodError",this.issues=t}format(t){const a=t||function(n){return n.message},o={_errors:[]},r=n=>{for(const i of n.issues)if(i.code==="invalid_union")i.unionErrors.map(r);else if(i.code==="invalid_return_type")r(i.returnTypeError);else if(i.code==="invalid_arguments")r(i.argumentsError);else if(i.path.length===0)o._errors.push(a(i));else{let l=o,c=0;for(;c<i.path.length;){const d=i.path[c];c===i.path.length-1?(l[d]=l[d]||{_errors:[]},l[d]._errors.push(a(i))):l[d]=l[d]||{_errors:[]},l=l[d],c++}}};return r(this),o}static assert(t){if(!(t instanceof In))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,ot.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=a=>a.message){const a={},o=[];for(const r of this.issues)if(r.path.length>0){const n=r.path[0];a[n]=a[n]||[],a[n].push(t(r))}else o.push(t(r));return{formErrors:o,fieldErrors:a}}get formErrors(){return this.flatten()}}In.create=e=>new In(e);const o2=(e,t)=>{let a;switch(e.code){case oe.invalid_type:e.received===ke.undefined?a="Required":a=`Expected ${e.expected}, received ${e.received}`;break;case oe.invalid_literal:a=`Invalid literal value, expected ${JSON.stringify(e.expected,ot.jsonStringifyReplacer)}`;break;case oe.unrecognized_keys:a=`Unrecognized key(s) in object: ${ot.joinValues(e.keys,", ")}`;break;case oe.invalid_union:a="Invalid input";break;case oe.invalid_union_discriminator:a=`Invalid discriminator value. Expected ${ot.joinValues(e.options)}`;break;case oe.invalid_enum_value:a=`Invalid enum value. Expected ${ot.joinValues(e.options)}, received '${e.received}'`;break;case oe.invalid_arguments:a="Invalid function arguments";break;case oe.invalid_return_type:a="Invalid function return type";break;case oe.invalid_date:a="Invalid date";break;case oe.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(a=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(a=`${a} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?a=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?a=`Invalid input: must end with "${e.validation.endsWith}"`:ot.assertNever(e.validation):e.validation!=="regex"?a=`Invalid ${e.validation}`:a="Invalid";break;case oe.too_small:e.type==="array"?a=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?a=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?a=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?a=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?a=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:a="Invalid input";break;case oe.too_big:e.type==="array"?a=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?a=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?a=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?a=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?a=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:a="Invalid input";break;case oe.custom:a="Invalid input";break;case oe.invalid_intersection_types:a="Intersection results could not be merged";break;case oe.not_multiple_of:a=`Number must be a multiple of ${e.multipleOf}`;break;case oe.not_finite:a="Number must be finite";break;default:a=t.defaultError,ot.assertNever(e)}return{message:a}};let Xse=o2;function Yse(){return Xse}const Zse=e=>{const{data:t,path:a,errorMaps:o,issueData:r}=e,n=[...a,...r.path||[]],i={...r,path:n};if(r.message!==void 0)return{...r,path:n,message:r.message};let l="";const c=o.filter(d=>!!d).slice().reverse();for(const d of c)l=d(i,{data:t,defaultError:l}).message;return{...r,path:n,message:l}};function de(e,t){const a=Yse(),o=Zse({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,a,a===o2?void 0:o2].filter(r=>!!r)});e.common.issues.push(o)}class So{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,a){const o=[];for(const r of a){if(r.status==="aborted")return Me;r.status==="dirty"&&t.dirty(),o.push(r.value)}return{status:t.value,value:o}}static async mergeObjectAsync(t,a){const o=[];for(const r of a){const n=await r.key,i=await r.value;o.push({key:n,value:i})}return So.mergeObjectSync(t,o)}static mergeObjectSync(t,a){const o={};for(const r of a){const{key:n,value:i}=r;if(n.status==="aborted"||i.status==="aborted")return Me;n.status==="dirty"&&t.dirty(),i.status==="dirty"&&t.dirty(),n.value!=="__proto__"&&(typeof i.value<"u"||r.alwaysSet)&&(o[n.value]=i.value)}return{status:t.value,value:o}}}const Me=Object.freeze({status:"aborted"}),Qd=e=>({status:"dirty",value:e}),Jo=e=>
vendor: 5,882 bytes, line 1051
1051({status:"valid",value:e}),Yj=e=>e.status==="aborted",Zj=e=>e.status==="dirty",Vc=e=>e.status==="valid",Gf=e=>typeof Promise<"u"&&e instanceof Promise;var we;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(we||(we={}));class Fs{constructor(t,a,o,r){this._cachedPath=[],this.parent=t,this.data=a,this._path=o,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const eN=(e,t)=>{if(Vc(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const a=new In(e.common.issues);return this._error=a,this._error}}};function Ue(e){if(!e)return{};const{errorMap:t,invalid_type_error:a,required_error:o,description:r}=e;if(t&&(a||o))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:r}:{errorMap:(i,l)=>{const{message:c}=e;return i.code==="invalid_enum_value"?{message:c??l.defaultError}:typeof l.data>"u"?{message:c??o??l.defaultError}:i.code!=="invalid_type"?{message:l.defaultError}:{message:c??a??l.defaultError}},description:r}}class at{get description(){return this._def.description}_getType(t){return as(t.data)}_getOrReturnCtx(t,a){return a||{common:t.parent.common,data:t.data,parsedType:as(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new So,ctx:{common:t.parent.common,data:t.data,parsedType:as(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const a=this._parse(t);if(Gf(a))throw new Error("Synchronous parse encountered promise.");return a}_parseAsync(t){const a=this._parse(t);return Promise.resolve(a)}parse(t,a){const o=this.safeParse(t,a);if(o.success)return o.data;throw o.error}safeParse(t,a){const o={common:{issues:[],async:(a==null?void 0:a.async)??!1,contextualErrorMap:a==null?void 0:a.errorMap},path:(a==null?void 0:a.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:as(t)},r=this._parseSync({data:t,path:o.path,parent:o});return eN(o,r)}"~validate"(t){var o,r;const a={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:as(t)};if(!this["~standard"].async)try{const n=this._parseSync({data:t,path:[],parent:a});return Vc(n)?{value:n.value}:{issues:a.common.issues}}catch(n){(r=(o=n==null?void 0:n.message)==null?void 0:o.toLowerCase())!=null&&r.includes("encountered")&&(this["~standard"].async=!0),a.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:a}).then(n=>Vc(n)?{value:n.value}:{issues:a.common.issues})}async parseAsync(t,a){const o=await this.safeParseAsync(t,a);if(o.success)return o.data;throw o.error}async safeParseAsync(t,a){const o={common:{issues:[],contextualErrorMap:a==null?void 0:a.errorMap,async:!0},path:(a==null?void 0:a.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:as(t)},r=this._parse({data:t,path:o.path,parent:o}),n=await(Gf(r)?r:Promise.resolve(r));return eN(o,n)}refine(t,a){const o=r=>typeof a=="string"||typeof a>"u"?{message:a}:typeof a=="function"?a(r):a;return this._refinement((r,n)=>{const i=t(r),l=()=>n.addIssue({code:oe.custom,...o(r)});return typeof Promise<"u"&&i instanceof Promise?i.then(c=>c?!0:(l(),!1)):i?!0:(l(),!1)})}refinement(t,a){return this._refinement((o,r)=>t(o)?!0:(r.addIssue(typeof a=="function"?a(o,r):a),!1))}_refinement(t){return new Uc({schema:this,typeName:Le.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:a=>this["~validate"](a)}}optional(){return Ts.create(this,this._def)}nullable(){return Gc.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Xr.create(this)}promise(){return Qf.create(this,this._def)}or(t){return Hf.create([this,t],this._def)}and(t){return Kf.create(this,t,this._def)}transform(t){return new Uc({...Ue(this._def),schema:this,typeName:Le.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const a=typeof t=="function"?t:()=>t;return new n2({...Ue(this._def),innerType:this,defaultValue:a,typeName:Le.ZodDefault})}brand(){return new wie({typeName:Le.ZodBranded,type:this,...Ue(this._def)})}catch(t){const a=typeof t=="function"?t:()=>t;return new s2({...Ue(this._def),innerType:this,catchValue:a,typeName:Le.ZodCatch})}describe(t){const a=this.constructor;return new a({...this._def,description:t})}pipe(t){return uw.create(this,t)}readonly(){return i2.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const eie=/^c[^\s-]{8,}
vendor: 6,022 bytes, line 1051
1051$/i,tie=/^[0-9a-z]+$/,aie=/^[0-9A-HJKMNP-TV-Z]{26}$/i,oie=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,rie=/^[a-z0-9_-]{21}$/i,nie=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,sie=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,iie=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,lie="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let ax;const cie=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,die=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,uie=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,mie=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pie=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,hie=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,QO="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",fie=new RegExp(`^${QO}$`);function WO(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);const a=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${a}`}function gie(e){return new RegExp(`^${WO(e)}$`)}function vie(e){let t=`${QO}T${WO(e)}`;const a=[];return a.push(e.local?"Z?":"Z"),e.offset&&a.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${a.join("|")})`,new RegExp(`^${t}$`)}function xie(e,t){return!!((t==="v4"||!t)&&cie.test(e)||(t==="v6"||!t)&&uie.test(e))}function bie(e,t){if(!nie.test(e))return!1;try{const[a]=e.split(".");if(!a)return!1;const o=a.replace(/-/g,"+").replace(/_/g,"/").padEnd(a.length+(4-a.length%4)%4,"="),r=JSON.parse(atob(o));return!(typeof r!="object"||r===null||"typ"in r&&(r==null?void 0:r.typ)!=="JWT"||!r.alg||t&&r.alg!==t)}catch{return!1}}function yie(e,t){return!!((t==="v4"||!t)&&die.test(e)||(t==="v6"||!t)&&mie.test(e))}class ys extends at{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==ke.string){const n=this._getOrReturnCtx(t);return de(n,{code:oe.invalid_type,expected:ke.string,received:n.parsedType}),Me}const o=new So;let r;for(const n of this._def.checks)if(n.kind==="min")t.data.length<n.value&&(r=this._getOrReturnCtx(t,r),de(r,{code:oe.too_small,minimum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),o.dirty());else if(n.kind==="max")t.data.length>n.value&&(r=this._getOrReturnCtx(t,r),de(r,{code:oe.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),o.dirty());else if(n.kind==="length"){const i=t.data.length>n.value,l=t.data.length<n.value;(i||l)&&(r=this._getOrReturnCtx(t,r),i?de(r,{code:oe.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!0,message:n.message}):l&&de(r,{code:oe.too_small,minimum:n.value,type:"string",inclusive:!0,exact:!0,message:n.message}),o.dirty())}else if(n.kind==="email")iie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"email",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="emoji")ax||(ax=new RegExp(lie,"u")),ax.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"emoji",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="uuid")oie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"uuid",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="nanoid")rie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"nanoid",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="cuid")eie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"cuid",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="cuid2")tie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"cuid2",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="ulid")aie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"ulid",code:oe.invalid_string,message:n.message}),o.dirty());else if(n.kind==="url")try{new URL(t.data)}catch{r=this._getOrReturnCtx(t,r),de(r,{validation:"url",code:oe.invalid_string,message:n.message}),o.dirty()}else n.kind==="regex"?(n.regex.lastIndex=0,n.regex.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"regex",code:oe.invalid_string,message:n.message}),o.dirty())):n.kind==="trim"?t.data=t.data.trim():n.kind==="includes"?t.data.includes(n.value,
vendor: 4,665 bytes, line 1051
1051n.position)||(r=this._getOrReturnCtx(t,r),de(r,{code:oe.invalid_string,validation:{includes:n.value,position:n.position},message:n.message}),o.dirty()):n.kind==="toLowerCase"?t.data=t.data.toLowerCase():n.kind==="toUpperCase"?t.data=t.data.toUpperCase():n.kind==="startsWith"?t.data.startsWith(n.value)||(r=this._getOrReturnCtx(t,r),de(r,{code:oe.invalid_string,validation:{startsWith:n.value},message:n.message}),o.dirty()):n.kind==="endsWith"?t.data.endsWith(n.value)||(r=this._getOrReturnCtx(t,r),de(r,{code:oe.invalid_string,validation:{endsWith:n.value},message:n.message}),o.dirty()):n.kind==="datetime"?vie(n).test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{code:oe.invalid_string,validation:"datetime",message:n.message}),o.dirty()):n.kind==="date"?fie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{code:oe.invalid_string,validation:"date",message:n.message}),o.dirty()):n.kind==="time"?gie(n).test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{code:oe.invalid_string,validation:"time",message:n.message}),o.dirty()):n.kind==="duration"?sie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"duration",code:oe.invalid_string,message:n.message}),o.dirty()):n.kind==="ip"?xie(t.data,n.version)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"ip",code:oe.invalid_string,message:n.message}),o.dirty()):n.kind==="jwt"?bie(t.data,n.alg)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"jwt",code:oe.invalid_string,message:n.message}),o.dirty()):n.kind==="cidr"?yie(t.data,n.version)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"cidr",code:oe.invalid_string,message:n.message}),o.dirty()):n.kind==="base64"?pie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"base64",code:oe.invalid_string,message:n.message}),o.dirty()):n.kind==="base64url"?hie.test(t.data)||(r=this._getOrReturnCtx(t,r),de(r,{validation:"base64url",code:oe.invalid_string,message:n.message}),o.dirty()):ot.assertNever(n);return{status:o.value,value:t.data}}_regex(t,a,o){return this.refinement(r=>t.test(r),{validation:a,code:oe.invalid_string,...we.errToObj(o)})}_addCheck(t){return new ys({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...we.errToObj(t)})}url(t){return this._addCheck({kind:"url",...we.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...we.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...we.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...we.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...we.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...we.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...we.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...we.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...we.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...we.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...we.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...we.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,offset:(t==null?void 0:t.offset)??!1,local:(t==null?void 0:t.local)??!1,...we.errToObj(t==null?void 0:t.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof(t==null?void 0:t.precision)>"u"?null:t==null?void 0:t.precision,...we.errToObj(t==null?void 0:t.message)})}duration(t){return this._addCheck({kind:"duration",...we.errToObj(t)})}regex(t,a){return this._addCheck({kind:"regex",regex:t,...we.errToObj(a)})}includes(t,a){return this._addCheck({kind:"includes",value:t,position:a==null?void 0:a.position,...we.errToObj(a==null?void 0:a.message)})}startsWith(t,a){return this._addCheck({kind:"startsWith",value:t,...we.errToObj(a)})}endsWith(t,a){return this._addCheck({kind:"endsWith",value:t,...we.errToObj(a)})}min(t,a){return this._addCheck({kind:"min",value:t,...we.errToObj(a)})}max(t,a){return this._addCheck({kind:"max",value:t,...we.errToObj(a)})}length(t,a){return this._addCheck({kind:"length",value:t,...we.errToObj(a)})}nonempty(t){return this.min(1,we.errToObj(t))}trim(){return new ys({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ys({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ys({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}
vendor: 4,672 bytes, line 1051
1051get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(const a of this._def.checks)a.kind==="min"&&(t===null||a.value>t)&&(t=a.value);return t}get maxLength(){let t=null;for(const a of this._def.checks)a.kind==="max"&&(t===null||a.value<t)&&(t=a.value);return t}}ys.create=e=>new ys({checks:[],typeName:Le.ZodString,coerce:(e==null?void 0:e.coerce)??!1,...Ue(e)});function kie(e,t){const a=(e.toString().split(".")[1]||"").length,o=(t.toString().split(".")[1]||"").length,r=a>o?a:o,n=Number.parseInt(e.toFixed(r).replace(".","")),i=Number.parseInt(t.toFixed(r).replace(".",""));return n%i/10**r}class rm extends at{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==ke.number){const n=this._getOrReturnCtx(t);return de(n,{code:oe.invalid_type,expected:ke.number,received:n.parsedType}),Me}let o;const r=new So;for(const n of this._def.checks)n.kind==="int"?ot.isInteger(t.data)||(o=this._getOrReturnCtx(t,o),de(o,{code:oe.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):n.kind==="min"?(n.inclusive?t.data<n.value:t.data<=n.value)&&(o=this._getOrReturnCtx(t,o),de(o,{code:oe.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="max"?(n.inclusive?t.data>n.value:t.data>=n.value)&&(o=this._getOrReturnCtx(t,o),de(o,{code:oe.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="multipleOf"?kie(t.data,n.value)!==0&&(o=this._getOrReturnCtx(t,o),de(o,{code:oe.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):n.kind==="finite"?Number.isFinite(t.data)||(o=this._getOrReturnCtx(t,o),de(o,{code:oe.not_finite,message:n.message}),r.dirty()):ot.assertNever(n);return{status:r.value,value:t.data}}gte(t,a){return this.setLimit("min",t,!0,we.toString(a))}gt(t,a){return this.setLimit("min",t,!1,we.toString(a))}lte(t,a){return this.setLimit("max",t,!0,we.toString(a))}lt(t,a){return this.setLimit("max",t,!1,we.toString(a))}setLimit(t,a,o,r){return new rm({...this._def,checks:[...this._def.checks,{kind:t,value:a,inclusive:o,message:we.toString(r)}]})}_addCheck(t){return new rm({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:we.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:we.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:we.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:we.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:we.toString(t)})}multipleOf(t,a){return this._addCheck({kind:"multipleOf",value:t,message:we.toString(a)})}finite(t){return this._addCheck({kind:"finite",message:we.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:we.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:we.toString(t)})}get minValue(){let t=null;for(const a of this._def.checks)a.kind==="min"&&(t===null||a.value>t)&&(t=a.value);return t}get maxValue(){let t=null;for(const a of this._def.checks)a.kind==="max"&&(t===null||a.value<t)&&(t=a.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&ot.isInteger(t.value))}get isFinite(){let t=null,a=null;for(const o of this._def.checks){if(o.kind==="finite"||o.kind==="int"||o.kind==="multipleOf")return!0;o.kind==="min"?(a===null||o.value>a)&&(a=o.value):o.kind==="max"&&(t===null||o.value<t)&&(t=o.value)}return Number.isFinite(a)&&Number.isFinite(t)}
vendor: 4,134 bytes, line 1051
1051}rm.create=e=>new rm({checks:[],typeName:Le.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...Ue(e)});class nm extends at{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==ke.bigint)return this._getInvalidInput(t);let o;const r=new So;for(const n of this._def.checks)n.kind==="min"?(n.inclusive?t.data<n.value:t.data<=n.value)&&(o=this._getOrReturnCtx(t,o),de(o,{code:oe.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="max"?(n.inclusive?t.data>n.value:t.data>=n.value)&&(o=this._getOrReturnCtx(t,o),de(o,{code:oe.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="multipleOf"?t.data%n.value!==BigInt(0)&&(o=this._getOrReturnCtx(t,o),de(o,{code:oe.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):ot.assertNever(n);return{status:r.value,value:t.data}}_getInvalidInput(t){const a=this._getOrReturnCtx(t);return de(a,{code:oe.invalid_type,expected:ke.bigint,received:a.parsedType}),Me}gte(t,a){return this.setLimit("min",t,!0,we.toString(a))}gt(t,a){return this.setLimit("min",t,!1,we.toString(a))}lte(t,a){return this.setLimit("max",t,!0,we.toString(a))}lt(t,a){return this.setLimit("max",t,!1,we.toString(a))}setLimit(t,a,o,r){return new nm({...this._def,checks:[...this._def.checks,{kind:t,value:a,inclusive:o,message:we.toString(r)}]})}_addCheck(t){return new nm({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:we.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:we.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:we.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:we.toString(t)})}multipleOf(t,a){return this._addCheck({kind:"multipleOf",value:t,message:we.toString(a)})}get minValue(){let t=null;for(const a of this._def.checks)a.kind==="min"&&(t===null||a.value>t)&&(t=a.value);return t}get maxValue(){let t=null;for(const a of this._def.checks)a.kind==="max"&&(t===null||a.value<t)&&(t=a.value);return t}}nm.create=e=>new nm({checks:[],typeName:Le.ZodBigInt,coerce:(e==null?void 0:e.coerce)??!1,...Ue(e)});class tN extends at{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ke.boolean){const o=this._getOrReturnCtx(t);return de(o,{code:oe.invalid_type,expected:ke.boolean,received:o.parsedType}),Me}return Jo(t.data)}}tN.create=e=>new tN({typeName:Le.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...Ue(e)});class zf extends at{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==ke.date){const n=this._getOrReturnCtx(t);return de(n,{code:oe.invalid_type,expected:ke.date,received:n.parsedType}),Me}if(Number.isNaN(t.data.getTime())){const n=this._getOrReturnCtx(t);return de(n,{code:oe.invalid_date}),Me}const o=new So;let r;for(const n of this._def.checks)n.kind==="min"?t.data.getTime()<n.value&&(r=this._getOrReturnCtx(t,r),de(r,{code:oe.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),o.dirty()):n.kind==="max"?t.data.getTime()>n.value&&(r=this._getOrReturnCtx(t,r),de(r,{code:oe.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),o.dirty()):ot.assertNever(n);return{status:o.value,value:new Date(t.data.getTime())}}_addCheck(t){return new zf({...this._def,checks:[...this._def.checks,t]})}min(t,a){return this._addCheck({kind:"min",value:t.getTime(),message:we.toString(a)})}max(t,a){return this._addCheck({kind:"max",value:t.getTime(),message:we.toString(a)})}get minDate(){let t=null;for(const a of this._def.checks)a.kind==="min"&&(t===null||a.value>t)&&(t=a.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const a of this._def.checks)a.kind==="max"&&(t===null||a.value<t)&&(t=a.value);return t!=null?new Date(t):null}}zf.create=e=>new zf({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:Le.ZodD
vendor: 18,109 bytes, line 1051
1051ate,...Ue(e)});class aN extends at{_parse(t){if(this._getType(t)!==ke.symbol){const o=this._getOrReturnCtx(t);return de(o,{code:oe.invalid_type,expected:ke.symbol,received:o.parsedType}),Me}return Jo(t.data)}}aN.create=e=>new aN({typeName:Le.ZodSymbol,...Ue(e)});class oN extends at{_parse(t){if(this._getType(t)!==ke.undefined){const o=this._getOrReturnCtx(t);return de(o,{code:oe.invalid_type,expected:ke.undefined,received:o.parsedType}),Me}return Jo(t.data)}}oN.create=e=>new oN({typeName:Le.ZodUndefined,...Ue(e)});class rN extends at{_parse(t){if(this._getType(t)!==ke.null){const o=this._getOrReturnCtx(t);return de(o,{code:oe.invalid_type,expected:ke.null,received:o.parsedType}),Me}return Jo(t.data)}}rN.create=e=>new rN({typeName:Le.ZodNull,...Ue(e)});class nN extends at{constructor(){super(...arguments),this._any=!0}_parse(t){return Jo(t.data)}}nN.create=e=>new nN({typeName:Le.ZodAny,...Ue(e)});class sN extends at{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Jo(t.data)}}sN.create=e=>new sN({typeName:Le.ZodUnknown,...Ue(e)});class Us extends at{_parse(t){const a=this._getOrReturnCtx(t);return de(a,{code:oe.invalid_type,expected:ke.never,received:a.parsedType}),Me}}Us.create=e=>new Us({typeName:Le.ZodNever,...Ue(e)});class iN extends at{_parse(t){if(this._getType(t)!==ke.undefined){const o=this._getOrReturnCtx(t);return de(o,{code:oe.invalid_type,expected:ke.void,received:o.parsedType}),Me}return Jo(t.data)}}iN.create=e=>new iN({typeName:Le.ZodVoid,...Ue(e)});class Xr extends at{_parse(t){const{ctx:a,status:o}=this._processInputParams(t),r=this._def;if(a.parsedType!==ke.array)return de(a,{code:oe.invalid_type,expected:ke.array,received:a.parsedType}),Me;if(r.exactLength!==null){const i=a.data.length>r.exactLength.value,l=a.data.length<r.exactLength.value;(i||l)&&(de(a,{code:i?oe.too_big:oe.too_small,minimum:l?r.exactLength.value:void 0,maximum:i?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),o.dirty())}if(r.minLength!==null&&a.data.length<r.minLength.value&&(de(a,{code:oe.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),o.dirty()),r.maxLength!==null&&a.data.length>r.maxLength.value&&(de(a,{code:oe.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),o.dirty()),a.common.async)return Promise.all([...a.data].map((i,l)=>r.type._parseAsync(new Fs(a,i,a.path,l)))).then(i=>So.mergeArray(o,i));const n=[...a.data].map((i,l)=>r.type._parseSync(new Fs(a,i,a.path,l)));return So.mergeArray(o,n)}get element(){return this._def.type}min(t,a){return new Xr({...this._def,minLength:{value:t,message:we.toString(a)}})}max(t,a){return new Xr({...this._def,maxLength:{value:t,message:we.toString(a)}})}length(t,a){return new Xr({...this._def,exactLength:{value:t,message:we.toString(a)}})}nonempty(t){return this.min(1,t)}}Xr.create=(e,t)=>new Xr({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Le.ZodArray,...Ue(t)});function jl(e){if(e instanceof Ut){const t={};for(const a in e.shape){const o=e.shape[a];t[a]=Ts.create(jl(o))}return new Ut({...e._def,shape:()=>t})}else return e instanceof Xr?new Xr({...e._def,type:jl(e.element)}):e instanceof Ts?Ts.create(jl(e.unwrap())):e instanceof Gc?Gc.create(jl(e.unwrap())):e instanceof Xi?Xi.create(e.items.map(t=>jl(t))):e}class Ut extends at{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),a=ot.objectKeys(t);return this._cached={shape:t,keys:a},this._cached}_parse(t){if(this._getType(t)!==ke.object){const d=this._getOrReturnCtx(t);return de(d,{code:oe.invalid_type,expected:ke.object,received:d.parsedType}),Me}const{status:o,ctx:r}=this._processInputParams(t),{shape:n,keys:i}=this._getCached(),l=[];if(!(this._def.catchall instanceof Us&&this._def.unknownKeys==="strip"))for(const d in r.data)i.includes(d)||l.push(d);const c=[];for(const d of i){const u=n[d],m=r.data[d];c.push({key:{status:"valid",value:d},value:u._parse(new Fs(r,m,r.path,d)),alwaysSet:d in r.data})}if(this._def.catchall instanceof Us){const d=this._def.unknownKeys;if(d==="passthrough")for(const u of l)c.push({key:{status:"valid",value:u},value:{status:"valid",value:r.data[u]}});else if(d==="strict")l.length>0&&(de(r,{code:oe.unrecognized_keys,keys:l}),o.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const d=this._def.catchall;for(const u of l){const m=r.data[u];c.push({key:{status:"valid",value:u},value:d._parse(new Fs(r,m,r.path,u)),alwaysSet:u in r.data})}}return r.common.async?Promise.resolve().then(async()=>{const d=[];for(const u of c){const m=await u.key,h=await u.value;d.push({key:m,value:h,alwaysSet:u.alwaysSet})}return d}).then(d=>So.mergeObjectSync(o,d)):So.mergeObjectSync(o,c)}get shape(){return this._def.shape()}strict(t){return we.errToObj,new Ut({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(a,o)=>{var n,i;const r=((i=(n=this._def).errorMap)==null?void 0:i.call(n,a,o).message)??o.defaultError;return a.code==="unrecognized_keys"?{message:we.errToObj(t).message??r}:{message:r}}}:{}})}strip(){return new Ut({...this._def,unknownKeys:"strip"})}passthrough(){return new Ut({...this._def,unknownKeys:"passthrough"})}extend(t){return new Ut({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Ut({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Le.ZodObject})}setKey(t,a){return this.augment({[t]:a})}catchall(t){return new Ut({...this._def,catchall:t})}pick(t){const a={};for(const o of ot.objectKeys(t))t[o]&&this.shape[o]&&(a[o]=this.shape[o]);return new Ut({...this._def,shape:()=>a})}omit(t){const a={};for(const o of ot.objectKeys(this.shape))t[o]||(a[o]=this.shape[o]);return new Ut({...this._def,shape:()=>a})}deepPartial(){return jl(this)}partial(t){const a={};for(const o of ot.objectKeys(this.shape)){const r=this.shape[o];t&&!t[o]?a[o]=r:a[o]=r.optional()}return new Ut({...this._def,shape:()=>a})}required(t){const a={};for(const o of ot.objectKeys(this.shape))if(t&&!t[o])a[o]=this.shape[o];else{let n=this.shape[o];for(;n instanceof Ts;)n=n._def.innerType;a[o]=n}return new Ut({...this._def,shape:()=>a})}keyof(){return JO(ot.objectKeys(this.shape))}}Ut.create=(e,t)=>new Ut({shape:()=>e,unknownKeys:"strip",catchall:Us.create(),typeName:Le.ZodObject,...Ue(t)});Ut.strictCreate=(e,t)=>new Ut({shape:()=>e,unknownKeys:"strict",catchall:Us.create(),typeName:Le.ZodObject,...Ue(t)});Ut.lazycreate=(e,t)=>new Ut({shape:e,unknownKeys:"strip",catchall:Us.create(),typeName:Le.ZodObject,...Ue(t)});class Hf extends at{_parse(t){const{ctx:a}=this._processInputParams(t),o=this._def.options;function r(n){for(const l of n)if(l.result.status==="valid")return l.result;for(const l of n)if(l.result.status==="dirty")return a.common.issues.push(...l.ctx.common.issues),l.result;const i=n.map(l=>new In(l.ctx.common.issues));return de(a,{code:oe.invalid_union,unionErrors:i}),Me}if(a.common.async)return Promise.all(o.map(async n=>{const i={...a,common:{...a.common,issues:[]},parent:null};return{result:await n._parseAsync({data:a.data,path:a.path,parent:i}),ctx:i}})).then(r);{let n;const i=[];for(const c of o){const d={...a,common:{...a.common,issues:[]},parent:null},u=c._parseSync({data:a.data,path:a.path,parent:d});if(u.status==="valid")return u;u.status==="dirty"&&!n&&(n={result:u,ctx:d}),d.common.issues.length&&i.push(d.common.issues)}if(n)return a.common.issues.push(...n.ctx.common.issues),n.result;const l=i.map(c=>new In(c));return de(a,{code:oe.invalid_union,unionErrors:l}),Me}}get options(){return this._def.options}}Hf.create=(e,t)=>new Hf({options:e,typeName:Le.ZodUnion,...Ue(t)});function r2(e,t){const a=as(e),o=as(t);if(e===t)return{valid:!0,data:e};if(a===ke.object&&o===ke.object){const r=ot.objectKeys(t),n=ot.objectKeys(e).filter(l=>r.indexOf(l)!==-1),i={...e,...t};for(const l of n){const c=r2(e[l],t[l]);if(!c.valid)return{valid:!1};i[l]=c.data}return{valid:!0,data:i}}else if(a===ke.array&&o===ke.array){if(e.length!==t.length)return{valid:!1};const r=[];for(let n=0;n<e.length;n++){const i=e[n],l=t[n],c=r2(i,l);if(!c.valid)return{valid:!1};r.push(c.data)}return{valid:!0,data:r}}else return a===ke.date&&o===ke.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}class Kf extends at{_parse(t){const{status:a,ctx:o}=this._processInputParams(t),r=(n,i)=>{if(Yj(n)||Yj(i))return Me;const l=r2(n.value,i.value);return l.valid?((Zj(n)||Zj(i))&&a.dirty(),{status:a.value,value:l.data}):(de(o,{code:oe.invalid_intersection_types}),Me)};return o.common.async?Promise.all([this._def.left._parseAsync({data:o.data,path:o.path,parent:o}),this._def.right._parseAsync({data:o.data,path:o.path,parent:o})]).then(([n,i])=>r(n,i)):r(this._def.left._parseSync({data:o.data,path:o.path,parent:o}),this._def.right._parseSync({data:o.data,path:o.path,parent:o}))}}Kf.create=(e,t,a)=>new Kf({left:e,right:t,typeName:Le.ZodIntersection,...Ue(a)});class Xi extends at{_parse(t){const{status:a,ctx:o}=this._processInputParams(t);if(o.parsedType!==ke.array)return de(o,{code:oe.invalid_type,expected:ke.array,received:o.parsedType}),Me;if(o.data.length<this._def.items.length)return de(o,{code:oe.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),Me;!this._def.rest&&o.data.length>this._def.items.length&&(de(o,{code:oe.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),a.dirty());const n=[...o.data].map((i,l)=>{const c=this._def.items[l]||this._def.rest;return c?c._parse(new Fs(o,i,o.path,l)):null}).filter(i=>!!i);return o.common.async?Promise.all(n).then(i=>So.mergeArray(a,i)):So.mergeArray(a,n)}get items(){return this._def.items}rest(t){return new Xi({...this._def,rest:t})}}Xi.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Xi({items:e,typeName:Le.ZodTuple,rest:null,...Ue(t)})};class lN extends at{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:a,ctx:o}=this._processInputParams(t);if(o.parsedType!==ke.map)return de(o,{code:oe.invalid_type,expected:ke.map,received:o.parsedType}),Me;const r=this._def.keyType,n=this._def.valueType,i=[...o.data.entries()].map(([l,c],d)=>({key:r._parse(new Fs(o,l,o.path,[d,"key"])),value:n._parse(new Fs(o,c,o.path,[d,"value"]))}));if(o.common.async){const l=new Map;return Promise.resolve().then(async()=>{for(const c of i){const d=await c.key,u=await c.value;if(d.status==="aborted"||u.status==="aborted")return Me;(d.status==="dirty"||u.status==="dirty")&&a.dirty(),l.set(d.value,u.value)}return{status:a.value,value:l}})}else{const l=new Map;for(const c of i){const d=c.key,u=c.value;if(d.status==="aborted"||u.status==="aborted")return Me;(d.status==="dirty"||u.status==="dirty")&&a.dirty(),l.set(d.value,u.value)}return{status:a.value,value:l}}}}lN.create=(e,t,a)=>new lN({valueType:t,keyType:e,typeName:Le.ZodMap,...Ue(a)});class sm extends at{_parse(t){const{status:a,ctx:o}=this._processInputParams(t);if(o.parsedType!==ke.set)return de(o,{code:oe.invalid_type,expected:ke.set,received:o.parsedType}),Me;const r=this._def;r.minSize!==null&&o.data.size<r.minSize.value&&(de(o,{code:oe.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),a.dirty()),r.maxSize!==null&&o.data.size>r.maxSize.value&&(de(o,{code:oe.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),a.dirty());const n=this._def.valueType;function i(c){const d=new Set;for(const u of c){if(u.status==="aborted")return Me;u.status==="dirty"&&a.dirty(),d.add(u.value)}return{status:a.value,value:d}}const l=[...o.data.values()].map((c,d)=>n._parse(new Fs(o,c,o.path,d)));return o.common.async?Promise.all(l).then(c=>i(c)):i(l)}min(t,a){return new sm({...this._def,minSize:{value:t,message:we.toString(a)}})}max(t,a){return new sm({...this._def,maxSize:{value:t,message:we.toString(a)}})}size(t,a){return this.min(t,a).max(t,a)}nonempty(t){return this.min(1,t)}}sm.create=(e,t)=>new sm({valueType:e,minSize:null,maxSize:null,typeName:Le.ZodSet,...Ue(t)});class cN extends at{get schema(){return this._def.getter()}_parse(t){const{ctx:a}=this._processInputParams(t);return this._def.getter()._parse({data:a.data,path:a.path,parent:a})}}cN.create=(e,t)=>new cN({getter:e,typeName:Le.ZodLazy,...Ue(t)});class dN extends at{_parse(t){if(t.data!==this._def.value){const a=this._getOrReturnCtx(t);return de(a,{received:a.data,code:oe.invalid_literal,expected:this._def.value}),Me}return{status:"valid",value:t.data}}get value(){return this._def.value}}dN.create=(e,t)=>new dN({value:e,typeName:Le.ZodLiteral,...Ue(t)});function JO(e,t){return new Fc({values:e,typeName:Le.ZodEnum,...Ue(t)})}class Fc extends at{_parse(t){if(typeof t.data!="string"){const a=this._getOrReturnCtx(t),o=this._def.values;return de(a,{expected:ot.joinValues(o),received:a.parsedType,code:oe.invalid_type}),Me}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){const a=this._getOrReturnCtx(t),o=this._def.values;return de(a,{received:a.data,code:oe.invalid_enum_value,options:o}),Me}return Jo(t.data)}get options(){return this._def.values}get enum(){const t={};for(const a of this._def.values)t[a]=a;return t}get Values(){const t={};for(const a of this._def.values)t[a]=a;return t}get Enum(){const t={};for(const a of this._def.values)t[a]=a;return t}extract(t,a=this._def){return Fc.create(t,{...this._def,...a})}exclude(t,a=this._def){return Fc.create(this.options.filter(o=>!t.includes(o)),{...this._def,...a})}}Fc.create=JO;class uN extends at{_parse(t){const a=ot.getValidEnumValues(this._def.values),o=this._getOrReturnCtx(t);if(o.parsedType!==ke.string&&o.parsedType!==ke.number){const r=ot.objectValues(a);return de(o,{expected:ot.joinValues(r),received:o.parsedType,code:oe.invalid_type}),Me}if(this._cache||(this._cache=new Set(ot.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){const r=ot.objectValues(a);return de(o,{received:o.data,code:oe.invalid_enum_value,options:r}),Me}return Jo(t.data)}get enum(){return this._def.values}}uN.create=(e,t)=>new uN({values:e,typeName:Le.ZodNativeEnum,...Ue(t)});class Qf extends at{unwrap(){return this._def.type}_parse(t){const{ctx:a}=this._processInputParams(t);if(a.parsedType!==ke.promise&&a.common.async===!1)return de(a,{code:oe.invalid_type,expected:ke.promise,received:a.parsedType}),Me;const o=a.parsedType===ke.promise?a.data:Promise.resolve(a.data);return Jo(o.then(r=>this._def.type.parseAsync(r,{path:a.path,errorMap:a.common.contextualErrorMap})))}}Qf.create=(e,t)=>new Qf({type:e,typeName:Le.ZodPromise,...Ue(t)});class Uc extends at{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Le.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:a,ctx:o}=this._processInputParams(t),r=this._def.effect||null,n={addIssue:i=>{de(o,i),i.fatal?a.abort():a.dirty()},get path(){return o.path}};if(n.addIssue=n.addIssue.bind(n),r.type==="preprocess"){const i=r.transform(o.data,n);if(o.common.async)return Promise.resolve(i).then(async l=>{if(a.value==="aborted")return Me;const c=await this._def.schema._parseAsync({data:l,path:o.path,parent:o});return c.status==="aborted"?Me:c.status==="dirty"||a.value==="dirty"?Qd(c.value):c});{if(a.value==="aborted")return Me;const l=this._def.schema._parseSync({data:i,path:o.path,parent:o});return l.status==="aborted"?Me:l.status==="dirty"||a.value==="dirty"?Qd(l.value):l}}if(r.type==="refinement"){const i=l=>{const c=r.refinement(l,n);if(o.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(o.common.async===!1){const l=this._def.schema._parseSync({data:o.data,path:o.path,parent:o});return l.status==="aborted"?Me:(l.status==="dirty"&&a.dirty(),i(l.value),{status:a.value,value:l.value})}else return this._def.schema._parseAsync({data:o.data,path:o.path,parent:o}).then(l=>l.status==="aborted"?Me:(l.status==="dirty"&&a.dirty(),i(l.value).then(()=>({status:a.value,value:l.value}))))}if(r.type==="transform")if(o.common.async===!1){const i=this._def.schema._parseSync({data:o.data,path:o.path,parent:o});if(!Vc(i))return Me;const l=r.transform(i.value,n);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:a.value,value:l}}else return this._def.schema._parseAsync({data:o.data,path:o.path,parent:o}).then(i=>Vc(i)?Promise.resolve(r.transform(i.value,n)).then(l=>({status:a.value,value:l})):Me);ot.assertNever(r)}}Uc.create=(e,t,a)=>new Uc({schema:e,typeName:Le.ZodEffects,effect:t,...Ue(a)});Uc.createWithPreprocess=(e,t,a)=>new Uc({schema:t,effect:{type:"preprocess",transform:e},typeName:Le.ZodEffects,...Ue(a)});class Ts extends at{_parse(t){return this._getType(t)===ke.undefined?Jo(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ts.create=(e,t)=>new Ts({innerType:e,typeName:Le.ZodOptional,...Ue(t)});class Gc extends at{_parse(t){return this._getType(t)===ke.null?Jo(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Gc.create=(e,t)=>new Gc({innerType:e,typeName:Le.ZodNullable,...Ue(t)});class n2 extends at{_parse(t){const{ctx:a}=this._processInputParams(t);let o=a.data;return a.parsedType===ke.undefined&&(o=this._def.defaultValue()),this._def.innerType._parse({data:o,path:a.path,parent:a})}removeDefault(){return this._def.innerType}}n2.create=(e,t)=>new n2({innerType:e,typeName:Le.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Ue(t)});class s2 extends at{_parse(t){const{ctx:a}=this._processInputParams(t),o={...a,common:{...a.common,issues:[]}},r=this._def.innerType._parse({data:o.data,path:o.path,parent:{...o}});return Gf(r)?r.then(n=>
1051({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new In(o.common.issues)},input:o.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new In(o.common.issues)},input:o.data})}}removeCatch(){return this._def.innerType}}s2.create=(e,t)=>new s2({innerType:e,typeName:Le.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Ue(t)});class mN extends at{_parse(t){if(this._getType(t)!==ke.nan){const o=this._getOrReturnCtx(t);return de(o,{code:oe.invalid_type,expected:ke.nan,received:o.parsedType}),Me}return{status:"valid",value:t.data}}}mN.create=e=>new mN({typeName:Le.ZodNaN,...Ue(e)});class wie extends at{_parse(t){const{ctx:a}=this._processInputParams(t),o=a.data;return this._def.type._parse({data:o,path:a.path,parent:a})}unwrap(){return this._def.type}}class uw extends at{_parse(t){const{status:a,ctx:o}=this._processInputParams(t);if(o.common.async)return(async()=>{const n=await this._def.in._parseAsync({data:o.data,path:o.path,parent:o});return n.status==="aborted"?Me:n.status==="dirty"?(a.dirty(),Qd(n.value)):this._def.out._parseAsync({data:n.value,path:o.path,parent:o})})();{const r=this._def.in._parseSync({data:o.data,path:o.path,parent:o});return r.status==="aborted"?Me:r.status==="dirty"?(a.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:o.path,parent:o})}}static create(t,a){return new uw({in:t,out:a,typeName:Le.ZodPipeline})}}class i2 extends at{_parse(t){const a=this._def.innerType._parse(t),o=r=>(Vc(r)&&(r.value=Object.freeze(r.value)),r);return Gf(a)?a.then(r=>o(r)):o(a)}unwrap(){return this._def.innerType}}i2.create=(e,t)=>new i2({innerType:e,typeName:Le.ZodReadonly,...Ue(t)});Ut.lazycreate;var Le;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(Le||(Le={}));const os=ys.create;Us.create;Xr.create;const Cie=Ut.create;Ut.strictCreate;Hf.create;Kf.create;Xi.create;Fc.create;Qf.create;Ts.create;Gc.create;const Pie=Cie({cardNumber:os().regex(/^\d{13,19}$/,"Número de cartão inválido"),cardName:os().trim().min(2,"Nome do titular obrigatório").max(120),mm:os().regex(/^(0[1-9]|1[0-2])$/,"Mês inválido"),yy:os().regex(/^\d{4}$/,"Ano inválido"),cvv:os().regex(/^\d{3,4}$/,"CVV inválido"),cpf:os().regex(/^\d{11}$/,"CPF inválido")}),pN=e=>e.toLocaleString("pt-BR",{style:"currency",currency:"BRL"});function XO({bookingId:e,amount:t,payer:a,onApproved:o,maxInstallments:r=12}){const{publicKey:n,ready:i,loading:l,mp:c}=Jse(),[d,u]=x.useState(null),[m,h]=x.useState(null),[p,f]=x.useState(null),[g,b]=x.useState(!1),[v,y]=x.useState(""),[k,w]=x.useState(""),[R,C]=x.useState(""),[P,N]=x.useState(""),[E,A]=x.useState(""),[$,O]=x.useState(1);async function V(){if(!e||m||g)return;b(!0);const U=await Qj(e,"pix",a);if(b(!1),U.error){_e.error("Falha ao gerar Pix",{description:U.error});return}h(U.pix??null),f(U.status??null)}function T(U){u(U),U==="pix"&&V()}x.useEffect(()=>{if(!e||p==="approved"||!m&&d!=="card")return;const U=Date.now(),L=20*60*1e3,I=()=>{f("approved"),_e.success("Pagamento confirmado!"),o==null||o(m?"pix":d)},j=setInterval(async()=>{if(Date.now()-U>L){clearInterval(j);return}try{const{data:H}=await ze.functions.invoke("check-booking-status",{body:{bookingId:e}}),W=H==null?void 0:H.status;(W==="confirmed"||W==="approved")&&I()}catch{}},5e3);return()=>clearInterval(j)},[e,p,o,m,d]);async function D(){m!=null&&m.qrCode&&(await navigator.clipboard.writeText(m.qrCode),_e.success("Código Pix copiado"))}async function F(U){var B,Y;if(U.preventDefault(),!c.current||!i){_e.error("SDK do Mercado Pago não carregou");return}const L=v.replace(/\s/g,""),I=E.replace(/\D/g,""),[j,H]=R.split("/").map(ae=>ae.trim()),W=(H==null?void 0:H.length)===2?`20${H}`:H,_=Pie.safeParse({cardNumber:L,cardName:k,mm:j,yy:W,cvv:P,cpf:I});if(!_.success){_e.error("Dados do cartão inválidos",{description:_.error.issues[0].message});return}b(!0);try{const ae=await c.current.createCardToken({cardNumber:L,cardholderName:_.data.cardName,cardExpirationMonth:_.data.mm,cardExpirationYear:_.data.yy,securityCode:_.data.cvv,identificationType:"CPF",identificationNumber:_.data.cpf}),ie=await c.current.getPaymentMethods({bin:L.slice(0,6)}),fe=(B=ie==null?void 0:ie.results)==null?void 0:B[0],Se=await Qj(e,"card",a,{cardToken:ae.id,installments:$,paymentMethodId:fe==null?void 0:fe.id,issuerId:(Y=fe==null?void 0:fe.issuer)==null?void 0:Y.id,payer:{...a,identification:{type:"CPF",number:_.data.cpf}}});Se.error?_e.error("Pagamento recusado",{description:Se.error}):Se.status==="approved"?(f("approved"),_e.success("Pagamento aprovado!"),o==null||o("card")):Se.status==="in_process"?_e.message("Pagamento em análise"):_e.error("Pagamento não aprovado",{description:Se.statusDetail})}catch(ae){console.error("card payment error:",(ae==null?void 0:ae.message)??"unknown"),_e.error("Dados do cartão inválidos",{description:ae==null?void 0:ae.message})}finally{b(!1)}}return s.jsxs("div",{className:"space-y-5",children:[!l&&!n&&s.jsx("div",{className:"rounded-2xl border border-tech-border bg-tech-card p-4 text-sm text-tech-mute",children:"Mercado Pago ainda não configurado. Adicione as credenciais para ativar o pagamento."}),d===null&&s.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[s.jsxs("button",{type:"button",onClick:()=>T("pix"),disabled:!n,className:"group flex flex-col items-start gap-3 rounded-2xl border border-tech-border bg-tech-card p-5 text-left transition hover:border-tech-fg/40 disabled:cursor-not-allowed disabled:opacity-50",children:[s.jsx("div",{className:"flex h-11 w-11 items-center justify-center rounded-xl border border-tech-border bg-tech-bg",children:s.jsx(fT,{className:"h-5 w-5 text-tech-fg"})}),s.jsxs("div",{children:[s.jsx("p",{className:"font-geist text-base font-semibold text-tech-fg",children:"Pix"}),s.jsx("p",{className:"mt-1 text-xs text-tech-mute",children:"Aprovação instantânea"})]})]}),s.jsxs("button",{type:"button",onClick:()=>T("card"),disabled:!n,className:"group flex flex-col items-start gap-3 rounded-2xl border border-tech-border bg-tech-card p-5 text-left transition hover:border-tech-fg/40 disabled:cursor-not-allowed disabled:opacity-50",children:[s.jsx("div",{className:"flex h-11 w-11 items-center justify-center rounded-xl border border-tech-border bg-tech-bg",children:s.jsx(qL,{className:"h-5 w-5 text-tech-fg"})}),s.jsxs("div",{children:[s.jsx("p",{className:"font-geist text-base font-semibold text-tech-fg",children:"Cartão de crédito"}),s.jsxs("p",{className:"mt-1 text-xs text-tech-mute",children:["Até ",r,"x"]})]})]})]}),d!==null&&s.jsxs("button",{type:"button",onClick:()=>u(null),className:"inline-flex items-center gap-1.5 text-xs text-tech-mute hover:text-tech-fg",children:[s.jsx(Za,{className:"h-3 w-3"})," Trocar forma de pagamento"]}),d==="pix"&&s.jsx("div",{className:"rounded-2xl border border-tech-border bg-tech-card p-6",children:m?s.jsxs("div",{className:"flex flex-col items-center gap-4",children:[s.jsx("img",{alt:"QR Code Pix",src:`data:image/png;base64,${m.qrCodeBase64}`,className:"h-56 w-56 rounded-lg bg-white p-2"}),s.jsx("button",{type:"button",onClick:D,className:"rounded-lg bg-tech-fg px-4 py-2.5 text-sm font-medium text-tech-bg hover:bg-tech-fg/90",children:"Copiar código Pix"}),s.jsx("p",{className:"text-center font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:p==="approved"?"Pagamento aprovado":"Aguardando pagamento. A página atualiza sozinha."})]}):s.jsx("p",{className:"text-sm text-tech-mute",children:g?"Gerando QR Codeâ¦":"Aguardando dados do pagamento."})}
1051),d==="card"&&s.jsxs("form",{onSubmit:F,className:"space-y-3",children:[s.jsx("input",{placeholder:"Número do cartão",value:v,onChange:U=>y(U.target.value),className:"w-full rounded-lg border border-tech-border bg-tech-card px-3 py-2.5 text-sm text-tech-fg placeholder:text-tech-mute focus:border-tech-fg focus:outline-none",required:!0}),s.jsx("input",{placeholder:"Nome impresso no cartão",value:k,onChange:U=>w(U.target.value),className:"w-full rounded-lg border border-tech-border bg-tech-card px-3 py-2.5 text-sm text-tech-fg placeholder:text-tech-mute focus:border-tech-fg focus:outline-none",required:!0}),s.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[s.jsx("input",{placeholder:"MM/AA",value:R,onChange:U=>C(U.target.value),className:"w-full rounded-lg border border-tech-border bg-tech-card px-3 py-2.5 text-sm text-tech-fg placeholder:text-tech-mute focus:border-tech-fg focus:outline-none",required:!0}),s.jsx("input",{placeholder:"CVV",value:P,onChange:U=>N(U.target.value),className:"w-full rounded-lg border border-tech-border bg-tech-card px-3 py-2.5 text-sm text-tech-fg placeholder:text-tech-mute focus:border-tech-fg focus:outline-none",required:!0}),s.jsx("input",{placeholder:"CPF",value:E,onChange:U=>A(U.target.value),className:"w-full rounded-lg border border-tech-border bg-tech-card px-3 py-2.5 text-sm text-tech-fg placeholder:text-tech-mute focus:border-tech-fg focus:outline-none",required:!0})]}),s.jsxs("label",{className:"block",children:[s.jsx("span",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Parcelas"}),s.jsx("select",{value:$,onChange:U=>O(Number(U.target.value)),className:"mt-1 w-full rounded-lg border border-tech-border bg-tech-card px-3 py-2.5 text-sm text-tech-fg focus:border-tech-fg focus:outline-none",children:Array.from({length:r},(U,L)=>L+1).map(U=>s.jsxs("option",{value:U,children:[U,"x de ",pN(t/U)," ",U===1?"":"(com juros do MP)"]},U))})]}),s.jsx("button",{type:"submit",disabled:g||!n,className:"mt-2 w-full rounded-lg bg-tech-accent px-4 py-3.5 text-sm font-medium text-tech-bg transition hover:bg-tech-accent/90 disabled:cursor-not-allowed disabled:opacity-40",children:g?"Processandoâ¦":`Pagar ${pN(t)}`}),s.jsx("p",{className:"text-center text-[11px] text-tech-mute",children:"ð Seus dados de cartão são processados pelo Mercado Pago. Nada é armazenado em nossos servidores."})]})]})}async function Sie(e){const{data:t,error:a}=await ze.functions.invoke("validate-coupon",{body:{code:e.code,airport:e.airport||void 0,category:e.category||void 0,days:e.days,subtotal:e.subtotal,email:e.email||void 0}});return a?{valid:!1,reason:a.message}:t??{valid:!1,reason:"Erro ao validar cupom"}}async function hN(e){const{data:t,error:a}=await ze.functions.invoke("validate-travel-credit",{body:{...e,couponCode:e.couponCode||void 0}});return a?{valid:!1,reason:"Não foi possÃvel validar o código agora"}:t??{valid:!1,reason:"Erro ao validar"}}const fN=["Identificação","Pagamento"],mw="xpark_checkout_identity",gN="xpark_checkout_insurance",vN=25,xN=/^\(\d{2}\) 9\d{4}-\d{4}$/;function Rie(e){const a=e.replace(/\D/g,"").slice(0,11);return a.length===0?"":a.length<=2?`(${a}`:a.length<=7?`(${a.slice(0,2)}) ${a.slice(2)}`:`(${a.slice(0,2)}) ${a.slice(2,7)}-${a.slice(7)}`}const jie=()=>{try{const e=sessionStorage.getItem(mw);if(!e)return{nome:"",email:"",telefone:"",placa:""};const t=JSON.parse(e);return{nome:typeof(t==null?void 0:t.nome)=="string"?t.nome:"",email:typeof(t==null?void 0:t.email)=="string"?t.email:"",telefone:typeof(t==null?void 0:t.telefone)=="string"?t.telefone:"",placa:typeof(t==null?void 0:t.placa)=="string"?t.placa:""}}catch{return{nome:"",email:"",telefone:"",placa:""}}},Nie=e=>{try{sessionStorage.setItem(mw,JSON.stringify(e))}catch{}},Aie=e=>e?{descoberta:"descoberta",coberta:"coberta",valet:"valet",economico:"descoberta",economic:"descoberta",conforto:"coberta",comfort:"coberta",premium:"valet"}[e]??null:null,Op="block font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute mb-1.5",qp="w-full rounded-xl border border-tech-border bg-tech-bg px-3 py-3 text-base text-tech-fg outline-none transition focus:border-tech-fg";function Eie(){cn();const[e]=Ao(),t=Nr(),a=e.get("airport")||"GRU",o=a==="GRU"?Nh("estacionamento-aeroporto-guarulhos","bandeira-park"):a==="VCP"?Nh("estacionamento-aeroporto-viracopos","bandeira-park"):a==="CGH"?Nh("estacionamento-aeroporto-congonhas","bandeira-park"):void 0,r=Aie(e.get("tier")),{data:n,isLoading:i}=ew(a),l=r?n==null?void 0:n.find(J=>J.category===r):void 0,c=(l==null?void 0:l.address)??null,[d,u]=x.useState(0),m=e.get("entrada")||e.get("start")||"",h=e.get("saida")||e.get("end")||"",{data:p}=bO(a,m,h),f=!!l&&l.total_spots===0||!!(r&&(p??[]).some(J=>J.category===r&&J.is_sold_out)),g=e.get("entrada_hora")||"12:00",b=e.get("saida_hora")||"12:00",v=J=>Wj({airport:a,entrada:m,saida:h,entradaHora:g,saidaHora:b,src:e.get("src"),keepDates:(J==null?void 0:J.keepDates)??!0}),y=!!r&&Jy({airport:a,category:r,entrada:m,entradaHora:g}),k=x.useMemo(()=>
1051jie(),[]),[w,R]=x.useState(k.nome),[C,P]=x.useState(k.email),[N,E]=x.useState(k.telefone),[A,$]=x.useState(k.placa),[O,V]=x.useState(()=>{try{const J=sessionStorage.getItem(gN);return J===null?!0:J==="1"}catch{return!0}}),[T,D]=x.useState(!1),[F,U]=x.useState(""),[L,I]=x.useState(!1),[j,H]=x.useState(null),[W,_]=x.useState(null),[B,Y]=x.useState(!1),[ae,ie]=x.useState(""),[fe,Se]=x.useState(!1),[Ee,Re]=x.useState(null),[re,Ce]=x.useState(null);x.useEffect(()=>{Nie({nome:w,email:C,telefone:N,placa:A})},[w,C,N,A]),x.useEffect(()=>{try{sessionStorage.setItem(gN,O?"1":"0")}catch{}},[O]);const[$e,Ze]=x.useState(!1),[mt,ht]=x.useState(null),{totalDays:kt,subtotal:Tt,insuranceFee:oa,discount:Bt,creditAmount:$t,total:Ke}=x.useMemo(()=>{const J=gO(m,h,g,b),he=l?Zk(l,J):0,Oe=O?vN:0,wt=W?Math.min(W.discount,he):0,ra=Math.max(he-wt,0),z=re?Math.min(re.amount,ra):0,Pe=Math.max(ra-z,0)+Oe;return{totalDays:J,subtotal:he,insuranceFee:Oe,discount:wt,creditAmount:z,total:Math.round(Pe*100)/100}},[m,h,g,b,l,O,W,re]);if(x.useEffect(()=>{Ce(null)},[W==null?void 0:W.code,l==null?void 0:l.category,a,kt]),!_6(a)||!r||kt<1)return s.jsx("div",{className:"bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-24 text-center",children:[s.jsx("h1",{className:"font-geist text-3xl font-semibold",children:"Opção não encontrada"}),s.jsx("p",{className:"mt-3 text-tech-mute",children:"Escolha uma das vagas disponÃveis na busca."}),s.jsxs(G,{to:"/",className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:[s.jsx(Za,{className:"h-4 w-4"})," Voltar para o inÃcio"]})]})});if(!_O(a,tx()))return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-20 text-center",children:[s.jsx("h1",{className:"font-geist text-3xl font-semibold tracking-tight",children:"Unidade indisponÃvel neste canal"}),s.jsx("p",{className:"mt-4 text-tech-mute",children:TO(a)}),s.jsxs(G,{to:Wj({airport:"GRU",entradaHora:g,saidaHora:b}),className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:[s.jsx(Za,{className:"h-4 w-4"})," Ver opções em Guarulhos"]})]})});if(!T6(a,m))return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-20 text-center",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.22em] text-tech-mute",children:Ph(a)}),s.jsxs("h1",{className:"mt-3 font-geist text-3xl font-semibold tracking-tight",children:["Inauguração em ",Yu(a)]}),s.jsx("p",{className:"mt-4 text-tech-mute",children:Ak(a)}),s.jsxs(G,{to:v({keepDates:!1}),className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:[s.jsx(Za,{className:"h-4 w-4"})," Escolher outra data"]})]})});if(i||!l)return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsx("div",{className:"container max-w-2xl py-24 text-center text-tech-mute",children:"Carregando opçãoâ¦"})});if(y){const J=v();return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-20 text-center",children:[s.jsxs("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.22em] text-tech-mute",children:["Valet · ",a]}),s.jsx("h1",{className:"mt-3 font-geist text-3xl font-semibold tracking-tight",children:"O Valet precisa de 24 horas de antecedência"}),s.jsxs("p",{className:"mt-4 text-tech-mute",children:["Para esta data, escolha Descoberta ou Coberta, ou reserve o Valet para uma entrada a partir de"," ",s.jsx("span",{className:"font-geist-mono text-tech-fg",children:Xy()}),"."]}),s.jsxs(G,{to:J,className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:[s.jsx(Za,{className:"h-4 w-4"})," Voltar para opções"]})]})})}const co=d===0?w.trim().length>1&&os().email().safeParse(C.trim()).success&&xN.test(N)&&A.length>=6:!0,uo=N.length>0&&!xN.test(N),K=async()=>
1051{if(co){if(f){_e.error("Essa vaga acabou de esgotar",{description:"Escolha outra opção disponÃvel para o perÃodo."}),t(v());return}if(Jy({airport:a,category:l.category,entrada:m,entradaHora:g})){_e.error("Valet precisa de 24h de antecedência",{description:`Reserve para uma entrada a partir de ${Xy()}, ou troque para Coberta/Descoberta.`}),t(v());return}if(d<1){Ze(!0);try{const J=await HO({kind:"parking",orgSlug:l.category==="valet"?"valetina":"multipark",airport:a,category:l.category,entrada:m,saida:h,entradaHora:g,saidaHora:b,customer:{name:w.trim(),email:C.trim(),phone:N.replace(/\D/g,""),placa:A.trim()},source:tx(),insurance:O,couponCode:W==null?void 0:W.code,travelCreditCode:re==null?void 0:re.code});if(J.error||!J.bookingId)throw new Error(J.error??"Falha ao criar reserva");ht(J.bookingId),u(1)}catch(J){_e.error("Não foi possÃvel registrar sua reserva",{description:J==null?void 0:J.message})}finally{Ze(!1)}return}}},Z=v();return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container py-10",children:[s.jsxs(G,{to:Z,className:"inline-flex items-center gap-1.5 text-sm text-tech-mute hover:text-tech-fg",children:[s.jsx(Za,{className:"h-3.5 w-3.5"})," Voltar para opções"]}),s.jsxs("div",{className:"mt-6 grid gap-8 lg:grid-cols-[1fr_360px]",children:[s.jsxs("div",{children:[s.jsx("ol",{className:"flex items-center gap-2 sm:gap-3",children:fN.map((J,he)=>{const Oe=he<d,wt=he===d;return s.jsxs("li",{className:"flex flex-1 items-center gap-2 sm:gap-3",children:[s.jsx("div",{className:ne("flex h-8 w-8 shrink-0 items-center justify-center rounded-full border font-geist-mono text-sm font-semibold transition",wt&&"border-tech-accent bg-tech-accent text-tech-fg",Oe&&"border-tech-fg bg-tech-fg text-tech-bg",!wt&&!Oe&&"border-tech-border bg-tech-card text-tech-mute"),children:Oe?s.jsx(On,{className:"h-4 w-4"}):he+1}),s.jsx("span",{className:ne("hidden text-sm sm:inline",wt?"font-medium text-tech-fg":"text-tech-mute"),children:J}),he<fN.length-1&&s.jsx("div",{className:"h-px flex-1 bg-tech-border"})]},J)})}),s.jsxs("div",{className:"mt-8 rounded-2xl border border-tech-border bg-tech-card p-6 sm:p-8",children:[f&&d===0&&s.jsxs("div",{className:"mb-6 rounded-xl border border-red-500/40 bg-red-500/10 p-4 text-sm text-red-400",children:["Essa vaga esgotou para as datas selecionadas."," ",s.jsx(G,{to:Z,className:"underline hover:text-red-300",children:"Escolher outra opção"}),"."]}),d===0&&s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Quem está reservando?"}),s.jsx("p",{className:"mt-1 text-sm text-tech-mute",children:"Vamos enviar a confirmação no seu email."}),s.jsxs("div",{className:"mt-6 grid gap-4 sm:grid-cols-2",children:[s.jsxs("div",{className:"sm:col-span-2",children:[s.jsx("label",{className:Op,htmlFor:"nome",children:"Nome completo"}),s.jsx("input",{id:"nome",maxLength:100,placeholder:"João Silva",value:w,onChange:J=>R(J.target.value),className:qp})]}),s.jsxs("div",{children:[s.jsx("label",{className:Op,htmlFor:"email",children:"Email"}),s.jsx("input",{id:"email",type:"email",maxLength:255,placeholder:"[email protected]",value:C,onChange:J=>P(J.target.value),className:qp})]}),s.jsxs("div",{children:[s.jsx("label",{className:Op,htmlFor:"telefone",children:"Telefone (WhatsApp)"}),s.jsx("input",{id:"telefone",inputMode:"numeric",autoComplete:"tel-national",maxLength:16,placeholder:"(11) 99999-9999",value:N,onChange:J=>E(Rie(J.target.value)),className:ne(qp,uo&&"border-tech-accent"),"aria-invalid":uo||void 0})]}),s.jsxs("div",{className:"sm:col-span-2",children:[s.jsx("label",{className:Op,htmlFor:"placa",children:"Placa do carro"}),s.jsx("input",{id:"placa",maxLength:10,placeholder:"ABC1D23",value:A,onChange:J=>$(J.target.value.toUpperCase()),className:ne(qp,"uppercase tracking-wider")})]})]})]}),d===1&&s.jsxs(s.Fragment,{children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Como prefere pagar?"}),s.jsx("p",{className:"mt-1 text-sm text-tech-mute",children:"Pagamento processado com segurança pelo Mercado Pago."}),s.jsx("div",{className:"mt-6",children:mt?s.jsx(XO,{bookingId:mt,amount:Ke,payer:{email:C.trim(),name:w.trim()},onApproved:J=>
1051{try{sessionStorage.removeItem(mw)}catch{}try{sessionStorage.setItem(`xpark_receipt:${mt}`,JSON.stringify({placa:A.trim().toUpperCase(),nome:w.trim(),email:C.trim(),method:J}))}catch{}const he=new URLSearchParams({id:mt,airport:a,tier:l.category,entrada:m,saida:h,entrada_hora:g,saida_hora:b,total:Ke.toFixed(2)});J&&he.set("payment",J),Om(he),setTimeout(()=>t(`/confirmacao?${he.toString()}`),600)}}):s.jsx("p",{className:"text-sm text-tech-mute",children:"Carregando pagamentoâ¦"})})]}),d===0&&s.jsx("div",{className:"mt-8 flex items-center justify-end gap-3",children:s.jsx("button",{type:"button",disabled:!co||$e||f,onClick:K,className:ne("inline-flex items-center gap-1.5 rounded-full bg-tech-fg px-6 py-2.5 text-sm font-semibold text-tech-bg transition hover:bg-tech-fg/85",(!co||$e||f)&&"cursor-not-allowed opacity-40"),children:$e?"Registrandoâ¦":s.jsxs(s.Fragment,{children:["Continuar ",s.jsx(aa,{className:"h-3.5 w-3.5"})]})})})]})]}),s.jsxs("aside",{className:"rounded-2xl border border-tech-border bg-tech-card p-6 lg:sticky lg:top-24 lg:self-start",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Sua reserva"}),s.jsx("h3",{className:"mt-2 font-geist text-lg font-semibold",children:Wy(l.category,a)}),s.jsxs("p",{className:"text-sm text-tech-mute",children:[Yk[l.category]," · ",vO[l.category]]}),o?s.jsxs("div",{className:"mt-5 rounded-lg border border-tech-border/70 bg-tech-bg/40 p-3 text-sm",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Local"}),s.jsx("p",{className:"mt-1 font-medium text-tech-fg",children:o.name}),s.jsx("p",{className:"mt-1 text-xs leading-relaxed text-tech-mute",children:o.address.formatted}),s.jsx("a",{href:o.mapsUrl,target:"_blank",rel:"noopener noreferrer",className:"mt-2 inline-block font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-fg underline underline-offset-4 hover:text-gold",children:"Ver no mapa â"})]}):c?s.jsxs("div",{className:"mt-5 rounded-lg border border-tech-border/70 bg-tech-bg/40 p-3 text-sm",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Local"}),s.jsxs("p",{className:"mt-1 font-medium text-tech-fg",children:["xpark ",Ph(a)]}),s.jsx("p",{className:"mt-1 text-xs leading-relaxed text-tech-mute",children:c})]}):null,s.jsx("dl",{className:"mt-5 space-y-3 text-sm",children:[["Aeroporto",`${a} · ${Ph(a).replace(/\s*\(.*\)$/,"")}`],["Entrada",Jj(m,g)],["SaÃda",Jj(h,b)],["Diárias",`${kt} à ${Dr(mre(l,kt))}`]].map(([J,he])=>s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("dt",{className:"text-tech-mute",children:J}),s.jsx("dd",{className:"font-medium text-tech-fg",children:he})]},J))}),s.jsx("div",{className:"mt-5 rounded-xl border border-tech-border/70 bg-tech-bg/40 p-4",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(Qs,{className:"mt-0.5 h-5 w-5 shrink-0 text-tech-accent"}),s.jsxs("div",{className:"flex-1",children:[s.jsxs("div",{className:"flex items-start justify-between gap-3",children:[s.jsxs("div",{children:[s.jsx("p",{className:"font-geist text-sm font-semibold text-tech-fg",children:"Seguro Cancelamento e Atraso"}),s.jsxs("p",{className:"mt-0.5 text-xs text-tech-mute",children:["+ ",Dr(vN)," · flexibilidade em imprevistos"]})]}),s.jsx(zO,{checked:O,onCheckedChange:V,"aria-label":"Adicionar seguro cancelamento e atraso",disabled:d>0})]}),s.jsxs(Zg,{children:[s.jsx(aae,{asChild:!0,children:s.jsx("button",{type:"button",className:"mt-2 inline-flex font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-fg underline underline-offset-4 hover:text-gold",children:"Saiba mais"})}),s.jsxs(Am,{className:"max-w-md",children:[s.jsx(Em,{children:s.jsx(_m,{children:"Seguro Cancelamento e Atraso"})}),s.jsxs("div",{className:"space-y-3 text-sm text-tech-fg",children:[s.jsx("p",{className:"text-tech-mute",children:"Proteção adicional para imprevistos com seu voo por R$ 25,00."}),s.jsxs("div",{children:[s.jsx("p",{className:"font-semibold",children:"Cancelamento online ampliado"}),s.jsx("p",{className:"text-tech-mute",children:"Cancele com até 6h antes da entrada no estacionamento. Sem o seguro, o limite para reembolso integral é 3 dias de antecedência."})]}),s.jsxs("div",{children:[s.jsx("p",{className:"font-semibold",children:"Isenção por atraso de voo"}),s.jsx("p",{className:"text-tech-mute",children:"3 horas adicionais grátis no retorno em caso de atraso do voo."})]}),s.jsx("p",{className:"text-xs text-tech-mute",children:"Para acionar em caso de atraso, apresente sua reserva no balcão da unidade."})]})]})]})]})]})}),oa>0&&s.jsxs("div",{className:"mt-3 flex items-center justify-between text-sm",children:[s.jsx("span",{className:"text-tech-mute",children:"Seguro Cancelamento e Atraso"}),s.jsx("span",{className:"font-medium text-tech-fg",children:Dr(oa)})]}),s.jsx("div",{className:"mt-5 rounded-xl border border-tech-border/70 bg-tech-bg/40 p-4",children:W?s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx(SP,{className:"mt-0.5 h-4 w-4 text-tech-accent"}),s.jsxs("div",{children:[s.jsxs("p",{className:"font-geist text-sm font-semibold text-tech-fg",children:["Cupom ",W.code," aplicado"]}
1051),W.description&&s.jsx("p",{className:"text-xs text-tech-mute",children:W.description}),s.jsxs("p",{className:"mt-0.5 text-xs text-tech-accent",children:["Desconto de ",Dr(Bt)]})]})]}),d===0&&s.jsxs("button",{type:"button",onClick:()=>{_(null),U(""),H(null)},className:"inline-flex items-center gap-1 rounded-full border border-tech-border px-2.5 py-1 text-xs text-tech-mute hover:text-tech-fg","aria-label":"Remover cupom",children:[s.jsx(Gi,{className:"h-3 w-3"})," Remover"]})]}):T?s.jsxs("div",{children:[s.jsx("label",{className:"block font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute mb-1.5",children:"Cupom de desconto"}),s.jsxs("div",{className:"flex gap-2 w-full min-w-0",children:[s.jsx("input",{type:"text",value:F,onChange:J=>{U(J.target.value.toUpperCase()),H(null)},placeholder:"Digite o código",maxLength:40,disabled:L||d>0,className:"min-w-0 flex-1 rounded-lg border border-tech-border bg-tech-bg px-3 py-2 text-sm text-tech-fg outline-none focus:border-tech-fg uppercase"}),s.jsx("button",{type:"button",disabled:!F.trim()||L||d>0,onClick:async()=>{I(!0),H(null);try{if(/^XP-/i.test(F.trim())){if(N.replace(/\D/g,"").length<10){H("Este é um código de diária grátis. Preencha antes o telefone usado no questionário.");return}const he=await hN({code:F.trim(),phone:N.replace(/\D/g,""),airport:a,category:l.category,days:kt});if(!he.valid){H(he.reason??"Código inválido");return}Ce({code:he.code??F.trim().toUpperCase(),amount:he.amount??0}),_(null),U(""),D(!1);return}if(re){H("A diária grátis não soma com cupom. Remova a diária para usar um cupom.");return}const J=await Sie({code:F.trim(),airport:a,category:l.category,days:kt,subtotal:Tt,email:C.trim()||void 0});if(!J.valid){H(J.reason??"Cupom inválido");return}_({code:J.code??F.trim().toUpperCase(),discount:J.discountAmount??0,description:J.description??null})}finally{I(!1)}},className:ne("shrink-0 whitespace-nowrap rounded-lg bg-tech-fg px-3 py-2 text-sm font-semibold text-tech-bg",(!F.trim()||L||d>0)&&"cursor-not-allowed opacity-40"),children:L?"...":"Aplicar"})]}),j&&s.jsx("p",{className:"mt-2 text-xs text-red-400",children:j})]}):s.jsxs("button",{type:"button",onClick:()=>D(!0),className:"flex items-center gap-2 text-sm text-tech-fg hover:text-gold",children:[s.jsx(SP,{className:"h-4 w-4"}),"Tenho um cupom de desconto"]})}),tx()==="xpark"&&s.jsx("div",{className:"mt-3 rounded-xl border border-tech-border/70 bg-tech-bg/40 p-4",children:re?s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx(qu,{className:"mt-0.5 h-4 w-4 text-tech-accent"}),s.jsxs("div",{children:[s.jsxs("p",{className:"font-geist text-sm font-semibold text-tech-fg",children:["Diária grátis ",re.code," aplicada"]}),s.jsxs("p",{className:"mt-0.5 text-xs text-tech-accent",children:["Desconto de ",Dr($t)]})]})]}),d===0&&s.jsxs("button",{type:"button",onClick:()=>{Ce(null),ie(""),Re(null)},className:"inline-flex items-center gap-1 rounded-full border border-tech-border px-2.5 py-1 text-xs text-tech-mute hover:text-tech-fg","aria-label":"Remover código de diária grátis",children:[s.jsx(Gi,{className:"h-3 w-3"})," Remover"]})]}):B?s.jsxs("div",{children:[s.jsx("label",{className:"mb-1.5 block font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Código de diária grátis"}),s.jsxs("div",{className:"flex w-full min-w-0 gap-2",children:[s.jsx("input",{type:"text",value:ae,onChange:J=>{ie(J.target.value.toUpperCase()),Re(null)},placeholder:"XP-XXXX-XXXX",maxLength:20,disabled:fe||d>0,className:"min-w-0 flex-1 rounded-lg border border-tech-border bg-tech-bg px-3 py-2 text-sm uppercase text-tech-fg outline-none focus:border-tech-fg"}),s.jsx("button",{type:"button",disabled:!ae.trim()||fe||d>0,onClick:async()=>{if(Re(null),N.replace(/\D/g,"").length<10){Re("Preencha antes o telefone usado no questionário.");return}Se(!0);try{const J=await hN({code:ae.trim(),phone:N.replace(/\D/g,""),airport:a,category:l.category,days:kt});if(!J.valid){Re(J.reason??"Código inválido");return}_(null),U(""),Ce({code:J.code??ae.trim().toUpperCase(),amount:J.amount??0})}finally{Se(!1)}},className:ne("shrink-0 whitespace-nowrap rounded-lg bg-tech-fg px-3 py-2 text-sm font-semibold text-tech-bg",(!ae.trim()||fe||d>0)&&"cursor-not-allowed opacity-40"),children:fe?"...":"Aplicar"})]}),Ee&&s.jsx("p",{className:"mt-2 text-xs text-red-400",children:Ee})]}):s.jsxs("button",{type:"button",onClick:()=>Y(!0),className:"flex items-center gap-2 text-sm text-tech-fg hover:text-gold",children:[s.jsx(qu,{className:"h-4 w-4"}),"Tenho um código de diária grátis"]})}),Bt>0&&s.jsxs("div",{className:"mt-3 flex items-center justify-between text-sm",children:[s.jsxs("span",{className:"text-tech-mute",children:["Desconto (",W==null?void 0:W.code,")"]}),s.jsxs("span",{className:"font-medium text-tech-accent",children:["- ",Dr(Bt)]})]}),$t>0&&s.jsxs("div",{className:"mt-3 flex items-center justify-between text-sm",children:[s.jsxs("span",{className:"text-tech-mute",children:["Diária grátis (",re==null?void 0:re.code,")"]}),s.jsxs("span",{className:"font-medium text-tech-accent",children:["- ",Dr($t)]})]}),s.jsxs("div",{className:"mt-5 flex items-baseline justify-between border-t border-tech-border pt-5",children:[s.jsx("span",{className:"text-sm text-tech-mute",children:"Total"}),s.jsx("span",{className:"font-geist text-2xl font-bold",children:Dr(Ke)})]})]})]})]})})}const ox="block font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute mb-1.5",rx="w-full rounded-xl border border-tech-border bg-tech-bg px-3 py-3 text-base text-tech-fg outline-none transition focus:border-tech-fg";function _ie(){cn();const{slug:e}=on(),t=Nr(),{data:a=[],isLoading:o}=IO(),r=x.useMemo(()=>a.find(y=>y.slug===e),[a,e]),[n,i]=x.useState(""),[l,c]=x.useState(""),[d,u]=x.useState(""),[m,h]=x.useState(!1),[p,f]=x.use
1051State(null);if(o)return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsx("div",{className:"container max-w-2xl py-24 text-center text-tech-mute",children:"Carregandoâ¦"})});if(!r)return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-24 text-center",children:[s.jsx("h1",{className:"font-geist text-3xl font-semibold",children:"Plano não encontrado"}),s.jsxs(G,{to:"/planos",className:"mt-8 inline-flex h-12 items-center gap-2 rounded-full bg-tech-fg px-6 text-sm font-medium text-tech-bg",children:[s.jsx(Za,{className:"h-4 w-4"})," Voltar para planos"]})]})});const g=Number(r.yearly_price),b=n.trim().length>1&&os().email().safeParse(l.trim()).success&&d.length>=8;async function v(){if(b){h(!0);try{const y=await HO({kind:"plan",orgSlug:"multipark",planSlug:r.slug,customer:{name:n.trim(),email:l.trim(),phone:d.trim()}});if(y.error||!y.bookingId)throw new Error(y.error??"Falha ao iniciar");f(y.bookingId)}catch(y){_e.error("Não foi possÃvel iniciar o pagamento",{description:y==null?void 0:y.message})}finally{h(!1)}}}return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container py-10",children:[s.jsxs(G,{to:"/planos",className:"inline-flex items-center gap-1.5 text-sm text-tech-mute hover:text-tech-fg",children:[s.jsx(Za,{className:"h-3.5 w-3.5"})," Voltar para planos"]}),s.jsxs("div",{className:"mt-6 grid gap-8 lg:grid-cols-[1fr_360px]",children:[s.jsx("div",{className:"rounded-2xl border border-tech-border bg-tech-card p-6 sm:p-8",children:p?s.jsxs(s.Fragment,{children:[s.jsx("h1",{className:"font-geist text-xl font-semibold",children:"Pagamento"}),s.jsx("p",{className:"mt-1 text-sm text-tech-mute",children:"Processado com segurança pelo Mercado Pago."}),s.jsx("div",{className:"mt-6",children:s.jsx(XO,{bookingId:p,amount:g,payer:{email:l.trim(),name:n.trim()},onApproved:y=>{try{sessionStorage.setItem(`xpark_receipt:${p}`,JSON.stringify({nome:n.trim(),email:l.trim(),method:y}))}catch{}const k=new URLSearchParams({id:p,plan:r.slug,total:g.toFixed(2)});y&&k.set("payment",y),setTimeout(()=>t(`/confirmacao?${k.toString()}`),600)}})})]}):s.jsxs(s.Fragment,{children:[s.jsxs("h1",{className:"font-geist text-xl font-semibold",children:["Assinar plano ",r.name]}),s.jsx("p",{className:"mt-1 text-sm text-tech-mute",children:"Informe seus dados para iniciar o pagamento do plano anual."}),s.jsxs("div",{className:"mt-6 grid gap-4 sm:grid-cols-2",children:[s.jsxs("div",{className:"sm:col-span-2",children:[s.jsx("label",{className:ox,htmlFor:"nome",children:"Nome completo"}),s.jsx("input",{id:"nome",maxLength:100,value:n,onChange:y=>i(y.target.value),className:rx})]}),s.jsxs("div",{children:[s.jsx("label",{className:ox,htmlFor:"email",children:"Email"}),s.jsx("input",{id:"email",type:"email",maxLength:255,value:l,onChange:y=>c(y.target.value),className:rx})]}),s.jsxs("div",{children:[s.jsx("label",{className:ox,htmlFor:"telefone",children:"Telefone (WhatsApp)"}),s.jsx("input",{id:"telefone",inputMode:"tel",maxLength:20,value:d,onChange:y=>u(y.target.value),className:rx})]})]}),s.jsx("div",{className:"mt-8 flex items-center justify-end",children:s.jsx("button",{type:"button",disabled:!b||m,onClick:v,className:ne("inline-flex items-center gap-1.5 rounded-full bg-tech-fg px-6 py-2.5 text-sm font-semibold text-tech-bg transition hover:bg-tech-fg/85",(!b||m)&&"cursor-not-allowed opacity-40"),children:m?"Aguardeâ¦":s.jsxs(s.Fragment,{children:["Ir para pagamento ",s.jsx(aa,{className:"h-3.5 w-3.5"})]})})})]})}),s.jsxs("aside",{className:"rounded-2xl border border-tech-border bg-tech-card p-6 lg:sticky lg:top-24 lg:self-start",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Sua assinatura"}),s.jsxs("h3",{className:"mt-2 font-geist text-lg font-semibold",children:["Plano ",r.name]}),s.jsx("p",{className:"text-sm text-tech-mute",children:r.tagline}),s.jsxs("dl",{className:"mt-5 space-y-3 text-sm",children:[s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("dt",{className:"text-tech-mute",children:"Frequência"}),s.jsx("dd",{className:"font-medium text-tech-fg",children:r.freq})]}),s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("dt",{className:"text-tech-mute",children:"Mensalidade"}),s.jsx("dd",{className:"font-medium text-tech-fg",children:pu(Number(r.monthly_price))})]}),s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsx("dt",{className:"text-tech-mute",children:"Total ano"}),s.jsx("dd",{className:"font-medium text-tech-fg",children:pu(Number(r.yearly_price))})]})]}),s.jsx("ul",{className:"mt-5 space-y-2 border-t border-tech-border pt-5 text-sm text-tech-fg/80",children:r.includes.map(y=>s.jsxs("li",{className:"flex items-start gap-2",children:[s.jsx("span",{className:"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-tech-accent"}),s.jsx("span",{children:y})]},y))}),s.jsxs("div",{className:"mt-5 flex items-baseline justify-between border-t border-tech-border pt-5",children:[s.jsx("span",{className:"text-sm text-tech-mute",children:"Total a pagar"}),s.jsx("span",{className:"font-geist text-2xl font-bold",children:pu(g)})]})]})]})]})})}const Tie="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function $ie(e,t){const a=(t||"XX").toUpperCase().slice(0,3);if(!e)return`XPARK${a}-------`;const o=e.replace(/-/g,"").toLowerCase();let r=2166136261,n=16777619;for(let c=0;c<o.length;
1051c++){const d=o.charCodeAt(c);r=Math.imul(r^d,16777619)>>>0,n=Math.imul(n^d,2246822519)>>>0}let i=(r^Math.imul(n,31))>>>0,l="";for(let c=0;c<6;c++)l=Tie[i&31]+l,i=i>>>5,i===0&&(i=n>>>c*4);return`XPARK${a}-${l}`}function Oie(e,t){return t||(e?`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(e)}`:"")}const YO="xpark_funnel",ZO="xpark_source";function bN(){try{sessionStorage.setItem(YO,"valetina"),sessionStorage.setItem(ZO,"valetina")}catch{}}function eq(){if(typeof window>"u")return!1;try{const e=window.location.pathname||"";return e==="/valetina"||e.startsWith("/valetina/")||(new URLSearchParams(window.location.search).get("src")||"").toLowerCase()==="valetina"?!0:(sessionStorage.getItem(YO)||sessionStorage.getItem(ZO)||"").toLowerCase()==="valetina"}catch{return!1}}function l2(e){if(typeof document>"u")return;const t=document.cookie.split("; ").find(a=>a.startsWith(`${e}=`));return t?decodeURIComponent(t.split("=").slice(1).join("=")):void 0}function qie(e,t,a=90){if(typeof document>"u")return;const o=a*24*60*60;document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${o}; SameSite=Lax`}function tq(){if(!(typeof window>"u"))try{const t=new URLSearchParams(window.location.search).get("fbclid");if(!t||l2("_fbc"))return;qie("_fbc",`fb.1.${Date.now()}.${t}`)}catch{}}const aq=25,yN=e=>Math.round(e*100)/100;function r0e(e,t,a={}){const o=e?new Date(e).getTime():NaN,r=Number.isFinite(o)?(o-Date.now())/36e5:-1;let n=0,i="sem antecedência / no-show";r>=72?(n=90,i="3 dias ou mais de antecedência"):r>0&&(n=40,i="menos de 72 horas de antecedência"),a.hasInsurance&&r>0&&(n=100,i="Seguro Cancelamento: reembolso integral menos o seguro");const l=a.hasInsurance?a.insuranceFee??aq:0,c=Math.max(yN(t-l),0),d=yN(c*n/100);return{hoursUntilStart:r,percent:n,label:i,amount:d,base:c,insuranceRetained:l}}const ai=e=>new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL"}).format(e),kN=e=>{if(!e)return"â";const[t,a,o]=e.split("-").map(Number);return!t||!a||!o?"â":new Date(t,a-1,o).toLocaleDateString("pt-BR",{weekday:"short",day:"2-digit",month:"short",year:"numeric"})},wN=e=>{if(!e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t.toLocaleString("pt-BR",{weekday:"short",day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})},Die={economic:"Descoberta",comfort:"Coberta",premium:"Valet",economico:"Descoberta",conforto:"Coberta",descoberta:"Descoberta",coberta:"Coberta",valet:"Valet"},Iie={GRU:"São Paulo · Guarulhos",CGH:"São Paulo · Congonhas",VCP:"Campinas · Viracopos",TIE:"Recife · Tietê"};function Mie(){var ie,fe,Se,Ee,Re,re;cn();const[e]=Ao(),t=e.get("id")||e.get("bookingId")||"",a=(e.get("airport")||"GRU").toUpperCase(),o=e.get("tier")||"",r=e.get("entrada")||"",n=e.get("saida")||"",i=Number(e.get("total")||0),l=(()=>{try{const Ce=t?sessionStorage.getItem(`xpark_receipt:${t}`):null;return Ce?JSON.parse(Ce):null}catch{return null}})(),c=e.get("payment")||(l==null?void 0:l.method)||"",[d,u]=x.useState(null),[m,h]=x.useState(null);x.useEffect(()=>{lae(),t&&(async()=>{const{data:Ce}=await ze.from("bookings").select("id, customer_name, customer_email, customer_phone, vehicle_plate, vehicle_model, start_date, end_date, start_at, end_at, total_amount, source, status, has_insurance, insurance, refund_amount, refund_percent, refunded_at, external_payment_ref, locations(name, airport_code, category, walk_time_minutes, address, maps_url, public_description)").eq("id",t).maybeSingle();Ce&&u(Ce);const{data:$e}=await ze.from("payments").select("method,status").eq("booking_id",t).eq("status","approved").limit(1).maybeSingle();$e!=null&&$e.method&&h(String($e.method))})()},[t]),x.useEffect(()=>{if(!(d!=null&&d.id)||!((d.source||"").toLowerCase().includes("valetina")||eq())||(d.status||"").toLowerCase()!=="confirmed")return;const Ze=`__purchase_fired:${d.id}`;try{if(sessionStorage.getItem(Ze))return;sessionStorage.setItem(Ze,"1")}catch{}const mt=Number(d.total_amount||0);try{const ht=window;ht.dataLayer=ht.dataLayer||[],ht.dataLayer.push({event:"purchase",event_id:d.id,ecommerce:{transaction_id:d.id,value:mt,currency:"BRL",items:[{item_name:"Valet GRU Valetina",price:mt,quantity:1}]}})}catch{}(async()=>{try{await ze.functions.invoke("meta-capi-purchase",{body:{bookingId:d.id,email:d.customer_email??"",fbc:l2("_fbc"),fbp:l2("_fbp"),userAgent:navigator.userAgent,eventSourceUrl:window.location.href}})}catch(ht){console.warn("meta-capi invoke failed",ht)}})()},[d==null?void 0:d.id,d==null?void 0:d.status,d==null?void 0:d.source,d==null?void 0:d.total_amount]);const f=((d==null?void 0:d.customer_name)||(l==null?void 0:l.nome)||"").trim().split(" ")[0]||"viajante",g=(d==null?void 0:d.customer_email)||(l==null?void 0:l.email)||"",b=(((ie=d==null?void 0:d.locations)==null?void 0:ie.airport_code)??a).toUpperCase(),v=((fe=d==null?void 0:d.locations)==null?void 0:fe.category)??o,y=Die[v]??v??"â",k=$ie(t,b),w=(d==null?void 0:d.start_at)??null,R=(d==null?void 0:d.end_at)??null,C=wN(w)??kN((d==null?void 0:d.start_date)??r),P=wN(R)??kN((d==null?void 0:d.end_date)??n),N=(d==null?void 0:d.total_amount)!=null?Number(d.total_amount):i,E=(m||c||"").toLowerCase(),A=E==="pix"?"Pix":E==="c
1051ard"||E==="credit_card"||E==="debit_card"?"Cartão de crédito":E==="boleto"?"Boleto":E?E.charAt(0).toUpperCase()+E.slice(1):"Confirmado",$=((d==null?void 0:d.status)||"").toLowerCase()==="cancelled",O=Number((d==null?void 0:d.refund_amount)??0),V=Number((d==null?void 0:d.refund_percent)??0),T=!!(d!=null&&d.has_insurance),D=T?aq:0,F=Math.max(N-D,0),U=Math.max(N-O,0),L=d!=null&&d.refunded_at?new Date(d.refunded_at).toLocaleDateString("pt-BR"):null,I=(d==null?void 0:d.vehicle_plate)||(l==null?void 0:l.placa)||"",j=(d==null?void 0:d.vehicle_model)||(l==null?void 0:l.modelo)||"",H=!!(I||j),W=!!d||!!l,_=((Se=d==null?void 0:d.locations)==null?void 0:Se.name)??"";(Ee=d==null?void 0:d.locations)==null||Ee.walk_time_minutes;const B=((Re=d==null?void 0:d.locations)==null?void 0:Re.address)??"",Y=((re=d==null?void 0:d.locations)==null?void 0:re.maps_url)??"",ae=Oie(B,Y);return s.jsx("div",{className:"min-h-screen bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-8 md:py-12",children:[s.jsxs("div",{className:"rounded-2xl border border-tech-border bg-tech-card p-5 md:p-6",children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx("div",{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-full ${$?"bg-red-500/15 text-red-600":"bg-tech-accent text-tech-fg"}`,children:$?s.jsx(OL,{className:"h-5 w-5"}):s.jsx(On,{className:"h-5 w-5"})}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("h1",{className:"font-geist text-xl font-semibold tracking-tight md:text-2xl",children:$?`Reserva cancelada, ${f}.`:`Tudo certo, ${f}!`}),s.jsx("p",{className:"mt-0.5 text-xs text-tech-mute",children:$?`Detalhes do cancelamento enviados para ${g||"seu email"}.`:`Enviamos os detalhes para ${g||"seu email"}.`})]})]}),s.jsxs("div",{className:"mt-4 flex items-center justify-between gap-3 rounded-xl bg-tech-fg px-4 py-3",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-accent",children:"Código"}),s.jsx("p",{className:"break-all font-geist-mono text-lg font-bold tracking-wider text-tech-bg md:text-xl",children:k})]})]}),$&&s.jsxs(oi,{title:"Cancelamento e reembolso",children:[s.jsx(Oa,{k:"Status",v:O>0?"Cancelada com reembolso parcial":"Cancelada sem reembolso"}),L&&s.jsx(Oa,{k:"Processado em",v:L}),s.jsx(Oa,{k:"Total pago",v:ai(N)}),T&&s.jsx(Oa,{k:"Seguro (não reembolsável)",v:`â ${ai(D)}`}),s.jsx(Oa,{k:"Base reembolsável",v:ai(F)}),s.jsx(Oa,{k:"PolÃtica aplicada",v:V>0?`${V}% da base`:"Sem reembolso"}),s.jsx(Oa,{k:"Estornado no método de pagamento",v:ai(O)}),s.jsx(Oa,{k:"Não reembolsado",v:ai(U)}),O>0&&s.jsx("p",{className:"mt-3 text-xs text-tech-mute",children:E==="pix"?"Pix costuma cair em minutos na conta de origem.":"Como o pagamento foi no cartão, o estorno aparece na fatura em 1 a 2 ciclos, conforme o banco emissor."})]}),s.jsxs(oi,{title:"PerÃodo",children:[s.jsx(Oa,{k:"Entrada",v:C}),s.jsx(Oa,{k:"SaÃda",v:P}),!w&&s.jsx("p",{className:"mt-3 text-xs text-tech-mute",children:"Horário a confirmar. Entre em contato se precisar ajustar."})]}),H?s.jsxs(oi,{title:"VeÃculo",children:[I&&s.jsx(Oa,{k:"Placa",v:I.toUpperCase()}),j&&s.jsx(Oa,{k:"Modelo",v:j})]}):s.jsx(oi,{title:"VeÃculo",children:s.jsx("p",{className:"text-sm text-tech-mute",children:W?"Nenhum veÃculo informado. Apresente a placa do veÃculo na chegada.":"Os dados do veÃculo estão registrados na sua reserva. Apresente a placa na chegada."})}),s.jsxs(oi,{title:"Unidade",children:[s.jsx("p",{className:"text-base font-semibold text-tech-fg",children:_||`xpark · ${b}`}),s.jsxs("p",{className:"mt-1 text-sm text-tech-mute",children:[Iie[b]??b,v?` · ${y}`:""]}),b==="CGH"&&s.jsx("p",{className:"mt-3 text-sm font-medium text-tech-fg",children:"Em Congonhas não há traslado nem van. O acesso ao terminal é a pé, em cerca de 5 minutos."}),B&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"mt-4 flex items-start gap-2 text-sm text-tech-fg",children:[s.jsx(en,{className:"mt-0.5 h-4 w-4 shrink-0 text-tech-accent"}),s.jsx("span",{children:B})]}),ae&&s.jsxs("a",{href:ae,target:"_blank",rel:"noreferrer",className:"mt-3 inline-flex items-center gap-1.5 text-sm font-medium text-tech-accent hover:underline",children:["Abrir no Google Maps ",s.jsx(uT,{className:"h-3.5 w-3.5"})]})]})]}),s.jsxs(oi,{title:"Pagamento",children:[s.jsx(Oa,{k:"Método",v:A}),s.jsx(Oa,{k:"Total",v:ai(N)}),$&&O>0&&s.jsx(Oa,{k:"Estorno realizado",v:`â ${ai(O)}`})]}),(d==null?void 0:d.has_insurance)&&s.jsx(oi,{title:"Seguro Cancelamento e Atraso",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(Qs,{className:"mt-0.5 h-5 w-5 shrink-0 text-tech-accent"}),s.jsxs("div",{className:"text-sm text-tech-fg/80",children:[s.jsx("p",{className:"font-semibold text-tech-fg",children:"Proteção contratada"}),s.jsx("p",{className:"mt-1 text-tech-mute",children:"Cancele com até 6h de antecedência para reembolso integral. 3h adicionais grátis no retorno em caso de atraso do voo."}),s.jsx("p",{className:"mt-2 text-xs text-tech-mute",children:"Para acionar em caso de atraso, apresente sua reserva no balcão da unidade."})]})]})}),!$&&s.jsxs("div",{className:"mt-4 rounded-2xl border border-dashed border-tech-border p-4 md:p-5",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Próximos passos"}),s.jsx("ol",{className:"mt-2 space-y-1.5 text-sm",children:[`Você receberá um QR Code por email no dia anterior à viagem (informe o código ${
1051k} se precisar de suporte).`,"Apresente o código (ou QR) na cancela ao chegar no estacionamento.","Cancelamento conforme a polÃtica (até 90% de reembolso com 3 dias de antecedência). Veja em /politica-cancelamento."].map((Ce,$e)=>s.jsxs("li",{className:"flex gap-3",children:[s.jsx("span",{className:"font-geist-mono text-tech-accent",children:String($e+1).padStart(2,"0")}),s.jsx("span",{className:"text-tech-fg/80",children:Ce})]},$e))})]}),s.jsxs("div",{className:"mt-6 flex flex-wrap items-center justify-center gap-2 print:hidden",children:[!$&&t&&s.jsx("div",{className:"w-full print:hidden",children:s.jsx(Lie,{bookingId:t})}),s.jsx(G,{to:"/minhas-reservas",className:"inline-flex h-10 items-center gap-2 rounded-full bg-tech-fg px-5 font-geist text-sm font-medium text-tech-bg hover:opacity-90",children:"Minhas reservas"}),s.jsx(G,{to:"/",className:"inline-flex h-10 items-center gap-2 rounded-full border border-tech-border bg-tech-card px-5 font-geist text-sm font-medium text-tech-fg hover:border-tech-fg/40",children:"Voltar ao inÃcio"}),s.jsxs("button",{onClick:()=>window.print(),className:"inline-flex h-10 items-center gap-2 rounded-full border border-tech-border bg-tech-card px-5 font-geist text-sm font-medium text-tech-fg hover:border-tech-fg/40",children:[s.jsx(QL,{className:"h-4 w-4"})," Imprimir comprovante"]})]})]})})}function oi({title:e,children:t}){return s.jsxs("div",{className:"mt-4 rounded-2xl border border-tech-border bg-tech-card p-4 md:p-5",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:e}),s.jsx("div",{className:"mt-3",children:t})]})}function Oa({k:e,v:t}){return s.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-tech-border py-2 last:border-0 text-sm",children:[s.jsx("span",{className:"text-tech-mute",children:e}),s.jsx("span",{className:"font-semibold text-tech-fg",children:t})]})}function Lie({bookingId:e}){const[t,a]=x.useState(0),[o,r]=x.useState(!1),[n,i]=x.useState(!1),[l,c]=x.useState(null);async function d(u){a(u),r(!0);const{data:m}=await ze.functions.invoke("submit-review",{body:{bookingId:e,rating:u,source:"checkout"}});r(!1),m!=null&&m.ok?i(!0):c((m==null?void 0:m.error)??"Não foi possÃvel registrar agora.")}return s.jsxs("div",{className:"mb-4 w-full rounded-2xl border border-tech-border bg-tech-card p-5 text-left",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Avalie sua experiência"}),n?s.jsxs("p",{className:"mt-2 text-sm text-tech-fg/85",children:["Obrigado pela avaliação! Se quiser deixar um comentário,"," ",s.jsx(G,{to:`/avaliar?r=${e}`,className:"underline",children:"clique aqui"}),"."]}):s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"mt-2 text-sm text-tech-fg/85",children:"Como foi comprar pelo xpark? Avalie a plataforma (a busca, a reserva, o pagamento e o atendimento), não o pátio."}),s.jsxs("div",{className:"mt-3 flex items-center gap-3",children:[s.jsx(Wr,{value:t,onChange:o?void 0:d}),s.jsx(G,{to:`/avaliar?r=${e}`,className:"text-sm text-tech-mute underline",children:"escrever comentário"})]}),l&&s.jsx("p",{className:"mt-2 text-sm text-red-500",children:l})]})]})}const Bie="https://cx.bandeirapark.online/solicitar-cancelamento";function Vie(){const e=Nr(),t=()=>{window.history.length>1?e(-1):e("/escolher")};return s.jsxs("div",{className:"bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"PolÃtica de Cancelamento e Reserva | xpark",description:"PolÃtica de cancelamento, reembolso e regras de uso das reservas xpark / Bandeira Park.",path:"/politica-cancelamento"}),s.jsxs("div",{className:"container max-w-3xl py-12 md:py-16",children:[s.jsxs("button",{type:"button",onClick:t,className:"inline-flex items-center gap-1.5 text-sm text-tech-mute hover:text-tech-fg",children:[s.jsx(Za,{className:"h-3.5 w-3.5"})," Voltar"]}),s.jsx("h1",{className:"mt-6 font-geist text-3xl font-semibold tracking-tight md:text-4xl",children:"PolÃtica de Cancelamento e Reserva"}),s.jsx("p",{className:"mt-4 text-tech-mute",children:"Ao realizar sua reserva, você concorda com as polÃticas de cancelamento e não comparecimento a seguir. Por favor, leia com atenção."}),s.jsxs("section",{className:"mt-10 rounded-2xl border border-tech-border bg-tech-card p-6",children:[s.jsx("h2",{className:"font-geist text-lg font-semibold",children:"Precisa cancelar?"}),s.jsx("p",{className:"mt-2 text-sm text-tech-fg/80",children:"Use nosso canal oficial para solicitar o cancelamento e acompanhar o reembolso."}),s.jsxs("a",{href:Bie,target:"_blank",rel:"noreferrer",className:"mt-4 inline-flex items-center gap-2 rounded-full bg-tech-fg px-5 py-2.5 text-sm font-semibold text-tech-bg hover:opacity-90",children:["Solicitar reembolso ",s.jsx(uT,{className:"h-3.5 w-3.5"})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Alterações e Cancelamentos"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/80",children:"Qualquer alteração no veÃculo ou cancelamento do serviço deve ser comunicada formalmente pelo nosso canal de cancelamento."}),s.jsx("div",{className:"mt-5 overflow-hidden rounded-xl border border-tech-border",children:s.jsxs("table",{className:"w-full text-sm",children:[s.jsx("thead",{className:"bg-tech-card",children:s.jsxs("tr",{children:[s.jsx("th",{className:"px-4 py-3 text-left font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Antecedência"}),s.jsx("th",{className:"px-4 py-3 text-right font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Reembolso"})]})}),s.jsxs("tbody",{className:"divide-y divide-tech-border",children:[s.jsxs("tr",{children:[s.jsx("td",{className:"px-4 py-3",children:"3 dias ou mais"}),s.jsx("td",{className:"px-4 py-3 text-right font-semibold",children:"90%"})]}),s.jsxs("tr",{children:[s.jsx("td",{className:"px-4 py-3",children:"Menos de 72 horas"}),s.jsx("td",{className:"px-4 py-3 text-right font-semibold",children:"40%"})]}),s.jsxs("tr",{children:[s.jsx("td",{className:"px-4 py-3",children:"Sem aviso prévio / não comparecimento"}),s.jsx("td",{className:"px-4 py-3 text-right font-semibold",children:"0%"})]}),s.jsxs("tr",{children:[s.jsx("td",{className:"px-4 py-3",children:"Com Seguro Cancelamento, a qualquer momento antes da entrada"}),s.jsx("td",{className:"px-4 py-3 text-right font-semibold",children:"100% (menos o seguro)"})]})]})]})}),s.jsxs("p",{className:"mt-4 text-sm text-tech-fg/80",children:["Para alterar a placa do ve
1051Ãculo, informe com no mÃnimo ",s.jsx("strong",{children:"48 horas"})," de antecedência pelo mesmo canal."]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Observações Importantes"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsx("li",{children:"Não transportamos caixas, pranchas, bikes e grandes volumes."}),s.jsxs("li",{children:[s.jsx("strong",{children:"Permanência da chave:"})," nas unidades de Congonhas (CGH) e Tietê, a chave do veÃculo permanece no estacionamento durante toda a estadia. Em Guarulhos (GRU) e Viracopos (VCP), você pode optar pelo serviço ",s.jsx("strong",{children:"Vaga VIP â Leve a chave"}),", que permite levar a chave consigo durante a viagem."]})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Utilização da Estadia"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Voucher obrigatório:"})," apresente o voucher (impresso ou no celular) na entrada."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Diárias de 24h:"})," contadas a partir do horário de entrada informado na reserva."]}),s.jsx("li",{children:"Sem tolerância na primeira hora de estadia."}),s.jsxs("li",{children:[s.jsx("strong",{children:"Diárias não utilizadas não são reembolsadas."})," SaÃdas antecipadas ou retornos antes do prazo previsto na reserva não geram crédito ou devolução de valores. O perÃodo contratado é cobrado integralmente, independentemente do uso efetivo."]})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Serviço de Traslado"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Oferecemos traslado gratuito nas unidades de Guarulhos (GRU) e Viracopos (VCP), com funcionamento 24 horas."})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Seguro Cancelamento e Atraso de Voo"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Ao contratar o seguro, você garante proteção em caso de cancelamento de voo ou atraso significativo. Para acionar o benefÃcio, apresente a documentação comprobatória no balcão da unidade."})]}),s.jsx("section",{className:"mt-10 border-t border-tech-border pt-6 text-sm text-tech-mute",children:s.jsxs("ul",{className:"list-disc space-y-2 pl-5",children:[s.jsx("li",{children:"A reserva é pessoal e intransferÃvel."}),s.jsx("li",{children:"Esta polÃtica está em conformidade com o Código de Defesa do Consumidor (Lei Federal nº 8.078/1991)."})]})})]})]})}function Fie(){return s.jsxs("div",{className:"bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"Estacionamento de aeroporto é seguro? Quem responde pelo seu carro | xpark",description:"Seu carro fica seguro no estacionamento de aeroporto? Entenda quem se responsabiliza pelo veÃculo, o seguro das unidades e como o xpark compara a segurança de cada operadora.",path:"/estacionamento-de-aeroporto-e-seguro"}),s.jsxs("div",{className:"container max-w-3xl py-12 md:py-16",children:[s.jsx("p",{className:"font-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Segurança"}),s.jsx("h1",{className:"mt-3 font-geist text-3xl font-semibold tracking-tight md:text-4xl",children:"à seguro deixar o carro no estacionamento de aeroporto?"}),s.jsx("p",{className:"mt-4 text-tech-mute",children:"Sim, quando você escolhe uma operadora com segurança documentada. O que pouca gente sabe: quem guarda e responde pelo seu carro é a operadora do estacionamento, não a plataforma de reserva. O xpark compara os estacionamentos e mostra a segurança de cada um para você escolher com informação, e não no escuro."}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Quem responde pelo seu carro"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:'O xpark é uma plataforma de comparação e reserva de estacionamento. Não operamos estacionamentos e não seguramos o seu carro. Quem se responsabiliza pelo veÃculo durante a guarda é a operadora onde fica a vaga, cada uma com sua própria estrutura de segurança e seguro. Por isso, a pergunta certa não é "o xpark é seguro?", e sim "essa operadora é segura?", e é isso que a gente ajuda a responder.'})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"A segurança que cada operadora documenta"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:'A segurança pesa 25% no ranking do xpark. Para cada operadora, mostramos o que ela divulga publicamente: cobertura de seguro, monitoramento, câmeras e controle de acesso. Onde uma operadora não publica esses dados, marcamos como "
1051não divulgado publicamente", nunca estimamos. Assim você compara todas pela mesma régua.'}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsx("li",{children:s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-guarulhos",className:"underline",children:"Comparativo de Guarulhos (GRU)"})}),s.jsx("li",{children:s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-viracopos",className:"underline",children:"Comparativo de Viracopos (VCP)"})}),s.jsx("li",{children:s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-confins",className:"underline",children:"Comparativo de Confins (CNF)"})}),s.jsx("li",{children:s.jsx(G,{to:"/metodologia",className:"underline",children:"Metodologia completa e pesos dos critérios"})})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Bandeira Park (GRU e VCP): seguro de R$ 1 milhão"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Entre as operadoras avaliadas, as unidades do Bandeira Park em Guarulhos (GRU) e Viracopos (VCP) contam com:"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsx("li",{children:"Seguro Tokio Marine de R$ 1 milhão, que cobre roubo e furto mediante arrombamento e colisão, com benefÃcio de até R$ 20 mil de carro reserva."}),s.jsx("li",{children:"Monitoramento 24h com câmeras e controle de acesso."})]}),s.jsxs("p",{className:"mt-3 text-sm text-tech-fg/85",children:["Essa cobertura é da operadora (Bandeira Park), não do xpark: o xpark conecta você a uma unidade que oferece essa proteção. Veja as fichas em"," ",s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-guarulhos/bandeira-park",className:"underline",children:"Bandeira Park GRU"})," ","e"," ",s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-viracopos/bandeira-park",className:"underline",children:"Bandeira Park VCP"}),"."]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Segurança da reserva e do pagamento"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsx("li",{children:"Pagamento pelo Mercado Pago. O xpark não armazena os dados completos do seu cartão."}),s.jsxs("li",{children:["Cancelamento: 90% de reembolso com 3 dias ou mais de antecedência, 40% até 48h, 0% em no-show."," ",s.jsx(G,{to:"/politica-cancelamento",className:"underline",children:"Ver polÃtica"}),"."]}),s.jsx("li",{children:"Seguro viagem opcional, que cobre atrasos ou cancelamento de voo mediante comprovação."})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Seus dados também protegidos"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsx("li",{children:"Login por e-mail e senha e via Google, com reset por link de uso único."}),s.jsx("li",{children:"Coleta mÃnima: dados de contato, do veÃculo, da viagem e do pagamento (via processador)."}),s.jsx("li",{children:"Infraestrutura em HTTPS/TLS, com segredos e tokens exclusivamente no servidor, nunca no código do navegador."}),s.jsx("li",{children:"Acesso por linha (RLS) habilitado: cada cliente enxerga apenas o que lhe pertence."}),s.jsxs("li",{children:["Direitos de acesso, correção e exclusão dos seus dados por"," ",s.jsx("a",{href:"mailto:[email protected]",className:"underline",children:"[email protected]"}),"."]})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Transparência"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"O xpark recebe comissão das operadoras parceiras, e isso não altera o ranking: os critérios e pesos são os mesmos para todas, e onde outra operadora é melhor em um critério, isso é dito de forma clara."})]}),s.jsx("p",{className:"mt-12 text-xs text-tech-mute",children:"Conteúdo editorial mantido pelo xpark. Atualizado periodicamente."})]})]})}function pw({image:e,label:t,title:a,dek:o,meta:r,summary:n,sections:i,children:l}){const c=Mc.filter(d=>!d.unlisted).slice(0,4);return s.jsxs(s.Fragment,{children:[s.jsx("header",{className:"bg-paper text-ink",children:s.jsx("div",{className:"container max-w-6xl pb-10 pt-7 sm:pt-10 lg:pb-14 lg:pt-16",children:s.jsxs("div",{className:"grid items-center gap-7 md:grid-cols-[minmax(0,1.05fr)_minmax(0,1fr)] md:gap-10 lg:gap-14",children:[s.jsx("div",{className:"xp-featured-image aspect-[16/10] w-full overflow-hidden rounded-card bg-cream md:aspect-[4/3]",children:s.jsx("img",{src:e,alt:"",className:"h-full w-full object-cover",loading:"eager",fetchPriority:"high"})}),s.jsxs("div",{className:"min-w-0",children:[s.jsx(G,{to:Vs,className:"text-sm text-mute transition-colors hover:text-ink",children:"â Voltar aos guias"}),s.jsxs("p",{className:"mt-5 flex items-center gap-3 text-xs font-bold uppercase text-gold-dark",children:[s.jsx("span",{className:"h-1 w-8 rounded-full bg-gold","aria-hidden":"true"}),t]}),s.jsx("h1",{className:"mt-3 font-home-heading text-[34px] font-bold leading-[1.12] text-ink sm:text-4xl lg:text-[44px]",children:a}),s.jsx("p",{className:"mt-5 font-home-body text-base leading-relaxed text-ink/80 sm:text-lg",children:o}),r&&s.jsx("div",{className:"mt-6 text-xs text-mute sm:text-sm",children:r})]})]})})}),s.jsx(ct,{as:"section",className:"border-t border-border bg-paper",children:s.jsxs("div",{className:"container grid max-w-6xl items-start gap-10 pb-16 pt-10 md:pb-24 md:pt-14 lg:grid-cols-[minmax(0,1fr)_260px] lg:gap-16",children:[s.jsxs("article",{className:"min-w-0",children:[s.jsxs("div",{className:"border-l-4 border-gold bg-cream px-5 py-6 sm:px-7 sm:py-
10517",children:[s.jsx("h2",{className:"font-home-heading text-xl font-bold text-ink",children:"Em resumo"}),s.jsx("div",{className:"mt-3 text-base leading-relaxed text-ink/85 sm:text-[17px]",children:n})]}),i.length>0&&s.jsx("nav",{"aria-label":"Nesta publicação",className:"mt-8 border-y border-border py-5 lg:hidden",children:s.jsxs("details",{className:"group",open:!0,children:[s.jsxs("summary",{className:"flex cursor-pointer items-center justify-between gap-4 font-home-heading text-base font-bold text-ink marker:content-none [&::-webkit-details-marker]:hidden",children:["Nesta publicação ",s.jsx("span",{"aria-hidden":"true",className:"text-gold-dark transition-transform group-open:rotate-180",children:"â"})]}),s.jsx("ol",{className:"mt-5 grid gap-3 pl-5 text-sm leading-relaxed text-mute sm:grid-cols-2 sm:gap-x-8",children:i.map(d=>s.jsx("li",{className:"list-decimal pl-1 marker:text-gold-dark",children:s.jsx("a",{href:`#${d.id}`,className:"underline-offset-4 hover:text-ink hover:underline",children:d.title})},d.id))})]})}),l]}),s.jsxs("aside",{"aria-label":"Leia também",className:"border-t border-border pt-7 lg:sticky lg:top-24 lg:border-t-0 lg:pt-0",children:[i.length>0&&s.jsxs("nav",{"aria-label":"Tópicos",className:"mb-9 hidden border-b border-border pb-8 lg:block",children:[s.jsx("h2",{className:"text-xs font-bold uppercase text-gold-dark",children:"Nesta publicação"}),s.jsx("ol",{className:"mt-4 space-y-2.5",children:i.map(d=>s.jsx("li",{children:s.jsx("a",{href:`#${d.id}`,className:"text-sm leading-snug text-mute transition-colors hover:text-ink",children:d.title})},d.id))})]}),s.jsx("h2",{className:"text-xs font-bold uppercase text-gold-dark",children:"Leia também"}),s.jsx("div",{className:"mt-5 space-y-5",children:c.map(d=>s.jsxs(G,{to:vr(d.slug),className:"group grid grid-cols-[88px_minmax(0,1fr)] items-start gap-3",children:[s.jsx("div",{className:"aspect-[4/3] overflow-hidden rounded-card bg-cream",children:s.jsx(Bc,{src:d.image,className:"h-full w-full object-cover"})}),s.jsx("span",{className:"min-w-0 text-sm font-semibold leading-snug text-ink transition-colors group-hover:text-gold-dark",children:d.title})]},d.slug))})]})]})})]})}function Vo({id:e,children:t}){return s.jsxs("div",{id:e,className:"mb-4 mt-14 scroll-mt-28",children:[s.jsx("span",{className:"mb-4 block h-1 w-10 rounded-full bg-gold","aria-hidden":"true"}),s.jsx("h2",{className:"font-home-heading text-2xl font-bold leading-tight text-ink md:text-3xl",children:t})]})}const Qa="mt-6 text-[17px] leading-[1.75] text-ink/85",im="text-gold-dark underline underline-offset-4 transition-colors hover:text-ink",Uie=[{weight:35,title:"Preço / custo-benefÃcio",rubric:"Diária média ponderada por faixas de permanência (1, 7, 17 e 30 dias), considerando tarifa de canal online ou app. Onde a operadora aplica desconto progressivo, o cálculo usa o valor publicado para cada faixa."},{weight:25,title:"Segurança",rubric:'Apólice de seguro contratada e divulgada, monitoramento 24 horas, presença de equipe em todos os turnos e histórico público de sinistro. Operadoras que não divulgam apólice ou polÃtica de cobertura recebem o atributo marcado como "não divulgado".'},{weight:20,title:"Transfer / acesso ao terminal",rubric:'Tipo de transporte ao terminal (van, ônibus, valet), tempo médio até o embarque, frequência durante o dia e operação noturna. Para o estacionamento oficial dentro do aeroporto, o critério é avaliado como "não aplicável".'},{weight:15,title:"Reputação",rubric:"Nota Google ponderada pelo volume de avaliações dos últimos 12 meses e tempo de operação documentado da empresa. Reviews patrocinados ou em base muito pequena recebem peso reduzido."},{weight:5,title:"Transparência",rubric:"Preço claro e público no site da operadora, polÃtica de cancelamento divulgada, condições de cobertura acessÃveis e dados auditáveis pelo viajante. Critério também usado como desempate em notas finais empatadas."}],Gie=[{id:"como-avaliamos",title:"Cinco critérios, pesos públicos"},{id:"como-coletamos",title:"Dados públicos, fontes verificáveis"},{id:"independencia",title:"Independência editorial"},{id:"base-legal",title:"Comparativo objetivo, dentro da lei"},{id:"uber",title:"Como estimamos o custo do Uber"}],sr=im;function zie(){return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:"Metodologia · Como o xpark compara estacionamentos",description:"Critérios, pesos, fontes e divulgação de vÃnculos comerciais do Xpark. Comparativo independente e auditável.",path:"/metodologia"}),s.jsxs(pw,{image:D6,label:"Metodologia",title:"Como o xpark compara estacionamentos",dek:"Cinco critérios públicos, com pesos divulgados, valem igualmente para operadoras parceiras e não parceiras.",meta:s.jsx("span",{children:"Redação xpark · Atualizada em junho de 2026"}),summary:s.jsx("p",{children:"A nota final vai de 0 a 100 e soma preço (35%), segurança (25%), transfer (20%), reputação (15%) e transparência (5%). Dados não divulgados recebem nota neutra, e a transparência desempata."}),sections:Gie,children:[s.jsx(Vo,{id:"como-avaliamos",children:"Cinco critérios. Pesos públicos."}),s.jsx("div",{className:"mt-6 divide-y divide-border rounded-card border border-border",children:Uie.map(e=>s.jsxs("div",{className:"grid gap-3 p-5 sm:grid-cols-[88px_1fr] sm:gap-6 sm:p-6",children:[s.jsxs("p",{className:"font-home-heading text-3xl font-bold text-gold-dark",children:[e.weight,"%"]}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-home-heading text-lg font-bold text-ink",children:e.title}),s.jsx("p",{className:"mt-2 text-[15px] leading-relaxed text-ink/80",children:e.rubric})]})]},e.title))}),s.jsx("p",{className:Qa,children:"A nota final é a soma ponderada normalizada de 0 a 100. Quando duas operadoras empatam, o critério de Transparência desempata."}),s.jsx(Vo,{id:"como-coletamos",children:"Dados públicos, fontes verificáveis."}),s.jsx("ul",{className:"mt-6 grid gap-4 sm:grid-cols-2",children:[["Preço","Canais oficiais de venda de cada operadora (site, app e tarifa de balcão) no mês de coleta indicado."],["Segurança",'Apólices e polÃticas de cobertura divulgadas pela própria operadora. Onde não houver divulgação, o atributo aparece como "não divulgado".'],["Reputação","Google Reviews dos últimos 12 meses e tempo de operação documentado em fontes públicas."],["Transfer","Informação publicada pela operadora e checagem cruzada com relatos re
1051centes de viajantes nos canais oficiais."]].map(([e,t])=>s.jsxs("li",{className:"rounded-card border border-border bg-cream p-5",children:[s.jsx("p",{className:"text-xs font-bold uppercase text-gold-dark",children:e}),s.jsx("p",{className:"mt-2 text-[15px] leading-relaxed text-ink/80",children:t})]},e))}),s.jsx("p",{className:Qa,children:'Quando uma operadora não divulga um dado, registramos "não divulgado". Não inferimos defeito: o critério recebe nota neutra e o fato fica visÃvel no perfil público.'}),s.jsx("h3",{id:"niveis-de-fonte",className:"mt-10 font-home-heading text-lg font-bold text-ink",children:"Dois nÃveis de fonte"}),s.jsxs("ul",{className:"mt-4 grid gap-4 sm:grid-cols-2",children:[s.jsxs("li",{className:"rounded-card border border-border bg-cream p-5",children:[s.jsx("p",{className:"text-xs font-bold uppercase text-gold-dark",children:"NÃvel 1 · coleta direta"}),s.jsx("p",{className:"mt-2 text-[15px] leading-relaxed text-ink/80",children:"O xpark consulta o preço e os dados no canal oficial da própria operadora (site, app ou tabela de balcão) e registra a data da coleta."})]}),s.jsxs("li",{className:"rounded-card border border-border bg-cream p-5",children:[s.jsx("p",{className:"text-xs font-bold uppercase text-gold-dark",children:"NÃvel 2 · dado publicado por terceiro"}),s.jsx("p",{className:"mt-2 text-[15px] leading-relaxed text-ink/80",children:"Em algumas praças (por exemplo, Congonhas), o dado foi lido em levantamento de preços de terceiro. A ficha informa que a fonte é um terceiro e a data da coleta, e recomendamos confirmar o valor no canal oficial antes de reservar."})]})]}),s.jsx("p",{className:Qa,children:"Cada tabela mostra a fonte exata logo abaixo dos preços. Nunca apresentamos um dado de terceiro como se fosse coleta direta no site da operadora."}),s.jsx(Vo,{id:"independencia",children:"Independência editorial."}),s.jsx("p",{id:"independencia-editorial",className:Qa,children:"O ranking xpark é regido exclusivamente pela metodologia pública desta página. O xpark integra o mesmo grupo empresarial do Bandeira Park, uma das operadoras avaliadas, e é justamente por isso que adotamos critérios objetivos, pesos publicados e fontes citadas em cada tabela: qualquer leitor pode auditar cada posição. Nenhuma operadora, incluindo o Bandeira Park, recebe tratamento diferenciado."}),s.jsxs("p",{className:Qa,children:["Parcerias comerciais completas em ",s.jsx(G,{to:"/parceiros",className:sr,children:"Seja um parceiro"}),". Cupons e tarifas promocionais vivem no checkout, nunca no editorial."]}),s.jsxs("p",{id:"correcoes",className:Qa,children:[s.jsx("strong",{children:"Correções."})," Inexatidões reportadas a ",s.jsx("a",{href:"mailto:[email protected]",className:sr,children:"[email protected]"})," são corrigidas em até 48 horas úteis."]}),s.jsx(Vo,{id:"base-legal",children:"Comparativo objetivo, dentro da lei."}),s.jsx("p",{className:Qa,children:"A comparação objetiva de preços e serviços publicamente divulgados é atividade lÃcita e consolidada no Brasil. O xpark opera em conformidade com:"}),s.jsxs("ul",{className:"mt-5 list-disc space-y-3 pl-5 text-[17px] leading-[1.75] text-ink/85 marker:text-gold-dark",children:[s.jsxs("li",{children:["o direito do consumidor à informação adequada e clara (Código de Defesa do Consumidor, art. 6º, III, Lei 8.078/90): ",s.jsx("a",{href:"https://www.planalto.gov.br/ccivil_03/leis/l8078compilado.htm",target:"_blank",rel:"noopener noreferrer",className:sr,children:"planalto.gov.br"}),"."]}),s.jsxs("li",{children:["os requisitos da publicidade comparativa do CONAR (art. 32): objetividade, comprovabilidade e não denegrição: ",s.jsx("a",{href:"http://www.conar.org.br/codigo/codigo.php",target:"_blank",rel:"noopener noreferrer",className:sr,children:"conar.org.br"}),"."]}),s.jsxs("li",{children:["o entendimento do STJ de que a publicidade comparativa verdadeira e objetiva não configura concorrência desleal (caso Rayovac, 2017): ",s.jsx("a",{href:"https://www.stj.jus.br/sites/portalp/Paginas/Comunicacao/Noticias-antigas/2017/2017-06-13_09-29_Afastada-alegacao-de-concorrencia-desleal-em-publicidade-comparativa-da-Rayovac.aspx",target:"_blank",rel:"noopener noreferrer",className:sr,children:"stj.jus.br"}),"."]}),s.jsxs("li",{children:["os limites da Lei da Propriedade Industrial (Lei 9.279/96, art. 195), razão pela qual todo dado exibido tem fonte oficial e data de coleta: ",s.jsx("a",{href:"https://www.planalto.gov.br/ccivil_03/leis/l9279.htm",target:"_blank",rel:"noopener noreferrer",className:sr,children:"planalto.gov.br"}),"."]})]}),s.jsx("p",{className:Qa,children:"Nomes de operadoras são citados exclusivamente para identificação (uso nominativo), sem logotipos e sem relação de patrocÃnio ou endosso, salvo quando expressamente indicada."}),s.jsx(Vo,{id:"uber",children:"Como estimamos o custo do Uber."}),s.jsxs("p",{className:Qa,children:["A estimativa usada na ",s.jsx(G,{to:"/uber-ou-estacionamento-aeroporto",className:sr,children:'calculadora "Uber ou estacionamento no aeroporto"'})," parte da estrutura de tarifas do UberX: bandeirada somada a um valor por quilômetro. Adotamos bandeirada de R$ 5,00 e R$ 2,20/km, ponto médio conservador das faixas praticadas em São Paulo (bandeirada de R$ 1,50 a R$ 4,50 e R$ 1,00 a R$ 2,45 por km), conforme levantamento público (coleta em julho de 2026): ",s.jsx("a",{href:"https://www.seguroauto.org/tabela-preco-uber/",target:"_blank",rel:"noopener noreferrer",className:sr,children:"seguroauto.org"}),"."]}),s.jsxs("p",{className:Qa,children:["O custo de ida e volta considera 2 corridas. Tarifas reais variam com horário, trânsito, demanda e cidade. Para o valor exato, consulte a ",s.jsx("a",{href:"https://www.uber.com/global/pt-br/price-estimate/",target:"_blank",rel:"noopener noreferrer",className:sr,children:"estimativa oficial do Uber"}),' ou o app. Confins pode ter tarifas distintas de São Paulo; use o campo "sei minha tarifa" para maior precisão.']}),s.jsxs("div",{className:"mt-16 border-t border-border pt-8",children:[s.jsx("p",{className:"font-home-heading text-xl font-bold text-ink",children:"Pronto para comparar?"}),s.jsxs("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:["Veja o guia de ",s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-guarulhos",className:sr,children:"Guarulhos (GRU)"})," ou de ",s.jsx(G,{to:"/aeroportos/estacionamento-aeroporto-viracopos",className:sr,children:"Viracopos (VCP)"}),"."]}),s.jsxs(G,{to:"/",className:"mt-5 inline-flex rounded-full bg-ink px-6 py-3 text-sm font-semibold text-paper transition-colors hover:bg-gold hover:text-ink",children:["Encontrar minha vaga ",s.jsx("span",{"aria-hidden":"true",className:"ml-2",children:"â"})]})]})]})]})}function Hie(){return s.jsxs("div",{className:"bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"Quem somos | xpark, comparador de estacionamentos do Brasil",description:`O xpark é o comparador de estacionamentos do Brasil. Hoje compara ${Es}, com fontes identificadas e metodologia pública.`,path:"/quem-somos",jsonLd:R5}),s.jsxs("div",{className:"container max-w-3xl py-12 md:py-16",children:[s.jsx("p",{className:"font-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Institucional"}),s.jsx("h1",{className:"mt-3 font-geist text-3xl font-semibold tracking-tight md:text-4xl",children:"Quem somos - xpark.ai"}),s.jsxs("p",{className:"mt-4 text-tech-mute",children:["O xpark é o comparador de estacionamentos do Brasil. Hoje reunimos ",Es,", com fonte citada e data de coleta em cada tarifa publicada. Comparamos preço, segurança e traslado em aeroportos, terminais rodoviários e outros pontos de alta demanda. Onde há reserva, ela é feita online,
1051com Pix ou cartão."]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"O que o xpark.ai é"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-2 pl-5 text-sm text-tech-fg/85",children:[s.jsx("li",{children:"Comparador de estacionamentos do Brasil, com reserva online nas praças atendidas."}),s.jsxs("li",{children:["Cobertura atual: ",Es,"."]}),s.jsxs("li",{children:["Metodologia pública com pesos declarados (",s.jsx(G,{to:"/metodologia",className:"underline",children:"ver metodologia"}),")."]}),s.jsx("li",{children:'Preço com fonte e data de coleta; onde a operadora não publica, marcamos "não divulgado publicamente".'})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Como comparamos"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Cada ficha reúne endereço, distância até o terminal, tipo de vaga (descoberta, coberta ou valet), traslado, horário e a tabela de preços publicada pela operadora, sempre com a fonte e a data da coleta."}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"O custo total de cada perÃodo sai da mesma lógica de faixas da calculadora, para 1, 7, 15 e 30 dias, e fica aberto no Ãndice de Preços e nas páginas de preço de cada aeroporto."}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"O ranking segue uma metodologia pública: preço (35%), segurança (25%), traslado (20%), reputação (15%) e transparência (5%). Dados não divulgados recebem nota neutra."})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Como o xpark ganha dinheiro"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"O xpark recebe comissão das operadoras parceiras nas reservas feitas pelo site. Isso não altera o ranking: os critérios e pesos são os mesmos para todas, e onde outra operadora é melhor em um critério, isso é dito de forma clara."}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Nas fichas de operadoras que não são parceiras, o xpark apenas compara. Se algum dado estiver incorreto, a própria operadora pode pedir a correção pelo e-mail [email protected]."})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Reserva online"}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Em Guarulhos (GRU), Viracopos (VCP), Confins (CNF) e Congonhas (CGH), a reserva é feita no próprio xpark, com Pix ou cartão, e o atendimento no pátio é da operadora escolhida."}),s.jsx("p",{className:"mt-3 text-sm text-tech-fg/85",children:"Nos demais destinos, o xpark mostra preços, distâncias e condições lado a lado para você decidir com calma e economizar tempo."})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"O que o xpark.ai NÃO é"}),s.jsxs("ul",{className:"mt-3 list-disc space-y-3 pl-5 text-sm text-tech-fg/85",children:[s.jsxs("li",{children:["O xpark.ai não opera pátio próprio: quem guarda o seu carro é a operadora escolhida, não o xpark (",s.jsx(G,{to:"/estacionamento-de-aeroporto-e-seguro",className:"underline",children:"entenda quem responde pelo seu carro"}),")."]}),s.jsx("li",{children:"O xpark.ai não é um aplicativo de vagas de rua nem um app gamificado de estacionamento urbano."}),s.jsx("li",{children:'O xpark.ai não tem relação com outras empresas, aplicativos ou domÃnios de nome semelhante, como "X Park", "XPark.io" ou estacionamentos homônimos em outras cidades e aeroportos. Nossa operação é exclusivamente online, em xpark.ai.'})]})]}),s.jsxs("section",{className:"mt-10",children:[s.jsx("h2",{className:"font-geist text-xl font-semibold",children:"Contato"}),s.jsxs("p",{className:"mt-3 text-sm text-tech-fg/85",children:["E-mail: ",s.jsx("a",{href:"mailto:[email protected]",className:"underline",children:"[email protected]"})]})]})]})]})}const Kie="block text-xs font-bold uppercase text-mute",hw=e=>`inline-flex h-11 min-w-[64px] items-center justify-center rounded-full border px-4 text-sm font-semibold transition-colors ${e?"border-ink bg-ink text-paper":"border-ink/15 bg-paper text-ink hover:border-ink"}`;function oq({children:e}){return s.jsx("div",{className:"grid gap-6 rounded-panel border border-ink/10 bg-paper p-5 sm:p-7",children:e})}function zl({title:e,children:t}){return s.jsxs("div",{className:"min-w-0",children:[s.jsx("span",{className:Kie,children:e}),s.jsx("div",{className:"mt-3",children:t})]})}function rq({value:e,options:t,onChange:a}){return s.jsx("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Aeroporto",children:t.map(o=>s.jsx("button",{type:"button",role:"radio","aria-checked":e===o,onClick:()=>a(o),className:hw(e===o),children:o},o))})}function nq({value:e,min:t,max:a,onChange:o}){return s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[[1,7,15,30].map(r=>s.jsxs("button",{type:"button","aria-pressed":e===r,onClick:()=>o(r),className:hw(e===r),children:[r,"d"]},r)),s.jsxs("label",{className:"inline-flex h-11 items-center gap-2 rounded-full border border-ink/15 bg-paper pl-4 pr-3 text-sm text-mute focus-within:border-ink",children:["Outro",s.jsx("input",{type:"number",min:t,max:a,value:e,onCh
1051ange:r=>o(Number(r.target.value)),className:"w-12 bg-transparent text-right font-semibold text-ink outline-none","aria-label":"Número de dias"})]})]})}const CN={GRU:"Guarulhos (GRU)",VCP:"Viracopos (VCP)",CNF:"Confins (CNF)",CGH:"Congonhas (CGH)"};function Qie(){const[e]=Ao(),t=["GRU","VCP","CNF","CGH"].find(f=>{var g;return f===((g=e.get("aeroporto"))==null?void 0:g.toUpperCase())})??"GRU",[a,o]=x.useState(t),[r,n]=x.useState(7),i=Math.min(Kv,Math.max(Pj,Math.floor(r)||1)),l=x.useMemo(()=>Tm(a,i),[a,i]),c=K5(a),d=l.filter(f=>f.estimate!=null),u=d.reduce((f,g)=>!f||g.estimate.total<f.estimate.total?g:f,null),m=d.reduce((f,g)=>!f||g.estimate.total>f.estimate.total?g:f,null),h=Math.max(1,...d.map(f=>f.estimate.perDay)),p=x.useMemo(()=>toe.map(f=>aoe(f.iata,f.days)).filter(f=>f!=null),[]);return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:Gd.title,description:Gd.description,path:Gd.path,type:"website",jsonLd:roe()}),s.jsxs(pw,{image:q6,label:"Ferramenta xpark",title:Gd.h1,dek:"Informe o aeroporto e o número de dias. Comparamos o custo total de cada operadora a partir da tabela oficial, aplicando a faixa vigente.",meta:s.jsxs("span",{children:["Redação xpark · Coleta em ",io(c)]}),summary:s.jsx("p",{children:"A calculadora aplica a faixa que cada operadora publica (avulsa, 7, 17, 30 ou 30+ dias) e destaca a economia da reserva online quando existe."}),sections:[{id:"calculadora",title:"Calcule o seu perÃodo"},{id:"exemplos",title:"Três exemplos rápidos"},{id:"perguntas",title:"Perguntas frequentes"}],children:[s.jsx(Vo,{id:"calculadora",children:"Calcule o seu perÃodo"}),s.jsxs("div",{children:[s.jsxs("div",{className:"mb-6 inline-flex rounded-full border border-ink/15 bg-white p-1",role:"tablist",children:[s.jsx("span",{role:"tab","aria-selected":"true",className:"rounded-full bg-ink px-5 py-2 text-sm font-semibold text-paper",children:"Preço da vaga"}),s.jsx(G,{to:"/uber-ou-estacionamento-aeroporto",role:"tab","aria-selected":"false",className:"rounded-full px-5 py-2 text-sm font-semibold text-ink/70 transition-colors hover:text-ink",children:"Carro ou app?"})]}),s.jsxs(oq,{children:[s.jsxs("div",{className:"grid gap-6 md:grid-cols-[auto_minmax(0,1fr)] md:gap-10",children:[s.jsx(zl,{title:"Aeroporto",children:s.jsx(rq,{value:a,options:eoe,onChange:f=>o(f)})}),s.jsx(zl,{title:`Dias de estadia (1 a ${Kv})`,children:s.jsx(nq,{value:i,min:Pj,max:Kv,onChange:n})})]}),s.jsxs("p",{className:"border-t border-border pt-5 text-sm text-mute",children:[s.jsxs("span",{className:"font-semibold text-ink",children:[l.filter(f=>f.estimate!=null).length," de ",l.length]})," operadoras com preço publicado em ",CN[a]]})]}),u&&s.jsxs("div",{className:"mt-8 grid gap-6 rounded-panel bg-gold/10 p-6 md:grid-cols-[1.4fr_1fr] md:p-8",children:[s.jsxs("div",{children:[s.jsxs("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:["Menor custo para ",i," ",i===1?"dia":"dias"," em ",CN[a]]}),s.jsx("p",{className:"mt-2 font-geist text-5xl font-semibold tracking-tight text-ink md:text-6xl",children:X(u.estimate.total)}),s.jsxs("p",{className:"mt-2 text-sm text-ink/80",children:[u.operator.name,", ",X(u.estimate.perDay)," por diária"]})]}),m&&m.estimate.total>u.estimate.total&&s.jsxs("div",{className:"self-end",children:[s.jsxs("p",{className:"text-2xl font-semibold text-ink",children:["Economia de ",X(m.estimate.total-u.estimate.total)]}),s.jsxs("p",{className:"mt-1 text-sm text-mute",children:["em relação à opção mais cara (",m.operator.name,", ",X(m.estimate.total),")"]})]})]}),s.jsx("div",{className:"mt-8 overflow-x-auto",children:s.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-ink/20 text-xs uppercase tracking-[0.14em] text-mute",children:[s.jsx("th",{className:"py-2 pr-4",children:"#"}),s.jsx("th",{className:"py-2 pr-4",children:"Operadora"}),s.jsx("th",{className:"py-2 pr-4",children:"R$/dia (faixa aplicada)"}),s.jsxs("th",{className:"py-2 pr-4",children:["Total ",i," ",i===1?"dia":"dias"]}),s.jsx("th",{className:"py-2",children:"Ação"})]})}),s.jsx("tbody",{children:l.map((f,g)=>{const b=f.operator,v=f.estimate,y=b.slug.startsWith("bandeira-park")&&b.bookable;return s.jsxs("tr",{className:"border-b border-ink/10 align-top",children:[s.jsx("td",{className:"py-3 pr-4 font-geist-mono text-xs text-mute",children:v?String(g+1).padStart(2,"0"):"·"}),s.jsxs("td",{className:"py-3 pr-4",children:[s.jsx("p",{className:"font-display text-base text-ink",children:b.name}),s.jsxs("p",{className:"mt-1 font-geist-mono text-[10px] uppercase tracking-[0.16em] text-mute",children:[b.address.city," · ",b.iata]}),s.jsx(G,{to:`/aeroportos/${b.hubSlug}/${b.slug}`,className:"mt-1 inline-block text-xs text-ink/70 underline underline-offset-4 hover:text-gold",children:"Ver ficha"})]}),s.jsx("td",{className:"py-3 pr-4",children:v?s.jsxs(s.Fragment,{children:[s.jsxs("p",{className:"text-ink",children:[X(v.perDay),v.originalPerDay&&v.originalPerDay>v.perDay&&s.jsx("span",{className:"ml-2 text-xs text-mute line-through",children:X(v.originalPerDay)})]}),s.jsx("div",{className:"mt-1 h-1.5 w-28 overflow-hidden rounded-full bg-ink/10","aria-hidden":"true",children:s.jsx("div",{className:"h-full rounded-full bg-gold",style:{width:`${Math.max(8,v.perDay/h*100)}%`}})}),s.jsx("p",{className:"text-xs text-mute",children:v.label}),v.note&&s.jsx("p",{className:"text-xs text-mute",children:v.note}),v.onlineSavings&&s.jsxs("p",{className:"mt-1 inline-block rounded-full bg-gold/15 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-ink",children:["Reserva online: -",v.onlineSavings.savingsPct,"%"]})]}):s.jsx("p",{className:"text-mute",children:"consulte a operadora"})}),s.jsx("td",{className:"py-3 pr-4",children:v?s.jsx("p",{className:"font-display text-lg text-ink",children:X(v.total)}):s.jsx("p",{className:"text-mute",children:"·"})}),s.jsx("td",{className:"py-3",children:y?s.jsx(G,{to:b.reservationUrl,className:"inline-block rounded-full bg-ink px-4 py-2 font-geist-mono text-[11px] uppercase tracking-[0.18em] text-paper hover:bg-gold hover:text-ink",children:"Reservar"}):s.jsx("span",{className:"text-xs text-mute",children:"·"})})]},`${b.iata}-${b.slug}`)})})]})}),s.jsxs("p",{className:"mt-6 text-xs text-mute",children:["Valores baseados nas tabelas públicas das operadoras (coleta em"," ",io(c),"); sujeitos a alteração. A reserva confirma o preço vigente."," ",s.jsx(G,{to:"/metodologia",className:"underline underline-offset-4 hover:text-ink",children:"Ver metodologia"}),"."]})]}),s.jsx(Vo,{id:"exemplos",children:"Três exemplos rápidos"}),s.jsx("ul",{className:"mt-6 space-y-3 text-[17px] leading-[1.75] text-ink/85",children:p.map(f=>s.jsx("li",{className:"border-l-2 border-gold pl-4",children:ooe(f)},`${f.iata}-${f.days}`))}),s.jsx("p",{className:Qa,children:"Todos os totais usam a faixa que a operadora publica para o perÃodo (avulsa, 7, 17, 30 ou 30+ dias)."}),s.jsx(Vo,{id:"perguntas",children:"Perguntas frequentes"}),Q5.map(f=>s.jsxs("div",{className:"mt-8 border-t border-ink/10 pt-6",children:[s.jsx("h3",{className:"font-home-heading text-xl font-bold text-ink",children:f.q}),s.jsx("p",{className:"mt-3 text-[17px] leading-[1.75] text-ink/85",children:f.a})]},f.q)),s.jsxs("div",{className:"mt-16 border-t border-border pt-8",children:[s.jsx("p",{className:"font-home-heading text-xl font-bold text-ink",children:"Quer comparar mais?"}),s.jsxs("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:["Consulte o ",s.jsx(G,{to:"/indice-de-precos",className:im,children:"Ãndice xpark de Preços"})," ou ",s.jsx(G,{to:"/uber-ou-estacionamento-aeroporto",className:im,children:"compare com Uber"}),"."]})]})]})]})}const PN=[1,7,15,30];
1051function Wie(){const[e,t]=x.useState(7),[a,o]=x.useState(!1),[r,n]=x.useState("ALL"),i=x.useMemo(()=>Ht.filter(p=>!p.editorialOnly).flatMap(p=>OO(p.iata,void 0,PN).rows.map(f=>({hub:p,row:f,cell:f.cells.find(g=>g.days===e)}))).filter(p=>r==="ALL"||p.hub.iata===r).filter(p=>!a||p.row.isXpark).sort((p,f)=>(p.cell.total??1/0)-(f.cell.total??1/0)),[e,a,r]),l=p0(Kt),c=Kt.filter(p=>p.bookable).length,d=i.filter(p=>p.cell.perDay!=null),u=d.length?Math.min(...d.map(p=>p.cell.perDay)):null,m=x.useMemo(()=>Mee().filter(p=>p.editorialOnly),[]),h=p=>`rounded-full border px-4 py-2 text-sm font-semibold transition ${p?"border-ink bg-ink text-paper":"border-border bg-paper text-ink hover:border-ink"}`;return s.jsxs("div",{className:"font-geist text-ink",children:[s.jsx(Ye,{title:"Ãndice de preços de estacionamentos | xpark",description:`Compare ${Es} no Ãndice xpark, com preço por diária, distância e data de conferência quando divulgados.`,path:"/indice-de-precos"}),s.jsx(Bn,{title:"Ãndice xpark de preços de estacionamento",description:`Compare ${Es}, com a data de conferência de cada preço. Quando o estacionamento não informa o valor, mostramos âNão divulgadoâ.`,children:s.jsx("dl",{className:"mt-8 grid grid-cols-2 gap-3 md:grid-cols-4",children:[["Aeroportos",String(Ht.filter(p=>!p.editorialOnly).length)],["Estacionamentos",String(l.count)],["Reserva online no xpark",String(c)],[`Menor diária (${e===1?"1 diária":`${e} dias`})`,u!=null?X(u):"Não divulgado"]].map(([p,f])=>s.jsxs("div",{className:"rounded-card border border-border bg-paper p-4",children:[s.jsx("dt",{className:"text-xs text-mute",children:p}),s.jsx("dd",{className:"mt-1 font-home-heading text-2xl font-bold",children:f})]},p))})}),s.jsxs("section",{className:"container py-10 md:py-14",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[PN.map(p=>s.jsx("button",{className:h(e===p),onClick:()=>t(p),children:p===1?"1 diária":`${p} dias`},p)),s.jsx("span",{className:"mx-1 hidden h-6 w-px bg-border md:inline-block"}),["ALL","GRU","VCP","CNF"].map(p=>s.jsx("button",{className:h(r===p),onClick:()=>n(p),children:p==="ALL"?"Todos":p},p)),s.jsx("button",{className:h(a),onClick:()=>o(p=>!p),children:"Só com reserva online"})]}),s.jsx("div",{className:"mt-6 overflow-x-auto rounded-card border border-border",children:s.jsxs("table",{className:"w-full min-w-[760px] text-left text-sm",children:[s.jsx("thead",{className:"bg-cream text-xs uppercase tracking-wide text-mute",children:s.jsxs("tr",{children:[s.jsx("th",{className:"p-3",children:"Aeroporto"}),s.jsx("th",{className:"p-3",children:"Estacionamento"}),s.jsx("th",{className:"p-3",children:"Vaga"}),s.jsx("th",{className:"p-3",children:"Distância"}),s.jsx("th",{className:"p-3 text-right",children:"R$/diária"}),s.jsx("th",{className:"p-3 text-right",children:"Total"}),s.jsx("th",{className:"p-3",children:"Conferido em"})]})}),s.jsx("tbody",{children:i.map(({hub:p,row:f,cell:g},b)=>s.jsxs("tr",{className:"border-t border-border",children:[s.jsx("td",{className:"p-3 font-semibold",children:p.iata}),s.jsxs("td",{className:"p-3",children:[s.jsx(G,{to:`/aeroportos/${p.slug}/${f.operator.slug}`,className:"font-semibold hover:text-gold",children:f.operator.name}),b===0&&g.total!=null&&s.jsx("span",{className:"ml-2 rounded-full bg-gold/20 px-2 py-0.5 text-xs font-semibold",children:"Menor preço"}),f.isXpark?s.jsxs("div",{className:"text-xs text-mute",children:["Reserva no xpark · ",f.condition]}):s.jsx("div",{className:"text-xs text-mute",children:"Comparativo · não vendido no xpark"})]}),s.jsx("td",{className:"p-3",children:cw(f.operator).join(", ")}),s.jsx("td",{className:"p-3",children:Number.isFinite(dc(f.operator))?`${dc(f.operator).toLocaleString("pt-BR")} km em linha reta`:"Distância não informada"}),s.jsx("td",{className:"p-3 text-right",children:g.perDay!=null?X(g.perDay):"Não divulgado"}),s.jsx("td",{className:"p-3 text-right font-semibold",children:g.total!=null?X(g.total):"Não divulgado"}),s.jsx("td",{className:"p-3 text-mute",children:f.dataColetaBR})]},p.iata+f.operator.slug))})]})}),s.jsxs("p",{className:"mt-4 max-w-3xl text-xs leading-relaxed text-mute",children:["Custo total calculado pela tabela de faixas de cada estacionamento. Valores do Bandeira Park já com o cupom XPK26;
1051 os demais são tarifas públicas na data indicada. Veja a ",s.jsx(G,{to:"/metodologia",className:"underline",children:"metodologia"}),". Dados abertos em ",s.jsx("a",{href:"/precos.json",className:"underline",children:"precos.json"}),' (licença CC BY 4.0, atribuição "Ãndice xpark de Preços (xpark.ai)").']}),i.some(p=>!p.row.isXpark)&&s.jsxs("div",{className:"mt-5 max-w-3xl rounded-card border border-gold/40 bg-gold/10 p-4 text-sm leading-relaxed text-ink",children:[s.jsx("p",{className:"font-semibold",children:"Preços revisados em setembro de 2026."}),s.jsxs("p",{className:"mt-1",children:["As operadoras marcadas como comparativo não são vendidas pelo xpark. Se você é de uma dessas operadoras e viu alguma informação desatualizada, escreva para"," ",s.jsx("a",{href:`mailto:[email protected]?subject=${encodeURIComponent("Correção de dados: Ãndice de preços")}`,className:"font-semibold underline underline-offset-4",children:"[email protected]"})," ","que corrigimos."]})]})]}),s.jsxs("section",{className:"container pb-12 md:pb-16","aria-labelledby":"pracas-em-comparacao",children:[s.jsx("h2",{id:"pracas-em-comparacao",className:"font-home-heading text-2xl font-bold md:text-3xl",children:"Praças em comparação"}),s.jsx("p",{className:"mt-2 max-w-3xl text-sm text-mute",children:"Nestas praças o xpark compara preços, mas ainda não vende reservas."}),s.jsx("div",{className:"mt-8 space-y-10",children:m.map(p=>s.jsxs("div",{children:[s.jsx("h3",{className:"font-home-heading text-xl font-bold",children:p.airportName}),s.jsxs("p",{className:"mt-1 text-xs text-mute",children:[p.rows.length," ",p.rows.length===1?"operadora":"operadoras"," · ordenado pela diária mais baixa"]}),s.jsx("div",{className:"mt-4 overflow-x-auto rounded-card border border-border",children:s.jsxs("table",{className:"w-full min-w-[640px] text-left text-sm",children:[s.jsx("thead",{className:"bg-cream text-xs uppercase text-mute",children:s.jsxs("tr",{children:[s.jsx("th",{className:"p-3",children:"Operadora"}),s.jsx("th",{className:"p-3",children:"Diária avulsa"}),s.jsx("th",{className:"p-3",children:"7 dias (R$/dia)"}),s.jsx("th",{className:"p-3",children:"30 dias (R$/dia)"})]})}),s.jsx("tbody",{children:p.rows.map(f=>s.jsxs("tr",{className:"border-t border-border",children:[s.jsxs("td",{className:"p-3",children:[s.jsx(G,{className:"font-semibold hover:text-gold",to:`/aeroportos/${f.operator.hubSlug}/${f.operator.slug}`,children:f.operator.name}),s.jsx("br",{}),s.jsxs("span",{className:"text-xs text-mute",children:[f.operator.address.city," · ",f.operator.iata]})]}),s.jsxs("td",{className:"p-3",children:[f.daily!=null?X(f.daily):"sob consulta",f.dailyNote&&s.jsxs(s.Fragment,{children:[s.jsx("br",{}),s.jsx("span",{className:"text-xs text-mute",children:f.dailyNote})]})]}),s.jsxs("td",{className:"p-3",children:[f.weekly!=null?X(f.weekly):"sob consulta",f.weeklyTotal!=null&&s.jsxs(s.Fragment,{children:[s.jsx("br",{}),s.jsxs("span",{className:"text-xs text-mute",children:["total ",X(f.weeklyTotal)]})]}),f.weeklyNote&&s.jsxs(s.Fragment,{children:[s.jsx("br",{}),s.jsx("span",{className:"text-xs text-mute",children:f.weeklyNote})]})]}),s.jsxs("td",{className:"p-3",children:[f.monthly!=null?X(f.monthly):"sob consulta",f.monthlyTotal!=null&&s.jsxs(s.Fragment,{children:[s.jsx("br",{}),s.jsxs("span",{className:"text-xs text-mute",children:["total ",X(f.monthlyTotal)]})]}),f.monthlyNote&&s.jsxs(s.Fragment,{children:[s.jsx("br",{}),s.jsx("span",{className:"text-xs text-mute",children:f.monthlyNote})]})]})]},f.operator.slug))})]})}),s.jsx("ul",{className:"mt-3 space-y-1 text-xs leading-relaxed text-mute",children:p.rows.map(f=>s.jsxs("li",{children:["Fonte ",f.operator.name,": ",f.operator.fonteCitacao," · coleta em ",f.operator.dataColeta.split("-").reverse().join("/")]},f.operator.slug))})]},p.iata))})]})]})}const Jie=hoe().map(e=>e.hub.iata),Xie=[1,7,15,30],Wf=Object.fromEntries(Ln.map(e=>[e.iata,e.short]));function fw(e){var t;return((t=doe(e))==null?void 0:t.slug)??""}function sq(e){return c0(fw(e))}const iq=["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"];function Yie(e){const t=/^(\d{4})-(\d{2})-\d{2}$/.exec(e);if(!t)return e;const a=Math.max(1,Math.min(12,Number(t[2])))-1;return`${iq[a]} de ${t[1]}`}function Zie(e){const t=/^(\d{4})-(\d{2})-\d{2}$/.exec(e);if(!t)return e;const a=Math.max(1,Math.min(12,Number(t[2])))-1,o=iq[a];return`${o[0].toUpperCase()}${o.slice(1)}/${t[1]}`}function ele(e,t){const a=Kt.filter(r=>r.iata===e),o=[];for(const r of a){const n=l0(r,t);n&&o.push({operator:r,estimate:n})}return o.sort((r,n)=>r.estimate.total-n.estimate.total),o}function tle(e){return Xie.map(t=>{const a=ele(e,t);return{days:t,winner:a[0]??null,runnerUp:a[1]??null}})}function lq(e){return e===1?"1 diária":`${e} dias`}function nx(e){if(!e)return"sem preço público";const{operator:t,estimate:a}=e,o=X(a.perDay),r=[];a.note&&r.push(a.note);const n=r.length?` (${r.join("; ")})`:"";return`${t.name} a ${o}/dia${n}`}
1051function ale(e,t,a){const o=a.find(l=>l.days===1),r=a.find(l=>l.days===7),n=a.find(l=>l.days===30),i=Wf[e];return`Em ${t}, o estacionamento mais barato próximo ao Aeroporto de ${i} (${e}) para 1 diária é ${nx((o==null?void 0:o.winner)??null)}; para 7 dias, ${nx((r==null?void 0:r.winner)??null)}; para 30 dias, ${nx((n==null?void 0:n.winner)??null)}. Valores das tabelas das operadoras na data da coleta; a reserva confirma o preço vigente.`}function cq(e){const t=tle(e),a=K5(e),o=Yie(a),r=Zie(a),n=to[e],i=Wf[e],l=sq(e),c=boe(fw(e)),d=(c==null?void 0:c.title)??`Estacionamento mais barato no Aeroporto de ${i} (${e}) | xpark`,u=(c==null?void 0:c.description)??`Ranking do estacionamento mais barato próximo ao Aeroporto de ${i} (${e}) por 1, 7, 15 e 30 dias, com preços coletados em ${o}.`,m=`Qual o estacionamento mais barato do Aeroporto de ${i} (${e})?`,h=t.map(p=>p.winner).find(p=>p!=null&&p.operator.slug.startsWith("bandeira-park")&&p.operator.bookable);return{iata:e,airportName:n,airportShort:i,path:l,title:d,h1:m,description:u,monthYear:o,monthYearShort:r,dataColetaISO:a,dataColetaBR:io(a),ranking:t,directAnswer:ale(e,o,t),hasBandeiraWinner:!!h,bandeiraReservationUrl:h==null?void 0:h.operator.reservationUrl,opensOnBR:h&&Yu(e)||void 0}}const dq=[{q:e=>`O estacionamento oficial de ${Wf[e]} é mais caro?`,a:e=>`Em geral sim, para estadias curtas. Nas nossas coletas para o Aeroporto de ${Wf[e]} (${e}), o oficial tem diária avulsa acima da média dos privados do entorno, e a diferença cresce em pacotes de 7 e 30 dias, quando as operadoras privadas publicam faixas com descontos progressivos.`},{q:()=>"Reservar online muda o ranking do mais barato?",a:()=>"Muda, e bastante. Várias operadoras praticam tarifa de balcão significativamente maior que a tarifa da reserva online, então a mesma unidade pode aparecer no topo do ranking com reserva antecipada e cair para o meio da tabela se o cliente chegar sem reserva. Sempre exibimos a condição usada."},{q:()=>"O preço inclui o traslado até o terminal?",a:()=>"Sim quando a operadora informa traslado gratuito por van ou por valet: o custo já está embutido na diária publicada. Estacionamentos dentro do aeroporto (acesso a pé ou por passarela) não usam van. A ficha de cada operadora detalha o modelo de traslado."}];function ole(e,t="https://www.xpark.ai"){const a=cq(e),o=`${t}${a.path}`,r={"@context":"https://schema.org","@type":"FAQPage","@id":`${o}#faq`,mainEntity:dq.map(l=>({"@type":"Question",name:l.q(e),acceptedAnswer:{"@type":"Answer",text:l.a(e)}}))},n={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"xpark",item:`${t}/`},{"@type":"ListItem",position:2,name:"Aeroportos",item:`${t}/aeroportos`},{"@type":"ListItem",position:3,name:`${a.airportShort} (${e})`,item:o}]},i={"@context":"https://schema.org","@type":"ItemList","@id":`${o}#ranking`,name:`Mais barato por tempo de permanência: Aeroporto de ${a.airportShort} (${e})`,itemListElement:a.ranking.filter(l=>l.winner!=null).map((l,c)=>({"@type":"ListItem",position:c+1,name:`Mais barato por ${lq(l.days)}
1051: ${l.winner.operator.name} (${X(l.winner.estimate.total)})`,url:`${t}/aeroportos/${l.winner.operator.hubSlug}/${l.winner.operator.slug}`}))};return[r,n,i]}function SN({iata:e}){const t=cq(e),a=fw(e);return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:t.title,description:t.description,path:t.path,type:"article",jsonLd:ole(e)}),s.jsx("header",{className:"bg-ink text-paper",children:s.jsxs("div",{className:"container py-16 md:py-24",children:[s.jsxs("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.22em] text-gold",children:["Ranking xpark · ",e," · ",t.monthYearShort]}),s.jsx("h1",{className:"mt-6 max-w-4xl font-geist text-3xl md:text-5xl font-semibold tracking-tight leading-[1.1]",children:t.h1}),s.jsx("p",{className:"mt-6 max-w-3xl font-display text-lg md:text-xl text-paper/85",children:t.directAnswer})]})}),s.jsx(ct,{as:"section",className:"bg-paper",children:s.jsxs("div",{className:"container max-w-[960px] py-12",children:[s.jsx("h2",{className:"font-geist text-2xl md:text-3xl font-semibold text-ink",children:"Mais barato por tempo de permanência"}),s.jsx("p",{className:"mt-2 text-sm text-mute",children:"Vencedor e vice em cada faixa (1, 7, 15 e 30 dias), com o custo total no perÃodo e a condição aplicada."}),s.jsx("div",{className:"mt-6 overflow-x-auto",children:s.jsxs("table",{className:"w-full min-w-[720px] text-left text-sm",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b border-ink/20 text-xs uppercase tracking-[0.14em] text-mute",children:[s.jsx("th",{className:"py-2 pr-4",children:"Permanência"}),s.jsx("th",{className:"py-2 pr-4",children:"Mais barato"}),s.jsx("th",{className:"py-2 pr-4",children:"Total"}),s.jsx("th",{className:"py-2 pr-4",children:"Condição"}),s.jsx("th",{className:"py-2 pr-4",children:"2º colocado"}),s.jsx("th",{className:"py-2",children:"Total"})]})}),s.jsx("tbody",{children:t.ranking.map(o=>{var r;return s.jsxs("tr",{className:"border-b border-ink/10 align-top",children:[s.jsx("td",{className:"py-3 pr-4 font-display text-base text-ink",children:lq(o.days)}),s.jsxs("td",{className:"py-3 pr-4 text-ink",children:[o.winner?o.winner.operator.name:"-",o.winner&&s.jsxs("p",{className:"mt-1 text-xs text-mute",children:[X(o.winner.estimate.perDay),"/dia · ",o.winner.estimate.label]})]}),s.jsx("td",{className:"py-3 pr-4 font-display text-lg text-ink",children:o.winner?X(o.winner.estimate.total):"-"}),s.jsx("td",{className:"py-3 pr-4 text-xs text-mute",children:((r=o.winner)==null?void 0:r.estimate.note)??"-"}),s.jsxs("td",{className:"py-3 pr-4 text-ink/80",children:[o.runnerUp?o.runnerUp.operator.name:"-",o.runnerUp&&s.jsxs("p",{className:"mt-1 text-xs text-mute",children:[X(o.runnerUp.estimate.perDay),"/dia"]})]}),s.jsx("td",{className:"py-3 text-ink/80",children:o.runnerUp?X(o.runner
1051Up.estimate.total):"-"})]},o.days)})})]})}),s.jsxs("p",{className:"mt-6 text-xs text-mute",children:["Fonte: tabelas das operadoras, com a fonte de cada preço na"," ",s.jsxs(G,{to:ll(a),className:"underline underline-offset-4 hover:text-ink",children:["tabela completa de preços de ",t.airportShort]}),". Coleta mais recente em ",t.dataColetaBR,". Os valores do Bandeira Park já incluem o cupom XPK26 (26% de desconto); os das demais operadoras são as tarifas públicas de cada uma na data da coleta, sem cupom. Veja também o"," ",s.jsx(G,{to:"/indice-de-precos",className:"underline underline-offset-4 hover:text-ink",children:"Ãndice xpark de Preços"})," ","para as tabelas completas."]}),t.hasBandeiraWinner&&t.bandeiraReservationUrl&&s.jsxs("div",{className:"mt-8 rounded-2xl border border-ink/10 p-6",children:[s.jsx("p",{className:"font-display text-lg text-ink",children:"Quer garantir a tarifa do vencedor?"}),s.jsx("p",{className:"mt-2 text-sm text-mute",children:t.opensOnBR?`A reserva pelo xpark trava o preço vigente no Bandeira Park. Inauguração em ${t.opensOnBR} e a data de entrada precisa ser igual ou posterior a esse dia.`:"A reserva pelo xpark trava o preço vigente no Bandeira Park."}),s.jsx(G,{to:t.bandeiraReservationUrl,className:"mt-4 inline-block rounded-full bg-ink px-5 py-2 font-geist-mono text-[11px] uppercase tracking-[0.18em] text-paper hover:bg-gold hover:text-ink",children:"Reservar Bandeira Park"})]})]})}),s.jsx(ct,{as:"section",className:"bg-cream",children:s.jsxs("div",{className:"container max-w-[720px] py-14",children:[s.jsx("h2",{className:"font-geist text-2xl md:text-3xl font-semibold text-ink",children:"Mais barato nem sempre é a melhor escolha"}),s.jsxs("ul",{className:"mt-6 space-y-3 text-ink/85",children:[s.jsxs("li",{className:"border-l-2 border-gold pl-4",children:[s.jsx("strong",{children:"Traslado:"})," o preço só compensa se a van (ou o valet) for gratuita e frequente. Uma diária de R$ 10 com traslado pago vira R$ 30 na conta final."]}),s.jsxs("li",{className:"border-l-2 border-gold pl-4",children:[s.jsx("strong",{children:"Seguro e câmeras:"})," operadoras muito baratas frequentemente não declaram cobertura. Vale ler a ficha da unidade antes de deixar o carro por vários dias."]}),s.jsxs("li",{className:"border-l-2 border-gold pl-4",children:[s.jsx("strong",{children:"Distância real:"}),' "próximo ao aeroporto" varia de 500 m a 8 km. Confira o mapa e o tempo médio até o terminal.']})]}),s.jsxs("p",{className:"mt-6 text-sm text-mute",children:["Veja também o"," ",s.jsxs(G,{to:`/aeroportos/${a}`,className:"underline underline-offset-4 hover:text-ink",children:["hub de ",t.airportShort," (",e,")"]})," ","e a"," ",s.jsx(G,{to:`/calculadora-estacionamento-aeroporto${["GRU","VCP","CNF","CGH"].includes(e)?`?aeroporto=${e}`:""}`,className:"underline underline-offset-4 hover:text-ink",children:"calculadora para as suas datas exatas"}),"."]})]})}),s.jsx(ct,{as:"section",className:"bg-paper",children:s.jsxs("div",{className:"container max-w-[720px] py-14",children:[s.jsx("h2",{className:"font-geist text-2xl md:text-3xl font-semibold text-ink",children:"Perguntas frequentes"}),s.jsx("dl",{className:"mt-6 space-y-6",children:dq.map(o=>s.jsxs("div",{children:[s.jsx("dt",{className:"font-display text-lg text-ink",children:o.q(e)}),s.jsx("dd",{className:"mt-2 text-ink/80",children:o.a(e)})]},o.q(e)))})]})})]})}const rle=["GRU","VCP","CNF","CGH"],RN=e=>e===1?"1 diária":`${e} dias`;function nle(){const{hubSlug:e}=on(),t=e?Ta(e):null,a=e?xoe(e):null;if(!t||!t.hasPricePage||!a||!e)return s.jsx(cl,{});const{hub:o}=t,r=lO(e),n=iO(e),i=Ky(e),l=$oe(e),c=rle.includes(o.iata)?`/calculadora-estacionamento-aeroporto?aeroporto=${o.iata}`:"/calculadora-estacionamento-aeroporto";return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:a.title,description:a.description,path:ll(e),type:"article",jsonLd:koe(e)}),s.jsx("header",{className:"bg-ink text-paper",children:s.jsxs("div",{className:"container py-14 md:py-20",children:[s.jsxs("nav",{className:"text-[12px] text-paper/60",children:[s.jsx(G,{to:"/",className:"hover:text-paper",children:"InÃcio"}),s.jsx("span",{className:"mx-2",children:"/"}),s.jsx(G,{to:"/aeroportos",className:"hover:text-paper",children:"Aeroportos"}),s.jsx("span",{className:"mx-2",children:"/"}),s.jsx(G,{to:`/aeroportos/${o.slug}`,className:"hover:text-paper",children:o.short}),s.jsx("span",{className:"mx-2",children:"/"}
1051),s.jsx("span",{className:"text-paper",children:"Preços"})]}),s.jsxs("h1",{className:"mt-6 max-w-4xl font-home-heading text-3xl font-bold leading-tight md:text-5xl",children:["Preço do estacionamento no Aeroporto de ",o.short," (",o.iata,")"]}),s.jsx("p",{className:"mt-5 max-w-3xl text-paper/80 md:text-lg",children:r??`${t.operators.length} estacionamentos comparados, ${t.lines.length} com preço publicado.`}),n&&s.jsxs("p",{className:"mt-3 text-[13px] text-paper/60",children:["Ãltima atualização: ",n]}),s.jsx("p",{className:"mt-3 max-w-3xl text-sm text-paper/60",children:"Total da estadia calculado com a tabela de cada operadora para 1, 7, 15 e 30 dias."}),s.jsx("div",{className:"mt-8 grid grid-cols-2 gap-3 md:grid-cols-4",children:t.best.map(d=>s.jsxs("div",{className:"rounded-card border border-paper/15 bg-paper/5 p-4",children:[s.jsx("p",{className:"text-[11px] font-bold uppercase tracking-wide text-gold",children:RN(d.days)}),s.jsx("p",{className:"mt-2 font-home-heading text-2xl font-bold",children:d.total!=null?X(d.total):"sem preço"}),d.line&&s.jsxs("p",{className:"mt-1 text-xs text-paper/70",children:["menor total: ",d.line.operator.name]})]},d.days))}),s.jsx(G,{to:c,className:"mt-8 inline-flex h-11 items-center rounded-full bg-gold px-6 text-sm font-semibold text-ink hover:bg-gold-dark",children:"Calcular outro perÃodo"})]})}),s.jsx(ct,{as:"section",className:"bg-paper",children:s.jsxs("div",{className:"container max-w-[1100px] py-12",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink md:text-3xl",children:"Tabela de preços"}),s.jsx("p",{className:"mt-2 text-sm text-mute",children:"Ordenada pelo total de 7 dias. Valor por dia entre parênteses; balcão quando a operadora publica."}),s.jsx("div",{className:"mt-6 overflow-x-auto rounded-card border border-ink/10",children:s.jsxs("table",{className:"w-full min-w-[820px] border-collapse text-left text-sm",children:[s.jsxs("caption",{className:"sr-only",children:["Preços de estacionamento no ",o.iata]}),s.jsx("thead",{className:"bg-ink/[0.03]",children:s.jsxs("tr",{children:[s.jsx("th",{scope:"col",className:"px-4 py-3 font-medium text-mute",children:"Estacionamento"}),Vf.map(d=>s.jsx("th",{scope:"col",className:"px-4 py-3 text-right font-medium text-mute",children:RN(d)},d)),s.jsx("th",{scope:"col",className:"px-4 py-3 font-medium text-mute",children:s.jsx("span",{className:"sr-only",children:"Ação"})})]})}),s.jsx("tbody",{children:t.lines.map(d=>s.jsxs("tr",{className:"border-t border-ink/10 align-top",children:[s.jsxs("th",{scope:"row",className:"px-4 py-4 font-normal",children:[s.jsx(G,{to:`/aeroportos/${d.operator.hubSlug}/${d.operator.slug}`,className:"font-semibold text-ink hover:underline",children:d.operator.name}),d.partner&&s.jsx("span",{className:"ml-2 rounded-full bg-gold px-2 py-0.5 text-[10px] font-bold uppercase text-ink",children:"Parceira"}),s.jsxs("span",{className:"mt-1 block text-xs text-mute",children:[d.vaga,d.condition?` · ${d.condition}`:""," · ",eO[d.sourceType],", coleta ",d.dataColetaBR]})]}),d.cells.map(u=>s.jsx("td",{className:"px-4 py-4 text-right",children:u.total==null?s.jsx("span",{className:"text-ink/50",children:"não divulgado"}):s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"font-semibold text-ink",children:X(u.total)}),s.jsxs("span",{className:"block text-xs text-mute",children:["(",X(u.perDay),"/dia)"]}),u.balcaoPerDay!=null&&s.jsxs("span",{className:"block text-xs text-mute",children:["balcão ",X(u.balcaoPerDay),"/dia"]})]})},u.days)),s.jsx("td",{className:"px-4 py-4 text-right",children:d.partner?s.jsx(G,{to:d.operator.reservationUrl,className:"inline-flex rounded-full bg-ink px-4 py-2 text-xs font-semibold text-paper hover:bg-ink/85",children:"Reservar"}):s.jsx(G,{to:`/aeroportos/${d.operator.hubSlug}/${d.operator.slug}`,className:"text-xs font-semibold text-ink underline underline-offset-4",children:"Ver ficha"})})]},d.operator.slug))})]})}),t.unpriced.length>0&&s.jsxs("div",{className:"mt-8",children:[s.jsx("h3",{className:"font-home-heading text-lg font-bold text-ink",children:"Consulte a operadora"}),s.jsx("ul",{className:"mt-3 flex flex-wrap gap-2",children:t.unpriced.map(d=>s.jsx("li",{children:s.jsxs(G,{to:`/aeroportos/${d.hubSlug}/${d.slug}`,className:"inline-flex rounded-full border border-ink/15 px-3 py-1.5 text-sm text-ink hover:border-ink/40",children:[d.name,nl(d)?` · ${E6.toLowerCase()}`:""]})},d.slug))})]}),i.length>0&&s.jsxs("div",{className:"mt-12",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink md:text-3xl",children:"Oficial ou privado?"}),s.jsx("div",{className:"mt-5 overflow-x-auto rounded-card border border-ink/10",children:s.jsxs("table",{className:"w-full min-w-[720px] border-collapse text-left text-sm",children:[s.jsx("thead",{className:"bg-ink/[0.03]",children:s.jsx("tr",{children:["Tipo","Traslado","Distância","Cobertura","Reserva online"].map(d=>s.jsx("th",{scope:"col",className:"px-4 py-3 font-medium text-mute",children:d},d))})}),s.jsx("tbody",{children:i.map(d=>s.jsxs("tr",{className:"border-t border-ink/10 align-top",children:[s.jsx("th",{scope:"row",className:"px-4 py-3 font-semibold text-ink",children:d.tipo}),s.jsx("td",{className:"px-4 py-3 text-ink/80",children:d.traslado}),s.jsx("td",{className:"px-4 py-3 text-ink/80",children:d.distancia}),s.jsx("td",{className:"px-4 py-3 text-ink/80",children:d.cobertura}),s.jsx("td",{className:"px-4 py-3 text-ink/80",children:d.reserva})]},d.tipo))})]})})]}),l&&s.jsxs("div",{className:"mt-12 max-w-3xl",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink md:text-3xl",children:"Como o xpark apura os preços"}),s.jsxs("ul",{className:"mt-4 space-y-2 text-sm leading-relaxed text-ink/80",children:[l.groups.map(d=>s.jsxs("li",{children:[s.jsxs("strong",{className:"text-ink",children:[d.label.charAt(0).toUpperCase()+d.label.slice(1),":"]})," ",d.items.map(u=>`${u.name} (coleta ${u.dataColetaBR})`).join(", "),"."]},d.type)),s.jsxs("li",{children:["Distância em linha reta entre a coordenada de cada estacionamento e o ",l.terminal,"."]})]}),s.jsx("h3",{className:"mt-6 font-semibold text-ink",children:"O que não sabemos"}),s.jsx("ul",{className:"mt-2 list-disc space-y-1 pl-5 text-sm leading-relaxed text-ink/80",children:l.unknowns.map(d=>s.jsx("li",{children:d},d))}),s.jsx("p",{className:"mt-4 text-sm text-ink/80",children:l.commission})]}),s.jsxs("p",{className:"mt-8 text-xs leading-relaxed text-mute",children:["Custo total calculado pela mesma lógica de faixas da calculadora. Valores da parceira incluem o cupom XPK26;
1051 os demais são tarifas públicas na data da coleta. Preço de não parceira com mais de 90 dias sai da tabela. Dados abertos em"," ",s.jsx("a",{href:Z5(e),className:"underline underline-offset-4",children:"precos.json"})," (CC BY 4.0). Veja também o"," ",s.jsxs(G,{to:c0(e),className:"underline underline-offset-4",children:["mais barato de ",o.short]})," e o"," ",s.jsxs(G,{to:`/aeroportos/${o.slug}`,className:"underline underline-offset-4",children:["comparativo do ",o.iata]}),"."]})]})}),s.jsx("section",{className:"bg-paper",children:s.jsxs("div",{className:"container max-w-[1100px] pb-14",children:[s.jsx("h2",{className:"font-home-heading text-2xl font-bold text-ink",children:"Perguntas frequentes"}),s.jsx("div",{className:"mt-5 divide-y divide-border",children:aO(e).map(({q:d,a:u})=>s.jsxs("div",{className:"py-4",children:[s.jsx("h3",{className:"font-semibold text-ink",children:d}),s.jsx("p",{className:"mt-2 text-sm leading-relaxed text-mute",children:u})]},d))}),s.jsx("div",{className:"mt-12",children:s.jsx(qO,{iata:o.iata,name:o.short})})]})})]})}const sle="/aeroportos/estacionamento-aeroporto-confins";function ile(){const[e,t]=x.useState("GRU"),[a,o]=x.useState(7),[r,n]=x.useState(Tp[1].id),[i,l]=x.useState(""),c=Math.min(Th,Math.max(Aj,Math.floor(a)||1)),d=Tp.find(R=>R.id===r)??Tp[1],u=(()=>{const R=Number(i.replace(",","."));return Number.isFinite(R)&&R>0?R:null})(),m=x.useMemo(()=>oO(e),[e]),h=x.useMemo(()=>m?Ff(m.operator.slug,e,c):null,[m,e,c]),p=x.useMemo(()=>Coe(e,c),[e,c]),f=Kk(d.km,u),g=x.useMemo(()=>m?Poe({iata:e,km:d.km,tarifaOverride:u,operatorSlug:m.operator.slug}):null,[m,e,d.km,u]),b=h?h.total<f?"parking":h.total>f?"uber":"tie":null,v=(()=>{if(!m||!g)return null;const R=m.isBandeira?"no Bandeira Park":`na ${m.operator.name}`;return g.status==="found"?`A partir de ${g.days} dias, estacionar ${R} fica mais barato que ir e voltar de Uber.`:g.status==="already-day-1"?`Estacionar ${R} já compensa desde o 1º dia nesta distância.`:"Para viagens de até 60 dias nesta distância, o Uber sai mais barato."})(),y=x.useMemo(()=>Roe.map(R=>joe(R.iata,R.days,R.km)).filter(R=>R!=null),[]),k=m!=null&&m.isBandeira?m.operator.reservationUrl:sle,w=m!=null&&m.isBandeira?"Reservar Bandeira Park":"Ver estacionamentos em Confins";return s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:zd.title,description:zd.description,path:zd.path,type:"website",jsonLd:Soe()}),s.jsxs(pw,{image:Tk,label:"Ferramenta xpark",title:zd.h1,dek:"Informe o aeroporto, os dias e a distância até o terminal. Comparamos ir e voltar de Uber com estacionar e mostramos o ponto de equilÃbrio.",meta:s.jsxs("span",{children:["Redação xpark · Estimativa com coleta em ",Ej()]}),summary:s.jsx("p",{children:"Para viagens curtas e bairros próximos, o Uber costuma vencer. A partir de alguns dias, as duas corridas já custam mais que as diárias de um estacionamento com tarifa reduzida."}),sections:[{id:"calculadora",title:"Calcule o seu caso"},{id:"como-calcula",title:"Como o ponto de equilÃbrio é calculado"},{id:"exemplos",title:"Exemplos rápidos"},{id:"perguntas",title:"Perguntas frequentes"}],children:[s.jsx(Vo,{id:"calculadora",children:"Calcule o seu caso"}),s.jsxs("div",{children:[s.jsxs("div",{className:"mb-6 inline-flex rounded-full border border-ink/15 bg-white p-1",role:"tablist",children:[s.jsx(G,{to:"/calculadora-estacionamento-aeroporto",role:"tab","aria-selected":"false",className:"rounded-full px-5 py-2 text-sm font-semibold text-ink/70 transition-colors hover:text-ink",children:"Preço da vaga"}),s.jsx("span",{role:"tab","aria-selected":"true",className:"rounded-full bg-ink px-5 py-2 text-sm font-semibold text-paper",children:"Carro ou app?"})]}),s.jsxs(oq,{children:[s.jsxs("div",{className:"grid gap-6 md:grid-cols-[auto_minmax(0,1fr)] md:gap-10",children:[s.jsx(zl,{title:"Aeroporto",children:s.jsx(rq,{value:e,options:["GRU","VCP","CNF","CGH"],onChange:R=>t(R)})}),s.jsx(zl,{title:`Dias de viagem (1 a ${Th})`,children:s.jsx(nq,{value:c,min:Aj,max:Th,onChange:o})})]}),s.jsx(zl,{title:"Distância até o aeroporto",children:s.jsx("div",{className:"flex flex-wrap gap-2",children:Tp.map(R=>s.jsxs("button",{type:"button","aria-pressed":R.id===r,onClick:()=>n(R.id),className:hw(R.id===r),children:[R.label,s.jsxs("span",{className:"ml-1.5 text-xs font-normal opacity-70",children:["~",R.km," km"]})]},R.id))})}),s.jsx(zl,{title:"Sei minha tarifa de Uber (ida), em R$",children:s.jsx("input",{type:"text",inputMode:"decimal",placeholder:"Opcional",value:i,onChange:R=>l(R.target.value),className:"h-11 w-full max-w-xs rounded-full border border-ink/15 bg-paper px-4 text-sm text-ink outline-none focus:border-ink"})})]}),s.jsxs("div",{className:"mt-8 grid gap-6 md:grid-cols-2",children:[s.jsxs("article",{className:"rounded-card border p-6 "+(b==="uber"?"border-gold bg-cream":"border-ink/10 bg-paper"),children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:"Uber (ida e volta)"}),s.jsx("p",{className:"mt-2 font-display text-3xl text-ink",children:X(f)}),s.jsxs("p",{className:"mt-2 text-sm text-ink/70",children:["2 corridas à (",X(Io.bandeirada)," bandeirada + ",X(Io.valorKm),"/km à ",d.km," km)",u&&s.jsxs("span",{className:"block mt-1",children:["Usando sua tarifa: ",X(u)," por corrida."]})]}),b==="uber"&&s.jsx("p",{className:"mt-3 inline-block rounded-full bg-gold/15 px-3 py-1 text-[10px] font-semibold uppercase tracking-wider text-ink",children:"Uber compensa neste cenário"})]}),s.jsxs("article",{className:"rounded-card border p-6 "+(b==="parking"?"border-gold bg-cream":"border-ink/10 bg-paper"),children:[s.jsxs("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-mute",children:["Estacionar ",c," ",c===1?"dia":"dias"]}),h?s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"mt-2 font-display text-3xl text-ink",children:X(h.total)}),s.jsxs("p",{className:"mt-2 text-sm text-ink/70",children:[h.operator.name," · ",X(h.perDay),"/dia (",h.label,")"]}),p&&p.operator.slug!==h.operator.slug&&s.jsxs("p",{className:"mt-1 text-xs text-mute",children:["Mais barata do aeroporto: ",p.operator.name," · ",X(p.total),"."]})]}):s.jsx("p",{className:"mt-2 text-sm text-mute",children:"Sem preço publicado para este perÃodo."}),b==="parking"&&s.jsx("p",{className:"mt-3 inline-block rounded-full bg-gold/15 px-3 py-1 text-[10px] font-semibold uppercase tracking-wider text-ink",children:"Estacionar compensa neste cenário"})]})]}),v&&s.jsxs("div",{className:"mt-6 rounded-panel bg-gold/10 p-6",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-gold",children:"Ponto de equilÃbrio"}),s.jsx("p",{className:"mt-2 font-display text-lg text-ink",children:v})]}),m&&s.jsxs("div",{className:"mt-8 flex flex-wrap items-center gap-4",children:[s.jsxs(G,{to:k,className:"inline-block rounded-full bg-ink px-6 py-3 font-geist-mono text-[11px] uppercase tracking-[0.2em] text-paper hover:bg-gold hover:text-ink",children:[w," â"]}),s.jsx(G,{to:"/calculadora-estacionamento-aeroporto",className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-ink underline-offset-4 hover:underline",children:"Ver todas as operadoras deste aeroporto â"})]}),s.jsxs("p",{className:"mt-8 text-xs text-mute",children:["Estimativa baseada em tarifas médias do UberX (fonte: seguroauto.org, jul/2026, coleta em"," ",Ej(),"). O valor real varia com horário, trânsito e demanda: consulte o app do Uber. Preços de estacionamento coletados nos canais oficiais das operadoras."," ",s.jsx(G,{to:"/metodologia",className:"underline underline-offset-4 hover:text-ink",children:"Ver metodologia"}),"."]})]}),s.jsx(Vo,{id:"como-calcula",children:"Como o ponto de equilÃbrio é calculado"}),s.jsx("p",{className:Qa,children:"Somamos o custo de duas corridas de Uber (ida ao aeroporto na partida e volta no retorno) e comparamos com o custo total de estacionar pelo mesmo número de dias, usando a faixa de preço vigente que a operadora publica (avulsa, 7 dias, 17 dias, 30 dias ou 30+)."}),s.jsx("p",{className:Qa,children:"O ponto de equilÃbrio é o menor número de dias em que o total do estacionamento fica igual ou abaixo do total do Uber ida e volta. Para viagens curtas em bairros próximos, o Uber costuma vencer. A partir de alguns dias, o custo fixo do Uber (2 corri
1051das) já supera a soma das diárias de um estacionamento com tarifa reduzida."}),s.jsx(Vo,{id:"exemplos",children:"Exemplos rápidos"}),s.jsx("ul",{className:"mt-6 space-y-3 text-[17px] leading-[1.75] text-ink/85",children:y.map(R=>s.jsx("li",{className:"border-l-2 border-gold pl-4",children:Aoe(R)},`${R.iata}-${R.days}-${R.km}`))}),s.jsxs("p",{className:Qa,children:["Todos os totais usam a mesma lógica de faixas da"," ",s.jsx(G,{to:"/calculadora-estacionamento-aeroporto",className:im,children:"calculadora de estacionamento"})," ","e a estimativa de Uber descrita na ",s.jsx(G,{to:"/metodologia",className:im,children:"metodologia"}),"."]}),s.jsx(Vo,{id:"perguntas",children:"Perguntas frequentes"}),rO.map(R=>s.jsxs("div",{className:"mt-8 border-t border-ink/10 pt-6",children:[s.jsx("h3",{className:"font-home-heading text-xl font-bold text-ink",children:R.q}),s.jsx("p",{className:"mt-3 text-[17px] leading-[1.75] text-ink/85",children:R.a})]},R.q))]})]})}const lle=Foe;function cle(){const[e,t]=x.useState(""),a=x.useMemo(()=>{const r=e.trim().toLowerCase(),n=r?Jr.filter(i=>i.pergunta.toLowerCase().includes(r)):Jr;return lle.map(i=>({cat:i,items:n.filter(l=>l.categoria===i)}))},[e]),o={"@context":"https://schema.org","@type":"ItemList",name:"Central de FAQ Xpark",itemListElement:Jr.map((r,n)=>({"@type":"ListItem",position:n+1,url:`https://www.xpark.ai/faq/${r.slug}`,name:r.pergunta}))};return s.jsxs("div",{className:"font-geist text-ink",children:[s.jsx(Ye,{title:"Central de FAQ · Compare estacionamentos pelo Brasil | xpark",description:"Perguntas frequentes sobre comparação de estacionamentos, preços, segurança, deslocamento e reservas nas praças atendidas pelo xpark.",path:"/faq",jsonLd:o}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:["Perguntas frequentes sobre ",s.jsx("span",{className:"text-gold-dark",children:"estacionamentos"})]}),description:"Respostas sobre comparação de preços, traslado, segurança e reserva nos destinos publicados pelo xpark.",children:s.jsxs("div",{className:"mt-8 max-w-xl",children:[s.jsx("label",{htmlFor:"faq-search",className:"block font-home-body text-sm font-semibold text-ink",children:"Buscar pergunta"}),s.jsx("input",{id:"faq-search",type:"search",value:e,onChange:r=>t(r.target.value),placeholder:"ex.: longa permanência, transfer, coberta",className:"mt-2 w-full rounded-full border border-border bg-card px-5 py-3 text-base outline-none transition focus:border-gold"})]})}),s.jsx("section",{className:"container py-16 md:py-20",children:a.map(({cat:r,items:n})=>s.jsxs("div",{className:"mb-14 last:mb-0",children:[s.jsxs("div",{className:"flex items-baseline gap-3 border-b border-ink/10 pb-3",children:[s.jsx("h2",{className:"font-geist text-2xl font-semibold tracking-tight",children:Qy[r]}),s.jsxs("span",{className:"font-mono text-[10px] uppercase tracking-[0.22em] text-mute",children:[n.length," ",n.length===1?"pergunta":"perguntas"]})]}),n.length===0?s.jsx("p",{className:"mt-6 text-mute",children:"Nenhuma pergunta corresponde à busca."}):s.jsx("ul",{className:"mt-6 divide-y divide-ink/10",children:n.map(i=>s.jsx("li",{children:s.jsxs(G,{to:`/faq/${i.slug}`,className:"group flex items-start justify-between gap-6 py-4 transition hover:text-gold",children:[s.jsx("span",{className:"text-base leading-snug",children:i.pergunta}),s.jsx("span",{"aria-hidden":!0,className:"mt-1 shrink-0 border-b border-current pb-0.5 font-mono text-[10px] uppercase tracking-[0.22em] opacity-0 transition group-hover:opacity-100",children:"Ler"})]})},i.slug))})]},r))})]})}function dle(e,t){const a={};return(e[e.length-1]===""?[...e,""]:e).join((a.padRight?" ":"")+","+(a.padLeft===!1?"":" ")).trim()}const ule=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,mle=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ple={};function jN(e,t){return(ple.jsx?mle:ule).test(e)}const hle=/[ \t\n\f\r]/g;function fle(e){return typeof e=="object"?e.type==="text"?NN(e.value):!1:NN(e)}function NN(e){return e.replace(hle,"")===""}class qm{constructor(t,a,o){this.normal=a,this.property=t,o&&(this.space=o)}}qm.prototype.normal={};qm.prototype.property={};qm.prototype.space=void 0;function uq(e,t){const a={},o={};for(const r of e)Object.assign(a,r.property),Object.assign(o,r.normal);return new qm(a,o,t)}function c2(e){return e.toLowerCase()}class lo{constructor(t,a){this.attribute=a,this.property=t}}lo.prototype.attribute="";lo.prototype.booleanish=!1;lo.prototype.boolean=!1;lo.prototype.commaOrSpaceSeparated=!1;lo.prototype.commaSeparated=!1;lo.prototype.defined=!1;lo.prototype.mustUseProperty=!1;lo.prototype.number=!1;lo.prototype.overloadedBoolean=!1;lo.prototype.property="";lo.prototype.spaceSeparated=!1;lo.prototype.space=void 0;let gle=0;const Ie=dl(),Yt=dl(),d2=dl(),te=dl(),ft=dl(),Ii=dl(),po=dl();function dl(){return 2**++gle}const u2=Object.freeze(Object.defineProperty({__proto__:null,boolean:Ie,booleanish:Yt,commaOrSpaceSeparated:po,commaSeparated:Ii,number:te,overloadedBoolean:d2,spaceSeparated:ft},Symbol.toStringTag,{value:"Module"})),sx=Object.keys(u2);class gw extends lo{constructor(t,a,o,r){let n=-1;if(super(t,a),AN(this,"space",r),typeof o=="number")for(;++n<sx.length;){const i=sx[n];AN(this,sx[n],(o&u2[i])===u2[i])}}}gw.prototype.defined=!0;function AN(e,t,a){a&&(e[t]=a)}function dd(e){const t={},a={};for(const[o,r]of Object.entries(e.properties)){const n=new gw(o,e.transform(e.attributes||{},o),r,e.space);e.mustUseProperty&&e.mustUseProperty.includes(o)&&(n.mustUseProperty=!0),t[o]=n,a[c2(o)]=o,a[c2(n.attribute)]=o}return new qm(t,a,e.space)}const mq=dd({properties:{ariaActiveDescendant:null,ariaAtomic:Yt,ariaAutoComplete:null,ariaBusy:Yt,ariaChecked:Yt,ariaColCount:te,ariaColIndex:te,ariaColSpan:te,ariaControl
vendor: 4,133 bytes, line 1051
1051s:ft,ariaCurrent:null,ariaDescribedBy:ft,ariaDetails:null,ariaDisabled:Yt,ariaDropEffect:ft,ariaErrorMessage:null,ariaExpanded:Yt,ariaFlowTo:ft,ariaGrabbed:Yt,ariaHasPopup:null,ariaHidden:Yt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:ft,ariaLevel:te,ariaLive:null,ariaModal:Yt,ariaMultiLine:Yt,ariaMultiSelectable:Yt,ariaOrientation:null,ariaOwns:ft,ariaPlaceholder:null,ariaPosInSet:te,ariaPressed:Yt,ariaReadOnly:Yt,ariaRelevant:null,ariaRequired:Yt,ariaRoleDescription:ft,ariaRowCount:te,ariaRowIndex:te,ariaRowSpan:te,ariaSelected:Yt,ariaSetSize:te,ariaSort:null,ariaValueMax:te,ariaValueMin:te,ariaValueNow:te,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function pq(e,t){return t in e?e[t]:t}function hq(e,t){return pq(e,t.toLowerCase())}const vle=dd({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Ii,acceptCharset:ft,accessKey:ft,action:null,allow:null,allowFullScreen:Ie,allowPaymentRequest:Ie,allowUserMedia:Ie,alpha:Ie,alt:null,as:null,async:Ie,autoCapitalize:null,autoComplete:ft,autoFocus:Ie,autoPlay:Ie,blocking:ft,capture:null,charSet:null,checked:Ie,cite:null,className:ft,closedBy:null,colorSpace:null,cols:te,colSpan:te,command:null,commandFor:null,content:null,contentEditable:Yt,controls:Ie,controlsList:ft,coords:te|Ii,crossOrigin:null,data:null,dateTime:null,decoding:null,default:Ie,defer:Ie,dir:null,dirName:null,disabled:Ie,download:d2,draggable:Yt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:Ie,formTarget:null,headers:ft,height:te,hidden:d2,high:te,href:null,hrefLang:null,htmlFor:ft,httpEquiv:ft,id:null,imageSizes:null,imageSrcSet:null,inert:Ie,inputMode:null,integrity:null,is:null,isMap:Ie,itemId:null,itemProp:ft,itemRef:ft,itemScope:Ie,itemType:ft,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:Ie,low:te,manifest:null,max:null,maxLength:te,media:null,method:null,min:null,minLength:te,multiple:Ie,muted:Ie,name:null,nonce:null,noModule:Ie,noValidate:Ie,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:Ie,optimum:te,pattern:null,ping:ft,placeholder:null,playsInline:Ie,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:Ie,referrerPolicy:null,rel:ft,required:Ie,reversed:Ie,rows:te,rowSpan:te,sandbox:ft,scope:null,scoped:Ie,seamless:Ie,selected:Ie,shadowRootClonable:Ie,shadowRootCustomElementRegistry:Ie,shadowRootDelegatesFocus:Ie,shadowRootMode:null,shadowRootSerializable:Ie,shape:null,size:te,sizes:null,slot:null,span:te,spellCheck:Yt,src:null,
1051srcDoc:null,srcLang:null,srcSet:null,start:te,step:null,style:null,tabIndex:te,target:null,title:null,translate:null,type:null,typeMustMatch:Ie,useMap:null,value:Yt,width:te,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:ft,axis:null,background:null,bgColor:null,border:te,borderColor:null,bottomMargin:te,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:Ie,declare:Ie,event:null,face:null,frame:null,frameBorder:null,hSpace:te,leftMargin:te,link:null,longDesc:null,lowSrc:null,marginHeight:te,marginWidth:te,noResize:Ie,noHref:Ie,noShade:Ie,noWrap:Ie,object:null,profile:null,prompt:null,rev:null,rightMargin:te,rules:null,scheme:null,scrolling:Yt,standby:null,summary:null,text:null,topMargin:te,valueType:null,version:null,vAlign:null,vLink:null,vSpace:te,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:Ie,disablePictureInPicture:Ie,disableRemotePlayback:Ie,exportParts:Ii,part:ft,prefix:null,property:null,results:te,security:null,unselectable:null},space:"html",transform:hq}),xle=dd({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",maskType:"mask-type",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav
1051-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:po,accentHeight:te,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:te,amplitude:te,arabicForm:null,ascent:te,attributeName:null,attributeType:null,azimuth:te,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:te,by:null,calcMode:null,capHeight:te,className:ft,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:te,diffuseConstant:te,direction:null,display:null,dur:null,divisor:te,dominantBaseline:null,download:Ie,dx:null,dy:null,edgeMode:null,editable:null,elevation:te,enableBackground:null,end:null,event:null,exponent:te,externalResourcesRequired:null,fill:null,fillOpacity:te,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Ii,g2:Ii,glyphName:Ii,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:te,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:te,horizOriginX:te,horizOriginY:te,id:null,ideographic:te,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:te,k:te,k1:te,k2:te,k3:te,k4:te,kernelMatrix:po,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:te,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:te,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,on
vendor: 5,340 bytes, lines 1051-1052
1051Zoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:te,overlineThickness:te,paintOrder:null,panose1:null,path:null,pathLength:te,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:ft,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:te,pointsAtY:te,pointsAtZ:te,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:po,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:po,rev:po,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:po,requiredFeatures:po,requiredFonts:po,requiredFormats:po,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:te,specularExponent:te,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:te,strikethroughThickness:te,string:null,stroke:null,strokeDashArray:po,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:te,strokeOpacity:te,strokeWidth:null,style:null,surfaceScale:te,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:po,tabIndex:te,tableValues:null,target:null,targetX:te,targetY:te,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:po,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:te,underlineThickness:te,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:te,values:null,vAlphabetic:te,vMathematical:te,vectorEffect:null,vHanging:te,vIdeographic:te,version:null,vertAdvY:te,vertOriginX:te,vertOriginY:te,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:te,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:pq}),fq=dd({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}}),gq=dd({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:hq}),vq=dd({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}}),ble={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},yle=/[A-Z]/g,EN=/-[a-z]/g,kle=/^data[-\w.:]+$/i;function wle(e,t){const a=c2(t);let o=t,r=lo;if(a in e.normal)return e.property[e.normal[a]];if(a.length>4&&a.slice(0,4)==="data"&&kle.test(t)){if(t.charAt(4)==="-"){const n=t.slice(5).replace(EN,Ple);o="data"+n.charAt(0).toUpperCase()+n.slice(1)}else{const n=t.slice(4);if(!EN.test(n)){let i=n.replace(yle,Cle);i.charAt(0)!=="-"&&(i="-"+i),t="data"+i}}r=gw}return new r(o,t)}function Cle(e){return"-"+e.toLowerCase()}function Ple(e){return e.charAt(1).toUpperCase()}const Sle=uq([mq,vle,fq,gq,vq],"html"),vw=uq([mq,xle,fq,gq,vq],"svg");function Rle(e){return e.join(" ").trim()}var xw={},_N=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,jle=/\n/g,Nle=/^\s*/,Ale=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,Ele=/^:\s*/,_le=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Tle=/^[;\s]*/,$le=/^\s+|\s+$/g,Ole=` 1052`,TN="/",$N="*",mi="",qle="comment",Dle="declaration";function Ile(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var a=1,o=1;function r(f){var g=f.match(jle);g&&(a+=g.length);var b=f.lastIndexOf(Ole);o=~b?f.length-b:o+f.length}function n(){var f={line:a,column:o};return function(g){return g.position=new i(f),d(),g}}function i(f){this.start=f,this.end={line:a,column:o},this.source=t.source}i.prototype.content=e;function l(f){var g=new Error(t.source+":"+a+":"+o+": "+f);if(g.reason=f,g.filename=t.source,g.line=a,g.column=o,g.source=e,!t.silent)throw g}function c(f){var g=f.exec(e);if(g){var b=g[0];return r(b),e=e.slice(b.length),g}}function d(){c(Nle)}function u(f){var g;for(f=f||[];g=m();)g!==!1&&f.push(g);return f}function m(){var f=n();if(!(TN!=e.charAt(0)||$N!=e.charAt(1))){for(var g=2;mi!=e.charAt(g)&&($N!=e.charAt(g)||TN!=e.charAt(g+1));)++g;if(g+=2,mi===e.charAt(g-1))return l("End of comment missing");var b=e.slice(2,g-2);return o+=2,r(b),e=e.slice(g),o+=2,f({type:qle,comment:b})}}function h(){var f=n(),g=c(Ale);if(g){if(m(),!c(Ele))return l("property missing ':'");var b=c(_le),v=f({type:Dle,property:ON(g[0].replace(_N,mi)),value:b?ON(b[0].replace(_N,mi)):mi});return c(Tle),v}}function p(){var f=[];u(f);for(var g;g=h();)g!==!1&&(f.push(g),u(f));return f}return d(),p()}function ON(e){return e?e.replace($le,mi):mi}var Mle=Ile,Lle=Dh&&Dh.__importDefault||function(e){return e&&e.__esMo
vendor: 3,679 bytes, line 1052
1052dule?e:{default:e}};Object.defineProperty(xw,"__esModule",{value:!0});xw.default=Vle;const Ble=Lle(Mle);function Vle(e,t){let a=null;if(!e||typeof e!="string")return a;const o=(0,Ble.default)(e),r=typeof t=="function";return o.forEach(n=>{if(n.type!=="declaration")return;const{property:i,value:l}=n;r?t(i,l,n):l&&(a=a||{},a[i]=l)}),a}var f0={};Object.defineProperty(f0,"__esModule",{value:!0});f0.camelCase=void 0;var Fle=/^--[a-zA-Z0-9_-]+$/,Ule=/-([a-z])/g,Gle=/^[^-]+$/,zle=/^-(webkit|moz|ms|o|khtml)-/,Hle=/^-(ms)-/,Kle=function(e){return!e||Gle.test(e)||Fle.test(e)},Qle=function(e,t){return t.toUpperCase()},qN=function(e,t){return"".concat(t,"-")},Wle=function(e,t){return t===void 0&&(t={}),Kle(e)?e:(e=e.toLowerCase(),t.reactCompat?e=e.replace(Hle,qN):e=e.replace(zle,qN),e.replace(Ule,Qle))};f0.camelCase=Wle;var Jle=Dh&&Dh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},Xle=Jle(xw),Yle=f0;function m2(e,t){var a={};return!e||typeof e!="string"||(0,Xle.default)(e,function(o,r){o&&r&&(a[(0,Yle.camelCase)(o,t)]=r)}),a}m2.default=m2;var Zle=m2;const ece=tl(Zle),xq=bq("end"),bw=bq("start");function bq(e){return t;function t(a){const o=a&&a.position&&a.position[e]||{};if(typeof o.line=="number"&&o.line>0&&typeof o.column=="number"&&o.column>0)return{line:o.line,column:o.column,offset:typeof o.offset=="number"&&o.offset>-1?o.offset:void 0}}}function tce(e){const t=bw(e),a=xq(e);if(t&&a)return{start:t,end:a}}function hu(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?DN(e.position):"start"in e||"end"in e?DN(e):"line"in e||"column"in e?p2(e):""}function p2(e){return IN(e&&e.line)+":"+IN(e&&e.column)}function DN(e){return p2(e&&e.start)+"-"+p2(e&&e.end)}function IN(e){return e&&typeof e=="number"?e:1}class $a extends Error{constructor(t,a,o){super(),typeof a=="string"&&(o=a,a=void 0);let r="",n={},i=!1;if(a&&("line"in a&&"column"in a?n={place:a}:"start"in a&&"end"in a?n={place:a}:"type"in a?n={ancestors:[a],place:a.position}:n={...a}),typeof t=="string"?r=t:!n.cause&&t&&(i=!0,r=t.message,n.cause=t),!n.ruleId&&!n.source&&typeof o=="string"){const c=o.indexOf(":");c===-1?n.ruleId=o:(n.source=o.slice(0,c),n.ruleId=o.slice(c+1))}if(!n.place&&n.ancestors&&n.ancestors){const c=n.ancestors[n.ancestors.length-1];c&&(n.place=c.position)}const l=n.place&&"start"in n.place?n.place.start:n.place;this.ancestors=n.ancestors||void 0,this.cause=n.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=r,this.line=l?l.line:void 0,this.name=hu(n.place)||"1:1",this.place=n.place||void 0,this.reason=this.message,this.ruleId=n.ruleId||void 0,this.source=n.source||void 0,this.stack=i&&n.cause&&typeof n.cause.stack=="string"?n.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}$a.prototype.file="";$a.prototype.name="";$a.prototype.reason="";$a.prototype.message="";$a.prototype.stack="";$a.prototype.column=void 0;$a.prototype.line=void 0;$a.prototype.ancestors=void 0;$a.prototype.cause=void 0;$a.prototype.fatal=void 0;$a.prototype.place=void 0;$a.prototype.ruleId=void 0;$a.prototype.source=void 0;const yw={}.hasOwnProperty,ace=new Map,oce=/[A-Z]/g,rce=new Set(["table","tbody","thead","tfoot","tr"]),nce=new Set(["td","th"]),yq="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function sce(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const a=t.filePath||void 0;let o;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");o=hce(a,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");
vendor: 10,587 bytes, line 1052
1052if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");o=pce(a,t.jsx,t.jsxs)}const r={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:o,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:a,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?vw:Sle,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},n=kq(r,e,void 0);return n&&typeof n!="string"?n:r.create(e,r.Fragment,{children:n||void 0},void 0)}function kq(e,t,a){if(t.type==="element")return ice(e,t,a);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return lce(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return dce(e,t,a);if(t.type==="mdxjsEsm")return cce(e,t);if(t.type==="root")return uce(e,t,a);if(t.type==="text")return mce(e,t)}function ice(e,t,a){const o=e.schema;let r=o;t.tagName.toLowerCase()==="svg"&&o.space==="html"&&(r=vw,e.schema=r),e.ancestors.push(t);const n=Cq(e,t.tagName,!1),i=fce(e,t);let l=ww(e,t);return rce.has(t.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!fle(c):!0})),wq(e,i,n,t),kw(i,l),e.ancestors.pop(),e.schema=o,e.create(t,n,i,a)}function lce(e,t){if(t.data&&t.data.estree&&e.evaluater){const o=t.data.estree.body[0];return o.type,e.evaluater.evaluateExpression(o.expression)}lm(e,t.position)}function cce(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);lm(e,t.position)}function dce(e,t,a){const o=e.schema;let r=o;t.name==="svg"&&o.space==="html"&&(r=vw,e.schema=r),e.ancestors.push(t);const n=t.name===null?e.Fragment:Cq(e,t.name,!0),i=gce(e,t),l=ww(e,t);return wq(e,i,n,t),kw(i,l),e.ancestors.pop(),e.schema=o,e.create(t,n,i,a)}function uce(e,t,a){const o={};return kw(o,ww(e,t)),e.create(t,e.Fragment,o,a)}function mce(e,t){return t.value}function wq(e,t,a,o){typeof a!="string"&&a!==e.Fragment&&e.passNode&&(t.node=o)}function kw(e,t){if(t.length>0){const a=t.length>1?t:t[0];a&&(e.children=a)}}function pce(e,t,a){return o;function o(r,n,i,l){const d=Array.isArray(i.children)?a:t;return l?d(n,i,l):d(n,i)}}function hce(e,t){return a;function a(o,r,n,i){const l=Array.isArray(n.children),c=bw(o);return t(r,n,i,l,{columnNumber:c?c.column-1:void 0,fileName:e,lineNumber:c?c.line:void 0},void 0)}}function fce(e,t){const a={};let o,r;for(r in t.properties)if(r!=="children"&&yw.call(t.properties,r)){const n=vce(e,r,t.properties[r]);if(n){const[i,l]=n;e.tableCellAlignToStyle&&i==="align"&&typeof l=="string"&&nce.has(t.tagName)?o=l:a[i]=l}}if(o){const n=a.style||(a.style={});n[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=o}return a}function gce(e,t){const a={};for(const o of t.attributes)if(o.type==="mdxJsxExpressionAttribute")if(o.data&&o.data.estree&&e.evaluater){const n=o.data.estree.body[0];n.type;const i=n.expression;i.type;const l=i.properties[0];l.type,Object.assign(a,e.evaluater.evaluateExpression(l.argument))}else lm(e,t.position);else{const r=o.name;let n;if(o.value&&typeof o.value=="object")if(o.value.data&&o.value.data.estree&&e.evaluater){const l=o.value.data.estree.body[0];l.type,n=e.evaluater.evaluateExpression(l.expression)}else lm(e,t.position);else n=o.value===null?!0:o.value;a[r]=n}return a}function ww(e,t){const a=[];let o=-1;const r=e.passKeys?new Map:ace;for(;++o<t.children.length;){const n=t.children[o];let i;if(e.passKeys){const c=n.type==="element"?n.tagName:n.type==="mdxJsxFlowElement"||n.type==="mdxJsxTextElement"?n.name:void 0;if(c){const d=r.get(c)||0;i=c+"-"+d,r.set(c,d+1)}}const l=kq(e,n,i);l!==void 0&&a.push(l)}return a}function vce(e,t,a){const o=wle(e.schema,t);if(!(a==null||typeof a=="number"&&Number.isNaN(a))){if(Array.isArray(a)&&(a=o.commaSeparated?dle(a):Rle(a)),o.property==="style"){let r=typeof a=="object"?a:xce(e,String(a));return e.stylePropertyNameCase==="css"&&(r=bce(r)),["style",r]}return[e.elementAttributeNameCase==="react"&&o.space?ble[o.property]||o.property:o.attribute,a]}}function xce(e,t){try{return ece(t,{reactCompat:!0})}catch(a){if(e.ignoreInvalidStyle)return{};const o=a,r=new $a("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:o,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw r.file=e.filePath||void 0,r.url=yq+"#cannot-parse-style-attribute",r}}function Cq(e,t,a){let o;if(!a)o={type:"Literal",value:t};else if(t.includes(".")){const r=t.split(".");let n=-1,i;for(;++n<r.length;){const l=jN(r[n])?{type:"Identifier",name:r[n]}:{type:"Literal",value:r[n]};i=i?{type:"MemberExpression",object:i,property:l,computed:!!(n&&l.type==="Literal"),optional:!1}:l}o=i}else o=jN(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(o.type==="Literal"){const r=o.value;return yw.call(e.components,r)?e.components[r]:r}if(e.evaluater)return e.evaluater.evaluateExpression(o);lm(e)}function lm(e,t){const a=new $a("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw a.file=e.filePath||void 0,a.url=yq+"#cannot-handle-mdx-estrees-without-createevaluater",a}function bce(e){const t={};let a;for(a in e)yw.call(e,a)&&(t[yce(a)]=e[a]);return t}function yce(e){let t=e.replace(oce,kce);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function kce(e){return"-"+e.toLowerCase()}const ix={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},wce={};function Cw(e,t){const a=wce,o=typeof a.includeImageAlt=="boolean"?a.includeImageAlt:!0,r=typeof a.includeHtml=="boolean"?a.includeHtml:!0;return Pq(e,o,r)}function Pq(e,t,a){if(Cce(e)){if("value"in e)return e.type==="html"&&!a?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return MN(e.children,t,a)}return Array.isArray(e)?MN(e,t,a):""}function MN(e,t,a){const o=[];let r=-1;for(;++r<e.length;)o[r]=Pq(e[r],t,a);return o.join("")}function Cce(e){return!!(e&&typeof e=="object")}const LN=document.createElement("i");function Pw(e){const t="&"+e+";";LN.innerHTML=t;const a=LN.textContent;return a.charCodeAt(a.length-1)===59&&e!=="semi"||a===t?!1:a}function Co(e,t,a,o){const r=e.length;let n=0,i;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,a=a>0?a:0,o.length<1e4)i=Array.from(o),i.unshift(t,a),e.splice(...i);else for(a&&e.splice(t,a);n<o.length;)i=o.slice(n,n+1e4),i.unshift(t,0),e.splice(...i),n+=1e4,t+=1e4}function Bo(e,t){return e.length>0?(Co(e,e.length,0,t),e):t}const BN={}.hasOwnProperty;function Sq(e){const t={};let a=-1;for(;++a<e.length;)Pce(t,e[a]);return t}function Pce(e,t){let a;for(a in t){const r=(BN.call(e,a)?e[a]:void 0)||(e[a]={}),n=t[a];let i;if(n)for(i in n){BN.call(r,i)||(r[i]=[]);const l=n[i];Sce(r[i],Array.isArray(l)?l:l?[l]:[])}}}function Sce(e,t){let a=-1;const o=[];for(;++a<t.length;)(t[a].add==="after"?e:o).push(t[a]);Co(e,0,0,o)}function Rq(e,t){const a=Number.parseInt(e,t);return a<9||a===11||a>13&&a<32||a>126&&a<160||a>55295&&a<57344||a>64975&&a<65008||(a&65535)===65535||(a&65535)===65534||a>1114111?"�":String.fromCodePoint(a)}function Pr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ma=Js(/[A-Za-z]/),Ea=Js(/[\dA-Za-z]/),Rce=Js(/[#-'*+\--9=?A-Z^-~]/);function Jf(e){return e!==null&&(e<32||e===127)}const h2=Js(/\d/),jce=Js(/[\dA-Fa-f]/),Nce=Js(/[!-/:-@[-`{-~]/);function Ae(e){return e!==null&&e<-2}function bt(e){return e!==null&&(e<0||e===32)}function Ge(e){return e===-2||e===-1||e===32}const g0=Js(new RegExp("\\p{P}|\\p{S}","u")),Yi=Js(/\s/);function Js(e){return t;function t(a){return a!==null&&a>-1&&e.test(String.fromCharCode(a))}}function ud(e){const t=[];let a=-1,o=0,r=0;for(;++a<e.length;){const n=e.charCodeAt(a);let i="";if(n===37&&Ea(e.charCodeAt(a+1))&&Ea(e.charCodeAt(a+2)))r=2;else if(n<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(n))||(i=String.fromCharCode(n));else if(n>55295&&n<57344){const l=e.charCodeAt(a+1);n<56320&&l>56319&&l<57344?(i=String.fromCharCode(n,l),r=1):i="�"}else i=String.fromCharCode(n);i&&(t.push(e.slice(o,a),encodeURIComponent(i)),o=a+r+1,i=""),r&&(a+=r,r=0)}return t.join("")+e.slice(o)}function Xe(e,t,a,o){const r=o?o-1:Number.POSITIVE_INFINITY;let n=0;return i;function i(c){return Ge(c)?(e.enter(a),l(c)):t(c)}function l(c){return Ge(c)&&n++<r?(e.consume(c),l):(e.exit(a),t(c))}}const Ace={tokenize:Ece};function Ece(e){const t=e.attempt(this.parser.constructs.contentInitial,o,r);let a;return t;function o(l){if(l===null){e.consume(l);return}return e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),Xe(e,t,"linePrefix")}function r(l){return e.enter("paragraph"),n(l)}function n(l){const c=e.enter("chunkText",{contentType:"text",previous:a});return a&&(a.next=c),a=c,i(l)}function i(l){if(l===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(l);return}return Ae(l)?(e.consume(l),e.exit("chunkText"),n):(e.consume(l),i)}}const _ce={tokenize:Tce},VN={tokenize:$ce};function Tce(e){const t=this,a=[];let o=0,r,n,i;return l;function l(k){if(o<a.length){const w=a[o];return t.containerState=w[1],e.attempt(w[0].continuation,c,d)(k)}return d(k)}function c(k){if(o++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,r&&y();const w=t.events.length;let R=w,C;for(;R--;)if(t.events[R][0]==="exit"&&t.events[R][1].type==="chunkFlow"){C=t.events[R][1].end;break}v(o);let P=w;for(;P<t.events.length;)t.events[P][1].end={...C},P++;return Co(t.events,R+1,0,t.events.slice(w)),t.events.length=P,d(k)}return l(k)}function d(k){if(o===a.length){if(!r)return h(k);if(r.currentConstruct&&r.currentConstruct.concrete)return f(k);t.interrupt=!!(r.currentConstruct&&!r._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(VN,u,m)(k)}function u(k){return r&&y(),v(o),h(k)}function m(k){return t.parser.lazy[t.now().line]=o!==a.length,i=t.now().offset,f(k)}function h(k){return t.containerState={},e.attempt(VN,p,f)(k)}function p(k){return o++,a.push([t.currentConstruct,t.containerState]),h(k)}function f(k){if(k===null){r&&y(),v(0),e.consume(k);return}return r=r||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:r,contentType:"flow",previous:n}),g(k)}function g(k){if(k===null){b(e.exit("chunkFlow"),!0),v(0),e.consume(k);return}return Ae(k)?(e.consume(k),b(e.exit("chunkFlow")),o=0,t.interrupt=void 0,l):(e.consume(k),g)}function b(k,w){const R=t.sliceStream(k);
vendor: 6,679 bytes, line 1052
1052if(w&&R.push(null),k.previous=n,n&&(n.next=k),n=k,r.defineSkip(k.start),r.write(R),t.parser.lazy[k.start.line]){let C=r.events.length;for(;C--;)if(r.events[C][1].start.offset<i&&(!r.events[C][1].end||r.events[C][1].end.offset>i))return;const P=t.events.length;let N=P,E,A;for(;N--;)if(t.events[N][0]==="exit"&&t.events[N][1].type==="chunkFlow"){if(E){A=t.events[N][1].end;break}E=!0}for(v(o),C=P;C<t.events.length;)t.events[C][1].end={...A},C++;Co(t.events,N+1,0,t.events.slice(P)),t.events.length=C}}function v(k){let w=a.length;for(;w-- >k;){const R=a[w];t.containerState=R[1],R[0].exit.call(t,e)}a.length=k}function y(){r.write([null]),n=void 0,r=void 0,t.containerState._closeFlow=void 0}}function $ce(e,t,a){return Xe(e,e.attempt(this.parser.constructs.document,t,a),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function zc(e){if(e===null||bt(e)||Yi(e))return 1;if(g0(e))return 2}function v0(e,t,a){const o=[];let r=-1;for(;++r<e.length;){const n=e[r].resolveAll;n&&!o.includes(n)&&(t=n(t,a),o.push(n))}return t}const f2={name:"attention",resolveAll:Oce,tokenize:qce};function Oce(e,t){let a=-1,o,r,n,i,l,c,d,u;for(;++a<e.length;)if(e[a][0]==="enter"&&e[a][1].type==="attentionSequence"&&e[a][1]._close){for(o=a;o--;)if(e[o][0]==="exit"&&e[o][1].type==="attentionSequence"&&e[o][1]._open&&t.sliceSerialize(e[o][1]).charCodeAt(0)===t.sliceSerialize(e[a][1]).charCodeAt(0)){if((e[o][1]._close||e[a][1]._open)&&(e[a][1].end.offset-e[a][1].start.offset)%3&&!((e[o][1].end.offset-e[o][1].start.offset+e[a][1].end.offset-e[a][1].start.offset)%3))continue;c=e[o][1].end.offset-e[o][1].start.offset>1&&e[a][1].end.offset-e[a][1].start.offset>1?2:1;const m={...e[o][1].end},h={...e[a][1].start};FN(m,-c),FN(h,c),i={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...e[o][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...e[a][1].start},end:h},n={type:c>1?"strongText":"emphasisText",start:{...e[o][1].end},end:{...e[a][1].start}},r={type:c>1?"strong":"emphasis",start:{...i.start},end:{...l.end}},e[o][1].end={...i.start},e[a][1].start={...l.end},d=[],e[o][1].end.offset-e[o][1].start.offset&&(d=Bo(d,[["enter",e[o][1],t],["exit",e[o][1],t]])),d=Bo(d,[["enter",r,t],["enter",i,t],["exit",i,t],["enter",n,t]]),d=Bo(d,v0(t.parser.constructs.insideSpan.null,e.slice(o+1,a),t)),d=Bo(d,[["exit",n,t],["enter",l,t],["exit",l,t],["exit",r,t]]),e[a][1].end.offset-e[a][1].start.offset?(u=2,d=Bo(d,[["enter",e[a][1],t],["exit",e[a][1],t]])):u=0,Co(e,o-1,a-o+3,d),a=o+d.length-u-2;break}}for(a=-1;++a<e.length;)e[a][1].type==="attentionSequence"&&(e[a][1].type="data");return e}function qce(e,t){const a=this.parser.constructs.attentionMarkers.null,o=this.previous,r=zc(o);let n;return i;function i(c){return n=c,e.enter("attentionSequence"),l(c)}function l(c){if(c===n)return e.consume(c),l;const d=e.exit("attentionSequence"),u=zc(c),m=!u||u===2&&r||a.includes(c),h=!r||r===2&&u||a.includes(o);return d._open=!!(n===42?m:m&&(r||!h)),d._close=!!(n===42?h:h&&(u||!m)),t(c)}}function FN(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}const Dce={name:"autolink",tokenize:Ice};function Ice(e,t,a){let o=0;return r;function r(p){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),n}function n(p){return Ma(p)?(e.consume(p),i):p===64?a(p):d(p)}function i(p){return p===43||p===45||p===46||Ea(p)?(o=1,l(p)):d(p)}function l(p){return p===58?(e.consume(p),o=0,c):(p===43||p===45||p===46||Ea(p))&&o++<32?(e.consume(p),l):(o=0,d(p))}function c(p){return p===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):p===null||p===32||p===60||Jf(p)?a(p):(e.consume(p),c)}function d(p){return p===64?(e.consume(p),u):Rce(p)?(e.consume(p),d):a(p)}function u(p){return Ea(p)?m(p):a(p)}function m(p){return p===46?(e.consume(p),o=0,u):p===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):h(p)}function h(p){if((p===45||Ea(p))&&o++<63){const f=p===45?h:m;return e.consume(p),f}return a(p)}}const Dm={partial:!0,tokenize:Mce};function Mce(e,t,a){return o;function o(n){return Ge(n)?Xe(e,r,"linePrefix")(n):r(n)}function r(n){return n===null||Ae(n)?t(n):a(n)}}const jq={continuation:{tokenize:Bce},exit:Vce,name:"blockQuote",tokenize:Lce};function Lce(e,t,a){const o=this;return r;function r(i){if(i===62){const l=o.containerState;return l.open||(e.enter("blockQuote",{_container:!0}),l.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(i),e.exit("blockQuoteMarker"),n}return a(i)}function n(i){return Ge(i)?(e.enter("blockQuotePrefixWhitespace"),e.consume(i),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(i))}}function Bce(e,t,a){const o=this;return r;function r(i){return Ge(i)?Xe(e,n,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(i):n(i)}function n(i){return e.attempt(jq,t,a)(i)}}function Vce(e){e.exit("blockQuote")}const Nq={name:"characterEscape",tokenize:Fce};function Fce(e,t,a){return o;function o(n){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(n),e.exit("escapeMarker"),r}function r(n){return Nce(n)?(e.enter("characterEscapeValue"),e.consume(n),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):a(n)}}const Aq={name:"characterReference",tokenize:Uce};function Uce(e,t,a){const o=this;let r=0,n,i;return l;function l(m){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(m),e.exit("characterReferenceMarker"),c}function c(m){return m===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(m),e.exit("characterReferenceMarkerNumeric"),d):(e.enter("characterReferenceValue"),n=31,i=Ea,u(m))}function d(m){return m===88||m===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(m),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),n=6,i=jce,u):(e.enter("characterReferenceValue"),n=7,i=h2,u(m))}function u(m){if(m===59&&r){const h=e.exit("characterReferenceValue");return i===Ea&&!Pw(o.sliceSerialize(h))?a(m):(e.enter("characterReferenceMarker"),e.consume(m),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return i(m)&&r++<n?(e.consume(m),u):a(m)}}const UN={partial:!0,tokenize:zce},GN={concrete:!0,name:"codeFenced",tokenize:Gce};function Gce(e,t,a){const o=this,r={partial:!0,tokenize:R};let n=0,i=0,l;return c;function c(C){return d(C)}function d(C){const P=o.events[o.events.length-1];return n=P&&P[1].type==="linePrefix"?P[2].sliceSerialize(P[1],!0).length:0,l=C,e.enter("co
1052deFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),u(C)}function u(C){return C===l?(i++,e.consume(C),u):i<3?a(C):(e.exit("codeFencedFenceSequence"),Ge(C)?Xe(e,m,"whitespace")(C):m(C))}function m(C){return C===null||Ae(C)?(e.exit("codeFencedFence"),o.interrupt?t(C):e.check(UN,g,w)(C)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),h(C))}function h(C){return C===null||Ae(C)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),m(C)):Ge(C)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Xe(e,p,"whitespace")(C)):C===96&&C===l?a(C):(e.consume(C),h)}function p(C){return C===null||Ae(C)?m(C):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),f(C))}function f(C){return C===null||Ae(C)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),m(C)):C===96&&C===l?a(C):(e.consume(C),f)}function g(C){return e.attempt(r,w,b)(C)}function b(C){return e.enter("lineEnding"),e.consume(C),e.exit("lineEnding"),v}function v(C){return n>0&&Ge(C)?Xe(e,y,"linePrefix",n+1)(C):y(C)}function y(C){return C===null||Ae(C)?e.check(UN,g,w)(C):(e.enter("codeFlowValue"),k(C))}function k(C){return C===null||Ae(C)?(e.exit("codeFlowValue"),y(C)):(e.consume(C),k)}function w(C){return e.exit("codeFenced"),t(C)}function R(C,P,N){let E=0;return A;function A(D){return C.enter("lineEnding"),C.consume(D),C.exit("lineEnding"),$}function $(D){return C.enter("codeFencedFence"),Ge(D)?Xe(C,O,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(D):O(D)}function O(D){return D===l?(C.enter("codeFencedFenceSequence"),V(D)):N(D)}function V(D){return D===l?(E++,C.consume(D),V):E>=i?(C.exit("codeFencedFenceSequence"),Ge(D)?Xe(C,T,"whitespace")(D):T(D)):N(D)}function T(D){return D===null||Ae(D)?(C.exit("codeFencedFence"),P(D)):N(D)}}}function zce(e,t,a){const o=this;return r;function r(i){return i===null?a(i):(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n)}function n(i){return o.parser.lazy[o.now().line]?a(i):t(i)}}const lx={name:"codeIndented",tokenize:Kce},Hce={partial:!0,tokenize:Qce};function Kce(e,t,a){const o=this;return r;function r(d){return e.enter("codeIndented"),Xe(e,n,"linePrefix",5)(d)}function n(d){const u=o.events[o.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?i(d):a(d)}function i(d){return d===null?c(d):Ae(d)?e.attempt(Hce,i,c)(d):(e.enter("codeFlowValue"),l(d))}function l(d){return d===null||Ae(d)?(e.exit("codeFlowValue"),i(d)):(e.consume(d),l)}function c(d){return e.exit("codeIndented"),t(d)}}function Qce(e,t,a){const o=this;return r;function r(i){return o.parser.lazy[o.now().line]?a(i):Ae(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r):Xe(e,n,"linePrefix",5)(i)}function n(i){const l=o.events[o.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?t(i):Ae(i)?r(i):a(i)}}const Wce={name:"codeText",previous:Xce,resolve:Jce,tokenize:Yce};function Jce(e){let t=e.length-4,a=3,o,r;if((e[a][1].type==="lineEnding"||e[a][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(o=a;++o<t;)if(e[o][1].type==="codeTextData"){e[a][1].type="codeTextPadding",e[t][1].type="codeTextPadding",a+=2,t-=2;break}}for(o=a-1,t++;++o<=t;)r===void 0?o!==t&&e[o][1].type!=="lineEnding"&&(r=o):(o===t||e[o][1].type==="lineEnding")&&(e[r][1].type="codeTextData",o!==r+2&&(e[r][1].end=e[o-1][1].end,e.splice(r+2,o-r-2),t-=o-r-2,o=r+2),r=void 0);return e}function Xce(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function Yce(e,t,a){let o=0,r,n;return i;function i(m){return e.enter("codeText"),e.enter("codeTextSequence"),l(m)}function l(m){return m===96?(e.consume(m),o++,l):(e.exit("codeTextSequence"),c(m))}function c(m){return m===null?a(m):m===32?(e.enter("space"),e.consume(m),e.exit("space"),c):m===96?(n=e.enter("codeTextSequence"),r=0,u(m)):Ae(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),c):(e.enter("codeTextData"),d(m))}function d(m){return m===null||m===32||m===96||Ae(m)?(e.exit("codeTextData"),c(m)):(e.consume(m),d)}function u(m){return m===96?(e.consume(m),r++,u):r===o?(e.exit("codeTextSequence"),e.exit("codeText"),t(m)):(n.type="codeTextData",d(m))}}class Zce{constructor(t){this.left=t?[...t]:[],this.right=[]}get(t){if(t<0||t>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return t<this.left.length?this.left[t]:this.right[this.right.length-t+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(t,a){const o=a??Number.POSITIVE_INFINITY;return o<this.left.length?this.left.slice(t,o):t>this.left.length?this.right.slice(this.right.length-o+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-o+this.left.length).reverse())}splice(t,a,o){const r=a||0;this.setCursor(Math.trunc(t));const n=this.right.splice(this.right.length-r,Number.POSITIVE_INFINITY);return o&&_d(this.left,o),n.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),_d(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),_d(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t<this.left.length){const a=this.left.splice(t,Number.POSITIVE_INFINITY);_d(this.right,a.reverse())}else{const a=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);_d(this.left,a.reverse())}}}function _d(e,t){let a=0;if(t.length<1e4)e.push(...t);else for(;a<t.length;)e.push(...t.slice(a,a+1e4)),a+=1e4}function Eq(e){const t={};let a=-1,o,r,n,i,l,c,d;const u=new Zce(e);for(;++a<u.length;){for(;a in t;)a=t[a];if(o=u.get(a),a&&o[1].type==="chunkFlow"&&u.get(a-1)[1].type==="listItemPrefix"&&(c=o[1]._tokenizer.events,n=0,n<c.length&&c[n][1].type==="lineEndingBlank"&&(n+=2),n<c.length&&c[n][1].type==="content"))for(;++n<c.length&&c[n][1].type!=="content";)c[n][1].type==="chunkText"&&(c[n][1]._isInFirstContentOfListItem=!0,n++);if(o[0]==="enter")o[1].contentType&&(Object.assign(t,ede(u,a)),a=t[a],d=!0);else if(o[1]._container){for(n=a,r=void 0;n--;)if(i=u.get(n),i[1].type==="lineEnding"||i[1].type==="lineEndingBlank")i[0]==="enter"&&(r&&(u.get(r)[1].type="lineEndingBlank"),i[1].type="lineEnding",r=n);else if(!(i[1].type==="linePrefix"||i[1].type==="listItemIndent"))break;r&&(o[1].end={...u.get(r)[1].start},l=u.slice(r,a),l.unshift(o),u.splice(r,a-r+1,l))}}return Co(e,0,Number.POSITIVE_INFINITY,u.slice(0)),!d}function ede(e,t){const a=e.get(t)[1],o=e.get(t)[2];let r=t-1;const n=[];let i=a._tokenizer;i||(i=o.parser[a.contentType](a.start),a._contentTypeTextTrailing&&(i._contentTypeTextTrailing=!0));const l=i.events,c=[],d={};let u,m,h=-1,p=a,f=0,g=0;const b=[g];for(;p;){for(;e.get(++r)[1]!==p;);
vendor: 22,372 bytes, line 1052
1052n.push(r),p._tokenizer||(u=o.sliceStream(p),p.next||u.push(null),m&&i.defineSkip(p.start),p._isInFirstContentOfListItem&&(i._gfmTasklistFirstContentOfListItem=!0),i.write(u),p._isInFirstContentOfListItem&&(i._gfmTasklistFirstContentOfListItem=void 0)),m=p,p=p.next}for(p=a;++h<l.length;)l[h][0]==="exit"&&l[h-1][0]==="enter"&&l[h][1].type===l[h-1][1].type&&l[h][1].start.line!==l[h][1].end.line&&(g=h+1,b.push(g),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(i.events=[],p?(p._tokenizer=void 0,p.previous=void 0):b.pop(),h=b.length;h--;){const v=l.slice(b[h],b[h+1]),y=n.pop();c.push([y,y+v.length-1]),e.splice(y,2,v)}for(c.reverse(),h=-1;++h<c.length;)d[f+c[h][0]]=f+c[h][1],f+=c[h][1]-c[h][0]-1;return d}const tde={resolve:ode,tokenize:rde},ade={partial:!0,tokenize:nde};function ode(e){return Eq(e),e}function rde(e,t){let a;return o;function o(l){return e.enter("content"),a=e.enter("chunkContent",{contentType:"content"}),r(l)}function r(l){return l===null?n(l):Ae(l)?e.check(ade,i,n)(l):(e.consume(l),r)}function n(l){return e.exit("chunkContent"),e.exit("content"),t(l)}function i(l){return e.consume(l),e.exit("chunkContent"),a.next=e.enter("chunkContent",{contentType:"content",previous:a}),a=a.next,r}}function nde(e,t,a){const o=this;return r;function r(i){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),Xe(e,n,"linePrefix")}function n(i){if(i===null||Ae(i))return a(i);const l=o.events[o.events.length-1];return!o.parser.constructs.disable.null.includes("codeIndented")&&l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?t(i):e.interrupt(o.parser.constructs.flow,a,t)(i)}}function _q(e,t,a,o,r,n,i,l,c){const d=c||Number.POSITIVE_INFINITY;let u=0;return m;function m(v){return v===60?(e.enter(o),e.enter(r),e.enter(n),e.consume(v),e.exit(n),h):v===null||v===32||v===41||Jf(v)?a(v):(e.enter(o),e.enter(i),e.enter(l),e.enter("chunkString",{contentType:"string"}),g(v))}function h(v){return v===62?(e.enter(n),e.consume(v),e.exit(n),e.exit(r),e.exit(o),t):(e.enter(l),e.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===62?(e.exit("chunkString"),e.exit(l),h(v)):v===null||v===60||Ae(v)?a(v):(e.consume(v),v===92?f:p)}function f(v){return v===60||v===62||v===92?(e.consume(v),p):p(v)}function g(v){return!u&&(v===null||v===41||bt(v))?(e.exit("chunkString"),e.exit(l),e.exit(i),e.exit(o),t(v)):u<d&&v===40?(e.consume(v),u++,g):v===41?(e.consume(v),u--,g):v===null||v===32||v===40||Jf(v)?a(v):(e.consume(v),v===92?b:g)}function b(v){return v===40||v===41||v===92?(e.consume(v),g):g(v)}}function Tq(e,t,a,o,r,n){const i=this;let l=0,c;return d;function d(p){return e.enter(o),e.enter(r),e.consume(p),e.exit(r),e.enter(n),u}function u(p){return l>999||p===null||p===91||p===93&&!c||p===94&&!l&&"_hiddenFootnoteSupport"in i.parser.constructs?a(p):p===93?(e.exit(n),e.enter(r),e.consume(p),e.exit(r),e.exit(o),t):Ae(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),m(p))}function m(p){return p===null||p===91||p===93||Ae(p)||l++>999?(e.exit("chunkString"),u(p)):(e.consume(p),c||(c=!Ge(p)),p===92?h:m)}function h(p){return p===91||p===92||p===93?(e.consume(p),l++,m):m(p)}}function $q(e,t,a,o,r,n){let i;return l;function l(h){return h===34||h===39||h===40?(e.enter(o),e.enter(r),e.consume(h),e.exit(r),i=h===40?41:h,c):a(h)}function c(h){return h===i?(e.enter(r),e.consume(h),e.exit(r),e.exit(o),t):(e.enter(n),d(h))}function d(h){return h===i?(e.exit(n),c(i)):h===null?a(h):Ae(h)?(e.enter("lineEnding"),e.consume(h),e.exit("lineEnding"),Xe(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(h))}function u(h){return h===i||h===null||Ae(h)?(e.exit("chunkString"),d(h)):(e.consume(h),h===92?m:u)}function m(h){return h===i||h===92?(e.consume(h),u):u(h)}}function fu(e,t){let a;return o;function o(r){return Ae(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),a=!0,o):Ge(r)?Xe(e,o,a?"linePrefix":"lineSuffix")(r):t(r)}}const sde={name:"definition",tokenize:lde},ide={partial:!0,tokenize:cde};function lde(e,t,a){const o=this;let r;return n;function n(p){return e.enter("definition"),i(p)}function i(p){return Tq.call(o,e,l,a,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function l(p){return r=Pr(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),c):a(p)}function c(p){return bt(p)?fu(e,d)(p):d(p)}function d(p){return _q(e,u,a,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function u(p){return e.attempt(ide,m,m)(p)}function m(p){return Ge(p)?Xe(e,h,"whitespace")(p):h(p)}function h(p){return p===null||Ae(p)?(e.exit("definition"),o.parser.defined.push(r),t(p)):a(p)}}function cde(e,t,a){return o;function o(l){return bt(l)?fu(e,r)(l):a(l)}function r(l){return $q(e,n,a,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function n(l){return Ge(l)?Xe(e,i,"whitespace")(l):i(l)}function i(l){return l===null||Ae(l)?t(l):a(l)}}const dde={name:"hardBreakEscape",tokenize:ude};function ude(e,t,a){return o;function o(n){return e.enter("hardBreakEscape"),e.consume(n),r}function r(n){return Ae(n)?(e.exit("hardBreakEscape"),t(n)):a(n)}}const mde={name:"headingAtx",resolve:pde,tokenize:hde};function pde(e,t){let a=e.length-2,o=3,r,n;return e[o][1].type==="whitespace"&&(o+=2),a-2>o&&e[a][1].type==="whitespace"&&(a-=2),e[a][1].type==="atxHeadingSequence"&&(o===a-1||a-4>o&&e[a-2][1].type==="whitespace")&&(a-=o+1===a?2:4),a>o&&(r={type:"atxHeadingText",start:e[o][1].start,end:e[a][1].end},n={type:"chunkText",start:e[o][1].start,end:e[a][1].end,contentType:"text"},Co(e,o,a-o+1,[["enter",r,t],["enter",n,t],["exit",n,t],["exit",r,t]])),e}function hde(e,t,a){let o=0;return r;function r(u){return e.enter("atxHeading"),n(u)}function n(u){return e.enter("atxHeadingSequence"),i(u)}function i(u){return u===35&&o++<6?(e.consume(u),i):u===null||bt(u)?(e.exit("atxHeadingSequence"),l(u)):a(u)}function l(u){return u===35?(e.enter("atxHeadingSequence"),c(u)):u===null||Ae(u)?(e.exit("atxHeading"),t(u)):Ge(u)?Xe(e,l,"whitespace")(u):(e.enter("atxHeadingText"),d(u))}function c(u){return u===35?(e.consume(u),c):(e.exit("atxHeadingSequence"),l(u))}function d(u){return u===null||u===35||bt(u)?(e.exit("atxHeadingText"),l(u)):(e.consume(u),d)}}const fde=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],zN=["pre","script","style","textarea"],gde={concrete:!0,name:"htmlFlow",resolveTo:bde,tokenize:yde},vde={partial:!0,tokenize:wde},xde={partial:!0,tokenize:kde};function bde(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function yde(e,t,a){const o=this;let r,n,i,l,c;return d;function d(_){return u(_)}function u(_){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(_),m}function m(_){return _===33?(e.consume(_),h):_===47?(e.consume(_),n=!0,g):_===63?(e.consume(_),r=3,o.interrupt?t:j):Ma(_)?(e.consume(_),i=String.fromCharCode(_),b):a(_)}function h(_){return _===45?(e.consume(_),r=2,p):_===91?(e.consume(_),r=5,l=0,f):Ma(_)?(e.consume(_),r=4,o.interrupt?t:j):a(_)}function p(_){return _===45?(e.consume(_),o.interrupt?t:j):a(_)}function f(_){const B="CDATA[";return _===B.charCodeAt(l++)?(e.consume(_),l===B.length?o.interrupt?t:O:f):a(_)}function g(_){return Ma(_)?(e.consume(_),i=String.fromCharCode(_),b):a(_)}function b(_){if(_===null||_===47||_===62||bt(_)){const B=_===47,Y=i.toLowerCase();return!B&&!n&&zN.includes(Y)?(r=1,o.interrupt?t(_):O(_)):fde.includes(i.toLowerCase())?(r=6,B?(e.consume(_),v):o.interrupt?t(_):O(_)):(r=7,o.interrupt&&!o.parser.lazy[o.now().line]?a(_):n?y(_):k(_))}return _===45||Ea(_)?(e.consume(_),i+=String.fromCharCode(_),b):a(_)}function v(_){return _===62?(e.consume(_),o.interrupt?t:O):a(_)}function y(_){return Ge(_)?(e.consume(_),y):A(_)}function k(_){return _===47?(e.consume(_),A):_===58||_===95||Ma(_)?(e.consume(_),w):Ge(_)?(e.consume(_),k):A(_)}function w(_){return _===45||_===46||_===58||_===95||Ea(_)?(e.consume(_),w):R(_)}function R(_){return _===61?(e.consume(_),C):Ge(_)?(e.consume(_),R):k(_)}function C(_){return _===null||_===60||_===61||_===62||_===96?a(_):_===34||_===39?(e.consume(_),c=_,P):Ge(_)?(e.consume(_),C):N(_)}function P(_){return _===c?(e.consume(_),c=null,E):_===null||Ae(_)?a(_):(e.consume(_),P)}function N(_){return _===null||_===34||_===39||_===47||_===60||_===61||_===62||_===96||bt(_)?R(_):(e.consume(_),N)}function E(_){return _===47||_===62||Ge(_)?k(_):a(_)}function A(_){return _===62?(e.consume(_),$):a(_)}function $(_){return _===null||Ae(_)?O(_):Ge(_)?(e.consume(_),$):a(_)}function O(_){return _===45&&r===2?(e.consume(_),F):_===60&&r===1?(e.consume(_),U):_===62&&r===4?(e.consume(_),H):_===63&&r===3?(e.consume(_),j):_===93&&r===5?(e.consume(_),I):Ae(_)&&(r===6||r===7)?(e.exit("htmlFlowData"),e.check(vde,W,V)(_)):_===null||Ae(_)?(e.exit("htmlFlowData"),V(_)):(e.consume(_),O)}function V(_){return e.check(xde,T,W)(_)}function T(_){return e.enter("lineEnding"),e.consume(_),e.exit("lineEnding"),D}function D(_){return _===null||Ae(_)?V(_):(e.enter("htmlFlowData"),O(_))}function F(_){return _===45?(e.consume(_),j):O(_)}function U(_){return _===47?(e.consume(_),i="",L):O(_)}function L(_){if(_===62){const B=i.toLowerCase();return zN.includes(B)?(e.consume(_),H):O(_)}return Ma(_)&&i.length<8?(e.consume(_),i+=String.fromCharCode(_),L):O(_)}function I(_){return _===93?(e.consume(_),j):O(_)}function j(_){return _===62?(e.consume(_),H):_===45&&r===2?(e.consume(_),j):O(_)}function H(_){return _===null||Ae(_)?(e.exit("htmlFlowData"),W(_)):(e.consume(_),H)}function W(_){return e.exit("htmlFlow"),t(_)}}function kde(e,t,a){const o=this;return r;function r(i){return Ae(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n):a(i)}function n(i){return o.parser.lazy[o.now().line]?a(i):t(i)}}function wde(e,t,a){return o;function o(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(Dm,t,a)}}const Cde={name:"htmlText",tokenize:Pde};function Pde(e,t,a){const o=this;let r,n,i;return l;function l(j){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(j),c}function c(j){return j===33?(e.consume(j),d):j===47?(e.consume(j),R):j===63?(e.consume(j),k):Ma(j)?(e.consume(j),N):a(j)}function d(j){return j===45?(e.consume(j),u):j===91?(e.consume(j),n=0,f):Ma(j)?(e.consume(j),y):a(j)}function u(j){return j===45?(e.consume(j),p):a(j)}function m(j){return j===null?a(j):j===45?(e.consume(j),h):Ae(j)?(i=m,U(j)):(e.consume(j),m)}function h(j){return j===45?(e.consume(j),p):m(j)}function p(j){return j===62?F(j):j===45?h(j):m(j)}function f(j){const H="CDATA[";return j===H.charCodeAt(n++)?(e.consume(j),n===H.length?g:f):a(j)}function g(j){return j===null?a(j):j===93?(e.consume(j),b):Ae(j)?(i=g,U(j)):(e.consume(j),g)}function b(j){return j===93?(e.consume(j),v):g(j)}function v(j){return j===62?F(j):j===93?(e.consume(j),v):g(j)}function y(j){return j===null||j===62?F(j):Ae(j)?(i=y,U(j)):(e.consume(j),y)}function k(j){return j===null?a(j):j===63?(e.consume(j),w):Ae(j)?(i=k,U(j)):(e.consume(j),k)}function w(j){return j===62?F(j):k(j)}function R(j){return Ma(j)?(e.consume(j),C):a(j)}function C(j){return j===45||Ea(j)?(e.consume(j),C):P(j)}function P(j){return Ae(j)?(i=P,U(j)):Ge(j)?(e.consume(j),P):F(j)}function N(j){return j===45||Ea(j)?(e.consume(j),N):j===47||j===62||bt(j)?E(j):a(j)}function E(j){return j===47?(e.consume(j),F):j===58||j===95||Ma(j)?(e.consume(j),A):Ae(j)?(i=E,U(j)):Ge(j)?(e.consume(j),E):F(j)}function A(j){return j===45||j===46||j===58||j===95||Ea(j)?(e.consume(j),A):$(j)}function $(j){return j===61?(e.consume(j),O):Ae(j)?(i=$,U(j)):Ge(j)?(e.consume(j),$):E(j)}function O(j){return j===null||j===60||j===61||j===62||j===96?a(j):j===34||j===39?(e.consume(j),r=j,V):Ae(j)?(i=O,U(j)):Ge(j)?(e.consume(j),O):(e.consume(j),T)}function V(j){return j===r?(e.consume(j),r=void 0,D):j===null?a(j):Ae(j)?(i=V,U(j)):(e.consume(j),V)}function T(j){return j===null||j===34||j===39||j===60||j===61||j===96?a(j):j===47||j===62||bt(j)?E(j):(e.consume(j),T)}function D(j){return j===47||j===62||bt(j)?E(j):a(j)}function F(j){return j===62?(e.consume(j),e.exit("htmlTextData"),e.exit("htmlText"),t):a(j)}function U(j){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(j),e.exit("lineEnding"),L}function L(j){return Ge(j)?Xe(e,I,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):I(j)}function I(j){return e.enter("htmlTextData"),i(j)}}const Sw={name:"labelEnd",resolveAll:Nde,resolveTo:Ade,tokenize:Ede},Sde={tokenize:_de},Rde={tokenize:Tde},jde={tokenize:$de};function Nde(e){let t=-1;const a=[];for(;++t<e.length;){const o=e[t][1];if(a.push(e[t]),o.type==="labelImage"||o.type==="labelLink"||o.type==="labelEnd"){const r=o.type==="labelImage"?4:2;o.type="data",t+=r}}return e.length!==a.length&&Co(e,0,e.length,a),e}function Ade(e,t){let a=e.length,o=0,r,n,i,l;for(;a--;)if(r=e[a][1],n){if(r.type==="link"||r.type==="labelLink"&&r._inactive)break;e[a][0]==="enter"&&r.type==="labelLink"&&(r._inactive=!0)}else if(i){if(e[a][0]==="enter"&&(r.type==="labelImage"||r.type==="labelLink")&&!r._balanced&&(n=a,r.type!=="labelLink")){o=2;break}}else r.type==="labelEnd"&&(i=a);const c={type:e[n][1].type==="labelLink"?"link":"image",start:{...e[n][1].start},end:{...e[e.length-1][1].end}},d={type:"label",start:{...e[n][1].start},end:{...e[i][1].end}},u={type:"labelText",start:{...e[n+o+2][1].end},end:{...e[i-2][1].start}};return l=[["enter",c,t],["enter",d,t]],l=Bo(l,e.slice(n+1,n+o+3)),l=Bo(l,[["enter",u,t]]),l=Bo(l,v0(t.parser.constructs.insideSpan.null,e.slice(n+o+4,i-3),t)),l=Bo(l,[["exit",u,t],e[i-2],e[i-1],["exit",d,t]]),l=Bo(l,e.slice(i+1)),l=Bo(l,[["exit",c,t]]),Co(e,n,e.length,l),e}function Ede(e,t,a){const o=this;let r=o.events.length,n,i;for(;r--;)if((o.events[r][1].type==="labelImage"||o.events[r][1].type==="labelLink")&&!o.events[r][1]._balanced){n=o.events[r][1];break}return l;function l(h){return n?n._inactive?m(h):(i=o.parser.defined.includes(Pr(o.sliceSerialize({start:n.end,end:o.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(h),e.exit("labelMarker"),e.exit("labelEnd"),c):a(h)}function c(h){return h===40?e.attempt(Sde,u,i?u:m)(h):h===91?e.attempt(Rde,u,i?d:m)(h):i?u(h):m(h)}function d(h){return e.attempt(jde,u,m)(h)}function u(h){return t(h)}function m(h){return n._balanced=!0,a(h)}}function _de(e,t,a){return o;function o(m){return e.enter("resource"),e.enter("resourceMarker"),e.consume(m),e.exit("resourceMarker"),r}function r(m){return bt(m)?fu(e,n)(m):n(m)}function n(m){return m===41?u(m):_q(e,i,l,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(m)}function i(m){return bt(m)?fu(e,c)(m):u(m)}function l(m){return a(m)}function c(m){return m===34||m===39||m===40?$q(e,d,a,"resourceTitle","resourceTitleMarker","resourceTitleString")(m):u(m)}function d(m){return bt(m)?fu(e,u)(m):u(m)}function u(m){return m===41?(e.enter("resourceMarker"),e.consume(m),e.exit("resourceMarker"),e.exit("resource"),t):a(m)}}function Tde(e,t,a){const o=this;return r;function r(l){return Tq.call(o,e,n,i,"reference","referenceMarker","referenceString")(l)}function n(l){return o.parser.defined.includes(Pr(o.sliceSerialize(o.events[o.events.length-1][1]).slice(1,-1)))?t(l):a(l)}function i(l){return a(l)}}function $de(e,t,a){return o;function o(n){return e.enter("reference"),e.enter("referenceMarker"),e.consume(n),e.exit("referenceMarker"),r}function r(n){return n===93?(e.enter("referenceMarker"),e.consume(n),e.exit("referenceMarker"),e.exit("reference"),t):a(n)}}const Ode={name:"labelStartImage",resolveAll:Sw.resolveAll,tokenize:qde};function qde(e,t,a){const o=this;return r;function r(l){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(l),e.exit("labelImageMarker"),n}function n(l){return l===91?(e.enter("labelMarker"),e.consume(l),e.exit("labelMarker"),e.exit("labelImage"),i):a(l)}function i(l){return l===94&&"_hiddenFootnoteSupport"in o.parser.constructs?a(l):t(l)}}const Dde={name:"labelStartLink",resolveAll:Sw.resolveAll,tokenize:Ide};function Ide(e,t,a){const o=this;return r;function r(i){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(i),e.exit("labelMarker"),e.exit("labelLink"),n}function n(i){return i===94&&"_hiddenFootnoteSupport"in o.parser.constructs?a(i):t(i)}}const cx={name:"lineEnding",tokenize:Mde};function Mde(e,t){return a;function a(o){return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),Xe(e,t,"linePrefix")}}const Oh={name:"thematicBreak",tokenize:Lde};function Lde(e,t,a){let o=0,r;return n;function n(d){return e.enter("thematicBreak"),i(d)}function i(d){return r=d,l(d)}function l(d){return d===r?(e.enter("thematicBreakSequence"),c(d)):o>=3&&(d===null||Ae(d))?(e.exit("thematicBreak"),t(d)):a(d)}function c(d){return d===r?(e.consume(d),o++,c):(e.exit("thematicBreakSequence"),Ge(d)?Xe(e,l,"whitespace")(d):l(d))}}const Ha={continuation:{tokenize:Ude},exit:zde,name:"list",tokenize:Fde},Bde={partial:!0,tokenize:Hde},Vde={partial:!0,tokenize:Gde};function Fde(e,t,a){const o=this,r=o.events[o.events.length-1];let n=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,i=0;return l;function l(p){const f=o.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(f==="listUnordered"?!o.containerState.marker||p===o.containerState.marker:h2(p)){if(o.containerState.type||(o.containerState.type=f,e.enter(f,{_container:!0})),f==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Oh,a,d)(p):d(p);if(!o.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),c(p)}return a(p)}function c(p){return h2(p)&&++i<10?(e.consume(p),c):(!o.interrupt||i<2)&&(o.containerState.marker?p===o.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),d(p)):a(p)}function d(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),o.containerState.marker=o.containerState.marker||p,e.check(Dm,o.interrupt?a:u,e.attempt(Bde,h,m))}function u(p){return o.containerState.initialBlankLine=!0,n++,h(p)}function m(p){return Ge(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),h):a(p)}function h(p){return o.containerState.size=n+o.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Ude(e,t,a){const o=this;return o.containerState._closeFlow=void 0,e.check(Dm,r,n);function r(l){return o.containerState.furtherBlankLines=o.containerState.furtherBlankLines||o.containerState.initialBlankLine,Xe(e,t,"listItemIndent",o.containerState.size+1)(l)}function n(l){return o.containerState.furtherBlankLines||!Ge(l)?(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,i(l)):(o.containerState.furtherBlankLines=void 0,o.containerState.initialBlankLine=void 0,e.attempt(Vde,t,i)(l))}function i(l){return o.containerState._closeFlow=!0,o.interrupt=void 0,Xe(e,e.attempt(Ha,t,a),"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function Gde(e,t,a){const o=this;return Xe(e,r,"listItemIndent",o.containerState.size+1);function r(n){const i=o.events[o.events.length-1];return i&&i[1].type==="listItemIndent"&&i[2].sliceSerialize(i[1],!0).length===o.containerState.size?t(n):a(n)}}function zde(e){e.exit(this.containerState.type)}function Hde(e,t,a){const o=this;return Xe(e,r,"listItemPrefixWhitespace",o.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(n){const i=o.events[o.events.length-1];return!Ge(n)&&i&&i[1].type==="listItemPrefixWhitespace"?t(n):a(n)}}const HN={name:"setextUnderline",resolveTo:Kde,tokenize:Qde};function Kde(e,t){let a=e.length,o,r,n;for(;a--;)if(e[a][0]==="enter"){if(e[a][1].type==="content"){o=a;break}e[a][1].type==="paragraph"&&(r=a)}else e[a][1].type==="content"&&e.splice(a,1),!n&&e[a][1].type==="definition"&&(n=a);const i={type:"setextHeading",start:{...e[o][1].start},end:{...e[e.length-1][1].end}};return e[r][1].type="setextHeadingText",n?(e.splice(r,0,["enter",i,t]),e.splice(n+1,0,["exit",e[o][1],t]),e[o][1].end={...e[n][1].end}):e[o][1]=i,e.push(["exit",i,t]),e}function Qde(e,t,a){const o=this;let r;return n;function n(d){let u=o.events.length,m;for(;u--;)if(o.events[u][1].type!=="lineEnding"&&o.events[u][1].type!=="linePrefix"&&o.events[u][1].type!=="content"){m=o.events[u][1].type==="paragraph";break}return!o.parser.lazy[o.now().line]&&(o.interrupt||m)?(e.enter("setextHeadingLine"),r=d,i(d)):a(d)}function i(d){return e.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===r?(e.consume(d),l):(e.exit("setextHeadingLineSequence"),Ge(d)?Xe(e,c,"lineSuffix")(d):c(d))}function c(d){return d===null||Ae(d)?(e.exit("setextHeadingLine"),t(d)):a(d)}}const Wde={tokenize:Jde};function Jde(e){const t=this,a=e.attempt(Dm,o,e.attempt(this.parser.constructs.flowInitial,r,Xe(e,e.attempt(this.parser.constructs.flow,r,e.attempt(tde,r)),"linePrefix")));return a;function o(n){if(n===null){e.consume(n);return}return e.enter("lineEndingBlank"),e.consume(n),e.exit("lineEndingBlank"),t.currentConstruct=void 0,a}function r(n){if(n===null){e.consume(n);return}return e.enter("lineEnding"),e.consume(n),e.exit("lineEnding"),t.currentConstruct=void 0,a}}const Xde={resolveAll:qq()},Yde=Oq("string"),Zde=Oq("text");function Oq(e){return{resolveAll:qq(e==="text"?eue:void 0),tokenize:t};function t(a){const o=this,r=this.parser.constructs[e],n=a.attempt(r,i,l);return i;function i(u){return d(u)?n(u):l(u)}function l(u){if(u===null){a.consume(u);return}return a.enter("data"),a.consume(u),c}function c(u){return d(u)?(a.exit("data"),n(u)):(a.consume(u),c)}function d(u){if(u===null)return!0;const m=r[u];let h=-1;if(m)for(;
vendor: 5,932 bytes, lines 1052-1054
1052++h<m.length;){const p=m[h];if(!p.previous||p.previous.call(o,o.previous))return!0}return!1}}}function qq(e){return t;function t(a,o){let r=-1,n;for(;++r<=a.length;)n===void 0?a[r]&&a[r][1].type==="data"&&(n=r,r++):(!a[r]||a[r][1].type!=="data")&&(r!==n+2&&(a[n][1].end=a[r-1][1].end,a.splice(n+2,r-n-2),r=n+2),n=void 0);return e?e(a,o):a}}function eue(e,t){let a=0;for(;++a<=e.length;)if((a===e.length||e[a][1].type==="lineEnding")&&e[a-1][1].type==="data"){const o=e[a-1][1],r=t.sliceStream(o);let n=r.length,i=-1,l=0,c;for(;n--;){const d=r[n];if(typeof d=="string"){for(i=d.length;d.charCodeAt(i-1)===32;)l++,i--;if(i)break;i=-1}else if(d===-2)c=!0,l++;else if(d!==-1){n++;break}}if(t._contentTypeTextTrailing&&a===e.length&&(l=0),l){const d={type:a===e.length||c||l<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:n?i:o.start._bufferIndex+i,_index:o.start._index+n,line:o.end.line,column:o.end.column-l,offset:o.end.offset-l},end:{...o.end}};o.end={...d.start},o.start.offset===o.end.offset?Object.assign(o,d):(e.splice(a,0,["enter",d,t],["exit",d,t]),a+=2)}a++}return e}const tue={42:Ha,43:Ha,45:Ha,48:Ha,49:Ha,50:Ha,51:Ha,52:Ha,53:Ha,54:Ha,55:Ha,56:Ha,57:Ha,62:jq},aue={91:sde},oue={[-2]:lx,[-1]:lx,32:lx},rue={35:mde,42:Oh,45:[HN,Oh],60:gde,61:HN,95:Oh,96:GN,126:GN},nue={38:Aq,92:Nq},sue={[-5]:cx,[-4]:cx,[-3]:cx,33:Ode,38:Aq,42:f2,60:[Dce,Cde],91:Dde,92:[dde,Nq],93:Sw,95:f2,96:Wce},iue={null:[f2,Xde]},lue={null:[42,95]},cue={null:[]},due=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:lue,contentInitial:aue,disable:cue,document:tue,flow:rue,flowInitial:oue,insideSpan:iue,string:nue,text:sue},Symbol.toStringTag,{value:"Module"}));function uue(e,t,a){let o={_bufferIndex:-1,_index:0,line:a&&a.line||1,column:a&&a.column||1,offset:a&&a.offset||0};const r={},n=[];let i=[],l=[];const c={attempt:P(R),check:P(C),consume:y,enter:k,exit:w,interrupt:P(C,{interrupt:!0})},d={code:null,containerState:{},defineSkip:g,events:[],now:f,parser:e,previous:null,sliceSerialize:h,sliceStream:p,write:m};let u=t.tokenize.call(d,c);return t.resolveAll&&n.push(t),d;function m($){return i=Bo(i,$),b(),i[i.length-1]!==null?[]:(N(t,0),d.events=v0(n,d.events,d),d.events)}function h($,O){return pue(p($),O)}function p($){return mue(i,$)}function f(){const{_bufferIndex:$,_index:O,line:V,column:T,offset:D}=o;return{_bufferIndex:$,_index:O,line:V,column:T,offset:D}}function g($){r[$.line]=$.column,A()}function b(){let $;for(;o._index<i.length;){const O=i[o._index];if(typeof O=="string")for($=o._index,o._bufferIndex<0&&(o._bufferIndex=0);o._index===$&&o._bufferIndex<O.length;)v(O.charCodeAt(o._bufferIndex));else v(O)}}function v($){u=u($)}function y($){Ae($)?(o.line++,o.column=1,o.offset+=$===-3?2:1,A()):$!==-1&&(o.column++,o.offset++),o._bufferIndex<0?o._index++:(o._bufferIndex++,o._bufferIndex===i[o._index].length&&(o._bufferIndex=-1,o._index++)),d.previous=$}function k($,O){const V=O||{};return V.type=$,V.start=f(),d.events.push(["enter",V,d]),l.push(V),V}function w($){const O=l.pop();return O.end=f(),d.events.push(["exit",O,d]),O}function R($,O){N($,O.from)}function C($,O){O.restore()}function P($,O){return V;function V(T,D,F){let U,L,I,j;return Array.isArray(T)?W(T):"tokenize"in T?W([T]):H(T);function H(ae){return ie;function ie(fe){const Se=fe!==null&&ae[fe],Ee=fe!==null&&ae.null,Re=[...Array.isArray(Se)?Se:Se?[Se]:[],...Array.isArray(Ee)?Ee:Ee?[Ee]:[]];return W(Re)(fe)}}function W(ae){return U=ae,L=0,ae.length===0?F:_(ae[L])}function _(ae){return ie;function ie(fe){return j=E(),I=ae,ae.partial||(d.currentConstruct=ae),ae.name&&d.parser.constructs.disable.null.includes(ae.name)?Y():ae.tokenize.call(O?Object.assign(Object.create(d),O):d,c,B,Y)(fe)}}function B(ae){return $(I,j),D}function Y(ae){return j.restore(),++L<U.length?_(U[L]):F}}}function N($,O){$.resolveAll&&!n.includes($)&&n.push($),$.resolve&&Co(d.events,O,d.events.length-O,$.resolve(d.events.slice(O),d)),$.resolveTo&&(d.events=$.resolveTo(d.events,d))}function E(){const $=f(),O=d.previous,V=d.currentConstruct,T=d.events.length,D=Array.from(l);return{from:T,restore:F};function F(){o=$,d.previous=O,d.currentConstruct=V,d.events.length=T,l=D,A()}}function A(){o.line in r&&o.column<2&&(o.column=r[o.line],o.offset+=r[o.line]-1)}}function mue(e,t){const a=t.start._index,o=t.start._bufferIndex,r=t.end._index,n=t.end._bufferIndex;let i;if(a===r)i=[e[a].slice(o,n)];else{if(i=e.slice(a,r),o>-1){const l=i[0];typeof l=="string"?i[0]=l.slice(o):i.shift()}n>0&&i.push(e[r].slice(0,n))}return i}function pue(e,t){let a=-1;const o=[];let r;for(;++a<e.length;){const n=e[a];let i;if(typeof n=="string")i=n;else switch(n){case-5:{i="\r";break}case-4:{i=` 1053`;break}case-3:{i=`\r 1054`;break}case-2:{i=t?" ":" ";break}case-1:{if(!t&&r)continue;i=" ";break}default:i=String.fromCharCode(n)}r=n===-2,o.push(i)}return o.join("")}function hue(e){const o={constructs:Sq([due,...(e||{}).extensions||[]]),content:r(Ace),defined:[],document:r(_ce),flow:r(Wde),lazy:{},string:r(Yde),text:r(Zde)};return o;function r(n){return i;function i(l){return uue(o,n,l)}}}function fue(e){for(;!Eq(e););return e}const KN=/[\0\t\n\r]/g;function gue(){let e=1,t="",a=!0,o;return r;function r(n,i,l){const c=[];let d,u,m,h,p;for(n=t+(typeof n=="string"?n.toString():new TextDecoder(i||void 0).decode(n)),m=0,t="",a&&(n.charCodeAt(0)===65279&&m++,a=void 0);m<n.length;){if(KN.lastIndex=m,d=KN.exec(n),h=d&&d.index!==void 0?d.index:n.length,p=n.charCodeAt(h),!d){t=n.slice(m);break}if(p===10&&m===h&&o)c.push(-3),o=void 0;else switch(o&&(c.push(-5),o=void 0),m<h&&(c.push(n.slice(m,h)),e+=h-m),p){case 0:{c.push(65533),e++;break}case 9:{for(u=Math.ceil(e/4)*4,c.push(-2);e++<u;)c.push(-1);break}case 10:{c.push(-4),e=1;break}default:o=!0,e=1}m=h+1}return l&&(o&&c.push(-5),t&&c.push(t),c.push(null)),c}}const vue=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function xue(e){return e.replace(vue,bue)}function bue(e,t,a){if(t)return t;
vendor: 7,659 bytes, line 1054
1054if(a.charCodeAt(0)===35){const r=a.charCodeAt(1),n=r===120||r===88;return Rq(a.slice(n?2:1),n?16:10)}return Pw(a)||e}const Dq={}.hasOwnProperty;function yue(e,t,a){return t&&typeof t=="object"&&(a=t,t=void 0),kue(a)(fue(hue(a).document().write(gue()(e,t,!0))))}function kue(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:n(Tt),autolinkProtocol:E,autolinkEmail:E,atxHeading:n(Ze),blockQuote:n(Ee),characterEscape:E,characterReference:E,codeFenced:n(Re),codeFencedFenceInfo:i,codeFencedFenceMeta:i,codeIndented:n(Re,i),codeText:n(re,i),codeTextData:E,data:E,codeFlowValue:E,definition:n(Ce),definitionDestinationString:i,definitionLabelString:i,definitionTitleString:i,emphasis:n($e),hardBreakEscape:n(mt),hardBreakTrailing:n(mt),htmlFlow:n(ht,i),htmlFlowData:E,htmlText:n(ht,i),htmlTextData:E,image:n(kt),label:i,link:n(Tt),listItem:n(Bt),listItemValue:h,listOrdered:n(oa,m),listUnordered:n(oa),paragraph:n($t),reference:_,referenceString:i,resourceDestinationString:i,resourceTitleString:i,setextHeading:n(Ze),strong:n(Ke),thematicBreak:n(uo)},exit:{atxHeading:c(),atxHeadingSequence:R,autolink:c(),autolinkEmail:Se,autolinkProtocol:fe,blockQuote:c(),characterEscapeValue:A,characterReferenceMarkerHexadecimal:Y,characterReferenceMarkerNumeric:Y,characterReferenceValue:ae,characterReference:ie,codeFenced:c(b),codeFencedFence:g,codeFencedFenceInfo:p,codeFencedFenceMeta:f,codeFlowValue:A,codeIndented:c(v),codeText:c(D),codeTextData:A,data:A,definition:c(),definitionDestinationString:w,definitionLabelString:y,definitionTitleString:k,emphasis:c(),hardBreakEscape:c(O),hardBreakTrailing:c(O),htmlFlow:c(V),htmlFlowData:A,htmlText:c(T),htmlTextData:A,image:c(U),label:I,labelText:L,lineEnding:$,link:c(F),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:B,resourceDestinationString:j,resourceTitleString:H,resource:W,setextHeading:c(N),setextHeadingLineSequence:P,setextHeadingText:C,strong:c(),thematicBreak:c()}};Iq(t,(e||{}).mdastExtensions||[]);const a={};return o;function o(K){let Z={type:"root",children:[]};const J={stack:[Z],tokenStack:[],config:t,enter:l,exit:d,buffer:i,resume:u,data:a},he=[];let Oe=-1;for(;++Oe<K.length;)if(K[Oe][1].type==="listOrdered"||K[Oe][1].type==="listUnordered")if(K[Oe][0]==="enter")he.push(Oe);else{const wt=he.pop();Oe=r(K,wt,Oe)}for(Oe=-1;++Oe<K.length;){const wt=t[K[Oe][0]];Dq.call(wt,K[Oe][1].type)&&wt[K[Oe][1].type].call(Object.assign({sliceSerialize:K[Oe][2].sliceSerialize},J),K[Oe][1])}if(J.tokenStack.length>0){const wt=J.tokenStack[J.tokenStack.length-1];(wt[1]||QN).call(J,void 0,wt[0])}for(Z.position={start:Qn(K.length>0?K[0][1].start:{line:1,column:1,offset:0}),end:Qn(K.length>0?K[K.length-2][1].end:{line:1,column:1,offset:0})},Oe=-1;++Oe<t.transforms.length;)Z=t.transforms[Oe](Z)||Z;return Z}function r(K,Z,J){let he=Z-1,Oe=-1,wt=!1,ra,z,Pe,st;for(;++he<=J;){const et=K[he];switch(et[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{et[0]==="enter"?Oe++:Oe--,st=void 0;break}case"lineEndingBlank":{et[0]==="enter"&&(ra&&!st&&!Oe&&!Pe&&(Pe=he),st=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:st=void 0}if(!Oe&&et[0]==="enter"&&et[1].type==="listItemPrefix"||Oe===-1&&et[0]==="exit"&&(et[1].type==="listUnordered"||et[1].type==="listOrdered")){if(ra){let Wt=he;for(z=void 0;Wt--;){const ma=K[Wt];if(ma[1].type==="lineEnding"||ma[1].type==="lineEndingBlank"){if(ma[0]==="exit")continue;z&&(K[z][1].type="lineEndingBlank",wt=!0),ma[1].type="lineEnding",z=Wt}else if(!(ma[1].type==="linePrefix"||ma[1].type==="blockQuotePrefix"||ma[1].type==="blockQuotePrefixWhitespace"||ma[1].type==="blockQuoteMarker"||ma[1].type==="listItemIndent"))break}Pe&&(!z||Pe<z)&&(ra._spread=!0),ra.end=Object.assign({},z?K[z][1].start:et[1].end),K.splice(z||he,0,["exit",ra,et[2]]),he++,J++}if(et[1].type==="listItemPrefix"){const Wt={type:"listItem",_spread:!1,start:Object.assign({},et[1].start),end:void 0};ra=Wt,K.splice(he,0,["enter",Wt,et[2]]),he++,J++,Pe=void 0,st=!0}}}return K[Z][1]._spread=wt,J}function n(K,Z){return J;function J(he){l.call(this,K(he),he),Z&&Z.call(this,he)}}function i(){this.stack.push({type:"fragment",children:[]})}function l(K,Z,J){this.stack[this.stack.length-1].children.push(K),this.stack.push(K),this.tokenStack.push([Z,J||void 0]),K.position={start:Qn(Z.start),end:void 0}}function c(K){return Z;function Z(J){K&&K.call(this,J),d.call(this,J)}}function d(K,Z){const J=this.stack.pop(),he=this.tokenStack.pop();if(he)he[0].type!==K.type&&(Z?Z.call(this,K,he[0]):(he[1]||QN).call(this,K,he[0]));else throw new Error("Cannot close `"+K.type+"` ("+hu({start:K.start,end:K.end})+"): itâs not open");J.position.end=Qn(K.end)}function u(){return Cw(this.stack.pop())}function m(){this.data.expectingFirstListItemValue=!0}function h(K){if(this.data.expectingFirstListItemValue){const Z=this.stack[this.stack.length-2];Z.start=Number.parseInt(this.sliceSerialize(K),10),this.data.expectingFirstListItemValue=void 0}}function p(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.lang=K}function f(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.meta=K}function g(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function b(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.value=K.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function v(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.value=K.replace(/(\r?\n|\r)$/g,"")}function y(K){const Z=this.resume(),J=this.stack[this.stack.length-1];J.label=Z,J.identifier=Pr(this.sliceSerialize(K)).toLowerCase()}function k(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.title=K}function w(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.url=K}function R(K){const Z=this.stack[this.stack.length-1];if(!Z.depth){const J=this.sliceSerialize(K).length;Z.depth=J}}function C(){this.data.setextHeadingSlurpLineEnding=!0}function P(K){const Z=this.stack[this.stack.length-1];Z.depth=this.sliceSerialize(K).codePointAt(0)===61?1:2}function N(){this.data.setextHeadingSlurpLineEnding=void 0}function E(K){const J=this.stack[this.stack.length-1].children;let he=J[J.length-1];(!he||he.type!=="text")&&(he=co(),he.position={start:Qn(K.start),end:void 0},J.push(he)),this.stack.push(he)}function A(K){const Z=this.stack.pop();Z.value+=this.sliceSerialize(K),Z.position.end=Qn(K.end)}function $(K){const Z=this.stack[this.stack.length-1];if(this.data.atHardBreak){const J=Z.children[Z.children.length-1];J.position.end=Qn(K.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(Z.type)&&(E.call(this,K),A.call(this,K))}function O(){this.data.atHardBreak=!0}function V(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.value=K}function T(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.value=K}function D(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.value=K}function F(){const K=this.stack[this.stack.length-1];if(this.data.inReference){const Z=this.data.referenceType||"shortcut";K.type+="Reference",K.referenceType=Z,delete K.url,delete K.title}else delete K.identifier,delete K.label;this.data.referenceType=void 0}function U(){const K=this.stack[this.stack.length-1];if(this.data.inReference){const Z=this.data.referenceType||"shortcut";K.type+="Reference",K.referenceType=Z,delete K.url,delete K.title}else delete K.identifier,delete K.label;this.data.referenceType=void 0}function L(K){const Z=this.sliceSerialize(K),J=this.stack[this.stack.length-2];
vendor: 8,472 bytes, lines 1054-1058
1054J.label=xue(Z),J.identifier=Pr(Z).toLowerCase()}function I(){const K=this.stack[this.stack.length-1],Z=this.resume(),J=this.stack[this.stack.length-1];if(this.data.inReference=!0,J.type==="link"){const he=K.children;J.children=he}else J.alt=Z}function j(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.url=K}function H(){const K=this.resume(),Z=this.stack[this.stack.length-1];Z.title=K}function W(){this.data.inReference=void 0}function _(){this.data.referenceType="collapsed"}function B(K){const Z=this.resume(),J=this.stack[this.stack.length-1];J.label=Z,J.identifier=Pr(this.sliceSerialize(K)).toLowerCase(),this.data.referenceType="full"}function Y(K){this.data.characterReferenceType=K.type}function ae(K){const Z=this.sliceSerialize(K),J=this.data.characterReferenceType;let he;J?(he=Rq(Z,J==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):he=Pw(Z);const Oe=this.stack[this.stack.length-1];Oe.value+=he}function ie(K){const Z=this.stack.pop();Z.position.end=Qn(K.end)}function fe(K){A.call(this,K);const Z=this.stack[this.stack.length-1];Z.url=this.sliceSerialize(K)}function Se(K){A.call(this,K);const Z=this.stack[this.stack.length-1];Z.url="mailto:"+this.sliceSerialize(K)}function Ee(){return{type:"blockquote",children:[]}}function Re(){return{type:"code",lang:null,meta:null,value:""}}function re(){return{type:"inlineCode",value:""}}function Ce(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function $e(){return{type:"emphasis",children:[]}}function Ze(){return{type:"heading",depth:0,children:[]}}function mt(){return{type:"break"}}function ht(){return{type:"html",value:""}}function kt(){return{type:"image",title:null,url:"",alt:null}}function Tt(){return{type:"link",title:null,url:"",children:[]}}function oa(K){return{type:"list",ordered:K.type==="listOrdered",start:null,spread:K._spread,children:[]}}function Bt(K){return{type:"listItem",spread:K._spread,checked:null,children:[]}}function $t(){return{type:"paragraph",children:[]}}function Ke(){return{type:"strong",children:[]}}function co(){return{type:"text",value:""}}function uo(){return{type:"thematicBreak"}}}function Qn(e){return{line:e.line,column:e.column,offset:e.offset}}function Iq(e,t){let a=-1;for(;++a<t.length;){const o=t[a];Array.isArray(o)?Iq(e,o):wue(e,o)}}function wue(e,t){let a;for(a in t)if(Dq.call(t,a))switch(a){case"canContainEols":{const o=t[a];o&&e[a].push(...o);break}case"transforms":{const o=t[a];o&&e[a].push(...o);break}case"enter":case"exit":{const o=t[a];o&&Object.assign(e[a],o);break}}}function QN(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+hu({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+hu({start:t.start,end:t.end})+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+hu({start:t.start,end:t.end})+") is still open")}function Cue(e){const t=this;t.parser=a;function a(o){return yue(o,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}function Pue(e,t){const a={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,a),e.applyData(t,a)}function Sue(e,t){const a={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,a),[e.applyData(t,a),{type:"text",value:` 1055`}]}function Rue(e,t){const a=t.value?t.value+` 1056`:"",o={},r=t.lang?t.lang.split(/\s+/):[];r.length>0&&(o.className=["language-"+r[0]]);let n={type:"element",tagName:"code",properties:o,children:[{type:"text",value:a}]};return t.meta&&(n.data={meta:t.meta}),e.patch(t,n),n=e.applyData(t,n),n={type:"element",tagName:"pre",properties:{},children:[n]},e.patch(t,n),n}function jue(e,t){const a={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Nue(e,t){const a={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Aue(e,t){const a=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",o=String(t.identifier).toUpperCase(),r=ud(o.toLowerCase()),n=e.footnoteOrder.indexOf(o);let i,l=e.footnoteCounts.get(o);l===void 0?(l=0,e.footnoteOrder.push(o),i=e.footnoteOrder.length):i=n+1,l+=1,e.footnoteCounts.set(o,l);const c={type:"element",tagName:"a",properties:{href:"#"+a+"fn-"+r,id:a+"fnref-"+r+(l>1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(i)}]};e.patch(t,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return e.patch(t,d),e.applyData(t,d)}function Eue(e,t){const a={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function _ue(e,t){if(e.options.allowDangerousHtml){const a={type:"raw",value:t.value};return e.patch(t,a),e.applyData(t,a)}}function Mq(e,t){const a=t.referenceType;let o="]";if(a==="collapsed"?o+="[]":a==="full"&&(o+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+o}];const r=e.all(t),n=r[0];n&&n.type==="text"?n.value="["+n.value:r.unshift({type:"text",value:"["});const i=r[r.length-1];return i&&i.type==="text"?i.value+=o:r.push({type:"text",value:o}),r}function Tue(e,t){const a=String(t.identifier).toUpperCase(),o=e.definitionById.get(a);if(!o)return Mq(e,t);const r={src:ud(o.url||""),alt:t.alt};o.title!==null&&o.title!==void 0&&(r.title=o.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function $ue(e,t){const a={src:ud(t.url)};t.alt!==null&&t.alt!==void 0&&(a.alt=t.alt),t.title!==null&&t.title!==void 0&&(a.title=t.title);const o={type:"element",tagName:"img",properties:a,children:[]};return e.patch(t,o),e.applyData(t,o)}function Oue(e,t){const a={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,a);const o={type:"element",tagName:"code",properties:{},children:[a]};return e.patch(t,o),e.applyData(t,o)}function que(e,t){const a=String(t.identifier).toUpperCase(),o=e.definitionById.get(a);if(!o)return Mq(e,t);const r={href:ud(o.url||"")};o.title!==null&&o.title!==void 0&&(r.title=o.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Due(e,t){const a={href:ud(t.url)};t.title!==null&&t.title!==void 0&&(a.title=t.title);const o={type:"element",tagName:"a",properties:a,children:e.all(t)};return e.patch(t,o),e.applyData(t,o)}function Iue(e,t,a){const o=e.all(t),r=a?Mue(a):Lq(t),n={},i=[];if(typeof t.checked=="boolean"){const u=o[0];let m;u&&u.type==="element"&&u.tagName==="p"?m=u:(m={type:"element",tagName:"p",properties:{},children:[]},o.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),n.className=["task-list-item"]}let l=-1;for(;++l<o.length;){const u=o[l];(r||l!==0||u.type!=="element"||u.tagName!=="p")&&i.push({type:"text",value:` 1057`}),u.type==="element"&&u.tagName==="p"&&!r?i.push(...u.children):i.push(u)}const c=o[o.length-1];c&&(r||c.type!=="element"||c.tagName!=="p")&&i.push({type:"text",value:` 1058`});const d={type:"element",tagName:"li",properties:n,children:i};return e.patch(t,d),e.applyData(t,d)}function Mue(e){let t=!1;if(e.type==="list"){t=e.spread||!1;const a=e.children;let o=-1;for(;!t&&++o<a.length;)t=Lq(a[o])}return t}function Lq(e){const t=e.spread;return t??e.children.length>1}function Lue(e,t){const a={},o=e.all(t);let r=-1;for(typeof t.start=="number"&&t.start!==1&&(a.start=t.start);++r<o.length;){const i=o[r];if(i.type==="element"&&i.tagName==="li"&&i.properties&&Array.isArray(i.properties.className)&&i.properties.className.includes("task-list-item")){a.className=["contains-task-list"];break}}const n={type:"element",tagName:t.ordered?"ol":"ul",properties:a,children:e.wrap(o,!0)};return e.patch(t,n),e.applyData(t,n)}function Bue(e,t){const a={type:"element",tagName:"p",properties:{},children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Vue(e,t){const a={type:"root",children:e.wrap(e.all(t))};return e.patch(t,a),e.applyData(t,a)}function Fue(e,t){const a={type:"element",tagName:"strong",properties:{},children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Uue(e,t){const a=e.all(t),o=a.shift(),r=[];if(o){const i={type:"element",tagName:"thead",properties:{},children:e.wrap([o],!0)};e.patch(t.children[0],i),r.push(i)}
vendor: 2,058 bytes, line 1058
1058if(a.length>0){const i={type:"element",tagName:"tbody",properties:{},children:e.wrap(a,!0)},l=bw(t.children[1]),c=xq(t.children[t.children.length-1]);l&&c&&(i.position={start:l,end:c}),r.push(i)}const n={type:"element",tagName:"table",properties:{},children:e.wrap(r,!0)};return e.patch(t,n),e.applyData(t,n)}function Gue(e,t,a){const o=a?a.children:void 0,n=(o?o.indexOf(t):1)===0?"th":"td",i=a&&a.type==="table"?a.align:void 0,l=i?i.length:t.children.length;let c=-1;const d=[];for(;++c<l;){const m=t.children[c],h={},p=i?i[c]:void 0;p&&(h.align=p);let f={type:"element",tagName:n,properties:h,children:[]};m&&(f.children=e.all(m),e.patch(m,f),f=e.applyData(m,f)),d.push(f)}const u={type:"element",tagName:"tr",properties:{},children:e.wrap(d,!0)};return e.patch(t,u),e.applyData(t,u)}function zue(e,t){const a={type:"element",tagName:"td",properties:{},children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}const WN=9,JN=32;function Hue(e){const t=String(e),a=/\r?\n|\r/g;let o=a.exec(t),r=0;const n=[];for(;o;)n.push(XN(t.slice(r,o.index),r>0,!0),o[0]),r=o.index+o[0].length,o=a.exec(t);return n.push(XN(t.slice(r),r>0,!1)),n.join("")}function XN(e,t,a){let o=0,r=e.length;if(t){let n=e.codePointAt(o);for(;n===WN||n===JN;)o++,n=e.codePointAt(o)}if(a){let n=e.codePointAt(r-1);for(;n===WN||n===JN;)r--,n=e.codePointAt(r-1)}return r>o?e.slice(o,r):""}function Kue(e,t){const a={type:"text",value:Hue(String(t.value))};return e.patch(t,a),e.applyData(t,a)}function Que(e,t){const a={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,a),e.applyData(t,a)}const Wue={blockquote:Pue,break:Sue,code:Rue,delete:jue,emphasis:Nue,footnoteReference:Aue,heading:Eue,html:_ue,imageReference:Tue,image:$ue,inlineCode:Oue,linkReference:que,link:Due,listItem:Iue,list:Lue,paragraph:Bue,root:Vue,strong:Fue,table:Uue,tableCell:zue,tableRow:Gue,text:Kue,thematicBreak:Que,toml:Dp,yaml:Dp,definition:Dp,footnoteDefinition:Dp};function Dp(){}const Bq=-1,x0=0,gu=1,Xf=2,Rw=3,jw=4,Nw=5,Aw=6,Vq=7,Fq=8,Uq=typeof self=="object"?self:globalThis,YN=(e,t)=>
vendor: 5,308 bytes, lines 1058-1060
1058{switch(e){case"Function":case"SharedWorker":case"Worker":case"eval":case"setInterval":case"setTimeout":throw new TypeError("unable to deserialize "+e)}return new Uq[e](t)},Jue=(e,t)=>{const a=(r,n)=>(e.set(n,r),r),o=r=>{if(e.has(r))return e.get(r);const[n,i]=t[r];switch(n){case x0:case Bq:return a(i,r);case gu:{const l=a([],r);for(const c of i)l.push(o(c));return l}case Xf:{const l=a({},r);for(const[c,d]of i)l[o(c)]=o(d);return l}case Rw:return a(new Date(i),r);case jw:{const{source:l,flags:c}=i;return a(new RegExp(l,c),r)}case Nw:{const l=a(new Map,r);for(const[c,d]of i)l.set(o(c),o(d));return l}case Aw:{const l=a(new Set,r);for(const c of i)l.add(o(c));return l}case Vq:{const{name:l,message:c}=i;return a(typeof Uq[l]=="function"?YN(l,c):new Error(c),r)}case Fq:return a(BigInt(i),r);case"BigInt":return a(Object(BigInt(i)),r);case"ArrayBuffer":return a(new Uint8Array(i).buffer,i);case"DataView":{const{buffer:l}=new Uint8Array(i);return a(new DataView(l),i)}}return a(YN(n,i),r)};return o},ZN=e=>Jue(new Map,e)(0),di="",{toString:Xue}={},{keys:Yue}=Object,Td=e=>{const t=typeof e;if(t!=="object"||!e)return[x0,t];const a=Xue.call(e).slice(8,-1);switch(a){case"Array":return[gu,di];case"Object":return[Xf,di];case"Date":return[Rw,di];case"RegExp":return[jw,di];case"Map":return[Nw,di];case"Set":return[Aw,di];case"DataView":return[gu,a]}return a.includes("Array")?[gu,a]:e instanceof Error?[Vq,e.name||"Error"]:[Xf,a]},Ip=([e,t])=>e===x0&&(t==="function"||t==="symbol"),Zue=(e,t,a,o)=>{const r=(i,l)=>{const c=o.push(i)-1;return a.set(l,c),c},n=i=>{if(a.has(i))return a.get(i);let[l,c]=Td(i);switch(l){case x0:{let u=i;switch(c){case"bigint":l=Fq,u=i.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+c);u=null;break;case"undefined":return r([Bq],i)}return r([l,u],i)}case gu:{if(c){let h=i;return c==="DataView"?h=new Uint8Array(i.buffer):c==="ArrayBuffer"&&(h=new Uint8Array(i)),r([c,[...h]],i)}const u=[],m=r([l,u],i);for(const h of i)u.push(n(h));return m}case Xf:{if(c)switch(c){case"BigInt":return r([c,i.toString()],i);case"Boolean":case"Number":case"String":return r([c,i.valueOf()],i)}if(t&&"toJSON"in i)return n(i.toJSON());const u=[],m=r([l,u],i);for(const h of Yue(i))(e||!Ip(Td(i[h])))&&u.push([n(h),n(i[h])]);return m}case Rw:return r([l,isNaN(i.getTime())?di:i.toISOString()],i);case jw:{const{source:u,flags:m}=i;return r([l,{source:u,flags:m}],i)}case Nw:{const u=[],m=r([l,u],i);for(const[h,p]of i)(e||!(Ip(Td(h))||Ip(Td(p))))&&u.push([n(h),n(p)]);return m}case Aw:{const u=[],m=r([l,u],i);for(const h of i)(e||!Ip(Td(h)))&&u.push(n(h));return m}}const{message:d}=i;return r([l,{name:c,message:d}],i)};return n},eA=(e,{json:t,lossy:a}={})=>{const o=[];return Zue(!(t||a),!!t,new Map,o)(e),o},Yf=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?ZN(eA(e,t)):structuredClone(e):(e,t)=>ZN(eA(e,t));function eme(e,t){const a=[{type:"text",value:"â©"}];return t>1&&a.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),a}function tme(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function ame(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",a=e.options.footnoteBackContent||eme,o=e.options.footnoteBackLabel||tme,r=e.options.footnoteLabel||"Footnotes",n=e.options.footnoteLabelTagName||"h2",i=e.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c<e.footnoteOrder.length;){const d=e.footnoteById.get(e.footnoteOrder[c]);if(!d)continue;const u=e.all(d),m=String(d.identifier).toUpperCase(),h=ud(m.toLowerCase());let p=0;const f=[],g=e.footnoteCounts.get(m);for(;g!==void 0&&++p<=g;){f.length>0&&f.push({type:"text",value:" "});let y=typeof a=="string"?a:a(c,p);typeof y=="string"&&(y={type:"text",value:y}),f.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+h+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof o=="string"?o:o(c,p),className:["data-footnote-backref"]},children:Array.isArray(y)?y:[y]})}const b=u[u.length-1];if(b&&b.type==="element"&&b.tagName==="p"){const y=b.children[b.children.length-1];y&&y.type==="text"?y.value+=" ":b.children.push({type:"text",value:" "}),b.children.push(...f)}else u.push(...f);const v={type:"element",tagName:"li",properties:{id:t+"fn-"+h},children:e.wrap(u,!0)};e.patch(d,v),l.push(v)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:n,properties:{...Yf(i),id:"footnote-label"},children:[{type:"text",value:r}]},{type:"text",value:` 1059`},{type:"element",tagName:"ol",properties:{},children:e.wrap(l,!0)},{type:"text",value:` 1060`}]}}const b0=function(e){if(e==null)return sme;if(typeof e=="function")return y0(e);if(typeof e=="object")return Array.isArray(e)?ome(e):rme(e);if(typeof e=="string")return nme(e);throw new Error("Expected function, string, or object as test")};function ome(e){const t=[];let a=-1;for(;++a<e.length;)t[a]=b0(e[a]);return y0(o);function o(...r){let n=-1;for(;++n<t.length;)if(t[n].apply(this,r))return!0;return!1}}function rme(e){const t=e;return y0(a);function a(o){const r=o;let n;for(n in e)if(r[n]!==t[n])return!1;return!0}}function nme(e){return y0(t);function t(a){return a&&a.type===e}}function y0(e){return t;
vendor: 19,587 bytes, lines 1060-1064
1060function t(a,o,r){return!!(ime(a)&&e.call(this,a,typeof o=="number"?o:void 0,r||void 0))}}function sme(){return!0}function ime(e){return e!==null&&typeof e=="object"&&"type"in e}const Gq=[],lme=!0,g2=!1,cme="skip";function zq(e,t,a,o){let r;typeof t=="function"&&typeof a!="function"?(o=a,a=t):r=t;const n=b0(r),i=o?-1:1;l(e,void 0,[])();function l(c,d,u){const m=c&&typeof c=="object"?c:{};if(typeof m.type=="string"){const p=typeof m.tagName=="string"?m.tagName:typeof m.name=="string"?m.name:void 0;Object.defineProperty(h,"name",{value:"node ("+(c.type+(p?"<"+p+">":""))+")"})}return h;function h(){let p=Gq,f,g,b;if((!t||n(c,d,u[u.length-1]||void 0))&&(p=dme(a(c,u)),p[0]===g2))return p;if("children"in c&&c.children){const v=c;if(v.children&&p[0]!==cme)for(g=(o?v.children.length:-1)+i,b=u.concat(v);g>-1&&g<v.children.length;){const y=v.children[g];if(f=l(y,g,b)(),f[0]===g2)return f;g=typeof f[1]=="number"?f[1]:g+i}}return p}}}function dme(e){return Array.isArray(e)?e:typeof e=="number"?[lme,e]:e==null?Gq:[e]}function Ew(e,t,a,o){let r,n,i;typeof t=="function"&&typeof a!="function"?(n=void 0,i=t,r=a):(n=t,i=a,r=o),zq(e,n,l,r);function l(c,d){const u=d[d.length-1],m=u?u.children.indexOf(c):void 0;return i(c,m,u)}}const v2={}.hasOwnProperty,ume={};function mme(e,t){const a=t||ume,o=new Map,r=new Map,n=new Map,i={...Wue,...a.handlers},l={all:d,applyData:hme,definitionById:o,footnoteById:r,footnoteCounts:n,footnoteOrder:[],handlers:i,one:c,options:a,patch:pme,wrap:gme};return Ew(e,function(u){if(u.type==="definition"||u.type==="footnoteDefinition"){const m=u.type==="definition"?o:r,h=String(u.identifier).toUpperCase();m.has(h)||m.set(h,u)}}),l;function c(u,m){const h=u.type,p=l.handlers[h];if(v2.call(l.handlers,h)&&p)return p(l,u,m);if(l.options.passThrough&&l.options.passThrough.includes(h)){if("children"in u){const{children:g,...b}=u,v=Yf(b);return v.children=l.all(u),v}return Yf(u)}return(l.options.unknownHandler||fme)(l,u,m)}function d(u){const m=[];if("children"in u){const h=u.children;let p=-1;for(;++p<h.length;){const f=l.one(h[p],u);if(f){if(p&&h[p-1].type==="break"&&(!Array.isArray(f)&&f.type==="text"&&(f.value=tA(f.value)),!Array.isArray(f)&&f.type==="element")){const g=f.children[0];g&&g.type==="text"&&(g.value=tA(g.value))}Array.isArray(f)?m.push(...f):m.push(f)}}}return m}}function pme(e,t){e.position&&(t.position=tce(e))}function hme(e,t){let a=t;if(e&&e.data){const o=e.data.hName,r=e.data.hChildren,n=e.data.hProperties;if(typeof o=="string")if(a.type==="element")a.tagName=o;else{const i="children"in a?a.children:[a];a={type:"element",tagName:o,properties:{},children:i}}a.type==="element"&&n&&Object.assign(a.properties,Yf(n)),"children"in a&&a.children&&r!==null&&r!==void 0&&(a.children=r)}return a}function fme(e,t){const a=t.data||{},o="value"in t&&!(v2.call(a,"hProperties")||v2.call(a,"hChildren"))?{type:"text",value:t.value}:{type:"element",tagName:"div",properties:{},children:e.all(t)};return e.patch(t,o),e.applyData(t,o)}function gme(e,t){const a=[];let o=-1;for(t&&a.push({type:"text",value:` 1061`});++o<e.length;)o&&a.push({type:"text",value:` 1062`}),a.push(e[o]);return t&&e.length>0&&a.push({type:"text",value:` 1063`}),a}function tA(e){let t=0,a=e.charCodeAt(t);for(;a===9||a===32;)t++,a=e.charCodeAt(t);return e.slice(t)}function aA(e,t){const a=mme(e,t),o=a.one(e,void 0),r=ame(a),n=Array.isArray(o)?{type:"root",children:o}:o||{type:"root",children:[]};return r&&n.children.push({type:"text",value:` 1064`},r),n}function vme(e,t){return e&&"run"in e?async function(a,o){const r=aA(a,{file:o,...t});await e.run(r,o)}:function(a,o){return aA(a,{file:o,...e||t})}}function oA(e){if(e)throw e}var qh=Object.prototype.hasOwnProperty,Hq=Object.prototype.toString,rA=Object.defineProperty,nA=Object.getOwnPropertyDescriptor,sA=function(t){return typeof Array.isArray=="function"?Array.isArray(t):Hq.call(t)==="[object Array]"},iA=function(t){if(!t||Hq.call(t)!=="[object Object]")return!1;var a=qh.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&qh.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!a&&!o)return!1;var r;for(r in t);return typeof r>"u"||qh.call(t,r)},lA=function(t,a){rA&&a.name==="__proto__"?rA(t,a.name,{enumerable:!0,configurable:!0,value:a.newValue,writable:!0}):t[a.name]=a.newValue},cA=function(t,a){if(a==="__proto__")if(qh.call(t,a)){if(nA)return nA(t,a).value}else return;return t[a]},xme=function e(){var t,a,o,r,n,i,l=arguments[0],c=1,d=arguments.length,u=!1;for(typeof l=="boolean"&&(u=l,l=arguments[1]||{},c=2),(l==null||typeof l!="object"&&typeof l!="function")&&(l={});c<d;++c)if(t=arguments[c],t!=null)for(a in t)o=cA(l,a),r=cA(t,a),l!==r&&(u&&r&&(iA(r)||(n=sA(r)))?(n?(n=!1,i=o&&sA(o)?o:[]):i=o&&iA(o)?o:{},lA(l,{name:a,newValue:e(u,i,r)})):typeof r<"u"&&lA(l,{name:a,newValue:r}));return l};const dx=tl(xme);function x2(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function bme(){const e=[],t={run:a,use:o};return t;function a(...r){let n=-1;const i=r.pop();if(typeof i!="function")throw new TypeError("Expected function as last argument, not "+i);l(null,...r);function l(c,...d){const u=e[++n];let m=-1;if(c){i(c);return}for(;++m<r.length;)(d[m]===null||d[m]===void 0)&&(d[m]=r[m]);r=d,u?yme(u,l)(...d):i(null,...d)}}function o(r){if(typeof r!="function")throw new TypeError("Expected `middelware` to be a function, not "+r);return e.push(r),t}}function yme(e,t){let a;return o;function o(...i){const l=e.length>i.length;let c;l&&i.push(r);try{c=e.apply(this,i)}catch(d){const u=d;if(l&&a)throw u;return r(u)}l||(c&&c.then&&typeof c.then=="function"?c.then(n,r):c instanceof Error?r(c):n(c))}function r(i,...l){a||(a=!0,t(i,...l))}function n(i){r(null,i)}}const Ir={basename:kme,dirname:wme,extname:Cme,join:Pme,sep:"/"};function kme(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Im(e);let a=0,o=-1,r=e.length,n;if(t===void 0||t.length===0||t.length>e.length){for(;r--;)if(e.codePointAt(r)===47){if(n){a=r+1;break}}else o<0&&(n=!0,o=r+1);return o<0?"":e.slice(a,o)}if(t===e)return"";let i=-1,l=t.length-1;for(;r--;)if(e.codePointAt(r)===47){if(n){a=r+1;break}}else i<0&&(n=!0,i=r+1),l>-1&&(e.codePointAt(r)===t.codePointAt(l--)?l<0&&(o=r):(l=-1,o=i));return a===o?o=i:o<0&&(o=e.length),e.slice(a,o)}function wme(e){if(Im(e),e.length===0)return".";let t=-1,a=e.length,o;for(;--a;)if(e.codePointAt(a)===47){if(o){t=a;break}}else o||(o=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function Cme(e){Im(e);let t=e.length,a=-1,o=0,r=-1,n=0,i;for(;t--;){const l=e.codePointAt(t);if(l===47){if(i){o=t+1;break}continue}a<0&&(i=!0,a=t+1),l===46?r<0?r=t:n!==1&&(n=1):r>-1&&(n=-1)}return r<0||a<0||n===0||n===1&&r===a-1&&r===o+1?"":e.slice(r,a)}function Pme(...e){let t=-1,a;for(;++t<e.length;)Im(e[t]),e[t]&&(a=a===void 0?e[t]:a+"/"+e[t]);return a===void 0?".":Sme(a)}function Sme(e){Im(e);const t=e.codePointAt(0)===47;let a=Rme(e,!t);return a.length===0&&!t&&(a="."),a.length>0&&e.codePointAt(e.length-1)===47&&(a+="/"),t?"/"+a:a}function Rme(e,t){let a="",o=0,r=-1,n=0,i=-1,l,c;for(;++i<=e.length;){if(i<e.length)l=e.codePointAt(i);else{if(l===47)break;l=47}if(l===47){if(!(r===i-1||n===1))if(r!==i-1&&n===2){if(a.length<2||o!==2||a.codePointAt(a.length-1)!==46||a.codePointAt(a.length-2)!==46){if(a.length>2){if(c=a.lastIndexOf("/"),c!==a.length-1){c<0?(a="",o=0):(a=a.slice(0,c),o=a.length-1-a.lastIndexOf("/")),r=i,n=0;continue}}else if(a.length>0){a="",o=0,r=i,n=0;continue}}t&&(a=a.length>0?a+"/..":"..",o=2)}else a.length>0?a+="/"+e.slice(r+1,i):a=e.slice(r+1,i),o=i-r-1;r=i,n=0}else l===46&&n>-1?n++:n=-1}return a}function Im(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const jme={cwd:Nme};function Nme(){return"/"}function b2(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Ame(e){if(typeof e=="string")e=new URL(e);else if(!b2(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Eme(e)}function Eme(e){if(e.hostname!==""){const o=new TypeError('File URL host must be "localhost" or empty on darwin');throw o.code="ERR_INVALID_FILE_URL_HOST",o}const t=e.pathname;let a=-1;for(;++a<t.length;)if(t.codePointAt(a)===37&&t.codePointAt(a+1)===50){const o=t.codePointAt(a+2);if(o===70||o===102){const r=new TypeError("File URL path must not include encoded / characters");throw r.code="ERR_INVALID_FILE_URL_PATH",r}}return decodeURIComponent(t)}const ux=["history","path","basename","stem","extname","dirname"];class Kq{constructor(t){let a;t?b2(t)?a={path:t}:typeof t=="string"||_me(t)?a={value:t}:a=t:a={},this.cwd="cwd"in a?"":jme.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let o=-1;for(;++o<ux.length;){const n=ux[o];n in a&&a[n]!==void 0&&a[n]!==null&&(this[n]=n==="history"?[...a[n]]:a[n])}let r;for(r in a)ux.includes(r)||(this[r]=a[r])}get basename(){return typeof this.path=="string"?Ir.basename(this.path):void 0}set basename(t){px(t,"basename"),mx(t,"basename"),this.path=Ir.join(this.dirname||"",t)}get dirname(){return typeof this.path=="string"?Ir.dirname(this.path):void 0}set dirname(t){dA(this.basename,"dirname"),this.path=Ir.join(t||"",this.basename)}get extname(){return typeof this.path=="string"?Ir.extname(this.path):void 0}set extname(t){if(mx(t,"extname"),dA(this.dirname,"extname"),t){if(t.codePointAt(0)!==46)throw new Error("`extname` must start with `.`");if(t.includes(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Ir.join(this.dirname,this.stem+(t||""))}get path(){return this.history[this.history.length-1]}set path(t){b2(t)&&(t=Ame(t)),px(t,"path"),this.path!==t&&this.history.push(t)}get stem(){return typeof this.path=="string"?Ir.basename(this.path,this.extname):void 0}set stem(t){px(t,"stem"),mx(t,"stem"),this.path=Ir.join(this.dirname||"",t+(this.extname||""))}fail(t,a,o){const r=this.message(t,a,o);throw r.fatal=!0,r}info(t,a,o){const r=this.message(t,a,o);return r.fatal=void 0,r}message(t,a,o){const r=new $a(t,a,o);return this.path&&(r.name=this.path+":"+r.name,r.file=this.path),r.fatal=!1,this.messages.push(r),r}toString(t){return this.value===void 0?"":typeof this.value=="string"?this.value:new TextDecoder(t||void 0).decode(this.value)}}function mx(e,t){if(e&&e.includes(Ir.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Ir.sep+"`")}function px(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function dA(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}function _me(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Tme=function(e){const o=this.constructor.prototype,r=o[e],n=function(){return r.apply(n,arguments)};return Object.setPrototypeOf(n,o),n},$me={}.hasOwnProperty;class _w extends Tme{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=bme()}copy(){const t=new _w;let a=-1;for(;++a<this.attachers.length;){const o=this.attachers[a];t.use(...o)}return t.data(dx(!0,{},this.namespace)),t}data(t,a){return typeof t=="string"?arguments.length===2?(gx("data",this.frozen),this.namespace[t]=a,this):$me.call(this.namespace,t)&&this.namespace[t]||void 0:t?(gx("data",this.frozen),this.namespace=t,this):this.namespace}freeze(){if(this.frozen)return this;const t=this;for(;++this.freezeIndex<this.attachers.length;){const[a,...o]=this.attachers[this.freezeIndex];if(o[0]===!1)continue;o[0]===!0&&(o[0]=void 0);const r=a.call(t,...o);typeof r=="function"&&this.transformers.use(r)}return this.frozen=!0,this.freezeIndex=Number.POSITIVE_INFINITY,this}parse(t){this.freeze();const a=Mp(t),o=this.parser||this.Parser;return hx("parse",o),o(String(a),a)}process(t,a){const o=this;return this.freeze(),hx("process",this.parser||this.Parser),fx("process",this.compiler||this.Compiler),a?r(void 0,a):new Promise(r);function r(n,i){const l=Mp(t),c=o.parse(l);o.run(c,l,function(u,m,h){if(u||!m||!h)return d(u);const p=m,f=o.stringify(p,h);Dme(f)?h.value=f:h.result=f,d(u,h)});function d(u,m){u||!m?i(u):n?n(m):a(void 0,m)}}}processSync(t){let a=!1,o;return this.freeze(),hx("processSync",this.parser||this.Parser),fx("processSync",this.compiler||this.Compiler),this.process(t,r),mA("processSync","process",a),o;function r(n,i){a=!0,oA(n),o=i}}run(t,a,o){uA(t),this.freeze();const r=this.transformers;return!o&&typeof a=="function"&&(o=a,a=void 0),o?n(void 0,o):new Promise(n);function n(i,l){const c=Mp(a);r.run(t,c,d);function d(u,m,h){const p=m||t;u?l(u):i?i(p):o(void 0,p,h)}}}runSync(t,a){let o=!1,r;return this.run(t,a,n),mA("runSync","run",o),r;function n(i,l){oA(i),r=l,o=!0}}stringify(t,a){this.freeze();const o=Mp(a),r=this.compiler||this.Compiler;return fx("stringify",r),uA(t),r(t,o)}use(t,...a){const o=this.attachers,r=this.namespace;if(gx("use",this.frozen),t!=null)if(typeof t=="function")c(t,a);else if(typeof t=="object")Array.isArray(t)?l(t):i(t);else throw new TypeError("Expected usable value, not `"+t+"`");return this;function n(d){if(typeof d=="function")c(d,[]);else if(typeof d=="object")if(Array.isArray(d)){const[u,...m]=d;c(u,m)}else i(d);else throw new TypeError("Expected usable value, not `"+d+"`")}function i(d){if(!("plugins"in d)&&!("settings"in d))throw new Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");l(d.plugins),d.settings&&(r.settings=dx(!0,r.settings,d.settings))}function l(d){let u=-1;if(d!=null)if(Array.isArray(d))for(;++u<d.length;){const m=d[u];n(m)}else throw new TypeError("Expected a list of plugins, not `"+d+"`")}function c(d,u){let m=-1,h=-1;for(;++m<o.length;)if(o[m][0]===d){h=m;break}if(h===-1)o.push([d,...u]);else if(u.length>0){let[p,...f]=u;const g=o[h][1];x2(g)&&x2(p)&&(p=dx(!0,g,p)),o[h]=[d,p,...f]}}}}const Ome=new _w().freeze();function hx(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function fx(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function gx(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function uA(e){if(!x2(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function mA(e,t,a){if(!a)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Mp(e){return qme(e)?e:new Kq(e)}function qme(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Dme(e){return typeof e=="string"||Ime(e)}function Ime(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const Mme="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",pA=[],hA={allowDangerousHtml:!0},Lme=/^(https?|ircs?|mailto|xmpp)$/i,Bme=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Vme(e){const t=Fme(e),a=Ume(e);return Gme(t.runSync(t.parse(a),a),e)}function Fme(e){const t=e.rehypePlugins||pA,a=e.remarkPlugins||pA,o=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...hA}:hA;return Ome().use(Cue).use(a).use(vme,o).use(t)}function Ume(e){const t=e.children||"",a=new Kq;return typeof t=="string"&&(a.value=t),a}function Gme(e,t){const a=t.allowedElements,o=t.allowElement,r=t.components,n=t.disallowedElements,i=t.skipHtml,l=t.unwrapDisallowed,c=t.urlTransform||zme;for(const u of Bme)Object.hasOwn(t,u.from)&&(""+u.from+(u.to?"use `"+u.to+"` instead":"remove it")+Mme+u.id,void 0);return Ew(e,d),sce(e,{Fragment:s.Fragment,components:r,ignoreInvalidStyle:!0,jsx:s.jsx,jsxs:s.jsxs,passKeys:!0,passNode:!0});function d(u,m,h){if(u.type==="raw"&&h&&typeof m=="number")return i?h.children.splice(m,1):h.children[m]={type:"text",value:u.value},m;if(u.type==="element"){let p;for(p in ix)if(Object.hasOwn(ix,p)&&Object.hasOwn(u.properties,p)){const f=u.properties[p],g=ix[p];(g===null||g.includes(u.tagName))&&(u.properties[p]=c(String(f||""),p,u))}}if(u.type==="element"){let p=a?!a.includes(u.tagName):n?n.includes(u.tagName):!1;if(!p&&o&&typeof m=="number"&&(p=!o(u,m,h)),p&&h&&typeof m=="number")return l&&u.children?h.children.splice(m,1,...u.children):h.children.splice(m,1),m}}}function zme(e){const t=e.indexOf(":"),a=e.indexOf("?"),o=e.indexOf("#"),r=e.indexOf("/");return t===-1||r!==-1&&t>r||a!==-1&&t>a||o!==-1&&t>o||Lme.test(e.slice(0,t))?e:""}function fA(e,t){const a=String(e);if(typeof t!="string")throw new TypeError("Expected character");let o=0,r=a.indexOf(t);for(;r!==-1;)o++,r=a.indexOf(t,r+t.length);return o}function Hme(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function Kme(e,t,a){const r=b0((a||{}).ignore||[]),n=Qme(t);let i=-1;for(;++i<n.length;)zq(e,"text",l);function l(d,u){let m=-1,h;for(;++m<u.length;){const p=u[m],f=h?h.children:void 0;if(r(p,f?f.indexOf(p):void 0,h))return;h=p}if(h)return c(d,u)}function c(d,u){const m=u[u.length-1],h=n[i][0],p=n[i][1];let f=0;const b=m.children.indexOf(d);let v=!1,y=[];h.lastIndex=0;let k=h.exec(d.value);for(;k;){const w=k.index,R={index:k.index,input:k.input,stack:[...u,d]};let C=p(...k,R);if(typeof C=="string"&&(C=C.length>0?{type:"text",value:C}:void 0),C===!1?h.lastIndex=w+1:(f!==w&&y.push({type:"text",value:d.value.slice(f,w)}),Array.isArray(C)?y.push(...C):C&&y.push(C),f=w+k[0].length,v=!0),!h.global)break;k=h.exec(d.value)}return v?(f<d.value.length&&y.push({type:"text",value:d.value.slice(f)}),m.children.splice(b,1,...y)):y=[d],b+y.length}}function Qme(e){const t=[];if(!Array.isArray(e))throw new TypeError("Expected find and replace tuple or list of tuples");const a=!e[0]||Array.isArray(e[0])?e:[e];let o=-1;for(;++o<a.length;){const r=a[o];t.push([Wme(r[0]),Jme(r[1])])}return t}function Wme(e){return typeof e=="string"?new RegExp(Hme(e),"g"):e}function Jme(e){return typeof e=="function"?e:function(){return e}}const vx="phrasing",xx=["autolink","link","image","label"];
vendor: 7,256 bytes, lines 1064-1068
1064function Xme(){return{transforms:[rpe],enter:{literalAutolink:Zme,literalAutolinkEmail:bx,literalAutolinkHttp:bx,literalAutolinkWww:bx},exit:{literalAutolink:ope,literalAutolinkEmail:ape,literalAutolinkHttp:epe,literalAutolinkWww:tpe}}}function Yme(){return{unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:vx,notInConstruct:xx},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:vx,notInConstruct:xx},{character:":",before:"[ps]",after:"\\/",inConstruct:vx,notInConstruct:xx}]}}function Zme(e){this.enter({type:"link",title:null,url:"",children:[]},e)}function bx(e){this.config.enter.autolinkProtocol.call(this,e)}function epe(e){this.config.exit.autolinkProtocol.call(this,e)}function tpe(e){this.config.exit.data.call(this,e);const t=this.stack[this.stack.length-1];t.type,t.url="http://"+this.sliceSerialize(e)}function ape(e){this.config.exit.autolinkEmail.call(this,e)}function ope(e){this.exit(e)}function rpe(e){Kme(e,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,npe],[new RegExp("(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)","gu"),spe]],{ignore:["link","linkReference"]})}function npe(e,t,a,o,r){let n="";if(!Qq(r)||(/^w/i.test(t)&&(a=t+a,t="",n="http://"),!ipe(a)))return!1;const i=lpe(a+o);if(!i[0])return!1;const l={type:"link",title:null,url:n+t+i[0],children:[{type:"text",value:t+i[0]}]};return i[1]?[l,{type:"text",value:i[1]}]:l}function spe(e,t,a,o){return!Qq(o,!0)||/[-\d_]$/.test(a)?!1:{type:"link",title:null,url:"mailto:"+t+"@"+a,children:[{type:"text",value:t+"@"+a}]}}function ipe(e){const t=e.split(".");return!(t.length<2||t[t.length-1]&&(/_/.test(t[t.length-1])||!/[a-zA-Z\d]/.test(t[t.length-1]))||t[t.length-2]&&(/_/.test(t[t.length-2])||!/[a-zA-Z\d]/.test(t[t.length-2])))}function lpe(e){const t=/[!"&'),.:;<>?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let a=t[0],o=a.indexOf(")");const r=fA(e,"(");let n=fA(e,")");for(;o!==-1&&r>n;)e+=a.slice(0,o+1),a=a.slice(o+1),o=a.indexOf(")"),n++;return[e,a]}function Qq(e,t){const a=e.input.charCodeAt(e.index-1);return(e.index===0||Yi(a)||g0(a))&&(!t||a!==47)}Wq.peek=vpe;function cpe(){this.buffer()}function dpe(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function upe(){this.buffer()}function mpe(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function ppe(e){const t=this.resume(),a=this.stack[this.stack.length-1];a.type,a.identifier=Pr(this.sliceSerialize(e)).toLowerCase(),a.label=t}function hpe(e){this.exit(e)}function fpe(e){const t=this.resume(),a=this.stack[this.stack.length-1];a.type,a.identifier=Pr(this.sliceSerialize(e)).toLowerCase(),a.label=t}function gpe(e){this.exit(e)}function vpe(){return"["}function Wq(e,t,a,o){const r=a.createTracker(o);let n=r.move("[^");const i=a.enter("footnoteReference"),l=a.enter("reference");return n+=r.move(a.safe(a.associationId(e),{after:"]",before:n})),l(),i(),n+=r.move("]"),n}function xpe(){return{enter:{gfmFootnoteCallString:cpe,gfmFootnoteCall:dpe,gfmFootnoteDefinitionLabelString:upe,gfmFootnoteDefinition:mpe},exit:{gfmFootnoteCallString:ppe,gfmFootnoteCall:hpe,gfmFootnoteDefinitionLabelString:fpe,gfmFootnoteDefinition:gpe}}}function bpe(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:a,footnoteReference:Wq},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function a(o,r,n,i){const l=n.createTracker(i);let c=l.move("[^");const d=n.enter("footnoteDefinition"),u=n.enter("label");return c+=l.move(n.safe(n.associationId(o),{before:c,after:"]"})),u(),c+=l.move("]:"),o.children&&o.children.length>0&&(l.shift(4),c+=l.move((t?` 1065`:" ")+n.indentLines(n.containerFlow(o,l.current()),t?Jq:ype))),d(),c}}function ype(e,t,a){return t===0?e:Jq(e,t,a)}function Jq(e,t,a){return(a?"":" ")+e}const kpe=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Xq.peek=Rpe;function wpe(){return{canContainEols:["delete"],enter:{strikethrough:Ppe},exit:{strikethrough:Spe}}}function Cpe(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:kpe}],handlers:{delete:Xq}}}function Ppe(e){this.enter({type:"delete",children:[]},e)}function Spe(e){this.exit(e)}function Xq(e,t,a,o){const r=a.createTracker(o),n=a.enter("strikethrough");let i=r.move("~~");return i+=a.containerPhrasing(e,{...r.current(),before:i,after:"~"}),i+=r.move("~~"),n(),i}function Rpe(){return"~"}function jpe(e){return e.length}function Npe(e,t){const a=t||{},o=(a.align||[]).concat(),r=a.stringLength||jpe,n=[],i=[],l=[],c=[];let d=0,u=-1;for(;++u<e.length;){const g=[],b=[];let v=-1;for(e[u].length>d&&(d=e[u].length);++v<e[u].length;){const y=Ape(e[u][v]);if(a.alignDelimiters!==!1){const k=r(y);b[v]=k,(c[v]===void 0||k>c[v])&&(c[v]=k)}g.push(y)}i[u]=g,l[u]=b}let m=-1;if(typeof o=="object"&&"length"in o)for(;++m<d;)n[m]=gA(o[m]);else{const g=gA(o);for(;++m<d;)n[m]=g}m=-1;const h=[],p=[];for(;++m<d;){const g=n[m];let b="",v="";g===99?(b=":",v=":"):g===108?b=":":g===114&&(v=":");let y=a.alignDelimiters===!1?1:Math.max(1,c[m]-b.length-v.length);const k=b+"-".repeat(y)+v;a.alignDelimiters!==!1&&(y=b.length+y+v.length,y>c[m]&&(c[m]=y),p[m]=y),h[m]=k}i.splice(1,0,h),l.splice(1,0,p),u=-1;const f=[];for(;++u<i.length;){const g=i[u],b=l[u];m=-1;const v=[];for(;++m<d;){const y=g[m]||"";let k="",w="";if(a.alignDelimiters!==!1){const R=c[m]-(b[m]||0),C=n[m];C===114?k=" ".repeat(R):C===99?R%2?(k=" ".repeat(R/2+.5),w=" ".repeat(R/2-.5)):(k=" ".repeat(R/2),w=k):w=" ".repeat(R)}a.delimiterStart!==!1&&!m&&v.push("|"),a.padding!==!1&&!(a.alignDelimiters===!1&&y==="")&&(a.delimiterStart!==!1||m)&&v.push(" "),a.alignDelimiters!==!1&&v.push(k),v.push(y),a.alignDelimiters!==!1&&v.push(w),a.padding!==!1&&v.push(" "),(a.delimiterEnd!==!1||m!==d-1)&&v.push("|")}f.push(a.delimiterEnd===!1?v.join("").replace(/ +$/,""):v.join(""))}return f.join(` 1066`)}function Ape(e){return e==null?"":String(e)}function gA(e){const t=typeof e=="string"?e.codePointAt(0):0;return t===67||t===99?99:t===76||t===108?108:t===82||t===114?114:0}function Epe(e,t,a,o){const r=a.enter("blockquote"),n=a.createTracker(o);n.move("> "),n.shift(2);const i=a.indentLines(a.containerFlow(e,n.current()),_pe);return r(),i}function _pe(e,t,a){return">"+(a?"":" ")+e}function Tpe(e,t){return vA(e,t.inConstruct,!0)&&!vA(e,t.notInConstruct,!1)}function vA(e,t,a){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return a;let o=-1;for(;++o<t.length;)if(e.includes(t[o]))return!0;return!1}function xA(e,t,a,o){let r=-1;for(;++r<a.unsafe.length;)if(a.unsafe[r].character===` 1067`&&Tpe(a.stack,a.unsafe[r]))return/[ \t]/.test(o.before)?"":" ";return`\\ 1068`}function $pe(e,t){const a=String(e);let o=a.indexOf(t),r=o,n=0,i=0;if(typeof t!="string")throw new TypeError("Expected substring");for(;o!==-1;)o===r?++n>i&&(i=n):n=1,r=o+t.length,o=a.indexOf(t,r);return i}function Ope(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function qpe(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Dpe(e,t,a,o){const r=qpe(a),n=e.value||"",i=r==="`"?"GraveAccent":"Tilde";
vendor: 12,695 bytes, lines 1068-1079
1068if(Ope(e,a)){const m=a.enter("codeIndented"),h=a.indentLines(n,Ipe);return m(),h}const l=a.createTracker(o),c=r.repeat(Math.max($pe(n,r)+1,3)),d=a.enter("codeFenced");let u=l.move(c);if(e.lang){const m=a.enter(`codeFencedLang${i}`);u+=l.move(a.safe(e.lang,{before:u,after:" ",encode:["`"],...l.current()})),m()}if(e.lang&&e.meta){const m=a.enter(`codeFencedMeta${i}`);u+=l.move(" "),u+=l.move(a.safe(e.meta,{before:u,after:` 1069`,encode:["`"],...l.current()})),m()}return u+=l.move(` 1070`),n&&(u+=l.move(n+` 1071`)),u+=l.move(c),d(),u}function Ipe(e,t,a){return(a?"":" ")+e}function Tw(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function Mpe(e,t,a,o){const r=Tw(a),n=r==='"'?"Quote":"Apostrophe",i=a.enter("definition");let l=a.enter("label");const c=a.createTracker(o);let d=c.move("[");return d+=c.move(a.safe(a.associationId(e),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!e.url||/[\0- \u007F]/.test(e.url)?(l=a.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(a.safe(e.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=a.enter("destinationRaw"),d+=c.move(a.safe(e.url,{before:d,after:e.title?" ":` 1072`,...c.current()}))),l(),e.title&&(l=a.enter(`title${n}`),d+=c.move(" "+r),d+=c.move(a.safe(e.title,{before:d,after:r,...c.current()})),d+=c.move(r),l()),i(),d}function Lpe(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function cm(e){return"&#x"+e.toString(16).toUpperCase()+";"}function Zf(e,t,a){const o=zc(e),r=zc(t);return o===void 0?r===void 0?a==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:r===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:o===1?r===void 0?{inside:!1,outside:!1}:r===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:r===void 0?{inside:!1,outside:!1}:r===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Yq.peek=Bpe;function Yq(e,t,a,o){const r=Lpe(a),n=a.enter("emphasis"),i=a.createTracker(o),l=i.move(r);let c=i.move(a.containerPhrasing(e,{after:r,before:l,...i.current()}));const d=c.charCodeAt(0),u=Zf(o.before.charCodeAt(o.before.length-1),d,r);u.inside&&(c=cm(d)+c.slice(1));const m=c.charCodeAt(c.length-1),h=Zf(o.after.charCodeAt(0),m,r);h.inside&&(c=c.slice(0,-1)+cm(m));const p=i.move(r);return n(),a.attentionEncodeSurroundingInfo={after:h.outside,before:u.outside},l+c+p}function Bpe(e,t,a){return a.options.emphasis||"*"}function Vpe(e,t){let a=!1;return Ew(e,function(o){if("value"in o&&/\r?\n|\r/.test(o.value)||o.type==="break")return a=!0,g2}),!!((!e.depth||e.depth<3)&&Cw(e)&&(t.options.setext||a))}function Fpe(e,t,a,o){const r=Math.max(Math.min(6,e.depth||1),1),n=a.createTracker(o);if(Vpe(e,a)){const u=a.enter("headingSetext"),m=a.enter("phrasing"),h=a.containerPhrasing(e,{...n.current(),before:` 1073`,after:` 1074`});return m(),u(),h+` 1075`+(r===1?"=":"-").repeat(h.length-(Math.max(h.lastIndexOf("\r"),h.lastIndexOf(` 1076`))+1))}const i="#".repeat(r),l=a.enter("headingAtx"),c=a.enter("phrasing");n.move(i+" ");let d=a.containerPhrasing(e,{before:"# ",after:` 1077`,...n.current()});return/^[\t ]/.test(d)&&(d=cm(d.charCodeAt(0))+d.slice(1)),d=d?i+" "+d:i,a.options.closeAtx&&(d+=" "+i),c(),l(),d}Zq.peek=Upe;function Zq(e){return e.value||""}function Upe(){return"<"}eD.peek=Gpe;function eD(e,t,a,o){const r=Tw(a),n=r==='"'?"Quote":"Apostrophe",i=a.enter("image");let l=a.enter("label");const c=a.createTracker(o);let d=c.move("![");return d+=c.move(a.safe(e.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(l=a.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(a.safe(e.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=a.enter("destinationRaw"),d+=c.move(a.safe(e.url,{before:d,after:e.title?" ":")",...c.current()}))),l(),e.title&&(l=a.enter(`title${n}`),d+=c.move(" "+r),d+=c.move(a.safe(e.title,{before:d,after:r,...c.current()})),d+=c.move(r),l()),d+=c.move(")"),i(),d}function Gpe(){return"!"}tD.peek=zpe;function tD(e,t,a,o){const r=e.referenceType,n=a.enter("imageReference");let i=a.enter("label");const l=a.createTracker(o);let c=l.move("![");const d=a.safe(e.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),i();const u=a.stack;a.stack=[],i=a.enter("reference");const m=a.safe(a.associationId(e),{before:c,after:"]",...l.current()});return i(),a.stack=u,n(),r==="full"||!d||d!==m?c+=l.move(m+"]"):r==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function zpe(){return"!"}aD.peek=Hpe;function aD(e,t,a){let o=e.value||"",r="`",n=-1;for(;new RegExp("(^|[^`])"+r+"([^`]|$)").test(o);)r+="`";for(/[^ \r\n]/.test(o)&&(/^[ \r\n]/.test(o)&&/[ \r\n]$/.test(o)||/^`|`$/.test(o))&&(o=" "+o+" ");++n<a.unsafe.length;){const i=a.unsafe[n],l=a.compilePattern(i);let c;if(i.atBreak)for(;c=l.exec(o);){let d=c.index;o.charCodeAt(d)===10&&o.charCodeAt(d-1)===13&&d--,o=o.slice(0,d)+" "+o.slice(c.index+1)}}return r+o+r}function Hpe(){return"`"}function oD(e,t){const a=Cw(e);return!!(!t.options.resourceLink&&e.url&&!e.title&&e.children&&e.children.length===1&&e.children[0].type==="text"&&(a===e.url||"mailto:"+a===e.url)&&/^[a-z][a-z+.-]+:/i.test(e.url)&&!/[\0- <>\u007F]/.test(e.url))}rD.peek=Kpe;function rD(e,t,a,o){const r=Tw(a),n=r==='"'?"Quote":"Apostrophe",i=a.createTracker(o);let l,c;if(oD(e,a)){const u=a.stack;a.stack=[],l=a.enter("autolink");let m=i.move("<");return m+=i.move(a.containerPhrasing(e,{before:m,after:">",...i.current()})),m+=i.move(">"),l(),a.stack=u,m}l=a.enter("link"),c=a.enter("label");let d=i.move("[");return d+=i.move(a.containerPhrasing(e,{before:d,after:"](",...i.current()})),d+=i.move("]("),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=a.enter("destinationLiteral"),d+=i.move("<"),d+=i.move(a.safe(e.url,{before:d,after:">",...i.current()})),d+=i.move(">")):(c=a.enter("destinationRaw"),d+=i.move(a.safe(e.url,{before:d,after:e.title?" ":")",...i.current()}))),c(),e.title&&(c=a.enter(`title${n}`),d+=i.move(" "+r),d+=i.move(a.safe(e.title,{before:d,after:r,...i.current()})),d+=i.move(r),c()),d+=i.move(")"),l(),d}function Kpe(e,t,a){return oD(e,a)?"<":"["}nD.peek=Qpe;function nD(e,t,a,o){const r=e.referenceType,n=a.enter("linkReference");let i=a.enter("label");const l=a.createTracker(o);let c=l.move("[");const d=a.containerPhrasing(e,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),i();const u=a.stack;a.stack=[],i=a.enter("reference");const m=a.safe(a.associationId(e),{before:c,after:"]",...l.current()});return i(),a.stack=u,n(),r==="full"||!d||d!==m?c+=l.move(m+"]"):r==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function Qpe(){return"["}function $w(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function Wpe(e){const t=$w(e),a=e.options.bulletOther;if(!a)return t==="*"?"-":"*";if(a!=="*"&&a!=="+"&&a!=="-")throw new Error("Cannot serialize items with `"+a+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(a===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+a+"`) to be different");return a}function Jpe(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function sD(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function Xpe(e,t,a,o){const r=a.enter("list"),n=a.bulletCurrent;let i=e.ordered?Jpe(a):$w(a);const l=e.ordered?i==="."?")":".":Wpe(a);let c=t&&a.bulletLastUsed?i===a.bulletLastUsed:!1;if(!e.ordered){const u=e.children?e.children[0]:void 0;if((i==="*"||i==="-")&&u&&(!u.children||!u.children[0])&&a.stack[a.stack.length-1]==="list"&&a.stack[a.stack.length-2]==="listItem"&&a.stack[a.stack.length-3]==="list"&&a.stack[a.stack.length-4]==="listItem"&&a.indexStack[a.indexStack.length-1]===0&&a.indexStack[a.indexStack.length-2]===0&&a.indexStack[a.indexStack.length-3]===0&&(c=!0),sD(a)===i&&u){let m=-1;for(;++m<e.children.length;){const h=e.children[m];if(h&&h.type==="listItem"&&h.children&&h.children[0]&&h.children[0].type==="thematicBreak"){c=!0;break}}}}c&&(i=l),a.bulletCurrent=i;const d=a.containerFlow(e,o);return a.bulletLastUsed=i,a.bulletCurrent=n,r(),d}function Ype(e){const t=e.options.listItemIndent||"one";if(t!=="tab"&&t!=="one"&&t!=="mixed")throw new Error("Cannot serialize items with `"+t+"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");return t}function Zpe(e,t,a,o){const r=Ype(a);let n=a.bulletCurrent||$w(a);t&&t.type==="list"&&t.ordered&&(n=(typeof t.start=="number"&&t.start>-1?t.start:1)+(a.options.incrementListMarker===!1?0:t.children.indexOf(e))+n);let i=n.length+1;(r==="tab"||r==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(i=Math.ceil(i/4)*4);const l=a.createTracker(o);l.move(n+" ".repeat(i-n.length)),l.shift(i);const c=a.enter("listItem"),d=a.indentLines(a.containerFlow(e,l.current()),u);return c(),d;function u(m,h,p){return h?(p?"":" ".repeat(i))+m:(p?n:n+" ".repeat(i-n.length))+m}}function ehe(e,t,a,o){const r=a.enter("paragraph"),n=a.enter("phrasing"),i=a.containerPhrasing(e,o);return n(),r(),i}const the=b0(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function ahe(e,t,a,o){return(e.children.some(function(i){return the(i)})?a.containerPhrasing:a.containerFlow).call(a,e,o)}function ohe(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}iD.peek=rhe;function iD(e,t,a,o){const r=ohe(a),n=a.enter("strong"),i=a.createTracker(o),l=i.move(r+r);let c=i.move(a.containerPhrasing(e,{after:r,before:l,...i.current()}));const d=c.charCodeAt(0),u=Zf(o.before.charCodeAt(o.before.length-1),d,r);u.inside&&(c=cm(d)+c.slice(1));const m=c.charCodeAt(c.length-1),h=Zf(o.after.charCodeAt(0),m,r);h.inside&&(c=c.slice(0,-1)+cm(m));const p=i.move(r+r);return n(),a.attentionEncodeSurroundingInfo={after:h.outside,before:u.outside},l+c+p}function rhe(e,t,a){return a.options.strong||"*"}function nhe(e,t,a,o){return a.safe(e.value,o)}function she(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function ihe(e,t,a){const o=(sD(a)+(a.options.ruleSpaces?" ":"")).repeat(she(a));return a.options.ruleSpaces?o.slice(0,-1):o}const lD={blockquote:Epe,break:xA,code:Dpe,definition:Mpe,emphasis:Yq,hardBreak:xA,heading:Fpe,html:Zq,image:eD,imageReference:tD,inlineCode:aD,link:rD,linkReference:nD,list:Xpe,listItem:Zpe,paragraph:ehe,root:ahe,strong:iD,text:nhe,thematicBreak:ihe};function lhe(){return{enter:{table:che,tableData:bA,tableHeader:bA,tableRow:uhe},exit:{codeText:mhe,table:dhe,tableData:yx,tableHeader:yx,tableRow:yx}}}function che(e){const t=e._align;this.enter({type:"table",align:t.map(function(a){return a==="none"?null:a}),children:[]},e),this.data.inTable=!0}function dhe(e){this.exit(e),this.data.inTable=void 0}function uhe(e){this.enter({type:"tableRow",children:[]},e)}function yx(e){this.exit(e)}function bA(e){this.enter({type:"tableCell",children:[]},e)}function mhe(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,phe));const a=this.stack[this.stack.length-1];a.type,a.value=t,this.exit(e)}function phe(e,t){return t==="|"?t:e}function hhe(e){const t=e||{},a=t.tableCellPadding,o=t.tablePipeAlign,r=t.stringLength,n=a?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` 1078`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:h,table:i,tableCell:c,tableRow:l}};function i(p,f,g,b){return d(u(p,g,b),p.align)}function l(p,f,g,b){const v=m(p,g,b),y=d([v]);return y.slice(0,y.indexOf(` 1079`))}function c(p,f,g,b){const v=g.enter("tableCell"),y=g.enter("phrasing"),k=g.containerPhrasing(p,{...b,before:n,after:n});return y(),v(),k}function d(p,f){return Npe(p,{align:f,alignDelimiters:o,padding:a,stringLength:r})}function u(p,f,g){const b=p.children;let v=-1;const y=[],k=f.enter("table");for(;++v<b.length;)y[v]=m(b[v],f,g);return k(),y}function m(p,f,g){const b=p.children;let v=-1;const y=[],k=f.enter("tableRow");for(;++v<b.length;)y[v]=c(b[v],p,f,g);return k(),y}
vendor: 5,347 bytes, line 1079
1079function h(p,f,g){let b=lD.inlineCode(p,f,g);return g.stack.includes("tableCell")&&(b=b.replace(/\|/g,"\\$&")),b}}function fhe(){return{exit:{taskListCheckValueChecked:yA,taskListCheckValueUnchecked:yA,paragraph:vhe}}}function ghe(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:xhe}}}function yA(e){const t=this.stack[this.stack.length-2];t.type,t.checked=e.type==="taskListCheckValueChecked"}function vhe(e){const t=this.stack[this.stack.length-2];if(t&&t.type==="listItem"&&typeof t.checked=="boolean"){const a=this.stack[this.stack.length-1];a.type;const o=a.children[0];if(o&&o.type==="text"){const r=t.children;let n=-1,i;for(;++n<r.length;){const l=r[n];if(l.type==="paragraph"){i=l;break}}i===a&&(o.value=o.value.slice(1),o.value.length===0?a.children.shift():a.position&&o.position&&typeof o.position.start.offset=="number"&&(o.position.start.column++,o.position.start.offset++,a.position.start=Object.assign({},o.position.start)))}}this.exit(e)}function xhe(e,t,a,o){const r=e.children[0],n=typeof e.checked=="boolean"&&r&&r.type==="paragraph",i="["+(e.checked?"x":" ")+"] ",l=a.createTracker(o);n&&l.move(i);let c=lD.listItem(e,t,a,{...o,...l.current()});return n&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,d)),c;function d(u){return u+i}}function bhe(){return[Xme(),xpe(),wpe(),lhe(),fhe()]}function yhe(e){return{extensions:[Yme(),bpe(e),Cpe(),hhe(e),ghe()]}}const khe={tokenize:jhe,partial:!0},cD={tokenize:Nhe,partial:!0},dD={tokenize:Ahe,partial:!0},uD={tokenize:Ehe,partial:!0},whe={tokenize:_he,partial:!0},mD={name:"wwwAutolink",tokenize:She,previous:hD},pD={name:"protocolAutolink",tokenize:Rhe,previous:fD},Vn={name:"emailAutolink",tokenize:Phe,previous:gD},dn={};function Che(){return{text:dn}}let ri=48;for(;ri<123;)dn[ri]=Vn,ri++,ri===58?ri=65:ri===91&&(ri=97);dn[43]=Vn;dn[45]=Vn;dn[46]=Vn;dn[95]=Vn;dn[72]=[Vn,pD];dn[104]=[Vn,pD];dn[87]=[Vn,mD];dn[119]=[Vn,mD];function Phe(e,t,a){const o=this;let r,n;return i;function i(m){return!y2(m)||!gD.call(o,o.previous)||Ow(o.events)?a(m):(e.enter("literalAutolink"),e.enter("literalAutolinkEmail"),l(m))}function l(m){return y2(m)?(e.consume(m),l):m===64?(e.consume(m),c):a(m)}function c(m){return m===46?e.check(whe,u,d)(m):m===45||m===95||Ea(m)?(n=!0,e.consume(m),c):u(m)}function d(m){return e.consume(m),r=!0,c}function u(m){return n&&r&&Ma(o.previous)?(e.exit("literalAutolinkEmail"),e.exit("literalAutolink"),t(m)):a(m)}}function She(e,t,a){const o=this;return r;function r(i){return i!==87&&i!==119||!hD.call(o,o.previous)||Ow(o.events)?a(i):(e.enter("literalAutolink"),e.enter("literalAutolinkWww"),e.check(khe,e.attempt(cD,e.attempt(dD,n),a),a)(i))}function n(i){return e.exit("literalAutolinkWww"),e.exit("literalAutolink"),t(i)}}function Rhe(e,t,a){const o=this;let r="",n=!1;return i;function i(m){return(m===72||m===104)&&fD.call(o,o.previous)&&!Ow(o.events)?(e.enter("literalAutolink"),e.enter("literalAutolinkHttp"),r+=String.fromCodePoint(m),e.consume(m),l):a(m)}function l(m){if(Ma(m)&&r.length<5)return r+=String.fromCodePoint(m),e.consume(m),l;if(m===58){const h=r.toLowerCase();if(h==="http"||h==="https")return e.consume(m),c}return a(m)}function c(m){return m===47?(e.consume(m),n?d:(n=!0,c)):a(m)}function d(m){return m===null||Jf(m)||bt(m)||Yi(m)||g0(m)?a(m):e.attempt(cD,e.attempt(dD,u),a)(m)}function u(m){return e.exit("literalAutolinkHttp"),e.exit("literalAutolink"),t(m)}}function jhe(e,t,a){let o=0;return r;function r(i){return(i===87||i===119)&&o<3?(o++,e.consume(i),r):i===46&&o===3?(e.consume(i),n):a(i)}function n(i){return i===null?a(i):t(i)}}function Nhe(e,t,a){let o,r,n;return i;function i(d){return d===46||d===95?e.check(uD,c,l)(d):d===null||bt(d)||Yi(d)||d!==45&&g0(d)?c(d):(n=!0,e.consume(d),i)}function l(d){return d===95?o=!0:(r=o,o=void 0),e.consume(d),i}function c(d){return r||o||!n?a(d):t(d)}}function Ahe(e,t){let a=0,o=0;return r;function r(i){return i===40?(a++,e.consume(i),r):i===41&&o<a?n(i):i===33||i===34||i===38||i===39||i===41||i===42||i===44||i===46||i===58||i===59||i===60||i===63||i===93||i===95||i===126?e.check(uD,t,n)(i):i===null||bt(i)||Yi(i)?t(i):(e.consume(i),r)}function n(i){return i===41&&o++,e.consume(i),r}}function Ehe(e,t,a){return o;function o(l){return l===33||l===34||l===39||l===41||l===42||l===44||l===46||l===58||l===59||l===63||l===95||l===126?(e.consume(l),o):l===38?(e.consume(l),n):l===93?(e.consume(l),r):l===60||l===null||bt(l)||Yi(l)?t(l):a(l)}function r(l){return l===null||l===40||l===91||bt(l)||Yi(l)?t(l):o(l)}function n(l){return Ma(l)?i(l):a(l)}function i(l){return l===59?(e.consume(l),o):Ma(l)?(e.consume(l),i):a(l)}}function _he(e,t,a){return o;function o(n){return e.consume(n),r}function r(n){return Ea(n)?a(n):t(n)}}function hD(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||bt(e)}function fD(e){return!Ma(e)}function gD(e){return!(e===47||y2(e))}function y2(e){return e===43||e===45||e===46||e===95||Ea(e)}function Ow(e){let t=e.length,a=!1;for(;t--;){const o=e[t][1];if((o.type==="labelLink"||o.type==="labelImage")&&!o._balanced){a=!0;break}if(o._gfmAutolinkLiteralWalkedInto){a=!1;break}}return e.length>0&&!a&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),a}const The={tokenize:Bhe,partial:!0};function $he(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:Ihe,continuation:{tokenize:Mhe},exit:Lhe}}
vendor: 4,836 bytes, line 1079
1079,text:{91:{name:"gfmFootnoteCall",tokenize:Dhe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:Ohe,resolveTo:qhe}}}}function Ohe(e,t,a){const o=this;let r=o.events.length;const n=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let i;for(;r--;){const c=o.events[r][1];if(c.type==="labelImage"){i=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!i||!i._balanced)return a(c);const d=Pr(o.sliceSerialize({start:i.end,end:o.now()}));return d.codePointAt(0)!==94||!n.includes(d.slice(1))?a(c):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(c),e.exit("gfmFootnoteCallLabelMarker"),t(c))}}function qhe(e,t){let a=e.length;for(;a--;)if(e[a][1].type==="labelImage"&&e[a][0]==="enter"){e[a][1];break}e[a+1][1].type="data",e[a+3][1].type="gfmFootnoteCallLabelMarker";const o={type:"gfmFootnoteCall",start:Object.assign({},e[a+3][1].start),end:Object.assign({},e[e.length-1][1].end)},r={type:"gfmFootnoteCallMarker",start:Object.assign({},e[a+3][1].end),end:Object.assign({},e[a+3][1].end)};r.end.column++,r.end.offset++,r.end._bufferIndex++;const n={type:"gfmFootnoteCallString",start:Object.assign({},r.end),end:Object.assign({},e[e.length-1][1].start)},i={type:"chunkString",contentType:"string",start:Object.assign({},n.start),end:Object.assign({},n.end)},l=[e[a+1],e[a+2],["enter",o,t],e[a+3],e[a+4],["enter",r,t],["exit",r,t],["enter",n,t],["enter",i,t],["exit",i,t],["exit",n,t],e[e.length-2],e[e.length-1],["exit",o,t]];return e.splice(a,e.length-a+1,...l),e}function Dhe(e,t,a){const o=this,r=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let n=0,i;return l;function l(m){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?a(m):(e.enter("gfmFootnoteCallMarker"),e.consume(m),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",d)}function d(m){if(n>999||m===93&&!i||m===null||m===91||bt(m))return a(m);if(m===93){e.exit("chunkString");const h=e.exit("gfmFootnoteCallString");return r.includes(Pr(o.sliceSerialize(h)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):a(m)}return bt(m)||(i=!0),n++,e.consume(m),m===92?u:d}function u(m){return m===91||m===92||m===93?(e.consume(m),n++,d):d(m)}}function Ihe(e,t,a){const o=this,r=o.parser.gfmFootnotes||(o.parser.gfmFootnotes=[]);let n,i=0,l;return c;function c(f){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(f){return f===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",u):a(f)}function u(f){if(i>999||f===93&&!l||f===null||f===91||bt(f))return a(f);if(f===93){e.exit("chunkString");const g=e.exit("gfmFootnoteDefinitionLabelString");return n=Pr(o.sliceSerialize(g)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(f),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),h}return bt(f)||(l=!0),i++,e.consume(f),f===92?m:u}function m(f){return f===91||f===92||f===93?(e.consume(f),i++,u):u(f)}function h(f){return f===58?(e.enter("definitionMarker"),e.consume(f),e.exit("definitionMarker"),r.includes(n)||r.push(n),Xe(e,p,"gfmFootnoteDefinitionWhitespace")):a(f)}function p(f){return t(f)}}function Mhe(e,t,a){return e.check(Dm,t,e.attempt(The,t,a))}function Lhe(e){e.exit("gfmFootnoteDefinition")}function Bhe(e,t,a){const o=this;return Xe(e,r,"gfmFootnoteDefinitionIndent",5);function r(n){const i=o.events[o.events.length-1];return i&&i[1].type==="gfmFootnoteDefinitionIndent"&&i[2].sliceSerialize(i[1],!0).length===4?t(n):a(n)}}function Vhe(e){let a=(e||{}).singleTilde;const o={name:"strikethrough",tokenize:n,resolveAll:r};return a==null&&(a=!0),{text:{126:o},insideSpan:{null:[o]},attentionMarkers:{null:[126]}};function r(i,l){let c=-1;for(;++c<i.length;)if(i[c][0]==="enter"&&i[c][1].type==="strikethroughSequenceTemporary"&&i[c][1]._close){let d=c;for(;d--;)if(i[d][0]==="exit"&&i[d][1].type==="strikethroughSequenceTemporary"&&i[d][1]._open&&i[c][1].end.offset-i[c][1].start.offset===i[d][1].end.offset-i[d][1].start.offset){i[c][1].type="strikethroughSequence",i[d][1].type="strikethroughSequence";const u={type:"strikethrough",start:Object.assign({},i[d][1].start),end:Object.assign({},i[c][1].end)},m={type:"strikethroughText",start:Object.assign({},i[d][1].end),end:Object.assign({},i[c][1].start)},h=[["enter",u,l],["enter",i[d][1],l],["exit",i[d][1],l],["enter",m,l]],p=l.parser.constructs.insideSpan.null;
vendor: 4,158 bytes, line 1079
1079p&&Co(h,h.length,0,v0(p,i.slice(d+1,c),l)),Co(h,h.length,0,[["exit",m,l],["enter",i[c][1],l],["exit",i[c][1],l],["exit",u,l]]),Co(i,d-1,c-d+3,h),c=d+h.length-2;break}}for(c=-1;++c<i.length;)i[c][1].type==="strikethroughSequenceTemporary"&&(i[c][1].type="data");return i}function n(i,l,c){const d=this.previous,u=this.events;let m=0;return h;function h(f){return d===126&&u[u.length-1][1].type!=="characterEscape"?c(f):(i.enter("strikethroughSequenceTemporary"),p(f))}function p(f){const g=zc(d);if(f===126)return m>1?c(f):(i.consume(f),m++,p);if(m<2&&!a)return c(f);const b=i.exit("strikethroughSequenceTemporary"),v=zc(f);return b._open=!v||v===2&&!!g,b._close=!g||g===2&&!!v,l(f)}}}class Fhe{constructor(){this.map=[]}add(t,a,o){Uhe(this,t,a,o)}consume(t){if(this.map.sort(function(n,i){return n[0]-i[0]}),this.map.length===0)return;let a=this.map.length;const o=[];for(;a>0;)a-=1,o.push(t.slice(this.map[a][0]+this.map[a][1]),this.map[a][2]),t.length=this.map[a][0];o.push(t.slice()),t.length=0;let r=o.pop();for(;r;){for(const n of r)t.push(n);r=o.pop()}this.map.length=0}}function Uhe(e,t,a,o){let r=0;if(!(a===0&&o.length===0)){for(;r<e.map.length;){if(e.map[r][0]===t){e.map[r][1]+=a,e.map[r][2].push(...o);return}r+=1}e.map.push([t,a,o])}}function Ghe(e,t){let a=!1;const o=[];for(;t<e.length;){const r=e[t];if(a){if(r[0]==="enter")r[1].type==="tableContent"&&o.push(e[t+1][1].type==="tableDelimiterMarker"?"left":"none");else if(r[1].type==="tableContent"){if(e[t-1][1].type==="tableDelimiterMarker"){const n=o.length-1;o[n]=o[n]==="left"?"center":"right"}}else if(r[1].type==="tableDelimiterRow")break}else r[0]==="enter"&&r[1].type==="tableDelimiterRow"&&(a=!0);t+=1}return o}function zhe(){return{flow:{null:{name:"table",tokenize:Hhe,resolveAll:Khe}}}}function Hhe(e,t,a){const o=this;let r=0,n=0,i;return l;function l(A){let $=o.events.length-1;for(;$>-1;){const T=o.events[$][1].type;if(T==="lineEnding"||T==="linePrefix")$--;else break}const O=$>-1?o.events[$][1].type:null,V=O==="tableHead"||O==="tableRow"?C:c;return V===C&&o.parser.lazy[o.now().line]?a(A):V(A)}function c(A){return e.enter("tableHead"),e.enter("tableRow"),d(A)}function d(A){return A===124||(i=!0,n+=1),u(A)}function u(A){return A===null?a(A):Ae(A)?n>1?(n=0,o.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(A),e.exit("lineEnding"),p):a(A):Ge(A)?Xe(e,u,"whitespace")(A):(n+=1,i&&(i=!1,r+=1),A===124?(e.enter("tableCellDivider"),e.consume(A),e.exit("tableCellDivider"),i=!0,u):(e.enter("data"),m(A)))}function m(A){return A===null||A===124||bt(A)?(e.exit("data"),u(A)):(e.consume(A),A===92?h:m)}function h(A){return A===92||A===124?(e.consume(A),m):m(A)}function p(A){return o.interrupt=!1,o.parser.lazy[o.now().line]?a(A):(e.enter("tableDelimiterRow"),i=!1,Ge(A)?Xe(e,f,"linePrefix",o.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(A):f(A))}function f(A){return A===45||A===58?b(A):A===124?(i=!0,e.enter("tableCellDivider"),e.consume(A),e.exit("tableCellDivider"),g):R(A)}function g(A){return Ge(A)?Xe(e,b,"whitespace")(A):b(A)}function b(A){return A===58?(n+=1,i=!0,e.enter("tableDelimiterMarker"),e.consume(A),e.exit("tableDelimiterMarker"),v):A===45?(n+=1,v(A)):A===null||Ae(A)?w(A):R(A)}function v(A){return A===45?(e.enter("tableDelimiterFiller"),y(A)):R(A)}function y(A){return A===45?(e.consume(A),y):A===58?(i=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(A),e.exit("tableDelimiterMarker"),k):(e.exit("tableDelimiterFiller"),k(A))}function k(A){return Ge(A)?Xe(e,w,"whitespace")(A):w(A)}function w(A){return A===124?f(A):A===null||Ae(A)?!i||r!==n?R(A):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(A)):R(A)}function R(A){return a(A)}function C(A){return e.enter("tableRow"),P(A)}function P(A){return A===124?(e.enter("tableCellDivider"),e.consume(A),e.exit("tableCellDivider"),P):A===null||Ae(A)?(e.exit("tableRow"),t(A)):Ge(A)?Xe(e,P,"whitespace")(A):(e.enter("data"),N(A))}function N(A){return A===null||A===124||bt(A)?(e.exit("data"),P(A)):(e.consume(A),A===92?E:N)}function E(A){return A===92||A===124?(e.consume(A),N):N(A)}}function Khe(e,t){let a=-1,o=!0,r=0,n=[0,0,0,0],i=[0,0,0,0],l=!1,
1079c=0,d,u,m;const h=new Fhe;for(;++a<e.length;){const p=e[a],f=p[1];p[0]==="enter"?f.type==="tableHead"?(l=!1,c!==0&&(kA(h,t,c,d,u),u=void 0,c=0),d={type:"table",start:Object.assign({},f.start),end:Object.assign({},f.end)},h.add(a,0,[["enter",d,t]])):f.type==="tableRow"||f.type==="tableDelimiterRow"?(o=!0,m=void 0,n=[0,0,0,0],i=[0,a+1,0,0],l&&(l=!1,u={type:"tableBody",start:Object.assign({},f.start),end:Object.assign({},f.end)},h.add(a,0,[["enter",u,t]])),r=f.type==="tableDelimiterRow"?2:u?3:1):r&&(f.type==="data"||f.type==="tableDelimiterMarker"||f.type==="tableDelimiterFiller")?(o=!1,i[2]===0&&(n[1]!==0&&(i[0]=i[1],m=Lp(h,t,n,r,void 0,m),n=[0,0,0,0]),i[2]=a)):f.type==="tableCellDivider"&&(o?o=!1:(n[1]!==0&&(i[0]=i[1],m=Lp(h,t,n,r,void 0,m)),n=i,i=[n[1],a,0,0])):f.type==="tableHead"?(l=!0,c=a):f.type==="tableRow"||f.type==="tableDelimiterRow"?(c=a,n[1]!==0?(i[0]=i[1],m=Lp(h,t,n,r,a,m)):i[1]!==0&&(m=Lp(h,t,i,r,a,m)),r=0):r&&(f.type==="data"||f.type==="tableDelimiterMarker"||f.type==="tableDelimiterFiller")&&(i[3]=a)}for(c!==0&&kA(h,t,c,d,u),h.consume(t.events),a=-1;++a<t.events.length;){const p=t.events[a];p[0]==="enter"&&p[1].type==="table"&&(p[1]._align=Ghe(t.events,a))}return e}function Lp(e,t,a,o,r,n){const i=o===1?"tableHeader":o===2?"tableDelimiter":"tableData",l="tableContent";a[0]!==0&&(n.end=Object.assign({},Nl(t.events,a[0])),e.add(a[0],0,[["exit",n,t]]));const c=Nl(t.events,a[1]);if(n={type:i,start:Object.assign({},c),end:Object.assign({},c)},e.add(a[1],0,[["enter",n,t]]),a[2]!==0){const d=Nl(t.events,a[2]),u=Nl(t.events,a[3]),m={type:l,start:Object.assign({},d),end:Object.assign({},u)};if(e.add(a[2],0,[["enter",m,t]]),o!==2){const h=t.events[a[2]],p=t.events[a[3]];if(h[1].end=Object.assign({},p[1].end),h[1].type="chunkText",h[1].contentType="text",a[3]>a[2]+1){const f=a[2]+1,g=a[3]-a[2]-1;e.add(f,g,[])}}e.add(a[3]+1,0,[["exit",m,t]])}return r!==void 0&&(n.end=Object.assign({},Nl(t.events,r)),e.add(r,0,[["exit",n,t]]),n=void 0),n}function kA(e,t,a,o,r){const n=[],i=Nl(t.events,a);r&&(r.end=Object.assign({},i),n.push(["exit",r,t])),o.end=Object.assign({},i),n.push(["exit",o,t]),e.add(a+1,0,n)}function Nl(e,t){const a=e[t],o=a[0]==="enter"?"start":"end";return a[1][o]}const Qhe={name:"tasklistCheck",tokenize:Jhe};function Whe(){return{text:{91:Qhe}}}function Jhe(e,t,a){const o=this;return r;function r(c){return o.previous!==null||!o._gfmTasklistFirstContentOfListItem?a(c):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(c),e.exit("taskListCheckMarker"),n)}function n(c){return bt(c)?(e.enter("taskListCheckValueUnchecked"),e.consume(c),e.exit("taskListCheckValueUnchecked"),i):c===88||c===120?(e.enter("taskListCheckValueChecked"),e.consume(c),e.exit("taskListCheckValueChecked"),i):a(c)}function i(c){return c===93?(e.enter("taskListCheckMarker"),e.consume(c),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),l):a(c)}function l(c){return Ae(c)?t(c):Ge(c)?e.check({tokenize:Xhe},t,a)(c):a(c)}}function Xhe(e,t,a){return Xe(e,o,"whitespace");function o(r){return r===null?a(r):t(r)}}function Yhe(e){return Sq([Che(),$he(),Vhe(e),zhe(),Whe()])}const Zhe={};function efe(e){const t=this,a=e||Zhe,o=t.data(),r=o.micromarkExtensions||(o.micromarkExtensions=[]),n=o.fromMarkdownExtensions||(o.fromMarkdownExtensions=[]),i=o.toMarkdownExtensions||(o.toMarkdownExtensions=[]);r.push(Yhe(a)),n.push(bhe()),i.push(yhe(a))}function tfe(){const{slug:e}=on(),t=Goe(e);if(!t)return s.jsx(fo,{to:"/faq",replace:!0});const a=t.categoria==="Comparador"?zoe(t,3):pO(t.categoria).filter(u=>u.slug!==t.slug),o=t.categoria==="Comparador"?null:Voe[t.categoria],r=t.categoria==="Comparador"?"":Qy[t.categoria],n=Uoe.includes(t.categoria)?t.categoria:"GRU",i=t.corpo??t.desenvolvimento??"",l=`${t.respostaRapida} 1080 1081${Hoe(i)}`.trim(),c={"@context":"https://schema.org","@type":"FAQPage",...t.dateModified?{dateModified:t.dateModified}:{},mainEntity:[{"@type":"Question",name:t.pergunta,acceptedAnswer:{"@type":"Answer",text:l}}]},d={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"InÃcio",item:"https://www.xpark.ai/"},{"@type":"ListItem",position:2,name:"FAQ",item:"https://www.xpark.ai/faq"},{"@type":"ListItem",position:3,name:t.pergunta,item:`https://www.xpark.ai/faq/${t.slug}`}]};return s.jsxs("div",{className:"font-geist text-ink",children:[s.jsx(Ye,{title:Qoe(t),description:Woe(t),canonicalPath:Xk(t)?void 0:t.canonicalPath,path:`/faq/${t.slug}`,type:"article",jsonLd:[c,d]}),s.jsxs("article",{className:"container max-w-3xl py-14 md:py-20",children:[s.jsxs("nav",{"aria-label":"Breadcrumb",className:"mb-8 font-mono text-[10px] uppercase tracking-[0.22em] text-mute",children:[s.jsx(G,{to:"/",className:"hover:text-ink",children:"InÃcio"}),s.jsx("span",{className:"mx-2",children:"/"}),s.jsx(G,{to:"/faq",className:"hover:text-ink",children:"FAQ"}),s.jsx("span",{className:"mx-2",children:"/"}),s.jsx("span",{className:"text-ink",children:Qy[t.categoria]})]}),s.jsx("h1",{className:"font-geist text-3xl font-semibold leading-[1.15] tracking-tight md:text-4xl",children:t.pergunta}),s.jsxs("div",{className:"mt-8 rounded-lg border border-gold/40 bg-gold/5 p-6 md:p-7",children:[s.jsx("p",{className:"font-mono text-[10px] uppercase tracking-[0.22em] text-gold",children:"Resposta rápida"}),s.jsx("p",{className:"mt-3 text-lg leading-relaxed text-ink",children:t.respostaRapida}),t.dateModified&&s.jsxs("p",{className:"mt-3 text-xs text-mute",children:["Ãltima atualização: ",t.dateModified.split("-").reverse().join("/")]})]}),i&&(t.corpo?s.jsx("div",{className:"mt-10 text-ink/90",children:s.jsx(Vme,{remarkPlugins:[efe],components:{h2:({children:u})=>s.jsx("h2",{className:"mt-10 font-display text-2xl font-semibold uppercase tracking-tight text-ink md:text-3xl",children:u}),p:({children:u})=>s.jsx("p",{className:"mt-4 text-lg leading-relaxed text-ink/85",children:u}),ul:({children:u})=>s.jsx("ul",{className:"mt-4 space-y-2 pl-0 text-lg leading-relaxed text-ink/85",children:u}),li:({children:u})=>s.jsx("li",{className:"relative pl-6 before:absolute before:left-0 before:top-[0.7em] before:h-1.5 before:w-1.5 before:rounded-full before:bg-gold",children:u}),table:({children:u})=>s.jsx("div",{className:"mt-5 overflow-x-auto rounded-card border border-ink/10",children:s.jsx("table",{className:"w-full border-collapse text-left text-sm",children:u})}),th:({children:u})=>s.jsx("th",{className:"bg-ink/[0.03] px-3 py-2 font-medium text-mute",children:u}),td:({children:u})=>s.jsx("td",{className:"border-t border-ink/10 px-3 py-2 text-ink",children:u}),a:({href:u,children:m})=>s.jsx(G,{to:u??"/",className:"text-ink underline decoration-gold underline-offset-4 hover:text-gold",children:m}),strong:({children:u})=>s.jsx("strong",{className:"font-semibold text-ink",children:u})},children:t.corpo})}):s.jsx("div",{className:"mt-10 space-y-6 text-lg leading-relaxed text-ink/90",children:s.jsx("p",{children:i})})),s.jsxs("div",{className:"mt-12 flex flex-col gap-3 sm:flex-row",children:[s.jsx(G,{to:`/escolher?airport=${n}`,className:"rounded-full bg-ink px-6 py-3 text-center font-mono text-[11px] uppercase tracking-[0.18em] text-paper transition hover:bg-ink/85",children:"Reservar vaga"}),s.jsx(G,{to:"/aeroportos",className:"rounded-full border border-ink/20 px-6 py-3 text-center font-mono text-[11px] uppercase tracking-[0.18em] text-ink transition hover:border-gold hover:text-gold",children:"Comparar no Xpark"})]}),o&&s.jsxs("p",{className:"mt-8 text-sm text-mute",children:["Veja também o hub de"," ",s.jsxs(G,{to:`/aeroportos/${o}`,className:"text-ink underline decoration-gold underline-offset-4 hover:text-gold",children:["estacionamento no Aeroporto de ",r]}),"."]}),a.length>0&&s.jsxs("section",{className:"mt-16 border-t border-ink/10 pt-10",children:[s.jsx("h2",{className:"font-mono text-[10px] uppercase tracking-[0.22em] text-mute",children:t.categoria==="Comparador"?"Continue lendo":`Outras perguntas sobre estacionamento em ${r}`}),s.jsx("ul",{className:"mt-4 divide-y divide-ink/10",children:a.map(u=>s.jsx("li",{children:s.jsx(G,{to:`/faq/${u.slug}`,className:"block py-4 text-base leading-snug transition hover:text-gold",children:u.pergunta})},u.slug))})]})]})]})}const afe=e=>e&&e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),ofe=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function rfe(){cn();const[e]=Ao(),t=(e.get("r")||"").trim(),a=ofe.test(t),[o,r]=x.use
1081State(a),[n,i]=x.useState(null),[l,c]=x.useState(null),[d,u]=x.useState(0),[m,h]=x.useState(""),[p,f]=x.useState(!1),[g,b]=x.useState(!1),[v,y]=x.useState(null);x.useEffect(()=>{if(!a)return;let w=!0;return(async()=>{const{data:R,error:C}=await ze.functions.invoke("review-context",{body:{bookingId:t}});w&&(C||!(R!=null&&R.ok)||(R==null?void 0:R.found)===!1?c("Não encontramos essa reserva. Confira o link que você recebeu."):i(R),r(!1))})(),()=>{w=!1}},[t,a]);async function k(){if(d<1)return;f(!0),y(null);const{data:w,error:R}=await ze.functions.invoke("submit-review",{body:{bookingId:t,rating:d,comment:m.trim()||void 0,source:"checkout"}});if(f(!1),R&&!w){y("Não foi possÃvel enviar agora. Tente novamente em instantes.");return}if(!(w!=null&&w.ok)){y((w==null?void 0:w.error)??"Não foi possÃvel enviar sua avaliação.");return}b(!0)}return s.jsxs("div",{className:"min-h-[70vh] bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"Avalie sua experiência com o xpark",description:"Conte como foi reservar seu estacionamento de aeroporto pelo xpark.",path:"/avaliar",noindex:!0}),s.jsx("div",{className:"container max-w-xl py-12 md:py-16",children:a?o?s.jsx($d,{children:s.jsxs("div",{className:"flex items-center gap-2 text-sm text-tech-mute",children:[s.jsx(Lb,{className:"h-4 w-4 animate-spin"})," Carregando sua reserva..."]})}):l?s.jsxs($d,{children:[s.jsx("h1",{className:"font-geist text-2xl font-semibold",children:"Link não reconhecido"}),s.jsx("p",{className:"mt-3 text-sm text-tech-mute",children:l})]}):g||n!=null&&n.alreadyReviewed?s.jsxs($d,{children:[s.jsx($L,{className:"h-9 w-9 text-tech-accent"}),s.jsx("h1",{className:"mt-3 font-geist text-2xl font-semibold",children:n!=null&&n.alreadyReviewed&&!g?"Você já avaliou esta reserva, obrigado!":"Obrigado pela avaliação!"}),s.jsx("p",{className:"mt-3 text-sm text-tech-mute",children:"Sua opinião ajuda o xpark a melhorar a experiência de quem viaja. Depois de uma conferência rápida, ela pode aparecer na nossa página pública de avaliações."}),s.jsxs("div",{className:"mt-6 flex flex-wrap gap-2",children:[s.jsx(G,{to:"/avaliacoes",className:"inline-flex h-11 items-center rounded-full bg-tech-fg px-5 text-sm font-medium text-tech-bg",children:"Ver avaliações"}),s.jsx(G,{to:"/",className:"inline-flex h-11 items-center rounded-full border border-tech-border px-5 text-sm font-medium",children:"Voltar ao inÃcio"})]})]}):s.jsxs($d,{children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.18em] text-tech-mute",children:"Avaliação da experiência de compra"}),s.jsxs("h1",{className:"mt-2 font-geist text-2xl font-semibold",children:["Como foi sua experiência de compra com o xpark",n!=null&&n.firstName?`, ${afe(n.firstName)}`:"","?"]}),s.jsx("p",{className:"mt-3 text-sm text-tech-mute",children:"Aqui você avalia o xpark: a facilidade de encontrar a vaga, reservar, pagar e o atendimento. Não é uma avaliação do pátio ou da operadora."}),((n==null?void 0:n.unitName)||(n==null?void 0:n.airport))&&s.jsxs("p",{className:"mt-2 text-sm text-tech-fg/70",children:["Reserva ",n!=null&&n.unitName?`na ${n.unitName}`:"",n!=null&&n.airport?` (${n.airport})`:"","."]}),s.jsx("div",{className:"mt-6",children:s.jsx(Wr,{value:d,onChange:u,size:"lg"})}),s.jsx("label",{className:"mt-6 block text-sm text-tech-mute",htmlFor:"comment",children:"Quer contar mais? (opcional)"}),s.jsx("textarea",{id:"comment",rows:4,maxLength:1500,value:m,onChange:w=>h(w.target.value),placeholder:"O que funcionou bem, o que podemos melhorar...",className:"mt-2 w-full rounded-xl border border-tech-border bg-tech-bg p-3 text-sm outline-none focus:border-tech-fg"}),v&&s.jsx("p",{className:"mt-3 text-sm text-red-500",children:v}),s.jsxs("button",{type:"button",disabled:d<1||p,onClick:k,className:ne("mt-6 inline-flex h-11 items-center gap-2 rounded-full bg-tech-fg px-6 text-sm font-semibold text-tech-bg",(d<1||p)&&"cursor-not-allowed opacity-40"),children:[p?s.jsx(Lb,{className:"h-4 w-4 animate-spin"}):null,"Enviar avaliação"]})]}):s.jsxs($d,{children:[s.jsx("h1",{className:"font-geist text-2xl font-semibold",children:"Avaliação do xpark"}),s.jsx("p",{className:"mt-3 text-sm text-tech-mute",children:"Para avaliar, use o link que enviamos no WhatsApp ou na tela de confirmação da sua reserva. Ele já vem com os dados certos da sua compra."}),s.jsx(G,{to:"/minhas-reservas",className:"mt-6 inline-flex h-11 items-center rounded-full bg-tech-fg px-5 text-sm font-medium text-tech-bg",children:"Ver minhas reservas"})]})})]})}function $d({children:e}){return s.jsx("div",{className:"rounded-2xl border border-tech-border bg-tech-card p-6 md:p-8",children:e})}const kx=9,nfe=e=>new Date(e).toLocaleDateString("pt-BR",{day:"2-digit",month:"short",year:"numeric"});
1081function sfe(){const[e,t]=x.useState(null),[a,o]=Ao(),[r,n]=x.useState(kx),i=(a.get("unidade")??"").toUpperCase(),l=e&&i?e.filter(g=>g.airport===i):e,c=Array.from(new Set((e??[]).map(g=>g.airport).filter(g=>!!g&&!!dr[g])));x.useEffect(()=>{let g=!0;return(async()=>{const{data:b,error:v}=await ze.rpc("public_reviews");g&&t(v?[]:b??[])})(),()=>{g=!1}},[]);const d=(l==null?void 0:l.length)??0,u=x.useMemo(()=>!l||l.length===0?0:l.reduce((g,b)=>g+b.rating,0)/l.length,[l]),m=x.useMemo(()=>{if(!l||l.length<3)return;const g=l.filter(b=>(b.comment??"").trim().length>0);return{"@context":"https://schema.org","@type":"Organization","@id":"https://www.xpark.ai/#organization",name:"xpark",url:"https://www.xpark.ai/",aggregateRating:{"@type":"AggregateRating",ratingValue:Math.floor(u*10)/10,ratingCount:d,reviewCount:g.length,bestRating:5,worstRating:1},review:g.slice(0,20).map(b=>({"@type":"Review",reviewRating:{"@type":"Rating",ratingValue:Number(b.rating),bestRating:5,worstRating:1},author:{"@type":"Person",name:(b.display_name??"").trim()||"Cliente xpark"},reviewBody:(b.comment??"").trim(),datePublished:b.created_at.slice(0,10)}))}},[l,u,d]),h=c.map(g=>{const b=(e??[]).filter(v=>v.airport===g);return{u:g,count:b.length,avg:b.reduce((v,y)=>v+y.rating,0)/(b.length||1)}}),p=g=>(Math.floor(g*10)/10).toFixed(1).replace(".",","),f=[...l??[]].sort((g,b)=>{var v,y;return+!!((v=b.comment)!=null&&v.trim())-+!!((y=g.comment)!=null&&y.trim())}).slice(0,r);return s.jsxs("div",{className:"min-h-screen bg-paper text-ink",children:[s.jsx(Ye,{title:"Avaliações reais de quem reservou pelo xpark",description:"Notas e comentários de clientes sobre a experiência de reservar estacionamento de aeroporto pelo xpark, separados por unidade. Dados reais, sem nota inventada.",path:"/avaliacoes",jsonLd:m}),s.jsx(Bn,{title:s.jsxs(s.Fragment,{children:["O que dizem os clientes, ",s.jsx("span",{className:"text-gold-dark",children:"unidade por unidade"}),"."]}),description:"Cada avaliação vem de uma reserva real feita no xpark e aparece junto da unidade onde o cliente estacionou.",children:l&&d>0?s.jsxs("div",{className:"mt-8 inline-flex items-center gap-4 roun
1081ded-full border border-border bg-paper px-5 py-3",children:[s.jsx("span",{className:"font-home-heading text-2xl font-bold tabular-nums",children:p(u)}),s.jsx(Wr,{value:u,size:"sm"}),s.jsxs("span",{className:"text-sm text-mute",children:[d," ",d===1?"avaliação":"avaliações",i&&dr[i]?` em ${dr[i].label}`:""]})]}):null}),s.jsxs("div",{className:"container py-12 md:py-16",children:[h.length>0&&s.jsx(ct,{stagger:!0,className:`grid gap-4 ${h.length===2?"md:grid-cols-2":"md:grid-cols-3"}`,children:h.map(({u:g,count:b,avg:v})=>{const y=i===g;return s.jsxs("div",{"data-reveal-item":!0,className:`flex h-full flex-col rounded-card border p-6 text-left transition-all duration-200 motion-safe:hover:-translate-y-0.5 ${y?"border-gold bg-cream ring-1 ring-gold/40":"border-border bg-secondary hover:border-ink/30"}`,children:[s.jsx("span",{className:"flex h-10 w-10 items-center justify-center rounded-xl bg-ink text-gold",children:s.jsx(en,{className:"h-5 w-5","aria-hidden":!0})}),s.jsx("span",{className:"mt-4 font-home-heading text-xl font-bold",children:dr[g].label}),s.jsxs("span",{className:"mt-3 flex items-center gap-2",children:[s.jsx("span",{className:"font-home-heading text-2xl font-bold tabular-nums",children:p(v)}),s.jsx(Wr,{value:v,size:"sm"})]}),s.jsxs("span",{className:"mt-1 text-sm text-mute",children:[b," ",b===1?"avaliação":"avaliações"]}),s.jsxs("div",{className:"mt-5 flex flex-wrap gap-2",children:[s.jsxs(G,{to:dr[g].path,className:"inline-flex items-center rounded-full bg-ink px-5 py-2.5 text-sm font-semibold text-paper transition-colors hover:bg-gold hover:text-ink",children:["Ver unidade ",s.jsx("span",{"aria-hidden":"true",className:"ml-2",children:"â"})]}),s.jsx("button",{type:"button",onClick:()=>{o(y?{}:{unidade:g}),n(kx)},"aria-pressed":y,className:"inline-flex items-center rounded-full border border-ink/20 px-5 py-2.5 text-sm font-semibold text-ink transition-colors hover:border-ink",children:y?"Mostrar todas":"Filtrar avaliações"})]})]},g)})}),l===null?s.jsx("p",{className:"mt-10 text-sm text-mute",children:"Carregando avaliações..."}):d===0?s.jsx("p",{className:"mt-10 text-sm text-mute",children:"Ainda não temos avaliações publicadas para esta seleção."}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"mt-10 grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:f.map(g=>{var b;return s.jsxs("article",{className:"flex flex-col rounded-card border border-border bg-paper p-6 animate-fade-in",children:[g.airport&&dr[g.airport]?s.jsxs(G,{to:dr[g.airport].path,className:"inline-flex w-fit items-center gap-1.5 rounded-full bg-gold/15 px-3 py-1 text-xs font-semibold text-ink hover:bg-gold/25",children:[s.jsx(en,{className:"h-3.5 w-3.5 text-gold-dark","aria-hidden":!0}),dr[g.airport].label,g.category?` · ${Mf[g.category]??g.category}`:""]}):s.jsx("span",{className:"w-fit rounded-full bg-secondary px-3 py-1 text-xs font-semibold",children:"Reserva pelo xpark"}),s.jsxs("div",{className:"mt-4 flex items-center justify-between gap-2",children:[s.jsx(Wr,{value:g.rating,size:"sm"}),s.jsx("span",{className:"text-xs text-mute",children:nfe(g.created_at)})]}),s.jsx("p",{className:"mt-3 flex-1 text-sm leading-relaxed text-ink/85",children:(b=g.comment)!=null&&b.trim()?`â${g.comment.trim()}â`:"Avaliação sem comentário."}),s.jsx("p",{className:"mt-4 text-sm font-semibold",children:g.display_name??"Cliente xpark"})]},g.id)})}),d>r&&s.jsx("div",{className:"mt-8 flex justify-center",children:s.jsxs("button",{type:"button",onClick:()=>n(g=>g+kx),className:"rounded-full border border-ink px-6 py-3 text-sm font-semibold transition-colors hover:bg-ink hover:text-paper",children:["Ver mais avaliações (",d-r," restantes)"]})})]}),s.jsxs("div",{className:"mt-12 rounded-card border border-dashed border-border p-5 text-sm text-mute",children:["Reservou pelo xpark e quer avaliar? Use o link que enviamos no WhatsApp ou acesse"," ",s.jsx(G,{to:"/minhas-reservas",className:"underline",children:"minhas reservas"}),"."]})]})]})}const wx="block font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute mb-1.5",ife="w-full h-11 rounded-xl border border-tech-border bg-tech-card px-3 font-geist text-sm text-tech-fg outline-none transition focus:border-tech-fg";function lfe(){cn();const e=Nr(),[t,a]=Ao(),o=e0(),r=(t.get("airport")||"").toUpperCase(),n=r==="GRU"||r==="VCP"?r:o.airport||"GRU",[i,l]=x.useState(n),[c,d]=x.useState(o.entrada||""),[u,m]=x.useState(o.entrada_hora||"12:00"),[h,p]=x.useState(o.saida||""),[f,g]=x.use
1081State(o.saida_hora||"12:00"),[b,v]=x.useState(typeof o.priority=="number"?o.priority:50);x.useEffect(()=>{if((t.get("airport")||"").toUpperCase()===i)return;const w=new URLSearchParams(t);w.set("airport",i),a(w,{replace:!0})},[i,t,a]);const y=k=>{k.preventDefault();try{sessionStorage.setItem("xpark_source","multipark")}catch{}t0({airport:i,entrada:c,entrada_hora:u,saida:h,saida_hora:f,priority:b});const w=new URLSearchParams({airport:i,entrada:c,entrada_hora:u,saida:h,saida_hora:f,priority:String(b),src:"multipark"});Om(w),e(`/escolher?${w.toString()}`)};return s.jsxs("div",{className:"flex min-h-screen flex-col bg-tech-bg font-geist text-tech-fg",children:[s.jsx("header",{className:"border-b border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container flex h-16 items-center justify-between",children:[s.jsx(G,{to:"/multipark","aria-label":"xpark Multipark · inÃcio",children:s.jsx(ac,{partner:"multipark"})}),s.jsx("span",{className:"hidden font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute md:inline",children:"Estacionamento aeroportos"})]})}),s.jsx("main",{className:"flex-1",children:s.jsxs("div",{className:"mx-auto w-full max-w-[640px] px-5 py-12 md:py-20",children:[s.jsxs("div",{className:"mb-8 text-center",children:[s.jsx("h1",{className:"sr-only",children:"Reserve sua vaga Multipark nos aeroportos"}),s.jsx("p",{className:"text-sm text-tech-mute",children:"Escolha aeroporto, perÃodo e o que mais importa para você."})]}),s.jsx(m0,{className:"mb-6"}),s.jsxs("form",{onSubmit:y,className:"rounded-3xl border border-tech-border bg-tech-card p-6 shadow-[0_8px_40px_-16px_hsl(var(--tech-fg)/0.12)] md:p-8",children:[s.jsxs("div",{className:"grid grid-cols-1 gap-3",children:[s.jsxs("div",{children:[s.jsx("label",{className:wx,htmlFor:"airport",children:"Aeroporto"}),s.jsxs("select",{id:"airport",value:i,onChange:k=>l(k.target.value),className:ife,children:[s.jsx("option",{value:"GRU",children:"GRU · Guarulhos"}),s.jsx("option",{value:"VCP",children:"VCP · Viracopos"})]})]}),s.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[s.jsxs("div",{children:[s.jsx("label",{className:wx,htmlFor:"entrada",children:"Entrada"}),s.jsxs("div",{className:"flex h-11 items-stretch overflow-hidden rounded-xl border border-tech-border bg-tech-card focus-within:border-tech-fg",children:[s.jsx("input",{id:"entrada",type:"date",value:c,onChange:k=>d(k.target.value),min:new Date().toISOString().slice(0,10),required:!0,className:"min-w-0 flex-1 bg-transparent px-3 font-geist text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de entrada",type:"time",value:u,onChange:k=>m(k.target.value),required:!0,className:"w-[110px] shrink-0 bg-transparent px-2 font-geist text-sm text-tech-fg outline-none"})]})]}),s.jsxs("div",{children:[s.jsx("label",{className:wx,htmlFor:"saida",children:"SaÃda"}),s.jsxs("div",{className:"flex h-11 items-stretch overflow-hidden rounded-xl border border-tech-border bg-tech-card focus-within:border-tech-fg",children:[s.jsx("input",{id:"saida",type:"date",value:h,onChange:k=>p(k.target.value),min:c||new Date().toISOString().slice(0,10),required:!0,className:"min-w-0 flex-1 bg-transparent px-3 font-geist text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de saÃda",type:"time",value:f,onChange:k=>g(k.target.value),required:!0,className:"w-[110px] shrink-0 bg-transparent px-2 font-geist text-sm text-tech-fg outline-none"})]})]})]})]}),s.jsx("div",{className:"mt-7 border-t border-tech-border pt-6",children:s.jsx(Ik,{value:b,onChange:v,variant:"multipark"})}),s.jsxs("button",{type:"submit",className:"mt-6 inline-flex h-14 w-full items-center justify-center gap-2 rounded-full bg-tech-fg font-geist text-base font-medium text-tech-bg transition hover:opacity-90",children:["Encontrar minha vaga ",s.jsx(aa,{className:"h-4 w-4"})]})]})]})}),s.jsx("footer",{className:"border-t border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container flex flex-col items-center justify-between gap-3 py-6 md:flex-row",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute",children:"© 2026 xpark · Estacionamento aeroportos"}),s.jsxs(G,{to:"/",className:"flex items-center gap-2 font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute transition hover:text-tech-fg",children:[s.jsx("span",{children:"powered by"}),s.jsx(Vg,{})]})]})})]})}const Cx="block font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute mb-1.5",cfe="w-full h-11 rounded-xl border border-tech-border bg-tech-card px-3 font-geist text-sm text-tech-fg outline-none transition focus:border-tech-fg",wA="VCP";function dfe(){cn();const e=Nr(),t=e0(),[a,o]=x.useState(t.entrada||""),[r,n]=x.useState(t.entrada_hora||"12:00"),[i,l]=x.useState(t.saida||""),[c,d]=x.useState(t.saida_hora||"12:00"),[u,m]=x.useState(typeof t.priority=="number"?t.priority:50),h=
1081p=>{p.preventDefault();try{sessionStorage.setItem("xpark_source","aerovalet")}catch{}t0({airport:wA,entrada:a,entrada_hora:r,saida:i,saida_hora:c,priority:u});const f=new URLSearchParams({airport:wA,entrada:a,entrada_hora:r,saida:i,saida_hora:c,priority:String(u),src:"aerovalet"});Om(f),e(`/escolher?${f.toString()}`)};return s.jsxs("div",{className:"flex min-h-screen flex-col bg-tech-bg font-geist text-tech-fg",children:[s.jsx("header",{className:"border-b border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container flex h-16 items-center justify-between",children:[s.jsx(G,{to:"/aerovalet","aria-label":"xpark Aerovalet - inÃcio",children:s.jsx(ac,{partner:"aerovalet",logoClassName:"h-6 md:h-7"})}),s.jsx("span",{className:"hidden font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute md:inline",children:"Estacionamento Viracopos"})]})}),s.jsx("main",{className:"flex-1",children:s.jsxs("div",{className:"mx-auto w-full max-w-[640px] px-5 py-12 md:py-20",children:[s.jsxs("div",{className:"mb-8 text-center",children:[s.jsx("h1",{className:"sr-only",children:"Reserve sua vaga Aerovalet no Aeroporto de Viracopos (VCP)"}),s.jsx("p",{className:"text-sm text-tech-mute",children:"Escolha o perÃodo e o que mais importa para você."})]}),s.jsx(m0,{className:"mb-6"}),s.jsxs("form",{onSubmit:h,className:"rounded-3xl border border-tech-border bg-tech-card p-6 shadow-[0_8px_40px_-16px_hsl(var(--tech-fg)/0.12)] md:p-8",children:[s.jsxs("div",{className:"grid grid-cols-1 gap-3",children:[s.jsxs("div",{children:[s.jsx("span",{className:Cx,children:"Aeroporto"}),s.jsxs("div",{className:`${cfe} flex items-center justify-between`,children:[s.jsx("span",{className:"font-geist text-sm text-tech-fg",children:"VCP · Viracopos"}),s.jsx("span",{className:"font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute",children:"Campinas · SP"})]})]}),s.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[s.jsxs("div",{children:[s.jsx("label",{className:Cx,htmlFor:"entrada",children:"Entrada"}),s.jsxs("div",{className:"flex h-11 items-stretch overflow-hidden rounded-xl border border-tech-border bg-tech-card focus-within:border-tech-fg",children:[s.jsx("input",{id:"entrada",type:"date",value:a,onChange:p=>o(p.target.value),min:new Date().toISOString().slice(0,10),required:!0,className:"min-w-0 flex-1 bg-transparent px-3 font-geist text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de entrada",type:"time",value:r,onChange:p=>n(p.target.value),required:!0,className:"w-[110px] shrink-0 bg-transparent px-2 font-geist text-sm text-tech-fg outline-none"})]})]}),s.jsxs("div",{children:[s.jsx("label",{className:Cx,htmlFor:"saida",children:"SaÃda"}),s.jsxs("div",{className:"flex h-11 items-stretch overflow-hidden rounded-xl border border-tech-border bg-tech-card focus-within:border-tech-fg",children:[s.jsx("input",{id:"saida",type:"date",value:i,onChange:p=>l(p.target.value),min:a||new Date().toISOString().slice(0,10),required:!0,className:"min-w-0 flex-1 bg-transparent px-3 font-geist text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de saÃda",type:"time",value:c,onChange:p=>d(p.target.value),required:!0,className:"w-[110px] shrink-0 bg-transparent px-2 font-geist text-sm text-tech-fg outline-none"})]})]})]})]}),s.jsx("div",{className:"mt-7 border-t border-tech-border pt-6",children:s.jsx(Ik,{value:u,onChange:m,variant:"aerovalet"})}),s.jsxs("button",{type:"submit",className:"mt-6 inline-flex h-14 w-full items-center justify-center gap-2 rounded-full bg-tech-fg font-geist text-base font-medium text-tech-bg transition hover:opacity-90",children:["Encontrar minha vaga ",s.jsx(aa,{className:"h-4 w-4"})]})]})]})}),s.jsx("footer",{className:"border-t border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container flex flex-col items-center justify-between gap-3 py-6 md:flex-row",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute",children:"© 2026 xpark · Estacionamento Viracopos"}),s.jsxs(G,{to:"/",className:"flex items-center gap-2 font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute transition hover:text-tech-fg",children:[s.jsx("span",{children:"powered by"}),s.jsx(Vg,{})]})]})})]})}const Px="block font-geist-mono text-[10px] uppercase tracking-[0.18em] text-tech-mute mb-1.5",ufe="w-full h-11 rounded-xl border border-tech-border bg-tech-card px-3 font-geist text-sm text-tech-fg outline-none transition focus:border-tech-fg";function mfe(){cn();const e=Nr(),[t,a]=Ao(),o=e0(),r="GRU",[n,i]=x.useState(o.entrada||""),[l,c]=x.useState(o.entrada_hora||"12:00"),[d,u]=x.useState(o.saida||""),[m,h]=x.useState(o.saida_hora||"12:00");x.useEffect(()=>{if(bN(),tq(),(t.get("airport")||"").toUpperCase()==="GRU")return;const g=new URLSearchParams(t);g.set("airport","GRU"),a(g,{replace:!0})},[t,a]);const p=f=>{f.preventDefault(),bN(),t0({airport:r,entrada:n,entrada_hora:l,s
1081aida:d,saida_hora:m,priority:100});const g=new URLSearchParams({airport:r,entrada:n,entrada_hora:l,saida:d,saida_hora:m,priority:"100",src:"valetina"});Om(g),e(`/escolher?${g.toString()}`)};return s.jsxs("div",{className:"flex min-h-screen flex-col bg-tech-bg font-geist text-tech-fg",children:[s.jsx("header",{className:"border-b border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container flex h-16 items-center justify-between",children:[s.jsx(G,{to:"/valetina","aria-label":"xpark Valetina, inÃcio",children:s.jsx(ac,{partner:"valetina",logoClassName:"h-5 md:h-5"})}),s.jsx("span",{className:"hidden font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute md:inline",children:"Valet, Guarulhos"})]})}),s.jsx("main",{className:"flex-1",children:s.jsxs("div",{className:"mx-auto w-full max-w-[640px] px-5 py-12 md:py-20",children:[s.jsxs("div",{className:"mb-8 text-center",children:[s.jsx("h1",{className:"sr-only",children:"Reserve sua vaga Valetina nos aeroportos"}),s.jsx("p",{className:"text-sm text-tech-mute",children:"Escolha o perÃodo e o que mais importa para você em Guarulhos."})]}),s.jsx(m0,{className:"mb-6"}),s.jsxs("form",{onSubmit:p,className:"rounded-3xl border border-tech-border bg-tech-card p-6 shadow-[0_8px_40px_-16px_hsl(var(--tech-fg)/0.12)] md:p-8",children:[s.jsxs("div",{className:"grid grid-cols-1 gap-3",children:[s.jsxs("div",{children:[s.jsx("label",{className:Px,htmlFor:"airport",children:"Aeroporto"}),s.jsx("input",{id:"airport",value:"GRU · Guarulhos",readOnly:!0,"aria-readonly":!0,className:`${ufe} cursor-not-allowed opacity-90`})]}),s.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[s.jsxs("div",{children:[s.jsx("label",{className:Px,htmlFor:"entrada",children:"Entrada"}),s.jsxs("div",{className:"flex h-11 items-stretch overflow-hidden rounded-xl border border-tech-border bg-tech-card focus-within:border-tech-fg",children:[s.jsx("input",{id:"entrada",type:"date",value:n,onChange:f=>i(f.target.value),min:new Date().toISOString().slice(0,10),required:!0,className:"min-w-0 flex-1 bg-transparent px-3 font-geist text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de entrada",type:"time",value:l,onChange:f=>c(f.target.value),required:!0,className:"w-[110px] shrink-0 bg-transparent px-2 font-geist text-sm text-tech-fg outline-none"})]})]}),s.jsxs("div",{children:[s.jsx("label",{className:Px,htmlFor:"saida",children:"SaÃda"}),s.jsxs("div",{className:"flex h-11 items-stretch overflow-hidden rounded-xl border border-tech-border bg-tech-card focus-within:border-tech-fg",children:[s.jsx("input",{id:"saida",type:"date",value:d,onChange:f=>u(f.target.value),min:n||new Date().toISOString().slice(0,10),required:!0,className:"min-w-0 flex-1 bg-transparent px-3 font-geist text-sm text-tech-fg outline-none"}),s.jsx("span",{"aria-hidden":!0,className:"my-2 w-px bg-tech-border"}),s.jsx("input",{"aria-label":"Hora de saÃda",type:"time",value:m,onChange:f=>h(f.target.value),required:!0,className:"w-[110px] shrink-0 bg-transparent px-2 font-geist text-sm text-tech-fg outline-none"})]})]})]})]}),s.jsxs("button",{type:"submit",className:"mt-7 inline-flex h-14 w-full items-center justify-center gap-2 rounded-full bg-tech-fg font-geist text-base font-medium text-tech-bg transition hover:opacity-90",children:["Encontrar minha vaga ",s.jsx(aa,{className:"h-4 w-4"})]})]})]})}),s.jsx("footer",{className:"border-t border-tech-border bg-tech-bg",children:s.jsxs("div",{className:"container flex flex-col items-center justify-between gap-3 py-6 md:flex-row",children:[s.jsx("p",{className:"font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute",children:"© 2026 xpark · Valet aeroportos"}),s.jsxs(G,{to:"/",className:"flex items-center gap-2 font-geist-mono text-[10px] uppercase tracking-[0.2em] text-tech-mute transition hover:text-tech-fg",children:[s.jsx("span",{children:"powered by"}),s.jsx(Vg,{})]})]})})]})}const Hc=(...e)=>e.map(t=>({v:t,l:t})),pfe=Hc("Saúde","Tecnologia","Direito","Engenharia","Comércio e vendas","Educação","Setor público","Autônomo ou empresário","Aposentado","Outra"),hfe=[{v:"1-2",l:"1 a 2"},{v:"3-5",l:"3 a 5"},{v:"6-12",l:"6 a 12"},{v:"12+",l:"Mais de 12"}],ffe=[{v:"nacional",l:"Nacionais"},{v:"internacional",l:"Internacionais"},{v:"ambas",l:"As duas"}
1081],gfe=[{v:"trabalho",l:"Trabalho"},{v:"lazer",l:"Lazer"},{v:"ambos",l:"Os dois"}],vfe=Hc("LATAM","GOL","Azul","Internacional","Outra"),xfe=Hc("TAP","American Airlines","United","Delta","Air France","KLM","Lufthansa","Iberia","Emirates","Qatar Airways","Turkish Airlines","Copa Airlines","AerolÃneas Argentinas","Air Europa","British Airways","ITA Airways","Swiss","Avianca","JetSMART","Sky Airline"),bfe=[{v:"sozinho",l:"Sozinho"},{v:"casal",l:"Em casal"},{v:"familia",l:"Em famÃlia"},{v:"amigos",l:"Com amigos"},{v:"trabalho",l:"Com colegas de trabalho"}],yfe=Hc("18-24","25-34","35-44","45-54","55-64","65+"),kfe=[{v:"economico",l:"Econômico"},{v:"conforto",l:"Conforto"},{v:"luxo",l:"Luxo"},{v:"aventura",l:"Aventura"}],wfe=["Praia","Gastronomia","Negócios","Cultura","Natureza","Esportes","Compras","Vida noturna","Parques temáticos","Eventos e shows"],Cfe=[{v:"1m",l:"No próximo mês"},{v:"3m",l:"Em até 3 meses"},{v:"6m",l:"Em até 6 meses"},{v:"12m",l:"Em até 1 ano"},{v:"sem_data",l:"Ainda sem data"}];function mo({options:e,value:t,onChange:a}){const o=r=>Array.isArray(t)?t.includes(r):t===r;return s.jsx("div",{className:"flex flex-wrap gap-2",children:e.map(r=>s.jsx("button",{type:"button",onClick:()=>a(r.v),className:ne("min-h-11 rounded-full border px-4 text-sm transition-colors",o(r.v)?"border-gold bg-gold text-tech-bg font-semibold":"border-tech-border text-tech-fg hover:border-tech-fg"),children:r.l},r.v))})}function ha({title:e,hint:t,children:a}){return s.jsxs("fieldset",{className:"border-t border-tech-border/60 pt-6",children:[s.jsx("legend",{className:"mb-3 font-geist text-base font-semibold text-tech-fg",children:e}),t&&s.jsx("p",{className:"-mt-2 mb-3 text-xs text-tech-mute",children:t}),a]})}const Wn="h-11 w-full rounded-full border border-tech-border bg-tech-bg px-4 text-sm outline-none focus:border-tech-fg",Bp=["Sua viagem","Com quem","Seu perfil","Próximas viagens"];function Pfe({token:e,embedded:t=!1}={}){cn();const[a]=Ao(),o=e||a.get("t")||"",[r,n]=x.useState(null),[i,l]=x.useState(null),[c,d]=x.useState(0),[u,m]=x.useState({destination:"",airlineGroup:"",airlineOther:"",tripStart:"",tripEnd:"",airline:"",reason:"",returnFlight:"",companions:"",kidsCount:"0",kidsAges:"",hasPet:"",ageRange:"",profession:"",professionOther:"",freq:"",scope:"",style:"",interests:[],nextDestinations:"",nextWhen:""}),h=D=>F=>m(U=>({...U,[D]:F})),p=D=>m(F=>({...F,interests:F.interests.includes(D)?F.interests.filter(U=>U!==D):[...F.interests,D]})),[f,g]=x.useState(!1),b=!0,[v,y]=x.useState(!1),[k,w]=x.useState(!1),[R,C]=x.useState(null),[P,N]=x.useState(null),[E,A]=x.useState(!1);x.useEffect(()=>{if(t||(document.title="Programa de Viajantes xpark"),!o){l("Link inválido.");return}ze.functions.invoke("traveler-context",{body:{token:o}}).then(({data:D,error:F})=>{if(F||!D||D.error){l("Este link não é válido ou expirou.");return}const U=D;n(U),m(L=>({...L,tripStart:L.tripStart||U.tripStart||"",tripEnd:L.tripEnd||U.tripEnd||""})),U.responded&&U.credit&&U.community&&N({...U.credit,airport:U.airport})})},[o]);const $=(r==null?void 0:r.timing)==="future",O=x.useMemo(()=>[u.destination.trim().length>1&&u.airline.trim().length>1&&!!u.reason&&(!u.tripStart||!u.tripEnd||u.tripEnd>=u.tripStart),!!u.companions&&u.hasPet!=="",!!u.ageRange&&!!u.profession&&(u.profession!=="Outra"||u.professionOther.trim().length>1)&&!!u.freq&&!!u.scope&&!!u.style&&u.interests.length>0,!!u.nextWhen&&f&&b],[u,f,b]),V=async()=>{C(null),w(!0);try{const{data:D,error:F}=await ze.functions.invoke("traveler-submit",{body:{token:o,profession:u.profession,professionOther:u.professionOther||null,flightsPerYear:u.freq,tripScope:u.scope,tripReason:u.reason,destination:u.destination,airline:u.airline,returnFlight:$&&u.returnFlight||null,tripStart:u.tripStart||null,tripEnd:u.tripEnd||null,companions:u.companions,kidsCount:u.companions==="familia"?Number(u.kidsCount)||0:null,kidsAges:u.companions==="familia"&&u.kidsAges||null,hasPet:u.hasPet==="sim",ageRange:u.ageRange,travelStyle:u.style,interests:u.interests,nextDestinations:u.nextDestinations||null,nextTripWhen:u.nextWhen,consentData:f,consentCommunity:b,consentMarketing:v}}),U=D;if(F||!(U!=null&&U.code)){C((U==null?void 0:U.error)==="already_responded"?"Você já respondeu. Confira o código no seu WhatsApp ou e-mail.":"Não foi possÃvel enviar agora. Tente de novo.");return}N({code:U.code,expiresAt:U.expiresAt,airport:U.airport??null}),window.scrollTo({top:0,behavior:"smooth"})}finally{w(!1)}},T=D=>s.jsx("div",{className:ne("bg-tech-bg font-geist text-tech-fg",t?"rounded-card":"min-h-[70vh]"),children:s.jsx("div",{className:t?"px-5 py-8 sm:px-8":"container max-w-xl py-10 sm:py-16",children:D})});if(i)return T(s.jsxs("div",{className:"rounded-card border border-tech-border p-6 text-center",children:[s.jsx("p",{className:"text-lg font-semibold",children:i}),s.jsx(G,{to:"/",className:"mt-6 inline-flex h-11 items-center rounded-full bg-tech-fg px-5 text-sm font-medium text-tech-bg",children:"Ir para o xpark"})]}));if(!r)return T(s.jsx("div",{className:"flex justify-center py-20",children:s.jsx(Lb,{className:"h-6 w-6 animate-spin text-tech-mute"})}));if(P){const D=new Date(P.expiresAt).toLocaleDateString("pt-BR"),F=`/${P.airport?`?aeroporto=${P.airport}`:""}#buscar-vaga`;return T(s.jsxs("div",{className:"rounded-panel border border-tech-border bg-tech-bg p-6 text-center sm:p-10",children:[s.jsx(qu,{className:"mx-auto h-8 w-8 text-gold"}),s.jsx("h1",{className:"mt-4 text-2xl font-semibold",children:"Sua diária grátis está garantida"}),s.jsx("p",{className:"mt-2 text-sm text-tech-mute",children:"No pagamento, digite este código no campo de cupom."}),s.jsxs("button",{type:"button",onClick:()=>{var U;(U=navigator.clipboard)==null||U.writeText(P.code),A(!0),setTimeout(()=>A(!1),1500)},className:"mx-auto mt-6 flex items-center gap-3 rounded-card border border-gold/60 px-5 py-4 font-geist-mono text-2xl font-bold tracking-widest",children:[P.code,E?s.jsx(On,{className:"h-5 w-5 text-gold"}):s.jsx(I1,{className:"h-5 w-5 text-tech-mute"})]}),s.jsxs("p",{className:"mx-auto mt-4 max-w-md rounded-card border border-tech-border p-4 text-sm text-tech-fg",children:["Você ganhou 1 diária grátis. Ela vale para reservas de ",s.jsx("strong",{children:"2 diárias ou mais"}),": você paga as outras e a diária grátis sai por nossa conta. Não soma com cupom de desconto."]}),s.jsxs("p",{className:"mt-3 text-sm text-tech-mute",children:["Vale até ",D,", uma vez, no site do xpark, com o mesmo telefone."]}),s.jsxs("div",{className:"mx-auto mt-6 max-w-md rounded-card border border-gold/40 p-4 text-left text-sm",children:[s.jsxs("p",{className:"flex items-center gap-2 font-semibold",children:[s.jsx(Ng,{className:"h-4 w-4 text-gold"})," Bem-vindo à Wanderlust, a comunidade do xpark"]}),s.jsx("p",{className:"mt-1 text-tech-mute",children:"Entre na sua conta e abra a aba Wanderlust em Minhas reservas para ver quem vai para o mesmo destino e se conectar."}),s.jsx(G,{to:"/minhas-reservas?tab=comunidade",className:"mt-3 inline-flex text-gold underline",children:"Abrir a comunidade"})]}),s.jsx("p",{className:"mt-6 text-sm",children:s.jsx(G,{to:"/minhas-reservas?tab=perfil&edit=1",className:"text-gold underline",children:"Complete seu cadastro para reservar mais rápido"})}),s.jsx(G,{to:F,className:"mt-6 inline-flex h-12 items-center rounded-full bg-gold px-7 text-sm font-semibold text-tech-bg",children:"Reservar no xpark"})]}))}return T(s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.2em] text-gold",children:"Wanderlust, a comunidade do xpark"}),s.jsxs("h1",{className:"mt-3 text-3xl font-semibold leading-tight",children:[r.firstName?`${r.firstName}, ganhe`:"Ganhe"," uma diária grátis"]}),s.jsxs("p",{className:"mt-3 text-sm text-tech-mute",children:[r.responded&&s.jsx("strong",{className:"mb-2 block text-tech-fg",children:"Sua diária grátis já está garantida. Complete seu perfil de viajante para entrar na comunidade."}),"O xpark é a comunidade de viajantes do Brasil: compare onde estacionar e conecte-se com quem vai para o mesmo destino. Conte um pouco sobre você e sua viagem (leva cerca de 1 minuto), ganhe 1 diária grátis e entre na Wanderlust, onde viajantes trocam dicas, comentam guias e se conectam com quem sai do mesmo aeroporto."]}),s.jsxs("div",{className:"mt-6",children:[s.jsx("div",{className:"flex justify-between text-xs text-tech-mute",children:s.jsxs("span",{children:["Etapa ",c+1," de ",Bp.length,": ",Bp[c]]})}),s.jsx("div",{className:"mt-2 h-1.5 w-full rounded-full bg-tech-border/60",children:s.jsx("div",{className:"h-1.5 rounded-full bg-gold transition-all",style:{width:`${(c+1)/Bp.length*100}%`}})})]}),s.jsxs("div",{className:"mt-6 space-y-6",children:[c===0&&s.jsxs(s.Fragment,{children:[s.jsxs(ha,{title:$?"Para onde você vai nesta viagem?":"Para onde foi sua última viagem?",children:[r.airport&&s.jsxs("p",{className:"-mt-1 mb-3 text-xs text-tech-mute",children:["Você sai de ",r.airport,", pela sua reserva no xpark."]}),s.jsx("input",{value:u.destination,onChange:D=>h("destination")(D.target.value),maxLength:80,placeholder:"Cidade e paÃs",className:Wn})]}),s.jsx(ha,{title:"Datas da viagem",hint:r.tripStart?"Preenchidas com as datas da sua reserva. Ajuste se precisar.":"Opcional, ajuda a encontrar quem viaja na mesma época.",children:s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("label",{className:"text-xs text-tech-mute",children:["Ida",s.jsx("input",{type:"date",value:u.tripStart,onCh
1081ange:D=>h("tripStart")(D.target.value),className:ne(Wn,"mt-1")})]}),s.jsxs("label",{className:"text-xs text-tech-mute",children:["Volta",s.jsx("input",{type:"date",value:u.tripEnd,onChange:D=>h("tripEnd")(D.target.value),className:ne(Wn,"mt-1")})]})]})}),s.jsx(ha,{title:"Motivo da viagem",children:s.jsx(mo,{options:gfe,value:u.reason,onChange:h("reason")})}),s.jsxs(ha,{title:"Companhia aérea",children:[s.jsx(mo,{options:vfe,value:u.airlineGroup,onChange:D=>m(F=>({...F,airlineGroup:D,airline:D==="Internacional"||D==="Outra"?"":D}))}),u.airlineGroup==="Internacional"&&s.jsx("div",{className:"mt-3",children:s.jsx(mo,{options:xfe,value:u.airline,onChange:h("airline")})}),u.airlineGroup==="Outra"&&s.jsx("input",{value:u.airlineOther,onChange:D=>m(F=>({...F,airlineOther:D.target.value,airline:D.target.value.trim()})),maxLength:60,placeholder:"Qual companhia?",className:ne(Wn,"mt-3")})]}),$&&s.jsx(ha,{title:"Número do voo de volta (opcional)",children:s.jsx("input",{value:u.returnFlight,onChange:D=>h("returnFlight")(D.target.value.toUpperCase()),maxLength:12,placeholder:"Ex.: LA3001",className:ne(Wn,"uppercase")})})]}),c===1&&s.jsxs(s.Fragment,{children:[s.jsx(ha,{title:"Com quem você costuma viajar?",children:s.jsx(mo,{options:bfe,value:u.companions,onChange:h("companions")})}),u.companions==="familia"&&s.jsxs(s.Fragment,{children:[s.jsx(ha,{title:"Quantas crianças viajam com você?",children:s.jsx(mo,{options:Hc("0","1","2","3","4+").map(D=>({...D,v:D.v==="4+"?"4":D.v})),value:u.kidsCount,onChange:h("kidsCount")})}),u.kidsCount!=="0"&&s.jsx(ha,{title:"Idades das crianças (opcional)",children:s.jsx("input",{value:u.kidsAges,onChange:D=>h("kidsAges")(D.target.value),maxLength:60,placeholder:"Ex.: 4 e 9 anos",className:Wn})})]}),s.jsx(ha,{title:"Costuma levar pet?",children:s.jsx(mo,{options:[{v:"sim",l:"Sim"},{v:"nao",l:"Não"}],value:u.hasPet,onChange:h("hasPet")})})]}),c===2&&s.jsxs(s.Fragment,{children:[s.jsx(ha,{title:"Faixa etária",children:s.jsx(mo,{options:yfe,value:u.ageRange,onChange:h("ageRange")})}),s.jsxs(ha,{title:"Profissão ou área de atuação",children:[s.jsx(mo,{options:pfe,value:u.profession,onChange:h("profession")}),u.profession==="Outra"&&s.jsx("input",{value:u.professionOther,onChange:D=>h("professionOther")(D.target.value),maxLength:80,placeholder:"Qual?",className:ne(Wn,"mt-3")})]}),s.jsx(ha,{title:"Quantas vezes por ano você viaja de avião?",children:s.jsx(mo,{options:hfe,value:u.freq,onChange:h("freq")})}),s.jsx(ha,{title:"Suas viagens são...",children:s.jsx(mo,{options:ffe,value:u.scope,onChange:h("scope")})}),s.jsx(ha,{title:"Seu estilo de viagem",children:s.jsx(mo,{options:kfe,value:u.style,onChange:h("style")})}),s.jsx(ha,{title:"O que você curte numa viagem?",hint:"Escolha quantos quiser.",children:s.jsx(mo,{options:Hc(...wfe),value:u.interests,onChange:p})})]}),c===3&&s.jsxs(s.Fragment,{children:[s.jsx(ha,{title:"Quais destinos você quer conhecer?",hint:"Opcional.",children:s.jsx("input",{value:u.nextDestinations,onChange:D=>h("nextDestinations")(D.target.value),maxLength:160,placeholder:"Ex.: Lisboa, Salvador, Santiago",className:Wn})}),s.jsx(ha,{title:"Quando pretende viajar de novo?",children:s.jsx(mo,{options:Cfe,value:u.nextWhen,onChange:h("nextWhen")})}),s.jsxs("div",{className:"space-y-3 border-t border-tech-border/60 pt-6 text-sm",children:[s.jsxs("div",{className:"rounded-card border border-gold/60 bg-gold/10 p-4",children:[s.jsx("p",{className:"font-semibold text-tech-fg",children:"Você entra na Wanderlust junto com a diária"}),s.jsxs("p",{className:"mt-1",children:["Ao enviar, sua diária grátis é liberada e seu perfil de viajante entra automaticamente na ",s.jsx("strong",{children:"Wanderlust, a comunidade do xpark"}),". Outros viajantes verão seu primeiro nome, a inicial do sobrenome, seu destino, o mês da viagem, com quem viaja e seus interesses. Telefone, e-mail e nome completo nunca aparecem."]})]}),s.jsxs("label",{className:"flex items-start gap-3",children:[s.jsx("input",{type:"checkbox",checked:f,onChange:D=>g(D.target.checked),className:"mt-0.5 h-5 w-5 accent-[hsl(var(--gold))]"}),s.jsxs("span",{children:["Autorizo o xpark a usar estas respostas para melhorar o atendimento e o planejamento do pátio, e para personalizar ofertas do xpark. ",s.jsx(G,{to:"/privacidade",className:"underline",children:"PolÃtica de privacidade"}),"."]})]}),s.jsxs("label",{className:"flex items-start gap-3 text-tech-mute",children:[s.jsx("input",{type:"checkbox",checked:v,onChange:D=>y(D.target.checked),className:"mt-0.5 h-5 w-5 accent-[hsl(var(--gold))]"}
1081),s.jsx("span",{children:"Quero receber novidades do xpark (opcional)."})]})]})]}),R&&s.jsx("p",{className:"text-sm text-destructive",children:R}),s.jsxs("div",{className:"flex gap-3",children:[c>0&&s.jsx("button",{type:"button",onClick:()=>d(c-1),className:"h-12 flex-1 rounded-full border border-tech-border text-sm",children:"Voltar"}),c<Bp.length-1?s.jsx("button",{type:"button",disabled:!O[c],onClick:()=>{d(c+1),window.scrollTo({top:0,behavior:"smooth"})},className:ne("h-12 flex-[2] rounded-full bg-gold text-sm font-semibold text-tech-bg",!O[c]&&"opacity-40"),children:"Continuar"}):s.jsx("button",{type:"button",disabled:!O.every(Boolean)||k,onClick:V,className:ne("h-12 flex-[2] rounded-full bg-gold text-sm font-semibold text-tech-bg",(!O.every(Boolean)||k)&&"opacity-40"),children:k?"Enviando...":"Ganhar minha diária e entrar na Wanderlust"})]})]})]}))}function Sfe(){cn();const[e]=Ao(),t=e.get("t")||"",[a,o]=x.useState("idle"),r=async()=>{o("sending");const{data:n,error:i}=await ze.functions.invoke("traveler-unsubscribe",{body:{token:t}});o(i||!(n!=null&&n.ok)?"error":"done")};return s.jsx("div",{className:"min-h-[60vh] bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-md py-16 text-center",children:[a==="done"?s.jsxs(s.Fragment,{children:[s.jsx("h1",{className:"text-2xl font-semibold",children:"Pronto, você não vai mais receber estes convites"}),s.jsx("p",{className:"mt-3 text-sm text-tech-mute",children:"As mensagens da sua reserva continuam chegando normalmente."})]}):s.jsxs(s.Fragment,{children:[s.jsx("h1",{className:"text-2xl font-semibold",children:"Parar de receber convites do xpark?"}),s.jsx("p",{className:"mt-3 text-sm text-tech-mute",children:"Você deixa de receber os convites do Programa de Viajantes por e-mail e WhatsApp."}),a==="error"&&s.jsx("p",{className:"mt-4 text-sm text-red-400",children:"Link inválido ou expirado."}),s.jsx("button",{type:"button",disabled:!t||a==="sending",onClick:r,className:"mt-8 h-12 rounded-full bg-tech-fg px-7 text-sm font-semibold text-tech-bg disabled:opacity-40",children:a==="sending"?"Enviando...":"Confirmar descadastro"})]}),s.jsx("div",{className:"mt-8",children:s.jsx(G,{to:"/",className:"text-sm underline",children:"Voltar para o xpark"})})]})})}function Rfe(){return s.jsxs("div",{className:"bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"PolÃtica de privacidade | xpark",description:"Como o xpark usa seus dados de reserva e do Programa de Viajantes.",path:"/privacidade"}),s.jsxs("article",{className:"container max-w-2xl space-y-5 py-14 text-[15px] leading-relaxed",children:[s.jsx("h1",{className:"text-3xl font-semibold",children:"PolÃtica de privacidade"}),s.jsx("p",{className:"text-sm text-tech-mute",children:"Atualizada em setembro de 2026."}),s.jsx("h2",{className:"pt-4 text-xl font-semibold",children:"Dados da reserva"}),s.jsx("p",{children:"Usamos nome, e-mail, telefone, placa e datas da reserva para registrar e confirmar sua vaga, processar o pagamento, enviar mensagens sobre a reserva e prestar atendimento."}),s.jsx("h2",{className:"pt-4 text-xl font-semibold",children:"Programa de Viajantes xpark"}),s.jsx("p",{children:"Quem responde ao questionário do programa nos informa profissão, frequência e tipo de viagem, motivo, destino e datas, companhia aérea, com quem viaja, faixa etária, estilo, interesses, próximas viagens e, se quiser, o voo de volta. Com o seu consentimento, usamos essas respostas para:"}),s.jsxs("ul",{className:"list-disc space-y-1 pl-5",children:[s.jsx("li",{children:"melhorar o atendimento;"}),s.jsx("li",{children:"planejar a ocupação e a operação do pátio;"}),s.jsx("li",{children:"personalizar ofertas do xpark."})]}),s.jsx("p",{children:"Novidades e ofertas só são enviadas a quem autorizou. Você pode parar de receber a qualquer momento pelo link no e-mail ou respondendo SAIR no WhatsApp."}),s.jsx("h2",{className:"pt-4 text-xl font-semibold",children:"Wanderlust, a comunidade do xpark"}),s.jsx("p",{children:"O xpark quer ser uma comunidade de viajantes. Ao aceitar a diária grátis, você entra na Wanderlust, a comunidade do xpark, visÃvel só para outros membros logados. Eles veem seu primeiro nome com a inicial do sobrenome, destino, mês da viagem, com quem viaja, estilo e interesses. Telefone, e-mail, CPF, placa e nome completo nunca aparecem."}),s.jsx("p",{children:"Você pode se ocultar ou sair da comunidade a qualquer momento na aba Wanderlust, em Minhas reservas. A diária grátis já ganha continua valendo. As demais respostas ficam restritas à equipe administrativa do xpark."}),s.jsx("h2",{className:"pt-4 text-xl font-semibold",children:"Seus direitos"}),s.jsxs("p",{children:["Você pode pedir acesso, correção ou exclusão dos seus dados escrevendo para ",s.jsx("a",{className:"underline",href:"mailto:[email protected]",children:"[email protected]"}),"."]})]})]})}const qw="Wanderlust",vD="Wanderlust · uma comunidade xpark",lt="2026-09-28",xD="Pergunta enviada por um cliente ao atendimento",jfe="Resposta da equipe xpark",bD="https://cx.bandeirapark.online/solicitar-cancelamento",yD=[{iata:"GRU",slug:"guarulhos",name:"Aeroporto de Guarulhos (GRU)",hubSlug:"estacionamento-aeroporto-guarulhos"}
1081,{iata:"VCP",slug:"viracopos",name:"Aeroporto de Viracopos (VCP)",hubSlug:"estacionamento-aeroporto-viracopos"},{iata:"CNF",slug:"confins",name:"Aeroporto de Confins (CNF)",hubSlug:"estacionamento-aeroporto-confins"},{iata:"CGH",slug:"congonhas",name:"Aeroporto de Congonhas (CGH)",hubSlug:"estacionamento-aeroporto-congonhas"}],Jn=(e,t)=>S(At(e,t).rate_1_6),ni=(e,t)=>S(At(e,t).rate_7_12),Te={policy:"PolÃtica de cancelamento do xpark (/politica-cancelamento)",panel:"Painel de unidades do xpark (endereço, tipo de vaga e tabela de preços)",tplAlter:'Modelo de resposta da Bandy "alteracao_reserva_oferta"',tplSeguro:'Modelos de resposta da Bandy "cotacao_pergunta_seguro" e "seguro_adicionado"',tplValet:'Modelos de resposta da Bandy "valet_24h_aviso" e "valet_vcp_indisponivel"',bandyUnit:"Regras de atendimento da Bandy (contato da unidade para assuntos no local)",bandyCgh:"Regras de atendimento da Bandy para Congonhas (sem traslado, acesso a pé)",bandyRefund:"Regras de atendimento da Bandy sobre cancelamento e reembolso",unitData:"Ficha da unidade Bandeira Park no site do xpark"},Vp=(e,t)=>({iata:e,slug:t,title:"Como cancelo a reserva e quanto recebo de volta?",question:"Não vou conseguir comparecer. Como faço para cancelar e pedir o estorno da reserva?",answer:[`O pedido é feito pelo canal oficial de cancelamento: ${bD}. A solicitação fica registrada e o financeiro analisa.`,"O valor devolvido depende da antecedência em relação ao horário de entrada: 90% com 3 dias ou mais, 40% com menos de 72 horas e nada sem aviso prévio ou em caso de não comparecimento.","Quem contratou o Seguro Cancelamento recebe o valor integral, menos o próprio seguro, se cancelar a qualquer momento antes da entrada."],sources:[Te.policy,Te.bandyRefund],related:{href:"/politica-cancelamento",label:"PolÃtica de cancelamento e reserva"},publishedAt:lt}),CA=(e,t)=>({iata:e,slug:t,title:"Paguei por Pix: como é feito o estorno?",question:"O pagamento foi por Pix. Como o estorno é feito e em quanto tempo?",answer:[`O estorno de reserva paga por Pix segue o mesmo caminho de qualquer cancelamento: o pedido é registrado no canal oficial (${bD}) e o financeiro analisa.`,"O percentual devolvido segue a polÃtica: 90% com 3 dias ou mais de antecedência, 40% com menos de 72 horas e nada sem aviso. O xpark não publica um prazo fixo para o dinheiro cair, então o atendimento não promete data."],sources:[Te.policy,Te.bandyRefund],related:{href:"/politica-cancelamento",label:"PolÃtica de cancelamento e reserva"},publishedAt:lt}),Sx=(e,t,a)=>({iata:e,slug:t,title:"Consigo alterar o horário ou a data da reserva?",question:a,answer:["Sim. Alteração de reserva já feita (data, horário, antecipar ou estender) passa pelo time humano do atendimento, que confere a disponibilidade e atualiza a reserva.","Para trocar a placa do veÃculo, avise com no mÃnimo 48 horas de antecedência pelo canal de cancelamento e alterações."],sources:[Te.tplAlter,Te.policy],publishedAt:lt}),Rx=(e,t)=>({iata:e,slug:t,title:"Meu voo atrasou. Tem algum problema com a reserva?",question:"Deixei o carro no estacionamento, mas meu voo atrasou. Tem algum problema?",answer:["As diárias são de 24 horas, contadas a partir do horário de entrada informado na reserva. Se a volta passar do perÃodo contratado, a reserva precisa ser estendida, e isso é feito pelo time humano do atendimento.","Quem contratou o Seguro Cancelamento e Atraso (R$ 25,00) aciona o benefÃcio apresentando a documentação do atraso no balcão da unidade."],sources:[Te.policy,Te.tplAlter,Te.tplSeguro],related:{href:"/voo-atrasou-carro-estacionamento-aeroporto-o-que-fazer",label:"Guia: voo atrasou, o que fazer com o carro"},publishedAt:lt}),PA=(e,t)=>({iata:e,slug:t,title:"Como funciona o Seguro Cancelamento e Atraso?",question:"Pode me explicar o seguro? Quanto fica para acrescentar na reserva?",answer:["O Seguro Cancelamento e Atraso custa R$ 25,00 e é incluÃdo na reserva a pedido do cliente.","Com ele, quem cancela a qualquer momento antes da entrada recebe o valor integral, menos o próprio seguro. Em caso de atraso significativo do voo, o benefÃcio é acionado com a documentação apresentada no balcão da unidade."],sources:[Te.tplSeguro,Te.policy],related:{href:"/politica-cancelamento",label:"PolÃtica de cancelamento e reserva"},publishedAt:lt}),Dw=[Vp("GRU","como-cancelar-reserva-estacionamento-guarulhos"),CA("GRU","estorno-pix-reserva-estacionamento-guarulhos"),{iata:"GRU",slug:"valor-vaga-coberta-guarulhos",title:"Qual o valor da vaga coberta em Guarulhos?",question:"Qual o valor da vaga coberta? E a descoberta?",answer:[`Pela tabela do painel, sem cupom, a vaga coberta custa ${Jn("GRU","coberta")} por diária de 1 a 6 diárias e ${ni("GRU","coberta")} por diária de 7 a 12. A descoberta custa ${Jn("GRU","descoberta")} de 1 a 6 diárias e ${ni("GRU","descoberta")} de 7 a 12.`,"Para perÃodos maiores o valor é fixo por faixa. A página de preços de Guarulhos mostra o total de cada perÃodo."],sources:[Te.panel],publishedAt:lt},{iata:"GRU",slug:"traslado-24-horas-guarulhos",title:"O traslado para o terminal de Guarulhos funciona 24 horas?",question:"Tem traslado para o aeroporto de Guarulhos? Funciona de madrugada?",answer:["Sim. As vagas coberta e descoberta do Bandeira Park Guarulhos incluem traslado gratuito até o terminal, 24 horas por dia, com cerca de 7 minutos de trajeto.","O intervalo entre as saÃdas da van não é publicado no site."],sources:[Te.panel,Te.policy],related:{href:"/faq/top-estacionamentos-traslado-24h-gru",label:"Estacionamentos com traslado 24h em Guarulhos"},publishedAt:lt},{iata:"GRU",slug:"onde-pegar-van-desembarque-guarulhos",title:"Desembarquei em Guarulhos: onde pego a van de volta?",question:"Acabamos de pousar. Onde embarcamos na van para voltar ao estacionamento?",answer:["Na volta, fale com a unidade de Guarulhos pelo WhatsApp informado na sua reserva. Assuntos no local, como chegada e van, são combinados direto com a equipe do pátio, que orienta o ponto de embarque."],sources:[Te.bandyUnit,Te.panel],publishedAt:lt},{iata:"GRU",slug:"posso-levar-chave-carro-guarulhos",title:"Posso levar a chave do carro comigo em Guarulhos?",question:"As chaves ficam comigo ou com vocês?",answer:["Em Guarulhos, você pode escolher o serviço Vaga VIP - Leve a chave, que permite levar a chave durante a viagem."],sources:[Te.policy],publishedAt:lt},{iata:"GRU",slug:"endereco-estacionamento-guarulhos",title:"Qual o endereço do estacionamento em Guarulhos?",question:"Esse endereço é do estacionamento? à para Guarulhos?",answer:["O Bandeira Park Guarulhos fica na Av. Novo Brasil, 954, Cidade Industrial Satélite de São Paulo, Guarulhos - SP, CEP 07221-010. De lá sai o traslado gratuito para o terminal."],sources:[Te.panel],publishedAt:lt},Rx("GRU","voo-atrasou-reserva-estacionamento-guarulhos"),{iata:"GRU",slug:"estacionamento-guarulhos-tem-seguro",title:"O estacionamento em Guarulhos tem seguro e câmeras?",question:"O estacionamento possui algum seguro para os carros que estão lá dentro?",answer:["O Bandeira Park Guarulhos tem câmeras 24 horas nas vagas coberta, descoberta e valet, e seguro Tokio Marine com cobertura de até R$ 1.000.000.","Esse seguro do pátio é diferente do Seguro Cancelamento e Atraso, que é opcional e cobre cancelamento e atraso de voo."],sources:[Te.panel,Te.unitData],related:{href:"/faq/e-seguro-deixar-carro-muitos-dias-guarulhos",label:"à seguro deixar o carro muitos dias em Guarulhos?"},publishedAt:lt},{iata:"GRU",slug:"como-funciona-valet-guarulhos",title:"Como funciona o valet no terminal de Guarulhos?",question:"Preciso do serviço de valet para buscar meu carro no embarque de Guarulhos. Como funciona?",answer:[`No valet, o manobrista recebe o carro no terminal e devolve ali mesmo na volta, sem traslado e sem caminhada. Pela tabela do painel, sem cupom, a diária é de ${Jn("GRU","valet")} de 1 a 6 diárias.`,"O valet precisa ser reservado com 24 horas de antecedência e só existe em Guarulhos."],sources:[Te.panel,Te.tplValet],publishedAt:lt},Sx("GRU","alterar-horario-reserva-guarulhos","Minha reserva ficou com o horário de entrada errado. Consigo alterar os horários?"),Vp("VCP","como-cancelar-reserva-estacionamento-viracopos"),{iata:"VCP",slug:"endereco-estacionamento-viracopos",title:"Qual o endereço do estacionamento em Viracopos?",question:"Qual o endereço em Viracopos?",answer:["O Bandeira Park Viracopos fica na R. Antônio Luchiari, 1100, Distrito Industrial, Campinas - SP, CEP 13030-150, a cerca de 5 km do aeroporto."],sources:[Te.panel,Te.unitData],publishedAt:lt},{iata:"VCP",slug:"tem-traslado-aeroporto-viracopos",title:"O estacionamento leva até o aeroporto de
1081Viracopos?",question:"Vocês levam até o aeroporto de Viracopos? Tem transporte?",answer:["Sim. As vagas coberta e descoberta do Bandeira Park Viracopos incluem traslado gratuito até o aeroporto, com funcionamento 24 horas."],sources:[Te.panel,Te.policy],related:{href:"/faq/estacionamentos-traslado-gratuito-viracopos",label:"Estacionamentos com traslado gratuito em Viracopos"},publishedAt:lt},{iata:"VCP",slug:"onde-esperar-van-viracopos",title:"Onde espero a van em Viracopos na volta?",question:"Onde esperar a van em Viracopos? Aviso vocês quando chegar?",answer:["Sim, avise ao chegar. Assuntos no local, como a van e o ponto de espera, são combinados direto com a unidade de Viracopos pelo WhatsApp informado na sua reserva."],sources:[Te.bandyUnit],publishedAt:lt},{iata:"VCP",slug:"valor-vaga-coberta-viracopos",title:"Qual o valor da vaga coberta em Viracopos?",question:"A vaga coberta ficaria quanto?",answer:[`Pela tabela do painel, sem cupom, a vaga coberta em Viracopos custa ${Jn("VCP","coberta")} por diária de 1 a 6 diárias e ${ni("VCP","coberta")} de 7 a 12. A descoberta custa ${Jn("VCP","descoberta")} e ${ni("VCP","descoberta")} nas mesmas faixas.`,"Acima de 12 diárias o valor é fixo por faixa, e a página de preços de Viracopos mostra cada total."],sources:[Te.panel],publishedAt:lt},Sx("VCP","trocar-vaga-descoberta-coberta-viracopos","Já fiz minha reserva em Viracopos, mas gostaria de trocar por uma vaga coberta. à possÃvel?"),{iata:"VCP",slug:"tem-valet-viracopos",title:"Tem valet em Viracopos?",question:"Vocês têm valet em Viracopos?",answer:["Não. Por enquanto o valet só existe em Guarulhos. Em Viracopos as opções são vaga coberta ou descoberta, ambas com traslado gratuito."],sources:[Te.tplValet,Te.panel],publishedAt:lt},{iata:"VCP",slug:"posso-levar-chave-carro-viracopos",title:"Posso levar a chave do carro comigo em Viracopos?",question:"O sistema do estacionamento é de levar a chave?",answer:["Em Viracopos, você pode escolher o serviço Vaga VIP - Leve a chave, que permite levar a chave durante a viagem."],sources:[Te.policy],publishedAt:lt},{iata:"VCP",slug:"estacionamento-viracopos-tem-seguro",title:"O estacionamento em Viracopos tem seguro?",question:"Possui seguro o estacionamento? Roubo, furto, o carro fica assegurado?",answer:["O Bandeira Park Viracopos tem câmeras 24 horas e seguro Tokio Marine com cobertura de até R$ 1.000.000.","à parte, existe o Seguro Cancelamento e Atraso (R$ 25,00), opcional, que cobre cancelamento e atraso de voo."],sources:[Te.panel,Te.unitData,Te.tplSeguro],related:{href:"/faq/estacionamentos-com-seguro-viracopos",label:"Estacionamentos com seguro em Viracopos"},publishedAt:lt},PA("VCP","seguro-cancelamento-atraso-viracopos"),Vp("CNF","como-cancelar-reserva-estacionamento-confins"),{iata:"CNF",slug:"endereco-estacionamento-confins",title:"Qual o endereço do estacionamento em Confins?",question:"Qual o endereço do estacionamento em Confins?",answer:["O Bandeira Park Confins fica na Rodovia MG-010, Km 26,5, Zona Rural, Vespasiano - MG, CEP 33.200-000."],sources:[Te.panel],publishedAt:lt},{iata:"CNF",slug:"tem-van-terminal-confins",title:"Tem van do estacionamento até o terminal de Confins?",question:"Tem van para o aeroporto de Confins?",answer:["Sim. As vagas coberta e descoberta do Bandeira Park Confins incluem van até o terminal."],sources:[Te.panel],related:{href:"/faq/estacionamentos-traslado-24-horas-confins",label:"Estacionamentos com traslado em Confins"},publishedAt:lt},{iata:"CNF",slug:"valor-vaga-coberta-descoberta-confins",title:"Quanto custa a vaga coberta e a descoberta em Confins?",question:"Qual o valor da vaga coberta? E da descoberta?",answer:[`Pela tabela do painel, sem cupom, a vaga descoberta em Confins custa ${Jn("CNF","descoberta")} por diária de 1 a 6 diárias e ${ni("CNF","descoberta")} de 7 a 12. A coberta custa ${Jn("CNF","coberta")} e ${ni("CNF","coberta")} nas mesmas faixas.`],sources:[Te.panel],related:{href:"/faq/estacionamento-coberto-ou-descoberto-confins",label:"Coberto ou descoberto em Confins?"},publishedAt:lt},{iata:"CNF",slug:"estacionamento-confins-tem-cameras",title:"O estacionamento em Confins tem câmeras?",question:"O local possui sistema de câmeras?",answer:["Sim. As vagas coberta e descoberta do Bandeira Park Confins têm câmeras 24 horas."],sources:[Te.panel],related:{href:"/e-seguro-deixar-carro-aeroporto-confins",label:"Guia: é seguro deixar o carro no Aeroporto de Confins?"},publishedAt:lt},Sx("CNF","alterar-reserva-confins","Como faço se precisar mudar o horário da reserva?"),Rx("CNF","voo-atrasou-reserva-estacionamento-confins"),PA("CNF","seguro-cancelamento-atraso-confins"),CA("CNF","estorno-pix-reserva-estacionamento-confins"),{iata:"CGH",slug:"tem-van-estacionamento-congonhas",title:"Tem van do estacionamento até Congonhas?",question:"Tem van saindo para o aeroporto de Congonhas?",answer:["Não. Em Congonhas não existe traslado nem van. O terminal fica a cerca de 5 minutos a pé, aproximadamente 300 metros do endereço principal."],sources:[Te.bandyCgh,Te.panel],related:{href:"/faq/estacionamento-mais-proximo-terminal-congonhas",label:"Estacionamento mais próximo do terminal de Congonhas"},publishedAt:lt},{iata:"CGH",slug:"como-ir-a-pe-terminal-congonhas",title:"Como chego a pé do estacionamento ao terminal de Congonhas?",question:"Como faço para ir do estacionamento até o aeroporto de Congonhas?",answer:["O caminho é pelo túnel coberto com escadas rolantes, ao lado da estação Aeroporto de Congonhas do Metrô e Monotrilho, das 9h à s 16h de segunda a sexta-feira.","Fora desse horário, use a passarela sobre a Av. Washington
1081LuÃs. São cerca de 5 minutos a pé."],sources:[Te.bandyCgh],publishedAt:lt},{iata:"CGH",slug:"endereco-estacionamento-congonhas",title:"Qual o endereço do estacionamento em Congonhas?",question:"à perto do aeroporto de Congonhas? Qual o endereço?",answer:["O endereço principal é R. Vieira de Morais, 2110, Campo Belo, São Paulo - SP. Existe um pátio auxiliar na R. dos Chanés, 621, mas a recepção e a entrega do carro são sempre no endereço principal."],sources:[Te.panel,Te.bandyCgh],publishedAt:lt},{iata:"CGH",slug:"vaga-coberta-valor-congonhas",title:"Congonhas tem vaga descoberta? Quanto custa a coberta?",question:"Qual o valor da vaga em Congonhas? Tem descoberta?",answer:[`Em Congonhas só existe vaga coberta. Pela tabela do painel, sem cupom, ela custa ${Jn("CGH","coberta")} por diária de 1 a 6 diárias e ${ni("CGH","coberta")} de 7 a 12.`],sources:[Te.panel,Te.bandyCgh],related:{href:"/faq/quanto-custa-estacionar-aeroporto-congonhas",label:"Quanto custa estacionar no Aeroporto de Congonhas?"},publishedAt:lt},{iata:"CGH",slug:"chave-carro-fica-estacionamento-congonhas",title:"Em Congonhas a chave do carro fica no estacionamento?",question:"Deixando o carro no estacionamento coberto, poderei levar as chaves?",answer:["Não. Em Congonhas a chave do veÃculo permanece no estacionamento durante toda a estadia."],sources:[Te.policy],publishedAt:lt},Vp("CGH","como-cancelar-reserva-estacionamento-congonhas"),{iata:"CGH",slug:"trocar-reserva-congonhas-para-guarulhos",title:"Consigo trocar a reserva de Congonhas para Guarulhos?",question:"Nosso voo mudou. Conseguimos trocar a reserva de Congonhas para Guarulhos?",answer:["Alteração de reserva já feita passa pelo time humano do atendimento, que confere a disponibilidade na outra unidade e atualiza a reserva.","Se preferir cancelar, o pedido é feito pelo canal oficial e segue a polÃtica: 90% com 3 dias ou mais de antecedência, 40% com menos de 72 horas."],sources:[Te.tplAlter,Te.policy],publishedAt:lt},{iata:"CGH",slug:"estacionamento-congonhas-funciona-24h",title:"O estacionamento em Congonhas funciona 24 horas?",question:"O estacionamento de Congonhas atende de madrugada?",answer:["Sim. A unidade Bandeira Park Congonhas tem atendimento 24 horas."],sources:[Te.unitData],publishedAt:lt},Rx("CGH","voo-atrasou-reserva-estacionamento-congonhas")],kD=e=>yD.find(t=>t.slug===e),k0=e=>yD.find(t=>t.iata===e),Iw=e=>Dw.filter(t=>t.iata===e),Zi=e=>`/wanderlust/${k0(e.iata).slug}/${e.slug}`,k2=e=>e.answer.length>0,wD=e=>`/aeroportos/${e.hubSlug}`,CD=e=>`/aeroportos/${e.hubSlug}/precos`,Mm="https://www.xpark.ai",PD={"@type":"Organization",name:"xpark",url:Mm};function Nfe(e){const t=k0(e.iata),a=`${e.title} | Wanderlust`;return a.length<=60?a:`${e.title.slice(0,46-t.iata.length)}... ${t.iata} | Wanderlust`.slice(0,60)}function Afe(e){const t=(e.answer[0]||e.question).replace(/https?:\/\/\S+/g,"").replace(/\s+/g," ").trim();return t.length<=155?t:`${t.slice(0,152).replace(/\s\S*$/,"")}...`}function Mw(e){return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.map((t,a)=>({"@type":"ListItem",position:a+1,name:t.name,item:`${Mm}${t.path}`}))}}function Efe(e){const t=k0(e.iata),a=`${Mm}${Zi(e)}`;return[k2(e)?{"@context":"https://schema.org","@type":"QAPage",url:a,mainEntity:{"@type":"Question",name:e.title,text:e.question,answerCount:1,datePublished:e.publishedAt,author:{"@type":"Person",name:"Cliente do xpark"},acceptedAnswer:{"@type":"Answer",text:e.answer.join(" "),datePublished:e.publishedAt,url:a,author:PD}}}:{"@context":"https://schema.org","@type":"DiscussionForumPosting",url:a,headline:e.title,text:e.question,datePublished:e.publishedAt,author:{"@type":"Person",name:"Cliente do xpark"}},Mw([{name:"xpark",path:"/"},{name:qw,path:"/wanderlust"},{name:t.name,path:`/wanderlust/${t.slug}`},{name:e.title,path:Zi(e)}])]}function _fe(e){return[{"@context":"https://schema.org","@type":"ItemList",name:`Perguntas de viajantes sobre estacionamento no ${e.name}`,itemListElement:Iw(e.iata).map((t,a)=>({"@type":"ListItem",position:a+1,name:t.title,url:`${Mm}${Zi(t)}`}))},Mw([{name:"xpark",path:"/"},{name:qw,path:"/wanderlust"},{name:e.name,path:`/wanderlust/${e.slug}`}
1081])]}function Tfe(){return[{"@context":"https://schema.org","@type":"CollectionPage",name:vD,url:`${Mm}/wanderlust`,publisher:PD},Mw([{name:"xpark",path:"/"},{name:qw,path:"/wanderlust"}])]}function SD(){return s.jsx("img",{src:P5,alt:"xpark",width:640,height:173,className:"block h-auto w-[88px] shrink-0 object-contain sm:w-[106px] md:w-[120px]"})}const be=ze,RD="wanderlust-photos",Kc={public:"Pública",friends:"Amigos",private:"Só eu"},w2={relato:"Relato de viagem",quero_ir:"Quero ir para...",dica:"Dica"},jD=L6,$fe=Ht.map(e=>({iata:e.iata,name:`${e.displayCity??e.city} (${e.iata})`})),Lw=["Acre","Alagoas","Amapá","Amazonas","Bahia","Ceará","Distrito Federal","EspÃrito Santo","Goiás","Maranhão","Mato Grosso","Mato Grosso do Sul","Minas Gerais","Pará","ParaÃba","Paraná","Pernambuco","PiauÃ","Rio de Janeiro","Rio Grande do Norte","Rio Grande do Sul","Rondônia","Roraima","Santa Catarina","São Paulo","Sergipe","Tocantins"],eg=["Brasil","Argentina","Chile","Uruguai","Paraguai","Peru","Colômbia","BolÃvia","Equador","México","Estados Unidos","Canadá","Portugal","Espanha","França","Itália","Alemanha","Reino Unido","Irlanda","Holanda","Bélgica","SuÃça","Ãustria","Grécia","Turquia","Croácia","República Tcheca","Noruega","Suécia","Dinamarca","Islândia","Egito","Marrocos","Ãfrica do Sul","Emirados Ãrabes Unidos","Israel","Ãndia","Tailândia","Japão","China","Coreia do Sul","Singapura","Indonésia","Vietnã","Austrália","Nova Zelândia","Cuba","República Dominicana","Aruba","Curaçao","Panamá","Costa Rica"],Ofe=Array.from(new Set(Ht.map(e=>e.displayCity??e.city))),tg=Array.from(new Set([...Ofe,...Lw,...eg])).sort((e,t)=>e.localeCompare(t,"pt-BR")),qfe=()=>new Date().toISOString().slice(0,10),el=e=>!!e&&e>=qfe(),Al=e=>e?new Date(e.length===10?e+"T12:00:00":e).toLocaleDateString("pt-BR"):"",Dfe=e=>Math.ceil((new Date(e+"T00:00:00").getTime()-Date.now())/864e5);function pi(e){const[t,a]=(e||"Viajante").trim().split(/\s+/);return a?`${t} ${a[0]}.`:t}async function Ife(e,t=1600){const a=URL.createObjectURL(e);try{const o=await new Promise((i,l)=>{const c=new Image;c.onload=()=>i(c),c.onerror=l,c.src=a}),r=Math.min(1,t/Math.max(o.width,o.height)),n=document.createElement("canvas");return n.width=Math.round(o.width*r),n.height=Math.round(o.height*r),n.getContext("2d").drawImage(o,0,0,n.width,n.height),await new Promise((i,l)=>n.toBlob(c=>c?i(c):l(new Error("foto")),"image/jpeg",.85))}finally{URL.revokeObjectURL(a)}}async function C2(e,t,a="posts"){const o=await Ife(t),r=`${e}/${a}/${crypto.randomUUID()}.jpg`,{error:n}=await ze.storage.from(RD).upload(r,o,{contentType:"image/jpeg"});if(n)throw n;return r}const jx=new Map;async function Bw(e){const t=e.filter(o=>o&&!jx.has(o));if(t.length){const{data:o}=await ze.storage.from(RD).createSignedUrls(t,3600);(o??[]).forEach(r=>{r.signedUrl&&r.path&&jx.set(r.path,r.signedUrl)})}const a={};return e.forEach(o=>{const r=jx.get(o);r&&(a[o]=r)}),a}async function Mfe(e){const{data:t}=await be.from("community_connections").select("requester_id, addressee_id, status").eq("status","accepted");return(t??[]).map(a=>a.requester_id===e?a.addressee_id:a.requester_id)}async function ND(e,t,a){const o=window.prompt("Por que você está denunciando? (opcional)")??"",{error:r}=await be.from("wl_reports").insert({reporter_id:e,target_type:t,target_id:a,reason:o.slice(0,500)});return r}const Lfe="/assets/wanderlust-arrivals-BEJXLQ9e.jpg",Nx=s.jsx("span",{"aria-hidden":!0,className:"mb-6 block h-[3px] w-8 bg-gold"}),Bfe=[{icon:iT,title:"Planeje cada viagem",body:"Organize datas e acompanhantes e consulte o estacionamento do aeroporto de saÃda.",number:"01"},{icon:Ng,title:"Acompanhe seus amigos",body:"Veja fotos, relatos e dicas de quem você segue. Suas viagens futuras só aparecem para quem você escolher.",number:"02"},{icon:D1,title:"Guarde suas conquistas",body:"Registre os lugares visitados, faça sua lista de desejos e acompanhe seus objetivos de viagem.",number:"03"}],Ax=[{label:"1 reserva no xpark",icon:Qs,detail:"Com uma reserva confirmada no xpark, seu primeiro selo aparece no perfil."},{label:"Viajante frequente",icon:_c,detail:"Acompanha as reservas confirmadas que fazem parte da sua jornada."},{label:"Explorador de aeroportos",icon:zL,detail:"Acompanha os aeroportos das suas viagens registradas."},{label:"5 paÃses",icon:D1,detail:"Acompanha os paÃses que você registrar no seu mapa de lugares."}];function AD({joinHref:e,linkTo:t}
1081){const a=x.useRef(null),[o,r]=x.useState([]),[n,i]=x.useState({}),[l,c]=x.useState(!1),[d,u]=x.useState(""),[m,h]=x.useState(0);x.useEffect(()=>{const f=a.current;if(!f||window.matchMedia("(prefers-reduced-motion: reduce)").matches||!("IntersectionObserver"in window))return;const g=f.querySelectorAll("[data-wl-reveal]"),b=new IntersectionObserver(v=>v.forEach(y=>{y.isIntersecting&&(y.target.classList.add("wl-visible"),b.unobserve(y.target))}),{threshold:.08,rootMargin:"0px 0px -5% 0px"});return g.forEach(v=>{v.classList.add("wl-pending"),b.observe(v)}),()=>b.disconnect()},[]),x.useEffect(()=>{let f=!0;return be.from("wl_posts").select("*").eq("visibility","public").eq("kind","relato").eq("status","visible").order("created_at",{ascending:!1}).limit(3).then(async({data:g})=>{if(!f||!g||g.length<3)return;r(g);const{data:b}=await be.from("wl_post_photos").select("post_id,path").in("post_id",g.map(v=>v.id)).order("sort_order");if(f){const v=(b??[]).filter((k,w,R)=>R.findIndex(C=>C.post_id===k.post_id)===w),y=await Bw(v.map(k=>k.path));f&&i(Object.fromEntries(v.map(k=>[k.post_id,y[k.path]])))}}),()=>{f=!1}},[]);const p=()=>{const f=d.trim();let g=f;try{g=new URL(f).searchParams.get("convite")??f}catch{}/^[a-f0-9]{12}$/i.test(g)&&window.location.assign(t(`/wanderlust?convite=${encodeURIComponent(g)}`))};return s.jsxs("div",{ref:a,className:"wanderlust-design wanderlust-showcase bg-paper pb-24 text-ink md:pb-0",children:[s.jsx("header",{className:"border-b border-border bg-paper",children:s.jsxs("div",{className:"container flex h-[72px] max-w-6xl items-center justify-between",children:[s.jsx("a",{href:"/","aria-label":"xpark, página inicial",children:s.jsx(SD,{})}),s.jsx("span",{className:"hidden text-xs font-semibold uppercase text-mute sm:block",children:"Wanderlust, a rede de quem viaja com o xpark"}),s.jsx(ue,{asChild:!0,className:"rounded-full px-6",children:s.jsxs("a",{href:e,children:["Entrar ",s.jsx(aa,{className:"ml-2 h-4 w-4"})]})})]})}),s.jsxs("main",{children:[s.jsxs("section",{className:"wl-hero relative isolate flex min-h-[660px] items-end overflow-hidden bg-ink text-paper sm:min-h-[710px] lg:min-h-[min(760px,78vh)]",children:[s.jsx("img",{src:Lfe,alt:"Imagem editorial ilustrativa de uma pessoa com mala observando um avião pela janela do aeroporto",width:1792,height:1024,fetchPriority:"high",className:"wl-hero-image absolute inset-0 h-full w-full object-cover object-[64%_center]"}),s.jsx("div",{"aria-hidden":!0,className:"wl-hero-shade absolute inset-0"}),s.jsxs("div",{className:"container relative z-10 max-w-6xl pb-10 pt-10 sm:pb-20 sm:pt-24 lg:pb-24",children:[s.jsxs("p",{className:"wl-hero-enter flex items-center gap-3 text-xs font-bold uppercase text-gold",children:[s.jsx("span",{className:"block h-[3px] w-8 bg-gold"}),"A rede social de viajantes do xpark"]}),s.jsx("h1",{className:"wl-hero-enter wl-hero-title mt-4 max-w-4xl font-home-heading text-5xl font-extrabold sm:mt-5 sm:text-7xl lg:text-8xl",children:"Wanderlust"}),s.jsx("h2",{className:"wl-hero-enter mt-4 max-w-2xl font-home-heading text-2xl font-bold leading-tight sm:mt-6 sm:text-3xl lg:text-4xl",children:"Planeje suas viagens. Descubra para onde seus amigos vão."}),s.jsx("p",{className:"wl-hero-enter mt-4 max-w-xl text-base leading-relaxed text-paper/90 sm:mt-5 sm:text-lg",children:"Seu mapa de lugares, sua lista de desejos e as viagens dos seus amigos, num lugar só."}),s.jsxs("p",{className:"wl-hero-enter mt-4 flex items-start gap-2 text-sm font-medium text-paper sm:mt-5",children:[s.jsx(ch,{className:"mt-0.5 h-4 w-4 shrink-0 text-gold"}),"Exclusiva para quem tem reserva confirmada no xpark."]}),s.jsxs("div",{className:"wl-hero-enter mt-5 flex flex-wrap gap-3 sm:mt-7",children:[s.jsx(ue,{asChild:!0,className:"h-12 rounded-full bg-gold px-6 font-bold text-ink hover:bg-gold-dark",children:s.jsxs("a",{href:e,children:["Entrar com minha reserva ",s.jsx(aa,{className:"ml-2 h-4 w-4"})]})}),s.jsx(ue,{variant:"outline",className:"h-12 rounded-full border-paper bg-transparent px-6 font-bold text-paper hover:bg-paper hover:text-ink",onClick:()=>c(!0),children:"Tenho um convite"})]}),s.jsx("p",{className:"wl-hero-enter mt-3 text-sm text-paper/80 sm:mt-4",children:"Você entra com o código que chega no seu WhatsApp ou e-mail. Sem senha."})]}),s.jsxs("a",{href:"#wanderlust-descobrir","aria-label":"Descobrir a Wanderlust",className:"wl-scroll-cue absolute bottom-7 right-6 z-10 hidden items-center gap-2 text-xs font-bold uppercase text-paper lg:flex",children:["Descubra ",s.jsx(PL,{className:"h-4 w-4"})]})]}),s.jsx("section",{id:"wanderlust-descobrir",className:"bg-paper py-12 md:py-28",children:s.jsxs("div",{className:"container max-w-6xl","data-wl-reveal":!0,children:[Nx,s.jsx("p",{className:"text-xs font-bold uppercase text-gold-dark",children:"A viagem não acaba no desembarque"}),s.jsx("h2",{className:"mt-4 max-w-3xl font-home-heading text-3xl font-extrabold md:text-5xl",children:"Uma rede feita para continuar descobrindo."}),s.jsx("p",{className:"mt-5 max-w-2xl text-base leading-relaxed text-mute",children:"Planeje a próxima viagem, encontre inspiração nas pessoas que você segue e guarde ca
1081da lugar que passou a fazer parte da sua história."}),s.jsx("div",{className:"mt-14 grid gap-4 md:grid-cols-3",children:Bfe.map(({icon:f,title:g,body:b,number:v})=>s.jsxs("article",{className:"wl-benefit group flex min-h-[290px] flex-col justify-between rounded-card border border-border bg-card p-7 transition-colors hover:border-gold md:min-h-[330px]","data-wl-reveal":!0,children:[s.jsxs("div",{className:"flex items-start justify-between",children:[s.jsx("span",{className:"flex h-12 w-12 items-center justify-center rounded-lg bg-ink text-gold transition-transform group-hover:rotate-[-8deg] group-hover:scale-110",children:s.jsx(f,{className:"h-6 w-6 stroke-[1.5]"})}),s.jsx("span",{className:"font-home-heading text-4xl font-extrabold text-border",children:v})]}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-home-heading text-xl font-bold",children:g}),s.jsx("p",{className:"mt-3 text-sm leading-relaxed text-mute",children:b})]})]},g))})]})}),o.length===3&&s.jsx("section",{className:"bg-cream py-20 md:py-24",children:s.jsxs("div",{className:"container max-w-6xl","data-wl-reveal":!0,children:[Nx,s.jsx("h2",{className:"font-home-heading text-3xl font-extrabold md:text-4xl",children:"Viajantes contando como foi"}),s.jsx("div",{className:"mt-8 grid gap-4 md:grid-cols-3",children:o.map((f,g)=>s.jsxs("article",{className:"relative overflow-hidden rounded-card border border-border bg-card",children:[s.jsx("div",{className:"aspect-[4/3] bg-muted",children:n[f.id]&&s.jsx("img",{src:n[f.id],alt:`Viagem a ${f.destination??"um destino"}`,className:"h-full w-full object-cover",loading:"lazy"})}),s.jsxs("div",{className:"p-5",children:[s.jsx("p",{className:"font-bold",children:f.destination??"Viagem"}),s.jsx("p",{className:"mt-2 line-clamp-3 text-sm text-mute",children:f.body})]}),g>0&&s.jsx("div",{className:"absolute inset-0 bg-card/50 backdrop-blur-sm"})]},f.id))}),s.jsxs("div",{className:"mt-6 flex flex-wrap items-center gap-3",children:[s.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full bg-ink px-4 py-2 text-sm text-paper",children:[s.jsx(ch,{className:"h-4 w-4 text-gold"}),"Entre para ver os relatos completos"]}),s.jsx(ue,{asChild:!0,className:"rounded-full",children:s.jsx("a",{href:e,children:"Entrar"})})]})]})}),s.jsx("section",{className:"border-t border-border bg-paper py-20 md:py-28",children:s.jsxs("div",{className:"container max-w-6xl","data-wl-reveal":!0,children:[Nx,s.jsx("p",{className:"text-xs font-bold uppercase text-gold-dark",children:"Sua jornada, do seu jeito"}),s.jsx("h2",{className:"mt-4 max-w-3xl font-home-heading text-3xl font-extrabold md:text-5xl",children:"Os lugares ficam. As conquistas também."}),s.jsx("p",{className:"mt-5 max-w-2xl text-base text-mute",children:"Descubra os selos que acompanham suas viagens. Toque em um deles para saber mais."}),s.jsx("div",{className:"mt-10 grid grid-cols-2 gap-3 md:grid-cols-4",children:Ax.map(({label:f,icon:g},b)=>s.jsxs(ue,{variant:"outline","aria-pressed":m===b,onClick:()=>h(b),className:`wl-seal h-auto min-h-[176px] flex-col items-start justify-between whitespace-normal rounded-card border p-5 text-left transition-all hover:-translate-y-1 hover:border-gold ${m===b?"border-gold bg-gold-soft text-ink":"border-border bg-card text-ink"}`,children:[s.jsx(g,{className:"h-8 w-8 shrink-0 stroke-[1.5]"}),s.jsx("span",{className:"mt-8 w-full font-home-heading text-base font-bold leading-snug",children:f})]},f))}),s.jsxs("div",{className:"mt-5 flex min-h-[92px] items-center gap-4 border-t border-border pt-5","aria-live":"polite",children:[s.jsx("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-ink text-gold",children:m===0?s.jsx(On,{className:"h-5 w-5"}):s.jsx(ch,{className:"h-5 w-5"})}),s.jsxs("p",{className:"text-sm leading-relaxed text-mute",children:[s.jsxs("strong",{className:"text-ink",children:[Ax[m].label,"."]})," ",Ax[m].detail]})]})]})}),s.jsx("section",{className:"bg-ink py-20 text-paper md:py-28",children:s.jsx("div",{className:"container max-w-6xl","data-wl-reveal":!0,children:s.jsxs("div",{className:"max-w-4xl",children:[s.jsxs("p",{className:"flex items-center gap-3 text-xs font-bold uppercase text-gold",children:[s.jsx(qu,{className:"h-5 w-5"}),"Presente de boas-vindas"]}),s.jsx("h2",{className:"mt-6 font-home-heading text-4xl font-extrabold md:text-6xl",children:"A próxima viagem começa por aqui."}),s.jsx("p",{className:"mt-5 max-w-2xl font-home-heading text-xl font-bold md:text-2xl",children:"Entre, responda o questionário e ganhe 1 diária grátis."}),s.jsx("p",{className:"mt-5 max-w-2xl text-sm leading-relaxed text-paper/80",children:"Responda o questionário do Programa de Viajantes para receber o crédito. Vale por 12 meses para reservas de 2 diárias ou mais no site do xpark. Se usar o XPK26, o valor da diária grátis já considera o desconto do cupom."}),s.jsxs("div",{className:"mt-8 flex flex-wrap gap-3",children:[s.jsx(ue,{asChild:!0,className:"h-12 rounded-full bg-gold px-7 font-bold text-ink hover:bg-gold-dark",children:s.jsxs("a",{href:e,children:["Entrar c
1081om minha reserva ",s.jsx(aa,{className:"ml-2 h-4 w-4"})]})}),s.jsx(ue,{variant:"outline",className:"h-12 rounded-full border-paper bg-transparent px-6 font-bold text-paper hover:bg-paper hover:text-ink",onClick:()=>c(!0),children:"Tenho um convite"})]}),s.jsx("a",{className:"mt-8 inline-block text-sm text-paper/80 underline underline-offset-4 hover:text-gold",href:"/",children:"Ainda não reservou? Encontre sua vaga no xpark"})]})})})]}),s.jsx(Zg,{open:l,onOpenChange:c,children:s.jsxs(Am,{className:"max-w-sm rounded-[22px]",children:[s.jsx(Em,{children:s.jsx(_m,{children:"Tenho um convite"})}),s.jsxs("label",{className:"space-y-2 text-sm",children:["Código ou link do convite",s.jsx(xo,{value:d,onChange:f=>u(f.target.value),onKeyDown:f=>{f.key==="Enter"&&p()},placeholder:"Cole seu código ou link"})]}),s.jsx(ue,{onClick:p,disabled:!d.trim(),className:"rounded-full",children:"Continuar"}),d.trim()&&(()=>{let f=d.trim();try{f=new URL(f).searchParams.get("convite")??f}catch{}return/^[a-f0-9]{12}$/i.test(f)?null:s.jsx("p",{className:"text-xs text-destructive",children:"Confira o código do convite."})})()]})}),s.jsx("div",{className:"fixed inset-x-0 bottom-0 z-50 border-t border-border bg-card p-3 pb-[max(12px,env(safe-area-inset-bottom))] md:hidden",children:s.jsx(ue,{asChild:!0,className:"h-12 w-full rounded-full bg-gold font-bold text-ink",children:s.jsx("a",{href:e,children:"Entrar e ganhar 1 diária"})})})]})}const Vw=x.forwardRef(({className:e,...t},a)=>s.jsx("textarea",{className:ne("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm r
1081ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:a,...t}));Vw.displayName="Textarea";Ht.map(e=>({iata:e.iata,name:`${e.displayCity??e.city} (${e.iata})`,hubSlug:e.slug,bookable:L6.includes(e.iata)}));cO().filter(e=>!e.canonicalPath);const ED=({children:e})=>s.jsx("div",{className:"bg-tech-bg font-geist text-tech-fg",children:s.jsx("div",{className:"container max-w-3xl space-y-6 py-12 md:py-16",children:e})}),_D=()=>s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.2em] text-gold",children:vD});function Vfe({q:e}){return s.jsxs("li",{className:"rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsx(G,{to:Zi(e),className:"font-semibold hover:underline",children:e.title}),s.jsxs("p",{className:"mt-1 text-xs text-tech-mute",children:[k0(e.iata).name," · ",xD]})]})}function Ffe(){const{airport:e=""}=on(),t=kD(e);if(!t)return s.jsx(cl,{});const a=Iw(t.iata);return s.jsxs(ED,{children:[s.jsx(Ye,{title:`Perguntas sobre estacionamento em ${t.iata} | Wanderlust`,description:`Perguntas reais de clientes sobre estacionamento no ${t.name}, respondidas pela equipe xpark: cancelamento, traslado, preço, endereço e mais.`,path:`/wanderlust/${t.slug}`,jsonLd:_fe(t)}),s.jsxs("nav",{className:"text-xs text-tech-mute",children:[s.jsx(G,{to:"/wanderlust",className:"hover:underline",children:"Wanderlust"})," · ",t.iata]}),s.jsx(_D,{}),s.jsxs("h1",{className:"text-3xl font-semibold",children:["Perguntas de viajantes: ",t.name]}),s.jsxs("p",{className:"text-tech-mute",children:["Compare os estacionamentos na ",s.jsx(G,{to:wD(t),className:"underline",children:"página do aeroporto"})," e veja os totais por perÃodo na ",s.jsx(G,{to:CD(t),className:"underline",children:"página de preços"}),"."]}),s.jsx("ul",{className:"space-y-3",children:a.map(o=>s.jsx(Vfe,{q:o},o.slug))})]})}function Ufe(){const{airport:e="",slug:t=""}=on(),a=kD(e),o=a&&Dw.find(n=>n.iata===a.iata&&n.slug===t);if(!a||!o)return s.jsx(cl,{});const r=Iw(a.iata).filter(n=>n.slug!==o.slug);return s.jsxs(ED,{children:[s.jsx(Ye,{title:Nfe(o),description:Afe(o),path:Zi(o),type:"article",jsonLd:Efe(o),noindex:!k2(o)}),s.jsxs("nav",{className:"text-xs text-tech-mute",children:[s.jsx(G,{to:"/wanderlust",className:"hover:underline",children:"Wanderlust"})," · ",s.jsx(G,{to:`/wanderlust/${a.slug}`,className:"hover:underline",children:a.iata})]}),s.jsx(_D,{}),s.jsxs("article",{className:"space-y-5",children:[s.jsx("h1",{className:"text-3xl font-semibold",children:o.title}),s.jsxs("section",{className:"rounded-card border border-tech-border bg-tech-card p-5",children:[s.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-tech-mute",children:xD}),s.jsxs("p",{className:"mt-2 italic",children:['"',o.question,'"']})]}),k2(o)?s.jsxs("section",{className:"rounded-card border border-gold/40 p-5",children:[s.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-gold",children:jfe}),s.jsx("div",{className:"mt-2 space-y-3 text-[15px] leading-relaxed",children:o.answer.map((n,i)=>s.jsx("p",{children:n},i))}),o.related&&s.jsxs("p",{className:"mt-4 text-sm",children:["Veja também: ",s.jsx(G,{to:o.related.href,className:"underline",children:o.related.label})]})]}):s.jsx("p",{className:"text-sm text-tech-mute",children:"Esta pergunta ainda não foi respondida."}),s.jsx(DO,{targetType:"question_static",targetKey:`${o.iata}/${o.slug}`}),s.jsxs("p",{className:"text-sm text-tech-mute",children:["Compare os estacionamentos na ",s.jsx(G,{to:wD(a),className:"underline",children:"página do aeroporto"})," e na ",s.jsx(G,{to:CD(a),className:"underline",children:"página de preços"}),"."]})]}),r.length>0&&s.jsxs("section",{className:"space-y-2 pt-4",children:[s.jsxs("h2",{className:"text-lg font-semibold",children:["Outras perguntas sobre ",a.name]}),s.jsx("ul",{className:"list-disc space-y-1 pl-5 text-sm",children:r.map(n=>s.jsx("li",{children:s.jsx(G,{to:Zi(n),className:"hover:underline",children:n.title})},n.slug))})]})]})}const Gfe={public:DL,friends:Ng,private:FL};function Fw({post:e,author:t,stats:a,mine:o,uid:r,groupName:n,onChanged:i,onWish:l}){const[c,d]=x.useState([]),[u,m]=x.useState(!1),[h,p]=x.useState([]),[f,g]=x.use
1081State({}),[b,v]=x.useState(""),[y,k]=x.useState(a??{likes:0,quero_ir:0,comments:0}),[w,R]=x.useState(o??{like:!1,quero_ir:!1,saved:!1});x.useEffect(()=>{a&&k(a)},[a]),x.useEffect(()=>{o&&R(o)},[o]),x.useEffect(()=>{be.from("wl_post_photos").select("path").eq("post_id",e.id).order("sort_order").then(async({data:T})=>{const D=(T??[]).map(U=>U.path);if(!D.length)return;const F=await Bw(D);d(D.map(U=>F[U]).filter(Boolean))})},[e.id]);const C=async()=>{const{data:T}=await be.from("wl_post_comments").select("id, body, author_id, created_at").eq("post_id",e.id).order("created_at");p(T??[]);const D=Array.from(new Set((T??[]).map(F=>F.author_id)));if(D.length){const{data:F}=await be.rpc("wl_public_names",{_ids:D});g(Object.fromEntries((F??[]).map(U=>[U.user_id,U.public_name])))}};x.useEffect(()=>{u&&C()},[u]);const P=()=>r?!0:(_e("Entre na Wanderlust para participar."),!1),N=async T=>{if(!P())return;const D=w[T];if(R({...w,[T]:!D}),k({...y,[T==="like"?"likes":"quero_ir"]:y[T==="like"?"likes":"quero_ir"]+(D?-1:1)}),(D?await be.from("wl_reactions").delete().match({post_id:e.id,user_id:r,kind:T}):await be.from("wl_reactions").insert({post_id:e.id,user_id:r,kind:T})).error){_e.error("Não foi possÃvel agora.");return}T==="quero_ir"&&!D&&e.destination&&(l==null||l(e.destination),_e.success(`${e.destination} entrou na sua lista de desejos.`))},E=async()=>{if(!P())return;const T=w.saved;R({...w,saved:!T}),T?await be.from("wl_saves").delete().match({user_id:r,post_id:e.id}):await be.from("wl_saves").insert({user_id:r,post_id:e.id})},A=async()=>{if(!P()||!b.trim())return;const{error:T}=await be.from("wl_post_comments").insert({post_id:e.id,author_id:r,body:b.trim()});if(T){_e.error(T.message.includes("link")||T.message.includes("spam")?T.message:"Não foi possÃvel comentar.");return}v(""),k({...y,comments:y.comments+1}),C()},$=async()=>{confirm("Apagar esta publicação?")&&(await be.from("wl_posts").delete().eq("id",e.id),i==null||i())},O=async(T,D)=>{if(!P())return;await ND(r,T,D)?_e.error("Não foi possÃvel enviar."):_e.success("Denúncia enviada. A equipe vai analisar.")},V=Gfe[e.visibility];return s.jsxs("article",{className:"wl-card overflow-hidden border border-tech-border bg-tech-card",children:[s.jsxs("header",{className:"flex items-start gap-3 p-4 pb-2",children:[s.jsx(qo,{name:t,size:40}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("p",{className:"text-sm",children:[s.jsx(G,{to:`/wanderlust?aba=perfil&u=${e.author_id}`,className:"font-semibold hover:underline",children:t}),e.kind==="relato"&&e.destination?s.jsxs("span",{className:"text-tech-mute",children:[" voltou de ",e.destination]}):e.kind==="quero_ir"&&e.destination?s.jsxs("span",{className:"text-tech-mute",children:[" quer ir para ",e.destination]}):n&&s.jsxs("span",{className:"text-tech-mute",children:[" em ",n]})]}),s.jsxs("p",{className:"flex flex-wrap items-center gap-x-2 text-xs text-tech-mute",children:[s.jsx(G,{to:`/wanderlust/post/${e.id}`,className:"hover:underline",children:a2(e.created_at)}),s.jsxs("span",{className:"inline-flex items-center gap-1",children:[s.jsx(V,{className:"h-3 w-3"}),Kc[e.visibility].toLowerCase()]}),s.jsx("span",{children:w2[e.kind]})]})]}),r===e.author_id?s.jsx("button",{"aria-label":"Apagar",onClick:$,className:"text-tech-mute hover:text-foreground",children:s.jsx(jg,{className:"h-4 w-4"})}):s.jsx("button",{"aria-label":"Denunciar publicação",onClick:()=>O("post",e.id),className:"text-tech-mute hover:text-foreground",children:s.jsx(cf,{className:"h-4 w-4"})})]}),s.jsxs("div",{className:"px-4 pb-3",children:[e.destination&&e.kind!=="quero_ir"&&s.jsxs("p",{className:"mb-2 inline-flex items-center gap-1 rounded-full bg-gold-soft px-3 py-1 text-xs font-medium",children:[s.jsx(en,{className:"h-3 w-3"}),e.destination,e.trip_date&&` · ${new Date(e.trip_date+"T12:00").toLocaleDateString("pt-BR")}`]}),s.jsx("p",{className:"whitespace-pre-wrap text-[15px] leading-relaxed",children:s.jsx(t2,{text:e.body})}),e.kind==="quero_ir"&&e.destination&&s.jsxs("div",{className:"mt-4 flex items-center justify-between gap-3 rounded-xl bg-tech-bg p-4",children:[s.jsxs("span",{className:"flex items-center gap-2 font-semibold",children:[s.jsx(en,{className:"h-4 w-4 text-gold-dark"}),e.destination]}),s.jsxs(ue,{size:"sm",className:"rounded-full",onClick:()=>N("quero_ir"),children:["Também quero ir ",s.jsx(aa,{className:"ml-1 h-3 w-3"})]})]})]}),c.length>0&&s.jsx("div",{className:`grid gap-0.5 ${c.length===1?"grid-cols-1":"grid-cols-2"}`,children:c.slice(0,4).map((T,D)=>s.jsxs("div",{className:`relative bg-muted ${c.length===1?"aspect-[4/3] md:aspect-[16/10]":"aspect-square"}`,children:[s.jsx("img",{src:T,alt:`Foto ${D+1} da publicação`,loading:"lazy",className:"h-full w-full object-cover"}),D===3&&c.length>4&&s.jsxs("span",{className:"absolute inset-0 flex items-center justify-center bg-foreground
1081/50 text-2xl font-semibold text-background",children:["+",c.length-4]})]},D))}),s.jsxs("div",{className:"flex items-center justify-between px-4 pt-2 text-xs text-tech-mute",children:[s.jsxs("span",{children:[y.likes," curtidas · ",y.quero_ir," querem ir"]}),s.jsxs("button",{onClick:()=>m(!u),className:"hover:underline",children:[y.comments," comentários"]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-2 border-t border-tech-border p-3 text-xs sm:grid-cols-4",children:[s.jsxs(ue,{size:"sm",variant:"outline",onClick:()=>N("like"),className:`rounded-full ${w.like?"border-gold font-semibold":""}`,children:[s.jsx(Mb,{className:`mr-1 h-4 w-4 ${w.like?"fill-current":""}`}),"Curtir"]}),s.jsxs(ue,{size:"sm",variant:"outline",onClick:()=>N("quero_ir"),className:`rounded-full bg-gold-soft ${w.quero_ir?"font-semibold":""}`,children:[s.jsx(_c,{className:"mr-1 h-4 w-4"}),"Quero ir"]}),s.jsxs(ue,{size:"sm",variant:"outline",onClick:()=>m(!u),className:"rounded-full",children:[s.jsx(hT,{className:"mr-1 h-4 w-4"}),"Comentar"]}),s.jsxs(ue,{size:"sm",variant:"outline",onClick:E,className:`rounded-full ${w.saved?"font-semibold":""}`,children:[s.jsx(sT,{className:`mr-1 h-4 w-4 ${w.saved?"fill-current":""}`}),"Salvar"]})]}),u&&s.jsxs("div",{className:"space-y-3 border-t border-tech-border bg-tech-bg/50 p-4",children:[h.map(T=>s.jsxs("div",{className:"flex gap-2 text-sm",children:[s.jsx(qo,{name:f[T.author_id]??"V",size:28}),s.jsxs("div",{className:"flex-1 rounded-2xl bg-tech-card px-3 py-2",children:[s.jsxs("p",{className:"text-xs font-semibold",children:[f[T.author_id]??"Viajante"," ",s.jsx("span",{className:"font-normal text-tech-mute",children:a2(T.created_at)})]}),s.jsx("p",{className:"whitespace-pre-wrap",children:s.jsx(t2,{text:T.body})})]}),r&&r!==T.author_id&&s.jsx("button",{"aria-label":"Denunciar comentário",onClick:()=>O("comment",T.id),className:"text-tech-mute",children:s.jsx(cf,{className:"h-3 w-3"})})]},T.id)),r?s.jsxs("div",{className:"flex gap-2",children:[s.jsx(xo,{value:b,maxLength:1e3,onChange:T=>v(T.target.value),onKeyDown:T=>T.key==="Enter"&&A(),placeholder:"Escreva um comentário",className:"rounded-full"}),s.jsx(ue,{size:"sm",className:"rounded-full",onClick:A,children:"Enviar"})]}):s.jsx("p",{className:"text-xs text-tech-mute",children:"Entre na Wanderlust para comentar."})]})]})}async function TD(e,t){const a=e.map(m=>m.id),o=Array.from(new Set(e.map(m=>m.author_id)));if(!a.length)return{stats:{},mine:{},names:{}};const[r,n,i,l]=await Promise.all([be.rpc("wl_post_stats",{_ids:a}),be.rpc("wl_public_names",{_ids:o}),t?be.from("wl_reactions").select("post_id, kind").eq("user_id",t).in("post_id",a):Promise.resolve({data:[]}),t?be.from("wl_saves").select("post_id").eq("user_id",t).in("post_id",a):Promise.resolve({data:[]})]),c={};(r.data??[]).forEach(m=>{c[m.post_id]={likes:m.likes,quero_ir:m.quero_ir,comments:m.comments}});const d={};a.forEach(m=>{d[m]={like:!1,quero_ir:!1,saved:!1}}),(i.data??[]).forEach(m=>{d[m.post_id][m.kind]=!0}),(l.data??[]).forEach(m=>{d[m.post_id].saved=!0});const u=Object.fromEntries((n.data??[]).map(m=>[m.user_id,m.public_name]));return{stats:c,mine:d,names:u}}const Fp="h-10 w-full rounded-full border border-tech-border bg-background px-3 text-sm";function zfe({open:e,onOpenChange:t,uid:a,groups:o,trips:r,defaultGroup:n,onPosted:i}){const[l,c]=x.useState("relato"),[d,u]=x.useState(""),[m,h]=x.useState(""),[p,f]=x.useState(n??""),[g,b]=x.useState(""),[v,y]=x.useState(""),[k,w]=x.useState("friends"),[R,C]=x.useState([]),[P,N]=x.useState(!1);x.useEffect(()=>{e&&f(n??"")},[e,n]);const E=r.find(T=>T.id===g),A=E&&el(E.end_date??E.start_date)||el(v);x.useEffect(()=>{A&&k==="public"&&w("friends")},[A,k]),x.useEffect(()=>{E&&h(E.destination)},[E]);const $=x.useMemo(()=>R.map(T=>URL.createObjectURL(T)),[R]),O=T=>{if(!T)return;const D=[...R,...Array.from(T).filter(F=>F.type.startsWith("image/"))].slice(0,10);R.length+T.length>10&&_e("Máximo de 10 fotos por publicação."),C(D)},V=async()=>{if(!d.trim()){_e("Escreva algo antes de publicar.");return}N(!0);try{const{data:T,error:D}=await be.from("wl_posts").insert({author_id:a,kind:l,body:d.trim(),destination:m||null,group_id:p||null,trip_id:g||null,trip_date:v||null,visibility:k}).select("id").single();if(D)throw D;for(let F=0;F<R.length;F++){const U=await C2(a,R[F]),L=await be.from("wl_post_photos").insert({post_id:T.id,path:U,sort_order:F});if(L.error)throw L.error}_e.success("Publicado."),u(""),C([]),h(""),b(""),y(""),c("relato"),t(!1),i()}catch(T){_e.error(T!=null&&T.message&&/link|spam|Muitas|futura/i.test(T.message)?T.message:"Não foi possÃvel publicar.")}finally{N(!1)}};return s.jsx(Zg,{open:e,onOpenChange:t,children:s.jsxs(Am,{className:"max-h-[92vh] overflow-y-auto font-geist sm:max-w-lg",children:[s.jsx(Em,{children:s.jsx(_m,{children:"Nova publicação"})}),s.jsxs("div",{className:"space-y-3",children:[s.jsx("div",{className:"flex flex-wrap gap-2",children:Object.keys(w2).map(T=>s.jsx("button",{onClick:()=>c(T),className:`rounded-full border px-3 py-1 text-sm ${l===T?"border-gold bg-gold/20 font-semibold":"border-tech-border"}`,children:w2[T]},T))}),s.jsx(Vw,{value:d,maxLength:3e3,onChange:T=>u(T.target.value),rows:4,placeholder:l==="quero_ir"?"Para onde você quer ir e por quê?":l==="dica"?"Compartilhe uma dica útil":"Conte como foi a viagem"}),s.jsxs("label",{className:"block text-xs font-medium",children:["Destino (escolha da lista)",s.jsxs("select",{className:Fp,value:m,onChange:T=>h(T.target.value),children:[s.jsx("option",{value:"",children:"Sem destino"}),tg.map(T=>s.jsx("option",{value:T,children:T},T))]})]}),s.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[s.jsxs("label",{className:"block text-xs font-medium",children:["Ligar a uma viagem",s.jsxs("select",{className:Fp,value:g,onChange:T=>b(T.target.value),children:[s.jsx("option",{value:"",children:"Nenhuma"}),r.map(T=>s.jsx("option",{value:T.id,children:T.destination},T.id))]})]}),s.jsxs("label",{className:"block text-xs font-medium",children:["Data da viagem",s.jsx("input",{type:"date",className:Fp,value:v,onCh
1081ange:T=>y(T.target.value)})]})]}),s.jsxs("label",{className:"block text-xs font-medium",children:["Grupo",s.jsxs("select",{className:Fp,value:p,onChange:T=>f(T.target.value),children:[s.jsx("option",{value:"",children:"Só no meu perfil"}),o.map(T=>s.jsx("option",{value:T.id,children:T.name},T.id))]})]}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-medium",children:"Quem pode ver"}),s.jsx("div",{className:"mt-1 flex gap-2",children:["public","friends","private"].filter(T=>!(A&&T==="public")).map(T=>s.jsx("button",{onClick:()=>w(T),className:`rounded-full border px-3 py-1 text-sm ${k===T?"border-gold bg-gold/20 font-semibold":"border-tech-border"}`,children:Kc[T]},T))}),A&&s.jsx("p",{className:"mt-1 text-xs text-tech-mute",children:"Viagem futura fica só para amigos ou só para você, por segurança."})]}),s.jsxs("div",{children:[s.jsxs("div",{className:"flex flex-wrap gap-2",children:[$.map((T,D)=>s.jsxs("div",{className:"relative h-16 w-16 overflow-hidden rounded-lg",children:[s.jsx("img",{src:T,alt:"",className:"h-full w-full object-cover"}),s.jsx("button",{"aria-label":"Remover foto",onClick:()=>C(R.filter((F,U)=>U!==D)),className:"absolute right-0.5 top-0.5 rounded-full bg-background p-0.5",children:s.jsx(Gi,{className:"h-3 w-3"})})]},D)),R.length<10&&s.jsxs("label",{className:"flex h-16 w-16 cursor-pointer items-center justify-center rounded-lg border border-dashed border-tech-border",children:[s.jsx(ML,{className:"h-5 w-5"}),s.jsx("input",{type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:T=>O(T.target.files)})]})]}),s.jsx("p",{className:"mt-1 text-xs text-tech-mute",children:"Até 10 fotos. A localização gravada na foto é apagada antes do envio."})]}),s.jsx(ue,{className:"w-full rounded-full",disabled:P,onClick:V,children:P?"Publicando...":"Publicar"})]})]})})}function Hfe({uid:e,existing:t,onDone:a}){const[o,r]=x.useState(t?!0:null),[n,i]=x.useState((t==null?void 0:t.display_name)??""),[l,c]=x.useState((t==null?void 0:t.birth_date)??""),[d,u]=x.useState(!1),[m,h]=x.useState(!1),[p,f]=x.useState(!1);x.useEffect(()=>{t||be.rpc("wl_can_join").then(({data:v})=>r(!!v)),be.from("profiles").select("full_name, birth_date").eq("id",e).maybeSingle().then(({data:v})=>{v!=null&&v.full_name&&!n&&i(v.full_name),v!=null&&v.birth_date&&!l&&c(v.birth_date)})},[e]);const g=l&&new Date(l+"T12:00")<=new Date(new Date().setFullYear(new Date().getFullYear()-18)),b=async()=>{if(!n.trim()||!l||!d||!m){_e("Preencha tudo e aceite os termos.");return}if(!g){_e.error("A Wanderlust é só para maiores de 18 anos.");return}f(!0);const v=new Date().toISOString(),y={display_name:n.trim().slice(0,60),birth_date:l,terms_accepted_at:v,adult_confirmed_at:v};if((t?await be.from("wl_profiles").update(y).eq("user_id",e):await be.from("wl_profiles").insert({user_id:e,...y})).error){f(!1),_e.error("Não foi possÃvel criar seu perfil.");return}await be.rpc("wl_ensure_member");const w=localStorage.getItem("wl_invite");w&&(await be.rpc("wl_accept_invite",{_code:w}),localStorage.setItem("wl_invited","1"),localStorage.removeItem("wl_invite")),f(!1),a()};return o===null?s.jsx("p",{className:"p-10 text-center text-tech-mute",children:"Carregando..."}):o?s.jsxs("div",{className:"mx-auto max-w-md space-y-4 p-6",children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.2em] text-gold",children:"Wanderlust · uma comunidade xpark"}),s.jsx("h1",{className:"text-2xl font-semibold",children:"Crie seu perfil de viajante"}),s.jsxs("label",{className:"block text-sm font-medium",children:["Nome",s.jsx(xo,{value:n,maxLength:60,onChange:v=>i(v.target.value)})]}),s.jsxs("label",{className:"block text-sm font-medium",children:["Data de nascimento",s.jsx(xo,{type:"date",value:l,onChange:v=>c(v.target.value)})]}),l&&!g&&s.jsx("p",{className:"text-sm text-destructive",children:"A Wanderlust é só para maiores de 18 anos."}),s.jsxs("div",{className:"max-h-48 space-y-2 overflow-y-auto rounded-card border border-tech-border p-3 text-xs text-tech-mute",children:[s.jsx("p",{className:"font-semibold text-foreground",children:"Termos de uso"}),s.jsx("p",{children:"A Wanderlust é uma comunidade de clientes do xpark, só para maiores de 18 anos. Seja respeitoso. Não publique dados pessoais de outras pessoas, propaganda, golpes ou conteúdo ofensivo. A equipe pode ocultar ou remover publicações e bloquear perfis que descumprirem estas regras."}),s.jsx("p",{children:"Você escolhe quem vê cada publicação: Pública, Amigos ou Só eu. Viagens futuras nunca ficam públicas. Fotos têm a localização apagada antes do envio."}),s.jsx("p",{className:"font-semibold text-foreground",children:"Seus dados (LGPD)"}),s.jsxs("p",{children:["Usamos seu nome, cidade, data de nascimento, publicações, viagens e reservas do xpark para montar seu perfil, seus selos e sugestões de amigos. Você pode apagar publicações a qualquer momento e pedir a exclusão da conta pelo atendimento. Detalhes na ",s.jsx("a",{href:"/privacidade",className:"underline",children:"polÃtica de privacidade"}),"."]})]}),s.jsxs("label",{className:"flex items-start gap-2 text-sm",children:[s.jsx("input",{type:"checkbox",checked:d,onChange:v=>u(v.target.checked),className:"mt-1"}),"Li e aceito os termos de uso e confirmo que tenho 18 anos ou mais."]}),s.jsxs("label",{className:"flex items-start gap-2 text-sm",children:[s.jsx("input",{type:"checkbox",checked:m,onChange:v=>h(v.target.checked),className:"mt-1"}),"Autorizo o uso dos meus dados para a comunidade, como descrito acima."]}),s.jsx(ue,{className:"w-full rounded-full",disabled:p,onClick:b,children:p?"Criando...":"Entrar na Wanderlust"})]}
1081):s.jsxs("div",{className:"mx-auto max-w-md space-y-3 p-6 text-center",children:[s.jsx("h1",{className:"text-2xl font-semibold",children:"A Wanderlust é para quem reserva pelo xpark"}),s.jsx("p",{className:"text-tech-mute",children:"Para criar sua conta, você precisa de pelo menos uma reserva confirmada no xpark com este telefone ou e-mail."}),s.jsx(ue,{asChild:!0,className:"rounded-full",children:s.jsx("a",{href:"/",children:"Reservar estacionamento"})})]})}const Up="h-10 w-full rounded-full border border-tech-border bg-background px-3 text-sm",SA=e=>e.toLocaleString("pt-BR",{style:"currency",currency:"BRL"}),Kfe={confirmed:"Confirmada",completed:"ConcluÃda",pending:"Aguardando pagamento",cancelled:"Cancelada"};function Qfe({trip:e}){const t=e.departure_iata,a=e.end_date??e.start_date,o=Math.max(1,Math.round((new Date(a+"T12:00").getTime()-new Date(e.start_date+"T12:00").getTime())/864e5)+1);let r=0,n=0;try{r=ge(t,o),n=je(At(t),o)}catch{return null}const i=KO({airport:t,entrada:e.start_date,saida:a,src:"wanderlust"});return s.jsxs("div",{className:"mt-3 rounded-card border border-gold/50 bg-gold/10 p-3 text-sm",children:[s.jsxs("p",{className:"flex items-center gap-1 font-semibold",children:[s.jsx(_L,{className:"h-4 w-4"}),"Reserve seu estacionamento em ",t]}),s.jsxs("p",{className:"mt-1",children:[o," ",o===1?"diária":"diárias"," a partir de ",s.jsxs("strong",{children:[SA(r)," com o cupom XPK26"]})," (",SA(n)," sem cupom), vaga descoberta. O valor final aparece na busca, conforme horários e vaga."]}),s.jsx(ue,{asChild:!0,size:"sm",className:"mt-2 rounded-full",children:s.jsx("a",{href:i,children:"Reservar"})})]})}function $D(e,t){return[...e.filter(o=>el(o.start_date)).map(o=>({label:o.destination,date:o.start_date})),...t.filter(o=>o.status==="confirmed"&&el(o.start_date)).map(o=>({label:`SaÃda por ${o.airport_code}`,date:o.start_date}))].sort((o,r)=>o.date.localeCompare(r.date))[0]??null}function OD({next:e}){if(!e)return s.jsx("p",{className:"text-sm text-tech-mute",children:"Nenhuma viagem marcada. Crie uma em Viagens."});const t=Dfe(e.date);return s.jsxs("div",{children:[s.jsx("p",{className:"font-geist text-4xl font-semibold text-gold",children:t<=0?"Hoje":t}),s.jsxs("p",{className:"text-sm",children:[t>0&&(t===1?"dia para ":"dias para "),s.jsx("strong",{children:e.label})]}),s.jsx("p",{className:"text-xs text-tech-mute",children:Al(e.date)})]})}function Wfe({uid:e,trips:t,bookings:a,friends:o,onChanged:r}){const[n,i]=x.useState(""),[l,c]=x.useState(""),[d,u]=x.useState(""),[m,h]=x.useState(""),[p,f]=x.useState("friends"),[g,b]=x.useState([]),[v,y]=x.useState([]),k=el(d||l)||!l;x.useEffect(()=>{k&&p==="public"&&f("friends")},[k,p]),x.useEffect(()=>{be.from("wl_trip_members").select("trip_id").eq("user_id",e).then(async({data:C})=>{const P=(C??[]).map(E=>E.trip_id);if(!P.length)return y([]);const{data:N}=await be.from("wl_trips").select("*").in("id",P);y(N??[])})},[e,t]);const w=async()=>{if(!n||!l){_e("Escolha destino e data de ida.");return}const{data:C,error:P}=await be.from("wl_trips").insert({owner_id:e,destination:n,start_date:l,end_date:d||null,departure_iata:m||null,visibility:p}).select("id").single();if(P){_e.error(P.message.includes("futura")?P.message:"Não foi possÃvel criar.");return}g.length&&await be.from("wl_trip_members").insert(g.map(N=>({trip_id:C.id,user_id:N}))),_e.success("Viagem criada."),i(""),c(""),u(""),h(""),b([]),r()},R=async C=>{confirm("Apagar esta viagem?")&&(await be.from("wl_trips").delete().eq("id",C),r())};return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("section",{className:"rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsx("h2",{className:"font-semibold",children:"Próxima viagem"}),s.jsx("div",{className:"mt-2",children:s.jsx(OD,{next:$D(t,a)})})]}),s.jsxs("section",{className:"rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsx("h2",{className:"font-semibold",children:"Criar viagem"}),s.jsxs("div",{className:"mt-3 grid gap-2 sm:grid-cols-2",children:[s.jsxs("label",{className:"text-xs font-medium sm:col-span-2",children:["Destino",s.jsxs("select",{className:Up,value:n,onChange:C=>i(C.target.value),children:[s.jsx("option",{value:"",children:"Escolha"}),tg.map(C=>s.jsx("option",{children:C},C))]})]}),s.jsxs("label",{className:"text-xs font-medium",children:["Ida",s.jsx("input",{type:"date",className:Up,value:l,onCh
1081ange:C=>c(C.target.value)})]}),s.jsxs("label",{className:"text-xs font-medium",children:["Volta",s.jsx("input",{type:"date",className:Up,value:d,min:l,onChange:C=>u(C.target.value)})]}),s.jsxs("label",{className:"text-xs font-medium sm:col-span-2",children:["Aeroporto de saÃda",s.jsxs("select",{className:Up,value:m,onChange:C=>h(C.target.value),children:[s.jsx("option",{value:"",children:"Não informar"}),$fe.map(C=>s.jsx("option",{value:C.iata,children:C.name},C.iata))]})]})]}),s.jsx("p",{className:"mt-3 text-xs font-medium",children:"Quem pode ver"}),s.jsx("div",{className:"mt-1 flex gap-2",children:["public","friends","private"].filter(C=>!(k&&C==="public")).map(C=>s.jsx("button",{onClick:()=>f(C),className:`rounded-full border px-3 py-1 text-sm ${p===C?"border-gold bg-gold/20 font-semibold":"border-tech-border"}`,children:Kc[C]},C))}),k&&s.jsx("p",{className:"mt-1 text-xs text-tech-mute",children:"Viagem futura fica sempre com Amigos ou Só eu."}),o.length>0&&s.jsxs("div",{className:"mt-3",children:[s.jsx("p",{className:"text-xs font-medium",children:"Quem vai junto"}),s.jsx("div",{className:"mt-1 flex flex-wrap gap-2",children:o.map(C=>s.jsx("button",{onClick:()=>b(g.includes(C.id)?g.filter(P=>P!==C.id):[...g,C.id]),className:`rounded-full border px-3 py-1 text-sm ${g.includes(C.id)?"border-gold bg-gold/20":"border-tech-border"}`,children:C.name},C.id))})]}),s.jsx(ue,{className:"mt-4 rounded-full",onClick:w,children:"Criar viagem"})]}),s.jsxs("section",{className:"space-y-3",children:[s.jsx("h2",{className:"font-semibold",children:"Minhas viagens"}),t.length===0&&s.jsx("p",{className:"text-sm text-tech-mute",children:"Nenhuma viagem criada ainda."}),t.map(C=>s.jsxs("div",{className:"rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsxs("div",{className:"flex items-start justify-between",children:[s.jsxs("div",{children:[s.jsx("p",{className:"font-semibold",children:C.destination}),s.jsxs("p",{className:"flex items-center gap-1 text-xs text-tech-mute",children:[s.jsx(iT,{className:"h-3 w-3"}),Al(C.start_date),C.end_date&&` a ${Al(C.end_date)}`,C.departure_iata&&` · sai de ${C.departure_iata}`," · ",Kc[C.visibility]]})]}),s.jsx("button",{"aria-label":"Apagar viagem",onClick:()=>R(C.id),className:"text-tech-mute",children:s.jsx(jg,{className:"h-4 w-4"})})]}),C.departure_iata&&jD.includes(C.departure_iata)&&el(C.start_date)&&s.jsx(Qfe,{trip:C})]},C.id)),v.length>0&&s.jsx("h3",{className:"pt-2 text-sm font-semibold",children:"Viagens para as quais fui convidado"}),v.map(C=>s.jsxs("div",{className:"rounded-card border border-tech-border bg-tech-card p-3 text-sm",children:[s.jsx("strong",{children:C.destination})," · ",Al(C.start_date)]},C.id))]}),s.jsxs("section",{className:"space-y-2",children:[s.jsx("h2",{className:"font-semibold",children:"Reservas no xpark"}),a.length===0&&s.jsx("p",{className:"text-sm text-tech-mute",children:"Nenhuma reserva encontrada para seu telefone ou e-mail."}),a.map(C=>s.jsxs("div",{className:"flex items-center gap-3 rounded-card border border-tech-border bg-tech-card p-3 text-sm",children:[s.jsx(_c,{className:"h-5 w-5 text-gold"}),s.jsxs("div",{className:"flex-1",children:[s.jsxs("p",{className:"font-medium",children:[C.location_name," (",C.airport_code,")"]}),s.jsxs("p",{className:"text-xs text-tech-mute",children:[Al(C.start_date)," a ",Al(C.end_date)]})]}),s.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-xs",children:Kfe[C.status]??C.status})]},C.id))]})]})}function Ex({all:e,value:t,onChange:a,edit:o}){const[r,n]=x.useState("");if(!o)return s.jsx("div",{className:"flex flex-wrap gap-1",children:t.length?t.map(l=>s.jsx("span",{className:"rounded-full bg-gold/15 px-2 py-0.5 text-xs",children:l},l)):s.jsx("span",{className:"text-xs text-tech-mute",children:"Nada marcado ainda."})});const i=e.filter(l=>l.toLowerCase().includes(r.toLowerCase()));return s.jsxs("div",{children:[s.jsx(xo,{value:r,onChange:l=>n(l.target.value),placeholder:"Buscar",className:"mb-2 h-8 rounded-full"}),s.jsx("div",{className:"flex max-h-40 flex-wrap gap-1 overflow-y-auto",children:i.map(l=>{const c=t.includes(l);return s.jsx("button",{onClick:()=>a(c?t.filter(d=>d!==l):[...t,l]),className:`rounded-full border px-2 py-0.5 text-xs ${c?"border-gold bg-gold/20 font-semibold":"border-tech-border"}`,children:l},l)})})]})}function Jfe({countries:e,states:t}){return s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsxs("div",{className:"rounded-card bg-tech-bg p-3 text-center",children:[s.jsx("p",{className:"text-3xl font-semibold text-gold",children:e.length}),s.jsxs("p",{className:"text-xs",children:["paÃses de ",eg.length]}),s.jsx("div",{className:"mt-2 grid grid-cols-13 gap-0.5",style:{gridTemplateColumns:"repeat(13, minmax(0, 1fr))"},children:eg.map(a=>s.jsx("span",{title:a,className:`aspect-square rounded-sm ${e.includes(a)?"bg-gold":"bg-muted"}`},a))})]}),s.jsxs("div",{className:"rounded-card bg-tech-bg p-3 text-center",children:[s.jsx("p",{className:"text-3xl font-semibold text-gold",children:t.length}),s.jsx("p",{className:"text-xs",children:"estados de 27"}),s.jsx("div",{className:"mt-2 grid gap-0.5",style:{gridTemplateColumns:"repeat(9, minmax(0, 1fr))"},children:Lw.map(a=>s.jsx("span",{title:a,className:`aspect-square rounded-sm ${t.includes(a)?"bg-gold":"bg-muted"}`},a))})]})]})}function Xfe({uid:e,profileId:t,me:a,trips:o,bookings:r,isFriend:n,onChanged:i}){const l=t===e,[c,d]=x.useState(l?a:null),[u,m]=x.useState(!1),[h,p]=x.useState({}
1081),[f,g]=x.useState([]),[b,v]=x.useState({stats:{},mine:{},names:{}}),[y,k]=x.useState([]),[w,R]=x.useState({title:"",target:5,unit:"paises"}),[C,P]=x.useState({title:"",destination:"",travel_date:"",visibility:"friends",files:[]}),N=async()=>{const j=l?a:(await be.from("wl_profiles").select("*").eq("user_id",t).maybeSingle()).data;d(j);const[H,W]=await Promise.all([be.from("wl_posts").select("*").eq("author_id",t).order("created_at",{ascending:!1}).limit(30),be.from("wl_albums").select("*").eq("owner_id",t).order("created_at",{ascending:!1})]);g(H.data??[]),k(W.data??[]),v(await TD(H.data??[],e));const _=[j==null?void 0:j.avatar_path,j==null?void 0:j.cover_path,...(W.data??[]).flatMap(B=>B.photos.slice(0,4))].filter(Boolean);p(await Bw(_))};if(x.useEffect(()=>{N()},[t,a]),!c)return s.jsx("p",{className:"p-6 text-sm text-tech-mute",children:"Perfil não encontrado."});const E=j=>d({...c,...j}),A=async()=>{const{error:j}=await be.from("wl_profiles").update({display_name:c.display_name,city:c.city,bio:c.bio,visited_countries:c.visited_countries,visited_states:c.visited_states,wishlist:c.wishlist,goals:c.goals}).eq("user_id",e);j?_e.error("Não foi possÃvel salvar."):(_e.success("Perfil salvo."),m(!1),i())},$=async(j,H)=>{if(H)try{const W=await C2(e,H,"profile");await be.from("wl_profiles").update({[j]:W}).eq("user_id",e),i()}catch{_e.error("Não foi possÃvel enviar a foto.")}},O=async()=>{const{error:j}=await be.from("community_connections").insert({requester_id:e,addressee_id:t});j?_e.error("Pedido já enviado ou indisponÃvel."):_e.success("Pedido de amizade enviado.")},V=async()=>{var j;if(!C.title||!C.files.length){_e("Dê um nome e escolha fotos.");return}try{const H=[];for(const _ of C.files.slice(0,50))H.push(await C2(e,_,"albums"));const{error:W}=await be.from("wl_albums").insert({owner_id:e,title:C.title,destination:C.destination||null,travel_date:C.travel_date||null,visibility:C.visibility,photos:H});if(W)throw W;_e.success("Ãlbum criado."),P({title:"",destination:"",travel_date:"",visibility:"friends",files:[]}),N()}catch(H){_e.error((j=H==null?void 0:H.message)!=null&&j.includes("futura")?H.message:"Não foi possÃvel criar o álbum.")}},T=l?r.filter(j=>j.status==="confirmed"||j.status==="completed"):[],D=new Set(T.map(j=>j.airport_code)).size,F=l?o.length:0,U=l?[T.length>=1&&`${T.length} ${T.length===1?"reserva":"reservas"} no xpark`,T.length>=5&&"Viajante frequente",D>=1&&`${D} ${D===1?"aeroporto usado":"aeroportos usados"}`,D>=2&&"Explorador de aeroportos",F>=1&&`${F} ${F===1?"viagem registrada":"viagens registradas"}`,c.visited_countries.length>
1081=5&&"5 paÃses"].filter(Boolean):[],L=j=>{const H=j.unit==="paises"?c.visited_countries.length:j.unit==="estados"?c.visited_states.length:F;return{v:H,pct:Math.min(100,Math.round(H/Math.max(1,j.target)*100))}},I=el(C.travel_date);return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("section",{className:"overflow-hidden rounded-card border border-tech-border bg-tech-card",children:[s.jsxs("div",{className:"relative h-36 bg-gradient-to-br from-gold/40 to-tech-bg md:h-48",children:[c.cover_path&&h[c.cover_path]&&s.jsx("img",{src:h[c.cover_path],alt:"Capa do perfil",className:"h-full w-full object-cover"}),l&&s.jsxs("label",{className:"absolute right-3 top-3 flex cursor-pointer items-center gap-1 rounded-full bg-background/90 px-3 py-1 text-xs",children:[s.jsx(lT,{className:"h-3 w-3"}),"Capa",s.jsx("input",{type:"file",accept:"image/*",className:"hidden",onChange:j=>{var H;return $("cover_path",(H=j.target.files)==null?void 0:H[0])}})]})]}),s.jsxs("div",{className:"px-4 pb-4",children:[s.jsxs("div",{className:"-mt-10 flex items-end justify-between",children:[s.jsxs("label",{className:`relative block h-20 w-20 overflow-hidden rounded-full border-4 border-tech-card bg-tech-card ${l?"cursor-pointer":""}`,children:[c.avatar_path&&h[c.avatar_path]?s.jsx("img",{src:h[c.avatar_path],alt:"Foto do perfil",className:"h-full w-full object-cover"}):s.jsx(qo,{name:c.display_name,size:72}),l&&s.jsx("input",{type:"file",accept:"image/*",className:"hidden",onChange:j=>{var H;return $("avatar_path",(H=j.target.files)==null?void 0:H[0])}})]}),l?u?s.jsx(ue,{size:"sm",className:"rounded-full",onClick:A,children:"Salvar"}):s.jsx(ue,{size:"sm",variant:"outline",className:"rounded-full",onClick:()=>m(!0),children:"Editar perfil"}):s.jsxs("div",{className:"flex gap-2",children:[!n&&s.jsxs(ue,{size:"sm",className:"rounded-full",onClick:O,children:[s.jsx(ZL,{className:"mr-1 h-4 w-4"}),"Adicionar"]}),s.jsx(ue,{size:"sm",variant:"outline",className:"rounded-full","aria-label":"Denunciar perfil",onClick:async()=>{await ND(e,"profile",t)?_e.error("Erro"):_e.success("Denúncia enviada.")},children:s.jsx(cf,{className:"h-4 w-4"})})]})]}),u?s.jsxs("div",{className:"mt-3 space-y-2",children:[s.jsx(xo,{value:c.display_name,maxLength:60,onChange:j=>E({display_name:j.target.value}),placeholder:"Nome"}),s.jsx(xo,{value:c.city??"",maxLength:80,onChange:j=>E({city:j.target.value}),placeholder:"Cidade"}),s.jsx(Vw,{value:c.bio??"",maxLength:300,onChange:j=>E({bio:j.target.value}),placeholder:"Bio",rows:2})]}):s.jsxs("div",{className:"mt-2",children:[s.jsx("h1",{className:"text-xl font-semibold",children:l?c.display_name:pi(c.display_name)}),c.city&&s.jsxs("p",{className:"flex items-center gap-1 text-sm text-tech-mute",children:[s.jsx(en,{className:"h-3 w-3"}),c.city]}),c.bio&&s.jsx("p",{className:"mt-1 text-sm",children:c.bio})]}),U.length>0&&s.jsx("div",{className:"mt-3 flex flex-wrap gap-1",children:U.map(j=>s.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-gold/60 px-2 py-0.5 text-xs",children:[s.jsx(D1,{className:"h-3 w-3 text-gold"}),j]},j))})]})]}),s.jsxs("section",{className:"space-y-3 rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsx("h2",{className:"font-semibold",children:"Lugares visitados"}),s.jsx(Jfe,{countries:c.visited_countries,states:c.visited_states}),u&&s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"text-xs font-medium",children:"PaÃses"}),s.jsx(Ex,{all:eg,value:c.visited_countries,onChange:j=>E({visited_countries:j}),edit:!0}),s.jsx("p",{className:"text-xs font-medium",children:"Estados do Brasil"}),s.jsx(Ex,{all:Lw,value:c.visited_states,onChange:j=>E({visited_states:j}),edit:!0})]})]}),s.jsxs("section",{className:"space-y-2 rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsx("h2",{className:"font-semibold",children:"Lista de desejos"}),s.jsx(Ex,{all:tg,value:c.wishlist,onChange:j=>E({wishlist:j}),edit:u})]}),s.jsxs("section",{className:"space-y-3 rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsxs("h2",{className:"flex items-center gap-1 font-semibold",children:[s.jsx(XL,{className:"h-4 w-4 text-gold"}),"Objetivos"]}),c.goals.length===0&&s.jsx("p",{className:"text-xs text-tech-mute",children:"Nenhum objetivo ainda."}),c.goals.map((j,H)=>{const W=L(j);return s.jsxs("div",{children:[s.jsxs("div",{className:"flex justify-between text-sm",children:[s.jsx("span",{children:j.title}),s.jsxs("span",{className:"text-tech-mute",children:[W.v,"/",j.target,u&&s.jsx("button",{className:"ml-2","aria-label":"Remover objetivo",onClick:()=>E({goals:c.goals.filter((_,B)=>B!==H)}),children:s.jsx(jg,{className:"inline h-3 w-3"})})]})]}),s.jsx("div",{className:"mt-1 h-2 overflow-hidden rounded-full bg-muted",children:s.jsx("div",{className:"h-full bg-gold",style:{width:`${W.pct}%`}})})]},H)}),u&&s.jsxs("div",{className:"flex flex-wrap gap-2",children:[s.jsx(xo,{value:w.title,onChange:j=>R({...w,title:j.target.value}),placeholder:"Ex.: 5 paÃses até 2027",className:"h-9 flex-1"}
1081),s.jsx(xo,{type:"number",min:1,max:200,value:w.target,onChange:j=>R({...w,target:Number(j.target.value)}),className:"h-9 w-20"}),s.jsxs("select",{value:w.unit,onChange:j=>R({...w,unit:j.target.value}),className:"h-9 rounded-full border border-tech-border bg-background px-2 text-sm",children:[s.jsx("option",{value:"paises",children:"paÃses"}),s.jsx("option",{value:"estados",children:"estados"}),s.jsx("option",{value:"viagens",children:"viagens"})]}),s.jsx(ue,{size:"sm",variant:"outline",onClick:()=>{w.title&&(E({goals:[...c.goals,w]}),R({...w,title:""}))},children:s.jsx(dh,{className:"h-4 w-4"})})]})]}),s.jsxs("section",{className:"space-y-3 rounded-card border border-tech-border bg-tech-card p-4",children:[s.jsx("h2",{className:"font-semibold",children:"Ãlbuns"}),y.length===0&&s.jsx("p",{className:"text-xs text-tech-mute",children:"Nenhum álbum."}),s.jsx("div",{className:"grid grid-cols-2 gap-3",children:y.map(j=>s.jsxs("div",{className:"overflow-hidden rounded-card border border-tech-border",children:[s.jsx("div",{className:"grid aspect-square grid-cols-2 gap-0.5 bg-muted",children:j.photos.slice(0,4).map(H=>h[H]?s.jsx("img",{src:h[H],alt:"",className:"h-full w-full object-cover"},H):s.jsx("span",{},H))}),s.jsxs("p",{className:"p-2 text-sm font-medium",children:[j.title,s.jsxs("span",{className:"block text-xs font-normal text-tech-mute",children:[j.destination??""," · ",Kc[j.visibility]]})]})]},j.id))}),l&&s.jsxs("div",{className:"space-y-2 rounded-card bg-tech-bg p-3",children:[s.jsx("p",{className:"text-sm font-medium",children:"Novo álbum de viagem"}),s.jsx(xo,{value:C.title,onChange:j=>P({...C,title:j.target.value}),placeholder:"Nome do álbum",className:"h-9"}),s.jsxs("select",{value:C.destination,onChange:j=>P({...C,destination:j.target.value}),className:"h-9 w-full rounded-full border border-tech-border bg-background px-2 text-sm",children:[s.jsx("option",{value:"",children:"Destino"}),tg.map(j=>s.jsx("option",{children:j},j))]}),s.jsx("input",{type:"date",value:C.travel_date,onChange:j=>P({...C,travel_date:j.target.value}),className:"h-9 w-full rounded-full border border-tech-border bg-background px-2 text-sm"}),s.jsx("div",{className:"flex gap-2",children:["public","friends","private"].filter(j=>!(I&&j==="public")).map(j=>s.jsx("button",{onClick:()=>P({...C,visibility:j}),className:`rounded-full border px-3 py-1 text-xs ${C.visibility===j?"border-gold bg-gold/20":"border-tech-border"}`,children:Kc[j]},j))}),s.jsx("input",{type:"file",accept:"image/*",multiple:!0,onChange:j=>P({...C,files:Array.from(j.target.files??[])}),className:"text-xs"}),s.jsx(ue,{size:"sm",className:"rounded-full",onClick:V,children:"Criar álbum"})]})]}),s.jsxs("section",{className:"space-y-3",children:[s.jsx("h2",{className:"font-semibold",children:"Publicações"}),f.length===0&&s.jsx("p",{className:"text-sm text-tech-mute",children:"Nenhuma publicação visÃvel."}),f.map(j=>s.jsx(Fw,{post:j,author:b.names[j.author_id]??pi(c.display_name),stats:b.stats[j.id],mine:b.mine[j.id],uid:e,onChanged:N},j.id))]})]})}const Ra="wl-card border border-tech-border bg-tech-card p-5",RA=10;function ag(){const[e,t]=x.useState([]),[a,o]=x.useState({stats:{},mine:{},names:{}}),r=x.useCallback(async(n,i)=>{t(n),o(await TD(n,i))},[]);return{posts:e,hyd:a,set:r}}function P2({posts:e,hyd:t,uid:a,groups:o,onChanged:r,onWish:n,empty:i}){return e.length?s.jsx(s.Fragment,{children:e.map(l=>{var c;return s.jsx(Fw,{post:l,uid:a,author:t.names[l.author_id]??"Viajante",stats:t.stats[l.id],mine:t.mine[l.id],groupName:(c=o.find(d=>d.id===l.group_id))==null?void 0:c.name,onChanged:r,onWish:n},l.id)})}):s.jsx("p",{className:`${Ra} text-sm text-tech-mute`,children:i})}function qD({group:e,uid:t,groups:a,following:o,onFollow:r,onPost:n,standalone:i}){const[l,c]=x.useState("feed"),{posts:d,hyd:u,set:m}=ag(),h=x.useCallback(async()=>{const{data:f}=await be.from("wl_posts").select("*").eq("group_id",e.id).order("created_at",{ascending:!1}).limit(40);m(f??[],t)},[e.id,t,m]);x.useEffect(()=>{h()},[h]);const p=e.iata?Dw.filter(f=>f.iata===e.iata):[];return s.jsxs("div",{className:"space-y-4",children:[i&&s.jsx(Ye,{title:`${e.name} | Wanderlust xpark`,description:e.description??`Grupo ${e.name} na Wanderlust, comunidade de viajantes do xpark.`,path:`/wanderlust/grupo/${e.slug}`}),s.jsxs("section",{className:Ra,children:[s.jsx("p",{className:"font-geist-mono text-[11px] uppercase tracking-[0.2em] text-gold",children:e.kind==="airport"?"Grupo de aeroporto":"Grupo de destino"}),s.jsx("h1",{className:"mt-1 text-2xl font-semibold",children:e.name}),e.description&&s.jsx("p",{className:"mt-1 text-sm text-tech-mute",children:e.description}),t&&r&&s.jsxs("div",{className:"mt-3 flex gap-2",children:[s.jsx(ue,{size:"sm",variant:o?"outline":"default",className:"rounded-full",onClick:r,children:o?"Seguindo":"Seguir grupo"}),n&&s.jsx(ue,{size:"sm",variant:"outline",className:"rounded-full",onClick:n,children:"Publicar aqui"})]}),p.length>0&&s.jsxs("div",{className:"mt-4 flex gap-1 border-b border-tech-border text-sm",children:[s.jsx("button",{onClick:()=>c("feed"),className:`px-3 py-2 ${l==="feed"?"border-b-2 border-gold font-semibold":"text-tech-mute"}`,children:"Feed"}),s.jsxs("button",{onClick:()=>c("duvidas"),className:`px-3 py-2 ${l==="duvidas"?"border-b-2 border-gold font-semibold":"text-tech-mute"}`,children:["Dúvidas (",p.length,")"]})]})]}),l==="duvidas"?s.jsx("ul",{className:"space-y-2",children:p.map(f=>s.jsxs("li",{className:Ra,children:[s.jsx(G,{to:Zi(f),className:"font-semibold hover:underline",children:f.title}),s.jsx("p",{className:"mt-1 text-xs text-tech-mute",children:"Pergunta enviada por um cliente, respondida pela equipe xpark"})]},f.slug))}):s.jsx(P2,{posts:d,hyd:u,uid:t,groups:a,onChanged:h,empty:t?"Ainda não há publicações visÃveis neste grupo.":"Entre na Wanderlust para ver e publicar neste grupo."})]})}function Yfe(){const{slug:e=""}=on(),{user:t}=sn(),[a,o]=x.useState(void 0),[r,n]=x.useState([]);return x.useEffect(()=>{be.from("wl_groups").select("*").order("sort_order").then(({data:i})=>{n(i??[]),o((i??[]).find(l=>l.slug===e)??null)})},[e]),a===void 0?s.jsx("p",{className:"p-10 text-center text-tech-mute",children:"Carregando..."}):a?s.jsx("div",{className:"bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl py-6",children:[s.jsx(G,{to:"/wanderlust",className:"text-xs text-tech-mute hover:underline",children:"Wanderlust"}),s.jsx("div",{className:"mt-2",children:s.jsx(qD,{group:a,uid:t==null?void 0:t.id,groups:r,standalone:!0})})]})}):s.jsx(cl,{})}function Zfe(){const{id:e=""}=on(),{user:t}=sn(),{posts:a,hyd:o,set:r}=ag(),[n,i]=x.useState(!1);x.useEffect(()=>{be.from("wl_posts").select("*").eq("id",e).maybeSingle().then(async({data:c})=>{await r(c?[c]:[],t==null?void 0:t.id),i(!0)})},[e,t==null?void 0:t.id,r]);const l=a[0];return n?l?s.jsx("div",{className:"bg-tech-bg font-geist text-tech-fg",children:s.jsxs("div",{className:"container max-w-2xl space-y-3 py-6",children:[s.jsx(Ye,{title:`${l.destination?l.destination+": ":""}${l.body.slice(0,50)} | Wanderlust`,description:l.body.slice(0,155),path:`/wanderlust/post/${l.id}`,noindex:l.visibility!=="public",type:"article"}),s.jsx(G,{to:"/wanderlust",className:"text-xs text-tech-mute hover:underline",children:"Wanderlust"}),s.jsx(Fw,{post:l,uid:t==null?void 0:t.id,author:o.names[l.author_id]??"Viajante",stats:o.stats[l.id],mine:o.mine[l.id]})]})}):s.jsxs("div",{className:"p-10 text-center",children:[s.jsx(Ye,{title:"Publicação indisponÃvel | Wanderlust",description:"Esta publicação não está disponÃvel.",path:`/wanderlust/post/${e}`,noindex:!0}),s.jsx("p",{children:"Esta publicação não existe ou não está visÃvel para você."})]}):s.jsx("p",{className:"p-10 text-center text-tech-mute",children:"Carregando..."})}function ege(){const{user:e,loading:t,signOut:a}=sn(),[o,r]=Ao(),[n,i]=x.useState(void 0);x.useEffect(()=>{const c=o.get("convite");c&&localStorage.setItem("wl_invite",c.slice(0,40))},[o]);const l=x.useCallback(async()=>
1081{if(!e)return i(null);const{data:c}=await be.from("wl_profiles").select("*").eq("user_id",e.id).maybeSingle();i(c??null)},[e]);return x.useEffect(()=>{l()},[l]),t||e&&n===void 0?s.jsx("p",{className:"p-10 text-center text-tech-mute",children:"Carregando..."}):e?!n||!n.terms_accepted_at||!n.adult_confirmed_at?s.jsxs("div",{className:"bg-tech-bg font-geist text-tech-fg",children:[s.jsx(Ye,{title:"Entrar na Wanderlust | xpark",description:"Crie seu perfil na Wanderlust.",path:"/wanderlust",noindex:!0}),s.jsx(Hfe,{uid:e.id,existing:n??null,onDone:l})]}):n.blocked?s.jsx("p",{className:"p-10 text-center",children:"Seu perfil foi bloqueado pela moderação. Fale com o atendimento do xpark."}):s.jsx(tge,{uid:e.id,me:n,sp:o,setSp:r,reloadMe:l,signOut:a}):s.jsxs(s.Fragment,{children:[s.jsx(Ye,{title:"Wanderlust: rede de viajantes | xpark",description:"Planeje viagens, acompanhe seus amigos e descubra novos lugares na Wanderlust, a rede social de viajantes do xpark.",path:"/wanderlust",noindex:!0}),s.jsx(AD,{joinHref:"/minhas-reservas?next=wanderlust",linkTo:c=>c})]})}function tge({uid:e,me:t,sp:a,setSp:o,reloadMe:r,signOut:n}){const i=a.get("aba")||"feed",l=(z,Pe={})=>{const st=new URLSearchParams({aba:z,...Pe});o(st),window.scrollTo({top:0})},[c,d]=x.useState([]),[u,m]=x.useState([]),[h,p]=x.useState([]),[f,g]=x.useState({}),[b,v]=x.useState([]),[y,k]=x.useState([]),[w,R]=x.useState([]),[C,P]=x.useState([]),[N,E]=x.useState([]),[A,$]=x.useState([]),[O,V]=x.useState([]),[T,D]=x.useState(!1),[F,U]=x.useState(!1),[L,I]=x.useState(""),[j,H]=x.useState(!1),[W,_]=x.useState(!1),[B,Y]=x.useState(),[ae,ie]=x.useState(RA),[fe,Se]=x.useState(""),{posts:Ee,hyd:Re,set:re}=ag(),Ce=ag(),$e=x.useCallback(async()=>{const[z,Pe,st,et,Wt,ma]=await Promise.all([be.from("wl_groups").select("*").order("sort_order"),be.from("wl_group_follows").select("group_id").eq("user_id",e),be.from("community_connections").select("id, requester_id, addressee_id, status"),be.from("wl_trips").select("*").eq("owner_id",e).order("start_date"),be.rpc("wl_my_bookings"),be.from("wl_profiles").select("user_id, display_name, city").neq("user_id",e).eq("blocked",!1).limit(60)]);d(z.data??[]),m((Pe.data??[]).map(rt=>rt.group_id));const Xo=st.data??[],un=Xo.filter(rt=>rt.status==="accepted").map(rt=>rt.requester_id===e?rt.addressee_id:rt.requester_id);p(un),v(Xo.filter(rt=>rt.status==="pending"&&rt.addressee_id===e)),k(Xo.filter(rt=>rt.status==="pending"&&rt.requester_id===e).map(rt=>rt.addressee_id)),P(et.data??[]),E(Wt.data??[]);const Xs=ma.data??[];if(g(Object.fromEntries(Xs.map(rt=>[rt.user_id,rt.display_name]))),R(Xs.filter(rt=>!un.includes(rt.user_id)).sort((rt,pa)=>+(pa.city===t.city)-+(rt.city===t.city)).slice(0,8)),un.length){const{data:rt}=await be.from("wl_posts").select("destination").in("author_id",un).not("destination","is",null).limit(300),pa={};(rt??[]).forEach(Fn=>{pa[Fn.destination]=(pa[Fn.destination]??0)+1}),$(Object.entries(pa).sort((Fn,qe)=>qe[1]-Fn[1]).slice(0,4))}else $([])},[e,t.city]),Ze=x.useCallback(async()=>{const z=await Mfe(e),{data:Pe}=await be.from("wl_group_follows").select("group_id").eq("user_id",e),st=[e,...z].join(","),et=(Pe??[]).map(Xo=>Xo.group_id),Wt=et.length?`author_id.in.(${st}),group_id.in.(${et.join(",")})`:`author_id.in.(${st})`,{data:ma}=await be.from("wl_posts").select("*").or(Wt).order("created_at",{ascending:!1}).limit(ae);re(ma??[],e)},[e,ae,re]);x.useEffect(()=>{$e()},[$e]),x.useEffect(()=>{let z=!0;return be.from("wl_profiles").select("user_id").eq("invited_by",e).limit(1).then(({data:Pe})=>{z&&U((Pe??[]).length>0)}),be.functions.invoke("traveler-me",{body:{}}).then(async({data:Pe,error:st})=>{var Wt;if(st||!(Pe!=null&&Pe.token))return;const et=await be.functions.invoke("traveler-context",{body:{token:Pe.token}});z&&D(!!((Wt=et.data)!=null&&Wt.responded))}),()=>{z=!1}},[e]),x.useEffect(()=>{i==="feed"&&Ze()},[i,Ze]),x.useEffect(()=>{i==="salvos"&&be.from("wl_saves").select("post_id").eq("user_id",e).order("created_at",{ascending:!1}).then(async({data:z})=>{const Pe=(z??[]).map(et=>et.post_id),{data:st}=Pe.length?await be.from("wl_posts").select("*").in("id",Pe):{data:[]};Ce.set(st??[],e)})},[i,e]);const mt=async z=>{t.wishlist.includes(z)||(await be.from("wl_profiles").update({wishlist:[...t.wishlist,z]}).eq("user_id",e),r())},ht=async z=>{u.includes(z)?await be.from("wl_group_follows").delete().match({user_id:e,group_id:z}):await be.from("wl_group_follows").insert({user_id:e,group_id:z}),$e()},kt=async(z,Pe)=>{await be.from("community_connections").update({status:Pe}).eq("id",z),$e()}
1081,Tt=async z=>{await be.rpc("wl_ensure_member");const{error:Pe}=await be.from("community_connections").insert({requester_id:e,addressee_id:z});Pe?_e.error("Esta pessoa ainda não pode receber pedidos."):(_e.success("Pedido enviado."),$e())},oa=async()=>{let{data:z}=await be.from("wl_invites").select("code").eq("inviter_id",e).maybeSingle();if(z||(z=(await be.from("wl_invites").insert({inviter_id:e}).select("code").single()).data),!z)return _e.error("Não foi possÃvel gerar o convite.");const Pe=`${window.location.origin}/wanderlust?convite=${z.code}`,st=Pe.startsWith("http")?Pe:window.location.origin+Pe;Se(st);try{await navigator.clipboard.writeText(st),_e.success("Link de convite copiado.")}catch{}},Bt=z=>{Y(z),_(!0)},$t=$D(C,N),Ke=$t&&C.find(z=>z.start_date===$t.date&&z.destination===$t.label),co=$t&&N.find(z=>z.status==="confirmed"&&(Ke?!!Ke.departure_iata&&z.airport_code===Ke.departure_iata&&z.start_date===Ke.start_date:z.start_date===$t.date));x.useEffect(()=>{if(!Ke){V([]);return}let z=!0;return be.from("wl_trip_members").select("user_id").eq("trip_id",Ke.id).then(async({data:Pe})=>{const st=(Pe??[]).map(Wt=>Wt.user_id);if(!st.length){z&&V([]);return}const{data:et}=await be.rpc("wl_public_names",{_ids:st});z&&V((et??[]).map(Wt=>Wt.public_name))}),()=>{z=!1}},[Ke==null?void 0:Ke.id]);const uo=Ke!=null&&Ke.departure_iata&&jD.includes(Ke.departure_iata)?KO({airport:Ke.departure_iata,entrada:Ke.start_date,saida:Ke.end_date??Ke.start_date,src:"wanderlust"}):null,K=[{label:"Foto e nome",done:!!t.avatar_path&&!!t.display_name.trim(),tab:"perfil"},{label:"Lugares visitados",done:t.visited_countries.length+t.visited_states.length>0,tab:"perfil"},{label:"Lista de desejos",done:t.wishlist.length>0,tab:"perfil"},{label:"Questionário de viajante",done:T,tab:"perfil"},{label:"Convidar um amigo",done:F,tab:"amigos"}],Z=Math.round(K.filter(z=>z.done).length/K.length*100),J=h.map(z=>({id:z,name:f[z]?pi(f[z]):"Amigo"})),he=c.find(z=>z.slug===a.get("grupo")),Oe=typeof window<"u"&&localStorage.getItem("wl_invited")==="1",wt=[{t:"feed",label:"Feed",icon:wP},{t:"perfil",label:"Meu perfil",icon:RP},{t:"viagens",label:"Minhas viagens",icon:_c},{t:"amigos",label:"Amigos",icon:Ng},{t:"grupos",label:"Grupos",icon:jP},{t:"salvos",label:"Salvos",icon:sT}],ra=x.useMemo(()=>i==="perfil"?s.jsx(Xfe,{uid:e,profileId:a.get("u")||e,me:t,trips:C,bookings:N,isFriend:h.includes(a.get("u")||""),onChanged:r}):i==="viagens"?s.jsx(Wfe,{uid:e,trips:C,bookings:N,friends:J,onChanged:$e}):i==="grupos"?he?s.jsx(qD,{group:he,uid:e,groups:c,following:u.includes(he.id),onFollow:()=>ht(he.id),onPost:()=>Bt(he.id)}):s.jsxs("div",{className:"space-y-4",children:[["airport","destination"].map(z=>s.jsxs("section",{className:"space-y-2",children:[s.jsx("h2",{className:"font-semibold",children:z==="airport"?"Aeroportos":"Destinos"}),c.filter(Pe=>Pe.kind===z&&(!L||`${Pe.name} ${Pe.description??""}`.toLocaleLowerCase("pt-BR").includes(L.toLocaleLowerCase("pt-BR")))).map(Pe=>s.jsxs("div",{className:`${Ra} flex items-center justify-between gap-2`,children:[s.jsxs("button",{className:"text-left",onClick:()=>l("grupos",{grupo:Pe.slug}),children:[s.jsx("p",{className:"font-medium",children:Pe.name}),s.jsx("p",{className:"text-xs text-tech-mute",children:Pe.description})]}),s.jsx(ue,{size:"sm",variant:u.includes(Pe.id)?"outline":"default",className:"shrink-0 rounded-full",onClick:()=>ht(Pe.id),children:u.includes(Pe.id)?"Seguindo":"Seguir"})]},Pe.id))]},z)),L.trim()&&s.jsxs("section",{className:"space-y-2",children:[s.jsx("h2",{className:"font-semibold",children:"Pessoas"}),w.filter(z=>`${z.display_name} ${z.city??""}`.toLocaleLowerCase("pt-BR").includes(L.toLocaleLowerCase("pt-BR"))).map(z=>s.jsxs(ue,{variant:"outline",className:"wl-card flex h-auto w-full items-center justify-start gap-2 p-3",onClick:()=>l("perfil",{u:z.user_id}),children:[s.jsx(qo,{name:z.display_name,size:30}),pi(z.display_name)]},z.user_id))]})]}):i==="amigos"?s.jsxs("div",{className:"space-y-4",children:[s.jsxs("section",{className:Ra,children:[s.jsx("h2",{className:"font-semibold",children:"Pedidos recebidos"}),b.length===0&&s.jsx("p",{className:"mt-1 text-sm text-tech-mute",children:"Nenhum pedido."}),b.map(z=>s.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[s.jsx(qo,{name:f[z.requester_id]??"V"}),s.jsx("span",{className:"flex-1 text-sm",children:pi(f[z.requester_id]??"Viajante")}),s.jsx(ue,{size:"sm",className:"rounded-full",onClick:()=>
1081kt(z.id,"accepted"),children:"Aceitar"}),s.jsx(ue,{size:"sm",variant:"outline",className:"rounded-full",onClick:()=>kt(z.id,"declined"),children:"Recusar"})]},z.id))]}),s.jsxs("section",{className:Ra,children:[s.jsxs("h2",{className:"font-semibold",children:["Amigos (",h.length,")"]}),J.map(z=>s.jsxs("button",{onClick:()=>l("perfil",{u:z.id}),className:"mt-2 flex w-full items-center gap-2 text-left text-sm",children:[s.jsx(qo,{name:z.name}),z.name]},z.id)),s.jsx("p",{className:"mt-3 text-xs text-tech-mute",children:"Só amigos veem suas viagens futuras."})]}),s.jsxs("section",{className:Ra,children:[s.jsx("h2",{className:"font-semibold",children:"Sugestões"}),w.map(z=>s.jsxs("div",{className:"mt-2 flex items-center gap-2 text-sm",children:[s.jsx(qo,{name:z.display_name}),s.jsxs("button",{className:"flex-1 text-left",onClick:()=>l("perfil",{u:z.user_id}),children:[pi(z.display_name),z.city&&s.jsx("span",{className:"block text-xs text-tech-mute",children:z.city})]}),y.includes(z.user_id)?s.jsx("span",{className:"text-xs text-tech-mute",children:"Pedido enviado"}):s.jsx(ue,{size:"sm",variant:"outline",className:"rounded-full",onClick:()=>Tt(z.user_id),children:"Adicionar"})]},z.user_id))]})]}):i==="salvos"?s.jsxs("div",{className:"space-y-4",children:[s.jsx("h2",{className:"font-semibold",children:"Salvos"}),s.jsx(P2,{posts:Ce.posts,hyd:Ce.hyd,uid:e,groups:c,onChanged:()=>l("salvos"),empty:"Nada salvo ainda."})]}):s.jsxs("div",{className:"space-y-4",children:[s.jsxs(ue,{variant:"outline",onClick:()=>Bt(),className:`${Ra} hidden h-auto w-full items-center justify-start gap-3 text-left lg:flex`,children:[s.jsx(qo,{name:t.display_name}),s.jsx("span",{className:"flex-1 rounded-full bg-tech-bg px-4 py-3 text-sm text-tech-mute",children:"Para onde foi sua última viagem?"}),s.jsx(dh,{className:"h-5 w-5 text-gold-dark"})]}),s.jsxs("section",{className:"wl-card bg-ink p-6 text-paper",children:[s.jsxs("p",{className:"flex items-center justify-between text-xs text-gold",children:[s.jsx("span",{children:"PRÃXIMA VIAGEM"}),s.jsxs("span",{className:"flex items-center gap-1 rounded-full border border-paper/20 px-2 py-1 text-paper/80",children:[s.jsx(ch,{className:"h-3 w-3"}),"Só você vê"]})]}),$t?s.jsxs(s.Fragment,{children:[s.jsxs("p",{className:"mt-5 font-home-heading text-4xl font-extrabold text-gold",children:[Math.max(0,Math.ceil((new Date($t.date+"T00:00:00").getTime()-Date.now())/864e5))," dias"]}),s.jsxs("p",{className:"mt-1 text-xl font-bold",children:["para ",$t.label]}),s.jsxs("p",{className:"mt-3 text-xs text-paper/70",children:[new Date($t.date+"T12:00:00").toLocaleDateString("pt-BR"),O.length>0&&Ke&&` · Com ${O.join(", ")}`]}),co?s.jsx("p",{className:"mt-4 inline-flex rounded-full bg-gold px-3 py-1 text-xs font-bold text-ink",children:"Reservado"}):uo?s.jsx(ue,{asChild:!0,variant:"outline",className:"mt-4 rounded-full border-gold bg-transparent text-gold hover:bg-gold/10 hover:text-gold",children:s.jsxs("a",{href:uo,children:["Reservar estacionamento ",s.jsx(aa,{className:"ml-2 h-4 w-4"})]})}):null]}):s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"mt-5 text-lg font-semibold",children:"Sua próxima viagem começa aqui."}),s.jsx(ue,{className:"mt-5 rounded-full bg-gold text-ink hover:bg-gold-dark",onClick:()=>l("viagens"),children:"Criar viagem"})]})]}),Z<100&&s.jsxs("section",{className:Ra,children:[s.jsx("div",{className:"mb-2 h-[3px] w-8 bg-gold"}),s.jsxs("h2",{className:"font-home-heading text-lg font-extrabold",children:["Seu perfil está ",Z,"% completo"]}),s.jsx("div",{className:"mt-3 h-2 overflow-hidden rounded-full bg-muted",children:s.jsx("div",{className:"h-full bg-gold transition-all",style:{width:`${Z}%`}})}),s.jsx("div",{className:"mt-4 grid gap-2 sm:grid-cols-2",children:K.map(z=>s.jsxs(ue,{variant:"ghost",onClick:()=>z.label==="Questionário de viajante"?window.location.assign(If()+"?tab=viajante"):l(z.tab),className:`h-auto justify-start gap-2 px-1 py-1 text-left text-xs ${z.done?"text-tech-mute line-through":"text-tech-fg"}`,children:[z.done?s.jsx(On,{className:"h-4 w-4 text-gold-dark"}
1081):s.jsx("span",{className:"h-4 w-4 rounded-full border border-tech-border"}),z.label]},z.label))})]}),Oe&&s.jsxs("div",{className:`${Ra} border-gold/60 text-sm`,children:[s.jsxs("p",{className:"flex items-center gap-1 font-semibold",children:[s.jsx(qu,{className:"h-4 w-4 text-gold"}),"Você entrou por convite"]}),s.jsx("p",{className:"mt-1",children:"Responda a pesquisa do Programa de Viajantes e ganhe 1 diária grátis, com as mesmas regras do programa."}),s.jsx(ue,{asChild:!0,size:"sm",className:"mt-2 rounded-full",children:s.jsx("a",{href:If()+"?tab=viajante",children:"Ganhar minha diária"})})]}),Ee.length===0?s.jsxs("div",{className:Ra,children:[s.jsx("h2",{className:"font-home-heading text-xl font-extrabold",children:"Seu feed começa com as pessoas e lugares que você acompanha."}),s.jsx("p",{className:"mt-2 text-sm text-tech-mute",children:"Siga grupos de destino e convide amigos para ver as novidades por aqui."}),s.jsxs("div",{className:"mt-4 flex flex-wrap gap-2",children:[s.jsx(ue,{className:"rounded-full",onClick:()=>l("grupos"),children:"Explorar grupos"}),s.jsx(ue,{variant:"outline",className:"rounded-full",onClick:oa,children:"Convidar amigos"})]})]}):s.jsx(P2,{posts:Ee,hyd:Re,uid:e,groups:c,onChanged:Ze,onWish:mt,empty:""}),Ee.length>0&&s.jsxs("div",{className:"py-6 text-center",children:[s.jsx("p",{className:"text-sm text-tech-mute",children:"Você viu as novidades dos seus amigos"}),Ee.length>=ae&&s.jsx(ue,{variant:"outline",className:"mt-3 rounded-full",onClick:()=>ie(ae+RA),children:"Ver mais antigas"})]})]}),[i,a,t,C,N,h,c,u,b,y,w,Ee,Re,Ce.posts,Ce.hyd,ae,he,f,L,Z,O,uo,co]);return s.jsxs("div",{className:"wanderlust-design min-h-screen bg-tech-bg pb-24 text-tech-fg lg:pb-10",children:[s.jsx(Ye,{title:"Wanderlust: rede de viajantes | xpark",description:"Wanderlust, a rede social de viajantes do xpark.",path:"/wanderlust",noindex:!0}),s.jsxs("header",{className:"sticky top-0 z-30 border-b border-tech-border bg-tech-card",children:[s.jsxs("div",{className:"container flex h-16 max-w-[1480px] items-center justify-between gap-5",children:[s.jsxs("div",{className:"flex shrink-0 items-center gap-2 sm:gap-3",children:[s.jsx("a",{href:"/","aria-label":"xpark, página inicial",children:s.jsx(SD,{})}),s.jsx("span",{"aria-hidden":!0,className:"h-6 w-px bg-tech-border"}),s.jsx("p",{className:"font-home-heading text-base font-extrabold sm:text-xl",children:"Wanderlust"})]}),s.jsxs("label",{className:"hidden h-10 max-w-md flex-1 items-center gap-2 rounded-full bg-tech-bg px-4 lg:flex",children:[s.jsx(Du,{className:"h-4 w-4 text-tech-mute"}),s.jsx("input",{"aria-label":"Buscar destinos, grupos e amigos",value:L,onChange:z=>I(z.target.value),onKeyDown:z=>{z.key==="Enter"&&l("grupos")},placeholder:"Buscar destinos, grupos e amigos",className:"w-full bg-transparent text-sm outline-none"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(ue,{size:"icon",variant:"ghost",className:"rounded-full lg:hidden","aria-label":"Buscar",onClick:()=>{H(!j),l("grupos")},children:s.jsx(Du,{className:"h-5 w-5"})}),s.jsxs(ue,{size:"icon",variant:"ghost",className:"rounded-full lg:hidden","aria-label":"Novidades",onClick:()=>l("amigos"),children:[s.jsx(RL,{className:"h-5 w-5"}),b.length>0&&s.jsx("span",{className:"absolute ml-5 -mt-5 h-2 w-2 rounded-full bg-gold"})]}),s.jsxs(ue,{variant:"ghost",size:"sm",className:"rounded-full text-tech-mute",onClick:()=>n(),children:[s.jsx(UL,{className:"mr-1 h-4 w-4"}),"Sair"]}),s.jsx(ue,{variant:"ghost",size:"icon",className:"hidden rounded-full lg:inline-flex",onClick:()=>l("perfil"),"aria-label":"Meu perfil",children:s.jsx(qo,{name:t.display_name,size:30})})]})]}),j&&s.jsx("div",{className:"container pb-3 lg:hidden",children:s.jsx("input",{autoFocus:!0,"aria-label":"Buscar destinos, grupos e amigos",value:L,onChange:z=>I(z.target.value),placeholder:"Buscar destinos e grupos",className:"h-10 w-full rounded-full bg-tech-bg px-4 text-sm outline-none"})})]}),s.jsx("div",{className:"container max-w-[1480px] py-4 md:py-7",children:s.jsxs("div",{className:"grid gap-6 lg:grid-cols-[260px_minmax(0,1fr)_340px]",children:[s.jsxs("aside",{className:"hidden space-y-3 lg:block",children:[s.jsxs(ue,{variant:"ghost",onClick:()=>l("perfil"),className:"flex h-auto w-full items-center justify-start gap-2 text-left",children:[s.jsx(qo,{name:t.display_name,size:40}),s.jsxs("span",{children:[s.jsx("span",{className:"block font-semibold",children:t.display_name}),s.jsx("span",{className:"text-xs text-tech-mute",children:"Ver perfil"})]})]}),s.jsx("nav",{className:"space-y-1 text-sm",children:wt.map(z=>s.jsxs(ue,{variant:"ghost",onClick:()=>l(z.t),className:`flex w-full justify-start gap-3 rounded-full px-4 ${i===z.t?"bg-gold-soft font-semibold":""}`,children:[s.jsx(z.icon,{className:"h-4 w-4"}),z.label]},z.t))}),s.jsxs(ue,{className:"w-full rounded-full",onClick:()=>Bt(),children:[s.jsx(dh,{className:"mr-1 h-4 w-4"}),"Publicar"]}),s.jsxs("div",{className:`${Ra} text-sm`,children:[s.jsx("p",{className:"font-home-heading font-extrabold",children:"Convide um amigo"}),s.jsx("p",{className:"mt-2 text-xs text-tech-mute",children:"Quem entrar pelo seu convite pode ganhar 1 diária grátis ao responder o questionário, seguindo as regras do programa."}),s.jsxs(ue,{size:"sm",variant:"outline",className:"mt-4 w-full rounded-full",onClick:oa,children:[s.jsx(I1,{className:"mr-1 h-3 w-3"}),"Copiar meu convite"]}),fe&&s.jsx("p",{className:"mt-2 break-all text-xs",children:fe})]})]}),s.jsx("main",{className:"min-w-0",children:ra}),s.jsxs("aside",{className:"hidden space-y-4 lg:block",children:[s.jsxs("section",{className:Ra,children:[s.jsx("h2",{className:"mb-3 font-home-heading font-extrabold",children:"Próxima viagem"}),s.jsx(OD,{next:$t})]}),A.length>0&&s.jsxs("section",{className:Ra,children:[s.jsx("h2",{className:"mb-3 font-home-heading font-extrabold",children:"Destinos dos seus amigos"}),s.jsx("ol",{className:"space-y-2 text-sm",children:A.map(([z,Pe])=>s.jsxs("li",{className:"flex justify-between gap-3",children:[s.jsx("span",{children:z}),s.jsx("span",{className:"text-tech-mute",children:Pe})]},z))})]}),s.jsxs("section",{className:Ra,children:[s.jsx("h2",{className:"mb-3 font-home-heading font-extrabold",children:"Grupos para você"}),c.filter(z=>!u.includes(z.id)).slice(0,3).map(z=>s.jsxs(ue,{variant:"ghost",onClick:()=>l("grupos",{grupo:z.slug}),className:"w-full justify-start px-0 text-sm",children:[z.name,s.jsx(aa,{className:"ml-auto h-4 w-4"})]},z.id))]}),s.jsxs("section",{className:Ra,children:[s.jsx("div",{className:"mb-2 h-[3px] w-8 bg-gold"}),s.jsx("h2",{className:"mb-2 font-home-heading font-extrabold",children:"Sugestões de amigos"}),w.length===0&&s.jsx("p",{className:"text-xs text-tech-mute",children:"Nenhuma sugestão por enquanto."}),w.slice(0,4).map(z=>s.jsxs("div",{className:"mt-2 flex items-center gap-2 text-sm",children:[s.jsx(qo,{name:z.display_name,size:30}),s.jsx("span",{className:"flex-1",children:pi(z.display_name)}),y.includes(z.user_id)?s.jsx("span",{className:"text-xs text-tech-mute",children:"Enviado"}):s.jsx(ue,{size:"sm",variant:"outline",className:"h-7 rounded-full px-2 text-xs",onClick:()=>Tt(z.user_id),children:"Adicionar"})]},z.user_id))]})]})]})}),Xc.createPortal(s.jsx("nav",{className:"fixed inset-x-0 bottom-0 z-40 grid grid-cols-5 border-t border-tech-border bg-tech-card/95 pb-[env(safe-area-inset-bottom)] text-[11px] backdrop-blur lg:hidden","aria-label":"Navegação da Wanderlust",children:[["feed","Feed",wP],["viagens","Viagens",_c],["publicar","Publicar",dh],["grupos","Grupos",jP],["perfil","Perfil",RP]].map(([z,Pe,st])=>z==="publicar"?s.jsxs(ue,{variant:"ghost",onClick:()=>Bt(),className:"flex h-auto flex-col items-center py-1.5","aria-label":"Publicar",children:[s.jsx("span",{className:"-mt-5 flex h-12 w-12 items-center justify-center rounded-full bg-gold text-ink shadow-elevated",children:s.jsx(st,{className:"h-6 w-6"})}),Pe]},z):s.jsxs(ue,{variant:"ghost",onClick:()=>l(z),className:`flex h-auto flex-col items-center gap-0.5 py-2 ${i===z?"font-semibold text-ink":"text-tech-mute"}`,children:[s.jsx(st,{className:"h-5 w-5"}),Pe]},z))}),document.body),s.jsx(zfe,{open:W,onOpenChange:_,uid:e,groups:c,trips:C,defaultGroup:B,onPosted:()=>{Ze(),$e()}})]})}const age=x.createContext(void 0),jA="xpark_active_org";function oge({children:e}){var h;const{user:t}=sn(),[a,o]=x.useState([]),[r,n]=x.useState(null),[i,l]=x.useState(!1),[c,d]=x.useState(!0),u=p=>{n(p),localStorage.setItem(jA,p)};x.useEffect(()=>{if(!t){o([]),n(null),l(!1),d(!1);return}let p=!1;return(async()=>{var w,R;d(!0);const[f,g]=await Promise.all([ze.from("memberships").select("organization_id, role, organization:organizations(id, slug, display_name, status)").eq("user_id",t.id),ze.from("user_roles").select("role").eq("user_id",t.id)]);if(p)return;let b=f.data??[];const v=(g.data??[]).some(C=>C.role==="xpark_admin");if(l(v),v){const{data:C}=await ze.from("organizations").select("id, slug, display_name, status").eq("status","active").order("display_name");if(p)return;const P=new Set(b.map(E=>E.organization_id)),N=(C??[]).filter(E=>!P.has(E.id)).map(E=>({organization_id:E.id,role:"owner",organization:E}));b=[...b,...N]}o(b);const y=localStorage.getItem(jA),k=((w=b.find(C=>C.organization_id===y))==null?void 0:w.organization_id)??((R=b[0])==null?void 0:R.organization_id)??null;n(k),d(!1)})(),()=>{p=!0}},[t]);const m=((h=a.find(p=>p.organization_id===r))==null?void 0:h.organization)??null;return s.jsx(age.Provider,{value:{memberships:a,activeOrgId:r,activeOrg:m,setActiveOrgId:u,isXparkAdmin:i,loading:c},children:e})}const NA="GTM-5JFK7HLQ",AA="__valetina_gtm_loaded";function rge(){const e=window;if(e[AA])return;e[AA]=!0,e.dataLayer=e.dataLayer||[],e.dataLayer.push({"gtm.start":new Date().getTime(),event:"gtm.js"});const t=document.createElement("script");t.async=!0,t.src=`https://www.googletagmanager.com/gtm.js?id=${NA}`,document.head.appendChild(t);const a=document.createElement("noscript"),o=document.createElement("iframe");o.src=`https://www.googletagmanager.com/ns.html?id=${NA}`,o.height="0",o.width="0",o.style.display="none",o.style.visibility="hidden",a.appendChild(o),document.body.appendChild(a)}function nge(){const e=Xt();x.useEffect(()=>{tq(),eq()&&rge()},[e.pathname,e.search])}const EA="GTM-TLP4H33",_A="__multipark_gtm_loaded",_x="xpark_multipark_funnel";function sge(){if(typeof window>"u")return!1;try{const e=window.location.pathname||"";return e==="/multipark"||e.startsWith("/multipark/")||(new URLSearchParams(window.location.search).get("src")||"").toLowerCase()==="multipark"?(sessionStorage.setItem(_x,"1"),!0):sessionStorage.getItem(_x)==="1"}catch{return!1}}function ige(){const e=window;if(e[_A])return;e[_A]=!0,e.dataLayer=e.dataLayer||[],e.dataLayer.push({"gtm.start":new Date().getTime(),event:"gtm.js"});const t=document.createElement("script");t.async=!0,t.src=`https://www.googletagmanager.com/gtm.js?id=${EA}`,document.head.appendChild(t);const a=document.createElement("noscript"),o=document.createElement("iframe");o.src=`https://www.googletagmanager.com/ns.html?id=${EA}`,o.height="0",o.width="0",o.style.display="none",o.style.visibility="hidden",a.appendChild(o),document.body.appendChild(a)}function lge(){const e=Xt();x.useEffect(()=>{sge()&&ige()},[e.pathname,e.search])}const cge=()=>{const{pathname:e,hash:t}=Xt();return x.useEffect(()=>{if(t){const a=decodeURIComponent(t.slice(1)),o=[0,120,360,700,1500,2600].map(r=>window.setTimeout(()=>{var n;(n=document.getElementById(a))==null||n.scrollIntoView()},r));return()=>
1081o.forEach(window.clearTimeout)}else window.scrollTo({top:0,left:0})},[e,t]),null};class dge extends x.Component{constructor(){super(...arguments);_r(this,"state",{hasError:!1})}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a,o){console.error("ErrorBoundary capturou um erro:",a,o.componentStack)}render(){return this.state.hasError?s.jsx("div",{className:"min-h-screen flex items-center justify-center p-6 bg-background",children:s.jsxs("div",{className:"max-w-md text-center space-y-4",children:[s.jsx("h1",{className:"text-xl font-semibold",children:"Algo deu errado"}),s.jsx("p",{className:"text-sm text-muted-foreground",children:"Não foi possÃvel exibir esta página. Recarregue para tentar de novo."}),s.jsx("button",{type:"button",onClick:()=>window.location.reload(),className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:opacity-90",children:"Recarregar página"})]})}):this.props.children}}function uge(){return s.jsxs("div",{className:"bg-paper text-ink",children:[s.jsx(Ye,{title:"Wanderlust: comunidade de viajantes | xpark",description:"Wanderlust, uma comunidade xpark: perguntas reais de viajantes sobre estacionamento em 22 aeroportos, guias para comentar e 1 diária grátis para quem entra.",path:"/wanderlust",jsonLd:Tfe()}),s.jsx(AD,{joinHref:"/minhas-reservas?next=wanderlust",linkTo:e=>w5(e)})]})}const mge=x.lazy(()=>Qt(()=>import("./Auth-D7GZKq7X.js"),__vite__mapDeps([0,1,2]))),pge=x.lazy(()=>Qt(()=>import("./ResetPassword-V_uk8l8N.js"),__vite__mapDeps([3,1]))),hge=x.lazy(()=>Qt(()=>import("./AdminLogin-BsfFLSqH.js"),__vite__mapDeps([4,1,5]))),fge=x.lazy(()=>Qt(()=>import("./AdminLayout-CL2RoDRE.js"),__vite__mapDeps([6,7,8]))),gge=x.lazy(()=>Qt(()=>import("./AdminDashboard-D4s6D-Nw.js"),__vite__mapDeps([9,5,10,11,12]))),vge=x.lazy(()=>Qt(()=>import("./AdminBookings-CakB5Tz8.js").then(e=>e.A),__vite__mapDeps([13,12,5,10,11,14,15,16,17,7]))),xge=x.lazy(()=>Qt(()=>import("./AdminCustomers-8HiLbhUw.js"),__vite__mapDeps([18,5,15,16,10,11,19]))),bge=x.lazy(()=>Qt(()=>import("./AdminPayments-C0XhFZw0.js"),__vite__mapDeps([20,5,12,10,11,16]))),yge=x.lazy(()=>Qt(()=>import("./AdminAssinaturas-BT_PUjU3.js"),__vite__mapDeps([21,5,12,10,11,22,17]))),kge=x.lazy(()=>Qt(()=>import("./AdminPricing-BxEGlmdS.js"),__vite__mapDeps([23,24,5,25]))),wge=x.lazy(()=>Qt(()=>import("./AdminSpots-DLhObtEO.js"),__vite__mapDeps([26,5,25]))),Cge=x.lazy(()=>Qt(()=>import("./AdminUsers-BEsMR4Qk.js"),__vite__mapDeps([27,5,12,1,28,15,22]))),Pge=x.lazy(()=>Qt(()=>import("./AdminWhatsApp-BHuj1-wh.js"),__vite__mapDeps([29,12,11,28,30,19,8,24,17,7,22]))),Sge=x.lazy(()=>Qt(()=>import("./AdminBandi-BdSGkY0i.js"),__vite__mapDeps([31,1,5,10,11,12,19,25,30,8]))),Rge=x.lazy(()=>Qt(()=>import("./AdminEmailPreview-DsmVPH7U.js"),__vite__mapDeps([32,5]))),jge=x.lazy(()=>Qt(()=>import("./AdminCoupons-CvbmxWbE.js"),__vite__mapDeps([33,10,11,19]))),Nge=x.lazy(()=>Qt(()=>import("./AdminModifications-CCydaCox.js"),__vite__mapDeps([34,5,12]))),Age=x.lazy(()=>Qt(()=>import("./AdminCancellations-CDgduc2I.js"),__vite__mapDeps([35,5,12,10,11,36,7]))),Ege=x.lazy(()=>Qt(()=>import("./AdminReviews-CELuGKbJ.js"),__vite__mapDeps([37,5,12,10,11,36,2]))),_ge=x.lazy(()=>Qt(()=>import("./AdminViajantes-DlvmljyI.js"),__vite__mapDeps([38,5,14,12,17,22,7]))),Tge=x.lazy(()=>Qt(()=>import("./MinhasReservas-Ca6eSpzZ.js"),__vite__mapDeps([39,5,1,12,24,14,7,19]))),$ge=x.lazy(()=>Qt(()=>import("./AlterarReserva-oXt2voDp.js"),__vite__mapDeps([40,5,1,10,11,12]))),Oge=new sU;function qge(){return s.jsx("div",{className:"min-h-screen flex items-center justify-center",role:"status","aria-label":"Carregando",children:s.jsx("div",{className:"h-6 w-6 rounded-full border-2 border-muted-foreground/30 border-t-foreground animate-spin"})})}function Dge(){nge(),lge();const e=Xt();return x.useEffect(()=>{Yre()},[e.pathname,e.search]),null}function Ige(){const e=Xt(),{user:t,loading:a}=sn();return e.pathname==="/minhas-reservas"&&!a&&t&&new URLSearchParams(e.search).get("next")==="wanderlust"?s.jsx(fo,{to:"/wanderlust",replace:!0}):null}function Mge(){const{user:e,loading:t}=sn(),a=Xt(),o=new URLSearchParams(a.search).get("convite");return o&&typeof window<"u"&&localStorage.setItem("wl_invite",o.slice(0,40)),!t&&e?s.jsx(ege,{}):s.jsx(uge,{})}function Lge(){return s.jsx(dre,{})}const Bge=()=>s.jsx(uU,{client:Oge,children:s.jsxs(VF,{children:[s.jsx(qB,{}),s.jsx(pV,{}),s.jsx(u8,{children:s.jsx(yY,{children:s.jsxs(oge,{children:[s.jsx(Dge,{}),s.jsx(cge,{}),s.jsx(w8,{}),s.jsx(Ige,{}),s.jsx(dge,{children:s.jsx(x.Suspense,{fallback:s.jsx(qge,{}),children:s.jsxs(BM,{children:[s.jsxs(ce,{element:s.jsx(vae,{}),children:[s.jsx(ce,{path:"/",element:s.jsx(Lge,{})}),s.jsx(ce,{path:"/escolher",element:s.jsx(rne,{})}),s.jsx(ce,{path:"/como-funciona",element:s.jsx(Rse,{})}),s.jsx(ce,{path:"/aeroportos",element:s.jsx(dne,{})}),s.jsx(ce,{path:"/aeroportos/:slug",element:s.jsx(Tne,{})}),s.jsx(ce,{path:"/aeroportos/:hubSlug/precos",element:s.jsx(nle,{})}),s.jsx(ce,{path:"/aeroportos/:hubSlug/:operatorSlug",element:s.jsx(Dne,{})}),s.jsx(ce,{path:"/parceiros",element:s.jsx(wse,{})}),s.jsx(ce,{path:"/guias",element:s.jsx(Tse,{})}),s.jsx(ce,{path:"/blog",element:s.jsx(fo,{to:Vs,replace:!0})}),s.jsx(ce,{path:"/blog/:slug",element:s.jsx(Zv,{legacy:!0})}),s.jsx(ce,{path:"/historias",element:s.jsx(fo,{to:Vs,replace:!0})}),s.jsx(ce,{path:"/historias/:slug",element:s.jsx(Zv,{legacy:!0})}),s.jsx(ce,{path:"/planos",element:s.jsx(Ose,{})}),s.jsx(ce,{path:"/selo",element:s.jsx(Fse,{})}),s.jsx(ce,{path:"/checkout",element:s.jsx(Eie,{})}),s.jsx(ce,{path:"/assinar/:slug",element:s.jsx(_ie,{})}),s.jsx(ce,{path:"/confirmacao",element:s.jsx(Mie,{})}),s.jsx(ce,{path:"/politica-cancelamento",element:s.jsx(Vie,{})}),s.jsx(ce,{path:"/estacionamento-de-aeroporto-e-seguro",element:s.jsx(Fie,{})}),s.jsx(ce,{path:"/confianca",element:s.jsx(fo,{to:"/estacionamento-de-aeroporto-e-seguro",replace:!0})}),s.jsx(ce,{path:"/metodologia",element:s.jsx(zie,{})}),s.jsx(ce,{path:"/quem-somos",element:s.jsx(Hie,{})}),s.jsx(ce,{path:"/indice-de-precos",element:s.jsx(Wie,{})}),s.jsx(ce,{path:"/calculadora-estacionamento-aeroporto",element:s.jsx(Qie,{})}),s.jsx(ce,{path:"/precos",element:s.jsx(fo,{to:"/indice-de-precos",replace:!0})}),s.jsx(ce,{path:"/uber-ou-estacionamento-aeroporto",element:s.jsx(ile,{})}),s.jsx(ce,{path:"/faq",element:s.jsx(cle,{})}),s.jsx(ce,{path:"/faq/:slug",element:s.jsx(tfe,{})}),s.jsx(ce,{path:"/avaliar",element:s.jsx(rfe,{})}),s.jsx(ce,{path:"/avaliacoes",element:s.jsx(sfe,{})}),s.jsx(ce,{path:"/viajante",element:s.jsx(Pfe,{})}),s.jsx(ce,{path:"/viajante/sair",element:s.jsx(Sfe,{})}),s.jsx(ce,{path:"/privacidade",element:s.jsx(Rfe,{})}),s.jsx(ce,{path:"/wanderlust",element:s.jsx(Mge,{})}),s.jsx(ce,{path:"/wanderlust/post/:id",element:s.jsx(Zfe,{})}),s.jsx(ce,{path:"/wanderlust/grupo/:slug",element:s.jsx(Yfe,{})}),s.jsx(ce,{path:"/wanderlust/:airport",element:s.jsx(Ffe,{})}),s.jsx(ce,{path:"/wanderlust/:airport/:slug",element:s.jsx(Ufe,{})}),s.jsx(ce,{path:"/estacionamento-mais-barato-guarulhos",element:s.jsx(SN,{iata:"GRU"})}),s.jsx(ce,{path:"/estacionamento-mais-barato-aeroporto-guarulhos",element:s.jsx(fo,{to:"/estacionamento-mais-barato-guarulhos",replace:!0})}),Jie.filter(e=>e!=="GRU").map(e=>s.jsx(ce,{path:sq(e),element:s.jsx(SN,{iata:e})},e)),Mc.map(e=>s.jsx(ce,{path:vr(e.slug),element:s.jsx(Zv,{articleSlug:e.slug})},e.slug)),s.jsx(ce,{path:"*",element:s.jsx(cl,{})})]}),s.jsx(ce,{path:"/auth",element:s.jsx(fo,{to:"/minhas-reservas",replace:!0})}),s.jsx(ce,{path:"/auth/parceiros",element:s.jsx(mge,{})}),s.jsx(ce,{path:"/reset-password",element:s.jsx(pge,{})}),s.jsx(ce,{path:"/multipark",element:s.jsx(lfe,{})}),s.jsx(ce,{path:"/aerovalet",element:s.jsx(dfe,{})}),s.jsx(ce,{path:"/valetina",element:s.jsx(mfe,{})}),s.jsx(ce,{path:"/minhas-reservas",element:s.jsx(Tge,{})}),s.jsx(ce,{path:"/minhas-reservas/:bookingId/alterar",element:s.jsx($ge,{})}),s.jsx(ce,{path:"/admin/login",element:s.jsx(hge,{})}),s.jsxs(ce,{path:"/admin",element:s.jsx(fge,{}),children:[s.jsx(ce,{index:!0,element:s.jsx(gge,{})}),s.jsx(ce,{path:"reservas",element:s.jsx(vge,{})}),s.jsx(ce,{path:"clientes",element:s.jsx(xge,{})}),s.jsx(ce,{path:"usuarios",element:s.jsx(Cge,{})}),s.jsx(ce,{path:"vagas",element:s.jsx(wge,{})}),s.jsx(ce,{path:"precos",element:s.jsx(kge,{})}),s.jsx(ce,{path:"assinaturas",element:s.jsx(yge,{})}),s.jsx(ce,{path:"pagamentos",element:s.jsx(bge,{})}),s.jsx(ce,{path:"whatsapp",element:s.jsx(Pge,{})}),s.jsx(ce,{path:"bandi",element:s.jsx(Sge,{})}),s.jsx(ce,{path:"email-preview",element:s.jsx(Rge,{})}),s.jsx(ce,{path:"cupons",element:s.jsx(jge,{})}),s.jsx(ce,{path:"alteracoes",element:s.jsx(Nge,{})}),s.jsx(ce,{path:"cancelamentos",element:s.jsx(Age,{})}),s.jsx(ce,{path:"avaliacoes",element:s.jsx(Ege,{})}),s.jsx(ce,{path:"viajantes",element:s.jsx(_ge,{})})]})]})})})]})})})]})});t3(document.getElementById("root")).render(s.jsx(l3,{children:s.jsx(Bge,{})}));export{rae as $,$ie as A,ue as B,OL as C,Zg as D,mT as E,Am as F,Em as G,_m as H,xo as I,Vw as J,jg as K,G as L,GL as M,fo as N,Uge as O,_c as P,Jte as Q,XA as R,PP as S,SP as T,Ng as U,x5 as V,Vg as W,b5 as X,y5 as Y,nae as Z,Qt as _,sn as a,p5 as a$,dU as a0,Xge as a1,Og as a2,pu as a3,Du as a4,a0e as a5,Ph as a6,Yk as a7,zO as a8,IO as a9,Q as aA,PL as aB,RP as aC,hT as aD,Za as aE,Use as aF,MT as aG,On as aH,$3 as aI,Gi as aJ,gT as aK,Pfe as aL,$L as aM,Ao as aN,e0e as aO,Qs as aP,wP as aQ,r0e as aR,w5 as aS,Yge as aT,h5 as aU,Wg as aV,Zge as aW,Jg as aX,Xg as aY,Yg as aZ,g5 as a_,aae as aa,dh as ab,I1 as ac,Ks as ad,la as ae,Vae as af,yt as ag,rl as ah,gt as ai,Yr as aj,Zr as ak,ne as al,BT as am,kF as an,Bte as ao,W6 as ap,Yee as aq,V6 as ar,Pg as as,wF as at,CF as au,td as av,zge as aw,nu as ax,_1 as ay,Ou as az,kY as b,f5 as b0,$8 as b1,sae as b2,on as b3,bO as b4,Jy as b5,T6 as b6,Yu as b7,Xy as b8,Jse as b9,fT as ba,eL as bb,TL as bc,q1 as bd,Dh as be,Nr as c,ze as d,UL as e,Lb as f,_e as g,pe as h,Xt as i,s as j,Ye as k,$b as l,uT as m,ZL as
1081n,Cie as o,YL as p,vT as q,x as r,os as s,j8 as t,cn as u,qL as v,rT as w,Xc as x,tl as y,Fge as z};
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.