diff --git a/sidecar/internal/api/dist/assets/index-iTMDAwLc.js b/sidecar/internal/api/dist/assets/index-D4n6uqgg.js similarity index 99% rename from sidecar/internal/api/dist/assets/index-iTMDAwLc.js rename to sidecar/internal/api/dist/assets/index-D4n6uqgg.js index 43db8d2..b52b3b4 100644 --- a/sidecar/internal/api/dist/assets/index-iTMDAwLc.js +++ b/sidecar/internal/api/dist/assets/index-D4n6uqgg.js @@ -6,12 +6,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r= `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ye=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?ve(n):``}function xe(e,t){switch(e.tag){case 26:case 27:case 5:return ve(e.type);case 16:return ve(`Lazy`);case 13:return e.child!==t&&t!==null?ve(`Suspense Fallback`):ve(`Suspense`);case 19:return ve(`SuspenseList`);case 0:case 15:return be(e.type,!1);case 11:return be(e.type.render,!1);case 1:return be(e.type,!0);case 31:return ve(`Activity`);default:return``}}function Se(e){try{var t=``,n=null;do t+=xe(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` `+e.stack}}var Ce=Object.prototype.hasOwnProperty,we=t.unstable_scheduleCallback,Te=t.unstable_cancelCallback,Ee=t.unstable_shouldYield,De=t.unstable_requestPaint,Oe=t.unstable_now,I=t.unstable_getCurrentPriorityLevel,ke=t.unstable_ImmediatePriority,Ae=t.unstable_UserBlockingPriority,je=t.unstable_NormalPriority,Me=t.unstable_LowPriority,Ne=t.unstable_IdlePriority,Pe=t.log,Fe=t.unstable_setDisableYieldValue,Ie=null,Le=null;function Re(e){if(typeof Pe==`function`&&Fe(e),Le&&typeof Le.setStrictMode==`function`)try{Le.setStrictMode(Ie,e)}catch{}}var ze=Math.clz32?Math.clz32:He,Be=Math.log,Ve=Math.LN2;function He(e){return e>>>=0,e===0?32:31-(Be(e)/Ve|0)|0}var Ue=256,We=262144,Ge=4194304;function Ke(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function qe(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ke(n))):i=Ke(o):i=Ke(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ke(n))):i=Ke(o)):i=Ke(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Je(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ye(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Xe(){var e=Ge;return Ge<<=1,!(Ge&62914560)&&(Ge=4194304),e}function Ze(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Qe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function $e(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),dn=!1;if(un)try{var fn={};Object.defineProperty(fn,`passive`,{get:function(){dn=!0}}),window.addEventListener(`test`,fn,fn),window.removeEventListener(`test`,fn,fn)}catch{dn=!1}var pn=null,mn=null,hn=null;function gn(){if(hn)return hn;var e,t=mn,n=t.length,r,i=`value`in pn?pn.value:pn.textContent,a=i.length;for(e=0;e=Jn),Zn=` `,Qn=!1;function $n(e,t){switch(e){case`keyup`:return Kn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function er(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var tr=!1;function nr(e,t){switch(e){case`compositionend`:return er(t);case`keypress`:return t.which===32?(Qn=!0,Zn):null;case`textInput`:return e=t.data,e===Zn&&Qn?null:e;default:return null}}function rr(e,t){if(tr)return e===`compositionend`||!qn&&$n(e,t)?(e=gn(),hn=mn=pn=null,tr=!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)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=wr(n)}}function Er(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Er(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Dr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Lt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Lt(e.document)}return t}function Or(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`)}var kr=un&&`documentMode`in document&&11>=document.documentMode,Ar=null,jr=null,Mr=null,Nr=!1;function Pr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Nr||Ar==null||Ar!==Lt(r)||(r=Ar,`selectionStart`in r&&Or(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Mr&&Cr(Mr,r)||(Mr=r,r=Od(jr,`onSelect`),0>=o,i-=o,Ei=1<<32-ze(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),z&&Oi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),z&&Oi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return z&&Oi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),z&&Oi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&Ea(l)===r.type){n(e,r.sibling),c=a(r,o.props),Na(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=pi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=fi(o.type,o.key,o.props,null,e.mode,c),Na(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=gi(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=Ea(o),b(e,r,o,c)}if(te(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Ma(o),c);if(o.$$typeof===C)return b(e,r,ta(e,o),c);Pa(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=mi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ja=0;var i=b(e,t,n,r);return Aa=null,i}catch(t){if(t===ba||t===Sa)throw t;var a=ci(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ia=Fa(!0),La=Fa(!1),Ra=!1;function za(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ba(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Va(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ha(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,G&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ai(e),ii(e,null,n),t}return ti(e,r,t,n),ai(e)}function Ua(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,tt(e,n)}}function Wa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ga=!1;function Ka(){if(Ga){var e=da;if(e!==null)throw e}}function qa(e,t,n,r){Ga=!1;var i=e.updateQueue;Ra=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===ua&&(Ga=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:Ra=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),ql|=o,e.lanes=o,e.memoizedState=d}}function Ja(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ya(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=P.T,s={};P.T=s,Ps(e,!1,t,n);try{var c=i(),l=P.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Ns(e,t,ma(c,r),hu(e)):Ns(e,t,r,hu(e))}catch(n){Ns(e,t,{then:function(){},status:`rejected`,reason:n},hu())}finally{F.p=a,o!==null&&s.types!==null&&(o.types=s.types),P.T=o}}function Cs(){}function ws(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Ts(e).queue;Ss(e,a,t,ne,n===null?Cs:function(){return Es(e),n(r)})}function Ts(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Fo,lastRenderedState:ne},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Fo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Es(e){var t=Ts(e);t.next===null&&(t=e.alternate.memoizedState),Ns(e,t.next.queue,{},hu())}function Ds(){return ea(tp)}function Os(){return Ao().memoizedState}function ks(){return Ao().memoizedState}function As(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=hu();e=Va(n);var r=Ha(t,e,n);r!==null&&(_u(r,t,n),Ua(r,t,n)),t={cache:oa()},e.payload=t;return}t=t.return}}function js(e,t,n){var r=hu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Fs(e)?Is(t,n):(n=ni(e,t,n,r),n!==null&&(_u(n,e,r),Ls(n,t,r)))}function Ms(e,t,n){Ns(e,t,n,hu())}function Ns(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Fs(e))Is(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Sr(s,o))return ti(e,t,i,0),Bl===null&&ei(),!1}catch{}if(n=ni(e,t,i,r),n!==null)return _u(n,e,r),Ls(n,t,r),!0}return!1}function Ps(e,t,n,r){if(r={lane:2,revertLane:pd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Fs(e)){if(t)throw Error(i(479))}else t=ni(e,n,r,2),t!==null&&_u(t,e,2)}function Fs(e){var t=e.alternate;return e===H||t!==null&&t===H}function Is(e,t){mo=po=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ls(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,tt(e,n)}}var Rs={readContext:ea,use:No,useCallback:bo,useContext:bo,useEffect:bo,useImperativeHandle:bo,useLayoutEffect:bo,useInsertionEffect:bo,useMemo:bo,useReducer:bo,useRef:bo,useState:bo,useDebugValue:bo,useDeferredValue:bo,useTransition:bo,useSyncExternalStore:bo,useId:bo,useHostTransitionStatus:bo,useFormState:bo,useActionState:bo,useOptimistic:bo,useMemoCache:bo,useCacheRefresh:bo};Rs.useEffectEvent=bo;var zs={readContext:ea,use:No,useCallback:function(e,t){return ko().memoizedState=[e,t===void 0?null:t],e},useContext:ea,useEffect:ls,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ss(4194308,4,hs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ss(4194308,4,e,t)},useInsertionEffect:function(e,t){ss(4,2,e,t)},useMemo:function(e,t){var n=ko();t=t===void 0?null:t;var r=e();if(ho){Re(!0);try{e()}finally{Re(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ko();if(n!==void 0){var i=n(t);if(ho){Re(!0);try{n(t)}finally{Re(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=js.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var t=ko();return e={current:e},t.memoizedState=e},useState:function(e){e=Go(e);var t=e.queue,n=Ms.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:_s,useDeferredValue:function(e,t){return bs(ko(),e,t)},useTransition:function(){var e=Go(!1);return e=Ss.bind(null,H,e.queue,!0,!1),ko().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=H,a=ko();if(z){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Bl===null)throw Error(i(349));q&127||Bo(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ls(Ho.bind(null,r,o,e),[e]),r.flags|=2048,as(9,{destroy:void 0},Vo.bind(null,r,o,n,t),null),n},useId:function(){var e=ko(),t=Bl.identifierPrefix;if(z){var n=Di,r=Ei;n=(r&~(1<<32-ze(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=go++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[st]=t,o[ct]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Ld(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Mc(t)}}return Lc(t),Nc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Mc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ue.current,Vi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ni,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[st]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Pd(e.nodeValue,n)),e||Ri(t,!0)}else e=Ud(e).createTextNode(r),e[st]=t,t.stateNode=e}return Lc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Vi(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[st]=t}else Hi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Lc(t),e=!1}else n=Ui(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(so(t),t):(so(t),null);if(t.flags&128)throw Error(i(558))}return Lc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Vi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[st]=t}else Hi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Lc(t),a=!1}else a=Ui(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(so(t),t):(so(t),null)}return so(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Fc(t,t.updateQueue),Lc(t),null);case 4:return pe(),e===null&&wd(t.stateNode.containerInfo),Lc(t),null;case 10:return Ji(t.type),Lc(t),null;case 19:if(oe(co),r=t.memoizedState,r===null)return Lc(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Ic(r,!1);else{if(Kl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=lo(e),o!==null){for(t.flags|=128,Ic(r,!1),e=o.updateQueue,t.updateQueue=e,Fc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)di(n,e),n=n.sibling;return se(co,co.current&1|2),z&&Oi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Oe()>ru&&(t.flags|=128,a=!0,Ic(r,!1),t.lanes=4194304)}else{if(!a)if(e=lo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Fc(t,e),Ic(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!z)return Lc(t),null}else 2*Oe()-r.renderingStartTime>ru&&n!==536870912&&(t.flags|=128,a=!0,Ic(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Lc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Oe(),e.sibling=null,n=co.current,se(co,a?n&1|2:n&1),z&&Oi(t,r.treeForkCount),e);case 22:case 23:return so(t),eo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Lc(t),t.subtreeFlags&6&&(t.flags|=8192)):Lc(t),n=t.updateQueue,n!==null&&Fc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&oe(ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ji(aa),Lc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function zc(e,t){switch(ji(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ji(aa),pe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return he(t),null;case 31:if(t.memoizedState!==null){if(so(t),t.alternate===null)throw Error(i(340));Hi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(so(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Hi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(co),null;case 4:return pe(),null;case 10:return Ji(t.type),null;case 22:case 23:return so(t),eo(),e!==null&&oe(ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ji(aa),null;case 25:return null;default:return null}}function Bc(e,t){switch(ji(t),t.tag){case 3:Ji(aa),pe();break;case 26:case 27:case 5:he(t);break;case 4:pe();break;case 31:t.memoizedState!==null&&so(t);break;case 13:so(t);break;case 19:oe(co);break;case 10:Ji(t.type);break;case 22:case 23:so(t),eo(),e!==null&&oe(ga);break;case 24:Ji(aa)}}function Vc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Ku(t,t.return,e)}}function Hc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Ku(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Ku(t,t.return,e)}}function Uc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ya(t,n)}catch(t){Ku(e,e.return,t)}}}function Wc(e,t,n){n.props=Ks(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Ku(e,t,n)}}function Gc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Ku(e,t,n)}}function Kc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Ku(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Ku(e,t,n)}else n.current=null}function qc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Ku(e,e.return,t)}}function Jc(e,t,n){try{var r=e.stateNode;Rd(r,e.type,n,t),r[ct]=t}catch(t){Ku(e,e.return,t)}}function Yc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ef(e.type)||e.tag===4}function Xc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Yc(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.tag===27&&ef(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=en));else if(r!==4&&(r===27&&ef(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Zc(e,t,n),e=e.sibling;e!==null;)Zc(e,t,n),e=e.sibling}function Qc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&ef(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Qc(e,t,n),e=e.sibling;e!==null;)Qc(e,t,n),e=e.sibling}function $c(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Ld(t,r,n),t[st]=e,t[ct]=n}catch(t){Ku(e,e.return,t)}}var el=!1,tl=!1,nl=!1,rl=typeof WeakSet==`function`?WeakSet:Set,il=null;function al(e,t){if(e=e.containerInfo,Vd=up,e=Dr(e),Or(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Hd={focusedElem:e,selectionRange:n},up=!1,il=t;il!==null;)if(t=il,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,il=e;else for(;il!==null;){switch(t=il,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Ld(o,r,n),o[st]=e,bt(o),r=o;break a;case`link`:var s=Wf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Tr(s,h),v=Tr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,P.T=null,n=du,du=null;var o=su,s=lu;if(ou=0,cu=su=null,lu=0,G&6)throw Error(i(331));var c=G;if(G|=4,Fl(o.current),Dl(o,o.current,s,n),G=c,od(0,!1),Le&&typeof Le.onPostCommitFiberRoot==`function`)try{Le.onPostCommitFiberRoot(Ie,o)}catch{}return!0}finally{F.p=a,P.T=r,Hu(e,t)}}function Gu(e,t,n){t=vi(n,t),t=Qs(e.stateNode,t,2),e=Ha(e,t,2),e!==null&&(Qe(e,2),ad(e))}function Ku(e,t,n){if(e.tag===3)Gu(e,e,n);else for(;t!==null;){if(t.tag===3){Gu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(au===null||!au.has(r))){e=vi(n,e),n=$s(2),r=Ha(t,n,2),r!==null&&(ec(n,r,t,e),Qe(r,2),ad(r));break}}t=t.return}}function qu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new zl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Wl=!0,i.add(n),e=Ju.bind(null,e,t,n),t.then(e,e))}function Ju(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Bl===e&&(q&n)===n&&(Kl===4||Kl===3&&(q&62914560)===q&&300>Oe()-tu?!(G&2)&&wu(e,0):Yl|=n,Zl===q&&(Zl=0)),ad(e)}function Yu(e,t){t===0&&(t=Xe()),e=ri(e,t),e!==null&&(Qe(e,t),ad(e))}function Xu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yu(e,n)}function Zu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Yu(e,n)}function Qu(e,t){return we(e,t)}var $u=null,ed=null,td=!1,nd=!1,rd=!1,id=0;function ad(e){e!==ed&&e.next===null&&(ed===null?$u=ed=e:ed=ed.next=e),nd=!0,td||(td=!0,fd())}function od(e,t){if(!rd&&nd){rd=!0;do for(var n=!1,r=$u;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ze(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,dd(r,a))}else a=q,a=qe(r,r===Bl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Je(r,a)||(n=!0,dd(r,a));r=r.next}while(n);rd=!1}}function sd(){cd()}function cd(){nd=td=!1;var e=0;id!==0&&Jd()&&(e=id);for(var t=Oe(),n=null,r=$u;r!==null;){var i=r.next,a=ld(r,t);a===0?(r.next=null,n===null?$u=i:n.next=i,i===null&&(ed=n)):(n=r,(e!==0||a&3)&&(nd=!0)),r=i}ou!==0&&ou!==5||od(e,!1),id!==0&&(id=0)}function ld(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&zd(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function wf(e,t,n){var r=Cf;if(r&&typeof t==`string`&&t){var i=zt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),vf.has(i)||(vf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Ld(t,`link`,e),bt(t),r.head.appendChild(t)))}}function Tf(e){bf.D(e),wf(`dns-prefetch`,e,null)}function Ef(e,t){bf.C(e,t),wf(`preconnect`,e,t)}function Df(e,t,n){bf.L(e,t,n);var r=Cf;if(r&&e&&t){var i=`link[rel="preload"][as="`+zt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+zt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+zt(n.imageSizes)+`"]`)):i+=`[href="`+zt(e)+`"]`;var a=i;switch(t){case`style`:a=Nf(e);break;case`script`:a=Lf(e)}_f.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),_f.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Pf(a))||t===`script`&&r.querySelector(Rf(a))||(t=r.createElement(`link`),Ld(t,`link`,e),bt(t),r.head.appendChild(t)))}}function Of(e,t){bf.m(e,t);var n=Cf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+zt(r)+`"][href="`+zt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Lf(e)}if(!_f.has(a)&&(e=m({rel:`modulepreload`,href:e},t),_f.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Rf(a)))return}r=n.createElement(`link`),Ld(r,`link`,e),bt(r),n.head.appendChild(r)}}}function kf(e,t,n){bf.S(e,t,n);var r=Cf;if(r&&e){var i=yt(r).hoistableStyles,a=Nf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Pf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=_f.get(a))&&Vf(e,n);var c=o=r.createElement(`link`);bt(c),Ld(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Bf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Af(e,t){bf.X(e,t);var n=Cf;if(n&&e){var r=yt(n).hoistableScripts,i=Lf(e),a=r.get(i);a||(a=n.querySelector(Rf(i)),a||(e=m({src:e,async:!0},t),(t=_f.get(i))&&Hf(e,t),a=n.createElement(`script`),bt(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function jf(e,t){bf.M(e,t);var n=Cf;if(n&&e){var r=yt(n).hoistableScripts,i=Lf(e),a=r.get(i);a||(a=n.querySelector(Rf(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=_f.get(i))&&Hf(e,t),a=n.createElement(`script`),bt(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mf(e,t,n,r){var a=(a=ue.current)?yf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Nf(n.href),n=yt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Nf(n.href);var o=yt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Pf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),_f.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},_f.set(e,n),o||If(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Lf(n),n=yt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Nf(e){return`href="`+zt(e)+`"`}function Pf(e){return`link[rel="stylesheet"][`+e+`]`}function Ff(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function If(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Ld(t,`link`,n),bt(t),e.head.appendChild(t))}function Lf(e){return`[src="`+zt(e)+`"]`}function Rf(e){return`script[async]`+e}function zf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+zt(n.href)+`"]`);if(r)return t.instance=r,bt(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),bt(r),Ld(r,`style`,a),Bf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Nf(n.href);var o=e.querySelector(Pf(a));if(o)return t.state.loading|=4,t.instance=o,bt(o),o;r=Ff(n),(a=_f.get(a))&&Vf(r,a),o=(e.ownerDocument||e).createElement(`link`),bt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Ld(o,`link`,r),t.state.loading|=4,Bf(o,n.precedence,e),t.instance=o;case`script`:return o=Lf(n.src),(a=e.querySelector(Rf(o)))?(t.instance=a,bt(a),a):(r=n,(a=_f.get(o))&&(r=m({},n),Hf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),bt(a),Ld(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Bf(r,n.precedence,e));return t.instance}function Bf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Kf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function qf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Jf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Nf(r.href),a=t.querySelector(Pf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Zf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,bt(a);return}a=t.ownerDocument||t,r=Ff(r),(i=_f.get(i))&&Vf(r,i),a=a.createElement(`link`),bt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Ld(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Zf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Yf=0;function Xf(e,t){return e.stylesheets&&e.count===0&&$f(e,e.stylesheets),0Yf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Zf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)$f(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Qf=null;function $f(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Qf=new Map,t.forEach(ep,e),Qf=null,Zf.call(e))}function ep(e,t){if(!(t.state.loading&4)){var n=Qf.get(e);if(n)var r=n.get(null);else{n=new Map,Qf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={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`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=l(d()),T=(0,w.createContext)({}),E=()=>(0,w.useContext)(T),D=(0,w.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=E()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,w.createElement)(`svg`,{ref:c,...S,width:t??l??S.width,height:t??l??S.height,stroke:e??f,strokeWidth:m,className:v(`lucide`,p,i),...!a&&!C(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,w.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),O=(e,t)=>{let n=(0,w.forwardRef)(({className:n,...r},i)=>(0,w.createElement)(D,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},k=O(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),A=O(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),j=O(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),M=O(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),N=O(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),ee=O(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),te=O(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),P=O(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),F=O(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),ne=O(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),re=O(`circle-x`,[[`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`}]]),ie=O(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),ae=O(`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`}]]),oe=O(`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`}]]),se=O(`file-diff`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M9 10h6`,key:`9gxzsh`}],[`path`,{d:`M12 13V7`,key:`h0r20n`}],[`path`,{d:`M9 17h6`,key:`r8uit2`}]]),ce=O(`gavel`,[[`path`,{d:`m14 13-8.381 8.38a1 1 0 0 1-3.001-3l8.384-8.381`,key:`pgg06f`}],[`path`,{d:`m16 16 6-6`,key:`vzrcl6`}],[`path`,{d:`m21.5 10.5-8-8`,key:`a17d9x`}],[`path`,{d:`m8 8 6-6`,key:`18bi4p`}],[`path`,{d:`m8.5 7.5 8 8`,key:`1oyaui`}]]),le=O(`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-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),ue=O(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),de=O(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),fe=O(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),pe=O(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),me=O(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),he=O(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),ge=O(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),_e=O(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),ve=O(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),ye=O(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),be=O(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),xe=O(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Se=O(`shield-alert`,[[`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`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),Ce=O(`trending-up`,[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]),we=O(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Te=O(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Ee=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),De=o(((e,t)=>{t.exports=Ee()})),Oe=l(_(),1),I=De();function ke({databases:e,selected:t,onSelect:n,...r}){return(0,I.jsxs)(`select`,{value:t,onChange:e=>n(e.target.value),...r,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`option`,{value:`all`,children:`All Databases`}),e.map(e=>(0,I.jsx)(`option`,{value:e.name,children:e.name},e.name))]})}function Ae(e,t=3e4){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(!0),[o,s]=(0,w.useState)(null),c=(0,w.useRef)(null),l=(0,w.useRef)(null),u=(0,w.useRef)(null),d=(0,w.useCallback)(async()=>{if(!e){l.current=null,u.current=null,r(null),s(null),a(!1);return}u.current!==e&&(u.current=e,l.current=null,r(null)),c.current&&c.current.abort();let t=new AbortController;c.current=t,l.current===null&&a(!0);try{let n=await fetch(e,{signal:t.signal});if(!n.ok)throw Error(`${n.status} ${n.statusText}`);let i=await n.json();l.current=i,r(i),s(null)}catch(e){if(e.name===`AbortError`)return;s(e.message)}finally{c.current===t&&(a(!1),c.current=null)}},[e]);return(0,w.useEffect)(()=>{if(d(),t>0&&e){let e=setInterval(d,t);return()=>{clearInterval(e),c.current&&c.current.abort()}}return()=>{c.current&&c.current.abort()}},[d,t,e]),{data:n,loading:i,error:o,refetch:d}}function je(e,t){return!e||!t?e:`${e}${e.includes(`?`)?`&`:`?`}from=${encodeURIComponent(t.fromISO)}&to=${encodeURIComponent(t.toISO)}`}var Me=(0,w.createContext)(null);function Ne({children:e}){let t=(0,w.useRef)(new Set),[n,r]=(0,w.useState)(!1),[i,a]=(0,w.useState)(null);(0,w.useEffect)(()=>{let e=new EventSource(`/api/v1/events`,{withCredentials:!0}),n=e=>{let n;try{n=JSON.parse(e.data)}catch{return}a(n.ts||new Date().toISOString()),t.current.forEach(e=>{try{e(n)}catch{}})};return e.onopen=()=>r(!0),e.onerror=()=>r(!1),e.onmessage=n,[`findings`,`actions`,`health`,`heartbeat`].forEach(t=>{e.addEventListener(t,n)}),()=>{e.close(),r(!1)}},[]);let o={subscribe:(0,w.useCallback)((e,n)=>{let r=Array.isArray(e)?new Set(e):null,i=e=>{r&&!r.has(e.type)||n(e)};return t.current.add(i),()=>t.current.delete(i)},[]),connected:n,lastEventAt:i};return(0,I.jsx)(Me.Provider,{value:o,children:e})}function Pe(){return(0,w.useContext)(Me)||{connected:!1,lastEventAt:null,subscribe:()=>()=>{}}}function Fe(e,t){let{subscribe:n}=Pe();(0,w.useEffect)(()=>{if(t)return n(e,()=>t())},[n,t,JSON.stringify(e)])}var Ie=[{key:`1h`,label:`Last 1h`,ms:3600*1e3},{key:`6h`,label:`Last 6h`,ms:360*60*1e3},{key:`24h`,label:`Last 24h`,ms:1440*60*1e3},{key:`7d`,label:`Last 7d`,ms:10080*60*1e3},{key:`30d`,label:`Last 30d`,ms:720*60*60*1e3}],Le=(0,w.createContext)(null);function Re({children:e}){let[t,n]=(0,w.useState)(()=>localStorage.getItem(`pg_sage_range`)||`24h`),[r,i]=(0,w.useState)(()=>Date.now());(0,w.useEffect)(()=>{localStorage.setItem(`pg_sage_range`,t)},[t]),(0,w.useEffect)(()=>{let e=setInterval(()=>i(Date.now()),3e4);return()=>clearInterval(e)},[]);let a=(0,w.useMemo)(()=>{let e=Ie.find(e=>e.key===t)||Ie[2],i=new Date(r),a=new Date(r-e.ms);return{rangeKey:t,setRangeKey:n,range:e,ranges:Ie,from:a,to:i,fromISO:a.toISOString(),toISO:i.toISOString()}},[t,r]);return(0,I.jsx)(Le.Provider,{value:a,children:e})}function ze(){let e=(0,w.useContext)(Le);if(!e){let e=new Date,t=new Date(e.getTime()-1440*60*1e3);return{rangeKey:`24h`,setRangeKey:()=>{},range:Ie[2],ranges:Ie,from:t,to:e,fromISO:t.toISOString(),toISO:e.toISOString()}}return e}function Be(){let{rangeKey:e,setRangeKey:t,ranges:n}=ze();return(0,I.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 rounded text-xs`,"data-testid":`time-range-picker`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`,color:`var(--text-secondary)`},children:[(0,I.jsx)(ie,{size:13,"aria-hidden":`true`}),(0,I.jsx)(`select`,{"aria-label":`Time range`,value:e,onChange:e=>t(e.target.value),className:`bg-transparent text-xs`,style:{color:`var(--text-primary)`,border:`none`},children:n.map(e=>(0,I.jsx)(`option`,{value:e.key,children:e.label},e.key))})]})}var Ve={observation:{label:`Observation`,Icon:oe,bg:`rgba(100,150,255,0.15)`,fg:`var(--accent, #4c8bf5)`,border:`rgba(100,150,255,0.4)`,hint:`Findings only — no actions executed`},advisory:{label:`Advisory`,Icon:ce,bg:`rgba(250,170,60,0.15)`,fg:`#f0a54a`,border:`rgba(250,170,60,0.4)`,hint:`SAFE actions executed autonomously`},autonomous:{label:`Autonomous`,Icon:M,bg:`rgba(90,200,130,0.15)`,fg:`#5ac882`,border:`rgba(90,200,130,0.4)`,hint:`SAFE + MODERATE actions executed autonomously`}};function He({level:e,compact:t=!1}){let n=(e||``).toLowerCase(),r=Ve[n];if(!r)return null;let{label:i,Icon:a,bg:o,fg:s,border:c,hint:l}=r;return(0,I.jsxs)(`span`,{"data-testid":`trust-badge-${n}`,title:l,className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-semibold`,style:{background:o,color:s,border:`1px solid ${c}`,lineHeight:1.4},children:[(0,I.jsx)(a,{size:12,"aria-hidden":`true`}),t?i.slice(0,1):i]})}var Ue=(0,w.createContext)({refetch:()=>{}});function We(){return(0,w.useContext)(Ue).refetch}var Ge=[{heading:`Operate`,items:[{path:`#/`,icon:le,label:`Overview`,tid:`nav-dashboard`},{path:`#/cases`,icon:we,label:`Cases`,tid:`nav-cases`,aliases:[`#/findings`]},{path:`#/actions`,icon:k,label:`Actions`,tid:`nav-actions`},{path:`#/manage-databases`,icon:be,label:`Fleet`,admin:!0,tid:`nav-databases`},{path:`#/settings`,icon:xe,label:`Settings`,admin:!0,tid:`nav-settings`}]}],Ke=Ge.flatMap(e=>e.items);function qe({children:e}){return(0,I.jsx)(`div`,{className:`px-3 mt-4 mb-1`,style:{fontSize:`10px`,textTransform:`uppercase`,letterSpacing:`0.08em`,color:`var(--text-secondary)`},children:e})}function Je({item:e,active:t,pendingCount:n}){return(0,I.jsxs)(`a`,{href:e.path,"data-testid":e.tid,className:`flex items-center gap-2 px-3 py-2 rounded text-sm`,style:{color:t?`var(--accent)`:`var(--text-secondary)`,background:t?`var(--bg-hover)`:`transparent`},children:[(0,I.jsx)(e.icon,{size:16}),e.label,e.path===`#/actions`&&n>0&&(0,I.jsx)(`span`,{className:`ml-auto px-1.5 py-0.5 rounded-full text-xs`,style:{background:`var(--red, #e53e3e)`,color:`#fff`,fontSize:`0.65rem`,lineHeight:1},children:n})]})}function Ye(){return(0,I.jsxs)(`span`,{"data-testid":`emergency-stop-badge`,className:`flex items-center gap-1.5 px-2.5 py-1 rounded text-xs font-semibold`,style:{background:`var(--red, #e53e3e)`,color:`#fff`,animation:`pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite`},children:[(0,I.jsx)(Se,{size:14}),`EMERGENCY STOP ACTIVE`]})}function Xe({children:e,databases:t,selectedDB:n,onSelectDB:r,user:i,fleetData:a,onLogout:o,pageTitle:s,...c}){let l=window.location.hash||`#/`,{data:u,refetch:d}=Ae(i?.role===`admin`||i?.role===`operator`?`/api/v1/actions/pending/count`:null,3e4);Fe([`actions`],d);let f=u?.count||0,{data:p}=Ae(i&&!a?`/api/v1/databases`:null,3e4),m=a||p,h=m?.summary?.emergency_stopped===!0,g=(()=>{if(!m?.databases?.length)return null;if(n&&n!==`all`)return m.databases.find(e=>e.name===n)?.status?.trust_level||null;let e={observation:0,advisory:1,autonomous:2},t=null;for(let n of m.databases){let r=n.status?.trust_level;r&&(t==null||e[r]{let e=()=>y(!1);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,w.useEffect)(()=>{if(!v)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[v]);let b=(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`text-lg font-bold mb-4 flex items-center\r - justify-between`,style:{color:`var(--accent)`},children:[(0,I.jsx)(`span`,{children:`pg_sage`}),(0,I.jsx)(`button`,{type:`button`,"aria-label":`Close navigation`,"data-testid":`sidebar-close`,onClick:()=>y(!1),className:`md:hidden p-1 rounded`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(Te,{size:18})})]}),Ge.map(e=>{let t=e.items.filter(e=>!e.admin||_);return t.length===0?null:(0,I.jsxs)(`div`,{children:[(0,I.jsx)(qe,{children:e.heading}),t.map(e=>(0,I.jsx)(Je,{item:e,active:l===e.path||e.aliases?.includes(l),pendingCount:f},e.path))]},e.heading)}),(0,I.jsxs)(`div`,{className:`mt-auto pt-4`,style:{borderTop:`1px solid var(--border)`},children:[i&&(0,I.jsxs)(`div`,{className:`px-3 py-1 text-xs mb-2`,"data-testid":`user-email`,style:{color:`var(--text-secondary)`},children:[i.email,(0,I.jsxs)(`span`,{className:`ml-1 opacity-60`,children:[`(`,i.role,`)`]})]}),o&&(0,I.jsxs)(`button`,{onClick:o,"data-testid":`sign-out-button`,className:`flex items-center gap-2 px-3 py-2 rounded text-sm w-full`,style:{color:`var(--text-secondary)`},children:[(0,I.jsx)(pe,{size:16}),`Sign Out`]})]})]});return(0,I.jsxs)(`div`,{className:`flex h-screen min-w-0 overflow-hidden`,...c,children:[(0,I.jsx)(`nav`,{"data-testid":`sidebar-desktop`,className:`hidden md:flex w-56 flex-shrink-0 border-r\r - flex-col p-4 gap-1`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:b}),v&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{"data-testid":`sidebar-overlay`,className:`md:hidden fixed inset-0 z-40`,style:{background:`rgba(0,0,0,0.5)`},onClick:()=>y(!1)}),(0,I.jsx)(`nav`,{"data-testid":`sidebar-drawer`,className:`md:hidden fixed top-0 left-0 bottom-0 z-50\r - w-64 border-r flex flex-col p-4 gap-1 overflow-y-auto`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:b})]}),(0,I.jsxs)(`main`,{className:`flex-1 overflow-auto min-w-0`,children:[(0,I.jsxs)(`header`,{className:`flex items-center justify-between gap-2\r - px-3 md:px-4 py-3 md:py-4 border-b`,style:{borderColor:`var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,I.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,"data-testid":`sidebar-open`,onClick:()=>y(!0),className:`md:hidden p-1.5 rounded flex-shrink-0`,style:{color:`var(--text-primary)`,border:`1px solid var(--border)`},children:(0,I.jsx)(me,{size:18})}),(0,I.jsx)(`h1`,{className:`text-base md:text-lg font-semibold truncate`,style:{color:`var(--text-primary)`},children:s||Ke.find(e=>e.path===l)?.label||`pg_sage`})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5 md:gap-3\r - flex-wrap justify-end min-w-0`,children:[h&&(0,I.jsx)(Ye,{}),g&&(0,I.jsx)(He,{level:g}),(0,I.jsx)(Be,{}),t&&t.length>1&&(0,I.jsx)(ke,{"data-testid":`database-picker`,databases:t,selected:n,onSelect:r})]})]}),(0,I.jsx)(`div`,{className:`p-3 md:p-6`,children:(0,I.jsx)(Ue.Provider,{value:{refetch:d},children:e})})]})]})}var Ze={critical:{bg:`#4a1414`,text:`#ff8a8a`,label:`Critical`,border:`#7a1f1f`},warning:{bg:`#3b2e11`,text:`#ffd666`,label:`Warning`,border:`#6a4d0c`},info:{bg:`#0f2a4d`,text:`#9dc7ff`,label:`Info`,border:`#1a4a85`}};function Qe({severity:e}){let t=(e||``).toLowerCase(),n=Ze[t]||Ze.info;return(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded text-xs font-medium`,"data-testid":`severity-${t}`,style:{background:n.bg,color:n.text,border:`1px solid ${n.border}`},children:n.label})}function $e({message:e,onRetry:t}){return(0,I.jsxs)(`div`,{className:`flex items-center gap-3 p-4 rounded`,style:{background:`#3b1111`,border:`1px solid var(--red)`},children:[(0,I.jsx)(we,{size:18,style:{color:`var(--red)`}}),(0,I.jsx)(`span`,{className:`flex-1 text-sm`,style:{color:`var(--red)`},children:e}),t&&(0,I.jsx)(`button`,{onClick:t,className:`p-1.5 rounded`,"aria-label":`Retry`,title:`Retry`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(ge,{size:14})})]})}function et(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}function tt(e){if(!e)return null;try{return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return e}}function nt({label:e,client:t}){if(!t?.budget_exhausted)return null;let n=t.token_budget>0?Math.round(t.tokens_used/t.token_budget*100):100,r=tt(t.resets_at);return(0,I.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,I.jsxs)(`span`,{className:`font-medium`,children:[e,`:`]}),(0,I.jsxs)(`span`,{children:[et(t.tokens_used),` / `,et(t.token_budget),` `,`(`,n,`%)`]}),r&&(0,I.jsxs)(`span`,{style:{color:`var(--text-secondary)`},children:[`— resets at `,r]})]})}function rt(){let{data:e,refetch:t}=Ae(`/api/v1/llm/status`,3e4),[n,r]=(0,w.useState)(!1),[i,a]=(0,w.useState)(null),o=(0,w.useCallback)(async()=>{r(!0),a(null);try{let e=await fetch(`/api/v1/llm/budget/reset`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||`HTTP ${e.status}`)}t()}catch(e){a(e.message)}finally{r(!1)}},[t]);if(!e)return null;let s=e.general?.budget_exhausted===!0,c=e.optimizer?.budget_exhausted===!0;return!s&&!c?null:(0,I.jsxs)(`div`,{"data-testid":`token-budget-banner`,className:`rounded p-4 flex items-start gap-3`,style:{background:`rgba(251, 191, 36, 0.08)`,border:`1px solid rgba(251, 191, 36, 0.3)`},children:[(0,I.jsx)(we,{size:20,className:`flex-shrink-0 mt-0.5`,style:{color:`var(--yellow)`}}),(0,I.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,I.jsx)(`div`,{className:`font-semibold mb-1`,style:{color:`var(--yellow)`},children:`LLM token budget exhausted`}),s&&(0,I.jsx)(nt,{label:`General`,client:e.general}),c&&(0,I.jsx)(nt,{label:`Optimizer`,client:e.optimizer}),i&&(0,I.jsxs)(`div`,{className:`text-xs mt-1`,style:{color:`var(--red)`},children:[`Reset failed: `,i]})]}),(0,I.jsxs)(`button`,{"data-testid":`token-budget-reset`,onClick:o,disabled:n,className:`flex items-center gap-1.5 px-3 py-1.5 rounded\r +`).replace(Md,``)}function Pd(e,t){return t=Nd(t),Nd(e)===t}function Fd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Kt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Kt(e,``+r);break;case`className`:At(e,`class`,r);break;case`tabIndex`:At(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:At(e,n,r);break;case`style`:Yt(e,r,o);break;case`data`:if(t!==`object`){At(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=$t(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Fd(e,t,`name`,a.name,a,null),Fd(e,t,`formEncType`,a.formEncType,a,null),Fd(e,t,`formMethod`,a.formMethod,a,null),Fd(e,t,`formTarget`,a.formTarget,a,null)):(Fd(e,t,`encType`,a.encType,a,null),Fd(e,t,`method`,a.method,a,null),Fd(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=$t(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=en);break;case`onScroll`:r!=null&&X(`scroll`,e);break;case`onScrollEnd`:r!=null&&X(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=$t(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:X(`beforetoggle`,e),X(`toggle`,e),kt(e,`popover`,r);break;case`xlinkActuate`:jt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:jt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:jt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:jt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:jt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:jt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:jt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:jt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:jt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:kt(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2s)break;var u=c.transferSize,d=c.initiatorType;u&&zd(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function wf(e,t,n){var r=Cf;if(r&&typeof t==`string`&&t){var i=zt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),vf.has(i)||(vf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Ld(t,`link`,e),bt(t),r.head.appendChild(t)))}}function Tf(e){bf.D(e),wf(`dns-prefetch`,e,null)}function Ef(e,t){bf.C(e,t),wf(`preconnect`,e,t)}function Df(e,t,n){bf.L(e,t,n);var r=Cf;if(r&&e&&t){var i=`link[rel="preload"][as="`+zt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+zt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+zt(n.imageSizes)+`"]`)):i+=`[href="`+zt(e)+`"]`;var a=i;switch(t){case`style`:a=Nf(e);break;case`script`:a=Lf(e)}_f.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),_f.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Pf(a))||t===`script`&&r.querySelector(Rf(a))||(t=r.createElement(`link`),Ld(t,`link`,e),bt(t),r.head.appendChild(t)))}}function Of(e,t){bf.m(e,t);var n=Cf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+zt(r)+`"][href="`+zt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Lf(e)}if(!_f.has(a)&&(e=m({rel:`modulepreload`,href:e},t),_f.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Rf(a)))return}r=n.createElement(`link`),Ld(r,`link`,e),bt(r),n.head.appendChild(r)}}}function kf(e,t,n){bf.S(e,t,n);var r=Cf;if(r&&e){var i=yt(r).hoistableStyles,a=Nf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Pf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=_f.get(a))&&Vf(e,n);var c=o=r.createElement(`link`);bt(c),Ld(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Bf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Af(e,t){bf.X(e,t);var n=Cf;if(n&&e){var r=yt(n).hoistableScripts,i=Lf(e),a=r.get(i);a||(a=n.querySelector(Rf(i)),a||(e=m({src:e,async:!0},t),(t=_f.get(i))&&Hf(e,t),a=n.createElement(`script`),bt(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function jf(e,t){bf.M(e,t);var n=Cf;if(n&&e){var r=yt(n).hoistableScripts,i=Lf(e),a=r.get(i);a||(a=n.querySelector(Rf(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=_f.get(i))&&Hf(e,t),a=n.createElement(`script`),bt(a),Ld(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mf(e,t,n,r){var a=(a=ue.current)?yf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Nf(n.href),n=yt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Nf(n.href);var o=yt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Pf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),_f.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},_f.set(e,n),o||If(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Lf(n),n=yt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Nf(e){return`href="`+zt(e)+`"`}function Pf(e){return`link[rel="stylesheet"][`+e+`]`}function Ff(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function If(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Ld(t,`link`,n),bt(t),e.head.appendChild(t))}function Lf(e){return`[src="`+zt(e)+`"]`}function Rf(e){return`script[async]`+e}function zf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+zt(n.href)+`"]`);if(r)return t.instance=r,bt(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),bt(r),Ld(r,`style`,a),Bf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Nf(n.href);var o=e.querySelector(Pf(a));if(o)return t.state.loading|=4,t.instance=o,bt(o),o;r=Ff(n),(a=_f.get(a))&&Vf(r,a),o=(e.ownerDocument||e).createElement(`link`),bt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Ld(o,`link`,r),t.state.loading|=4,Bf(o,n.precedence,e),t.instance=o;case`script`:return o=Lf(n.src),(a=e.querySelector(Rf(o)))?(t.instance=a,bt(a),a):(r=n,(a=_f.get(o))&&(r=m({},n),Hf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),bt(a),Ld(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Bf(r,n.precedence,e));return t.instance}function Bf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Kf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function qf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Jf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Nf(r.href),a=t.querySelector(Pf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Zf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,bt(a);return}a=t.ownerDocument||t,r=Ff(r),(i=_f.get(i))&&Vf(r,i),a=a.createElement(`link`),bt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Ld(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Zf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Yf=0;function Xf(e,t){return e.stylesheets&&e.count===0&&$f(e,e.stylesheets),0Yf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Zf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)$f(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Qf=null;function $f(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Qf=new Map,t.forEach(ep,e),Qf=null,Zf.call(e))}function ep(e,t){if(!(t.state.loading&4)){var n=Qf.get(e);if(n)var r=n.get(null);else{n=new Map,Qf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={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`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=l(d()),T=(0,w.createContext)({}),E=()=>(0,w.useContext)(T),D=(0,w.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>{let{size:l=24,strokeWidth:u=2,absoluteStrokeWidth:d=!1,color:f=`currentColor`,className:p=``}=E()??{},m=r??d?Number(n??u)*24/Number(t??l):n??u;return(0,w.createElement)(`svg`,{ref:c,...S,width:t??l??S.width,height:t??l??S.height,stroke:e??f,strokeWidth:m,className:v(`lucide`,p,i),...!a&&!C(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,w.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),O=(e,t)=>{let n=(0,w.forwardRef)(({className:n,...r},i)=>(0,w.createElement)(D,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},k=O(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),A=O(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),j=O(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),M=O(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),N=O(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),ee=O(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),te=O(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),P=O(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),F=O(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),ne=O(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),re=O(`circle-x`,[[`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`}]]),ie=O(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),ae=O(`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`}]]),oe=O(`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`}]]),se=O(`file-diff`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M9 10h6`,key:`9gxzsh`}],[`path`,{d:`M12 13V7`,key:`h0r20n`}],[`path`,{d:`M9 17h6`,key:`r8uit2`}]]),ce=O(`gavel`,[[`path`,{d:`m14 13-8.381 8.38a1 1 0 0 1-3.001-3l8.384-8.381`,key:`pgg06f`}],[`path`,{d:`m16 16 6-6`,key:`vzrcl6`}],[`path`,{d:`m21.5 10.5-8-8`,key:`a17d9x`}],[`path`,{d:`m8 8 6-6`,key:`18bi4p`}],[`path`,{d:`m8.5 7.5 8 8`,key:`1oyaui`}]]),le=O(`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-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),ue=O(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),de=O(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),fe=O(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),pe=O(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),me=O(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),he=O(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),ge=O(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),_e=O(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),ve=O(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),ye=O(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),be=O(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),xe=O(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Se=O(`shield-alert`,[[`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`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),Ce=O(`trending-up`,[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]),we=O(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Te=O(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Ee=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),De=o(((e,t)=>{t.exports=Ee()})),Oe=l(_(),1),I=De();function ke({databases:e,selected:t,onSelect:n,...r}){return(0,I.jsxs)(`select`,{value:t,onChange:e=>n(e.target.value),...r,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`option`,{value:`all`,children:`All Databases`}),e.map(e=>(0,I.jsx)(`option`,{value:e.name,children:e.name},e.name))]})}function Ae(e,t=3e4){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(!0),[o,s]=(0,w.useState)(null),c=(0,w.useRef)(null),l=(0,w.useRef)(null),u=(0,w.useRef)(null),d=(0,w.useCallback)(async()=>{if(!e){l.current=null,u.current=null,r(null),s(null),a(!1);return}u.current!==e&&(u.current=e,l.current=null,r(null)),c.current&&c.current.abort();let t=new AbortController;c.current=t,l.current===null&&a(!0);try{let n=await fetch(e,{signal:t.signal});if(!n.ok)throw Error(`${n.status} ${n.statusText}`);let i=await n.json();l.current=i,r(i),s(null)}catch(e){if(e.name===`AbortError`)return;s(e.message)}finally{c.current===t&&(a(!1),c.current=null)}},[e]);return(0,w.useEffect)(()=>{if(d(),t>0&&e){let e=setInterval(d,t);return()=>{clearInterval(e),c.current&&c.current.abort()}}return()=>{c.current&&c.current.abort()}},[d,t,e]),{data:n,loading:i,error:o,refetch:d}}function je(e,t){return!e||!t?e:`${e}${e.includes(`?`)?`&`:`?`}from=${encodeURIComponent(t.fromISO)}&to=${encodeURIComponent(t.toISO)}`}var Me=(0,w.createContext)(null);function Ne({children:e}){let t=(0,w.useRef)(new Set),[n,r]=(0,w.useState)(!1),[i,a]=(0,w.useState)(null);(0,w.useEffect)(()=>{let e=new EventSource(`/api/v1/events`,{withCredentials:!0}),n=e=>{let n;try{n=JSON.parse(e.data)}catch{return}a(n.ts||new Date().toISOString()),t.current.forEach(e=>{try{e(n)}catch{}})};return e.onopen=()=>r(!0),e.onerror=()=>r(!1),e.onmessage=n,[`findings`,`actions`,`health`,`heartbeat`].forEach(t=>{e.addEventListener(t,n)}),()=>{e.close(),r(!1)}},[]);let o={subscribe:(0,w.useCallback)((e,n)=>{let r=Array.isArray(e)?new Set(e):null,i=e=>{r&&!r.has(e.type)||n(e)};return t.current.add(i),()=>t.current.delete(i)},[]),connected:n,lastEventAt:i};return(0,I.jsx)(Me.Provider,{value:o,children:e})}function Pe(){return(0,w.useContext)(Me)||{connected:!1,lastEventAt:null,subscribe:()=>()=>{}}}function Fe(e,t){let{subscribe:n}=Pe();(0,w.useEffect)(()=>{if(t)return n(e,()=>t())},[n,t,JSON.stringify(e)])}var Ie=[{key:`1h`,label:`Last 1h`,ms:3600*1e3},{key:`6h`,label:`Last 6h`,ms:360*60*1e3},{key:`24h`,label:`Last 24h`,ms:1440*60*1e3},{key:`7d`,label:`Last 7d`,ms:10080*60*1e3},{key:`30d`,label:`Last 30d`,ms:720*60*60*1e3}],Le=(0,w.createContext)(null);function Re({children:e}){let[t,n]=(0,w.useState)(()=>localStorage.getItem(`pg_sage_range`)||`24h`),[r,i]=(0,w.useState)(()=>Date.now());(0,w.useEffect)(()=>{localStorage.setItem(`pg_sage_range`,t)},[t]),(0,w.useEffect)(()=>{let e=setInterval(()=>i(Date.now()),3e4);return()=>clearInterval(e)},[]);let a=(0,w.useMemo)(()=>{let e=Ie.find(e=>e.key===t)||Ie[2],i=new Date(r),a=new Date(r-e.ms);return{rangeKey:t,setRangeKey:n,range:e,ranges:Ie,from:a,to:i,fromISO:a.toISOString(),toISO:i.toISOString()}},[t,r]);return(0,I.jsx)(Le.Provider,{value:a,children:e})}function ze(){let e=(0,w.useContext)(Le);if(!e){let e=new Date,t=new Date(e.getTime()-1440*60*1e3);return{rangeKey:`24h`,setRangeKey:()=>{},range:Ie[2],ranges:Ie,from:t,to:e,fromISO:t.toISOString(),toISO:e.toISOString()}}return e}function Be(){let{rangeKey:e,setRangeKey:t,ranges:n}=ze();return(0,I.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 rounded text-xs`,"data-testid":`time-range-picker`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`,color:`var(--text-secondary)`},children:[(0,I.jsx)(ie,{size:13,"aria-hidden":`true`}),(0,I.jsx)(`select`,{"aria-label":`Time range`,value:e,onChange:e=>t(e.target.value),className:`bg-transparent text-xs`,style:{color:`var(--text-primary)`,border:`none`},children:n.map(e=>(0,I.jsx)(`option`,{value:e.key,children:e.label},e.key))})]})}var Ve={observation:{label:`Observation`,Icon:oe,bg:`rgba(100,150,255,0.15)`,fg:`var(--accent, #4c8bf5)`,border:`rgba(100,150,255,0.4)`,hint:`Findings only — no actions executed`},advisory:{label:`Advisory`,Icon:ce,bg:`rgba(250,170,60,0.15)`,fg:`#f0a54a`,border:`rgba(250,170,60,0.4)`,hint:`SAFE actions executed autonomously`},autonomous:{label:`Autonomous`,Icon:M,bg:`rgba(90,200,130,0.15)`,fg:`#5ac882`,border:`rgba(90,200,130,0.4)`,hint:`SAFE + MODERATE actions executed autonomously`}};function He({level:e,compact:t=!1}){let n=(e||``).toLowerCase(),r=Ve[n];if(!r)return null;let{label:i,Icon:a,bg:o,fg:s,border:c,hint:l}=r;return(0,I.jsxs)(`span`,{"data-testid":`trust-badge-${n}`,title:l,className:`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-semibold`,style:{background:o,color:s,border:`1px solid ${c}`,lineHeight:1.4},children:[(0,I.jsx)(a,{size:12,"aria-hidden":`true`}),t?i.slice(0,1):i]})}var Ue=(0,w.createContext)({refetch:()=>{}});function We(){return(0,w.useContext)(Ue).refetch}var Ge=[{heading:`Operate`,items:[{path:`#/`,icon:le,label:`Overview`,tid:`nav-dashboard`},{path:`#/cases`,icon:we,label:`Cases`,tid:`nav-cases`,aliases:[`#/findings`]},{path:`#/actions`,icon:k,label:`Actions`,tid:`nav-actions`},{path:`#/manage-databases`,icon:be,label:`Fleet`,admin:!0,tid:`nav-databases`},{path:`#/settings`,icon:xe,label:`Settings`,admin:!0,tid:`nav-settings`}]}],Ke=Ge.flatMap(e=>e.items);function qe({children:e}){return(0,I.jsx)(`div`,{className:`px-3 mt-4 mb-1`,style:{fontSize:`10px`,textTransform:`uppercase`,letterSpacing:`0.08em`,color:`var(--text-secondary)`},children:e})}function Je({item:e,active:t,pendingCount:n}){return(0,I.jsxs)(`a`,{href:e.path,"data-testid":e.tid,className:`flex items-center gap-2 px-3 py-2 rounded text-sm`,style:{color:t?`var(--accent)`:`var(--text-secondary)`,background:t?`var(--bg-hover)`:`transparent`},children:[(0,I.jsx)(e.icon,{size:16}),e.label,e.path===`#/actions`&&n>0&&(0,I.jsx)(`span`,{className:`ml-auto px-1.5 py-0.5 rounded-full text-xs`,style:{background:`var(--red, #e53e3e)`,color:`#fff`,fontSize:`0.65rem`,lineHeight:1},children:n})]})}function Ye(){return(0,I.jsxs)(`span`,{"data-testid":`emergency-stop-badge`,className:`flex items-center gap-1.5 px-2.5 py-1 rounded text-xs font-semibold`,style:{background:`var(--red, #e53e3e)`,color:`#fff`,animation:`pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite`},children:[(0,I.jsx)(Se,{size:14}),`EMERGENCY STOP ACTIVE`]})}function Xe({children:e,databases:t,selectedDB:n,onSelectDB:r,user:i,fleetData:a,onLogout:o,pageTitle:s,...c}){let l=window.location.hash||`#/`,{data:u,refetch:d}=Ae(i?.role===`admin`||i?.role===`operator`?`/api/v1/actions/pending/count`:null,3e4);Fe([`actions`],d);let f=u?.count||0,{data:p}=Ae(i&&!a?`/api/v1/databases`:null,3e4),m=a||p,h=m?.summary?.emergency_stopped===!0,g=(()=>{if(!m?.databases?.length)return null;if(n&&n!==`all`)return m.databases.find(e=>e.name===n)?.status?.trust_level||null;let e={observation:0,advisory:1,autonomous:2},t=null;for(let n of m.databases){let r=n.status?.trust_level;r&&(t==null||e[r]{let e=()=>y(!1);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,w.useEffect)(()=>{if(!v)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[v]);let b=(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`text-lg font-bold mb-4 flex items-center + justify-between`,style:{color:`var(--accent)`},children:[(0,I.jsx)(`span`,{children:`pg_sage`}),(0,I.jsx)(`button`,{type:`button`,"aria-label":`Close navigation`,"data-testid":`sidebar-close`,onClick:()=>y(!1),className:`md:hidden p-1 rounded`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(Te,{size:18})})]}),Ge.map(e=>{let t=e.items.filter(e=>!e.admin||_);return t.length===0?null:(0,I.jsxs)(`div`,{children:[(0,I.jsx)(qe,{children:e.heading}),t.map(e=>(0,I.jsx)(Je,{item:e,active:l===e.path||e.aliases?.includes(l),pendingCount:f},e.path))]},e.heading)}),(0,I.jsxs)(`div`,{className:`mt-auto pt-4`,style:{borderTop:`1px solid var(--border)`},children:[i&&(0,I.jsxs)(`div`,{className:`px-3 py-1 text-xs mb-2`,"data-testid":`user-email`,style:{color:`var(--text-secondary)`},children:[i.email,(0,I.jsxs)(`span`,{className:`ml-1 opacity-60`,children:[`(`,i.role,`)`]})]}),o&&(0,I.jsxs)(`button`,{onClick:o,"data-testid":`sign-out-button`,className:`flex items-center gap-2 px-3 py-2 rounded text-sm w-full`,style:{color:`var(--text-secondary)`},children:[(0,I.jsx)(pe,{size:16}),`Sign Out`]})]})]});return(0,I.jsxs)(`div`,{className:`flex h-screen min-w-0 overflow-hidden`,...c,children:[(0,I.jsx)(`nav`,{"data-testid":`sidebar-desktop`,className:`hidden md:flex w-56 flex-shrink-0 border-r + flex-col p-4 gap-1`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:b}),v&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{"data-testid":`sidebar-overlay`,className:`md:hidden fixed inset-0 z-40`,style:{background:`rgba(0,0,0,0.5)`},onClick:()=>y(!1)}),(0,I.jsx)(`nav`,{"data-testid":`sidebar-drawer`,className:`md:hidden fixed top-0 left-0 bottom-0 z-50 + w-64 border-r flex flex-col p-4 gap-1 overflow-y-auto`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:b})]}),(0,I.jsxs)(`main`,{className:`flex-1 overflow-auto min-w-0`,children:[(0,I.jsxs)(`header`,{className:`flex items-center justify-between gap-2 + px-3 md:px-4 py-3 md:py-4 border-b`,style:{borderColor:`var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,I.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,"data-testid":`sidebar-open`,onClick:()=>y(!0),className:`md:hidden p-1.5 rounded flex-shrink-0`,style:{color:`var(--text-primary)`,border:`1px solid var(--border)`},children:(0,I.jsx)(me,{size:18})}),(0,I.jsx)(`h1`,{className:`text-base md:text-lg font-semibold truncate`,style:{color:`var(--text-primary)`},children:s||Ke.find(e=>e.path===l)?.label||`pg_sage`})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-1.5 md:gap-3 + flex-wrap justify-end min-w-0`,children:[h&&(0,I.jsx)(Ye,{}),g&&(0,I.jsx)(He,{level:g}),(0,I.jsx)(Be,{}),t&&t.length>1&&(0,I.jsx)(ke,{"data-testid":`database-picker`,databases:t,selected:n,onSelect:r})]})]}),(0,I.jsx)(`div`,{className:`p-3 md:p-6`,children:(0,I.jsx)(Ue.Provider,{value:{refetch:d},children:e})})]})]})}var Ze={critical:{bg:`#4a1414`,text:`#ff8a8a`,label:`Critical`,border:`#7a1f1f`},warning:{bg:`#3b2e11`,text:`#ffd666`,label:`Warning`,border:`#6a4d0c`},info:{bg:`#0f2a4d`,text:`#9dc7ff`,label:`Info`,border:`#1a4a85`}};function Qe({severity:e}){let t=(e||``).toLowerCase(),n=Ze[t]||Ze.info;return(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded text-xs font-medium`,"data-testid":`severity-${t}`,style:{background:n.bg,color:n.text,border:`1px solid ${n.border}`},children:n.label})}function $e({message:e,onRetry:t}){return(0,I.jsxs)(`div`,{className:`flex items-center gap-3 p-4 rounded`,style:{background:`#3b1111`,border:`1px solid var(--red)`},children:[(0,I.jsx)(we,{size:18,style:{color:`var(--red)`}}),(0,I.jsx)(`span`,{className:`flex-1 text-sm`,style:{color:`var(--red)`},children:e}),t&&(0,I.jsx)(`button`,{onClick:t,className:`p-1.5 rounded`,"aria-label":`Retry`,title:`Retry`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(ge,{size:14})})]})}function et(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}function tt(e){if(!e)return null;try{return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return e}}function nt({label:e,client:t}){if(!t?.budget_exhausted)return null;let n=t.token_budget>0?Math.round(t.tokens_used/t.token_budget*100):100,r=tt(t.resets_at);return(0,I.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,I.jsxs)(`span`,{className:`font-medium`,children:[e,`:`]}),(0,I.jsxs)(`span`,{children:[et(t.tokens_used),` / `,et(t.token_budget),` `,`(`,n,`%)`]}),r&&(0,I.jsxs)(`span`,{style:{color:`var(--text-secondary)`},children:[`— resets at `,r]})]})}function rt(){let{data:e,refetch:t}=Ae(`/api/v1/llm/status`,3e4),[n,r]=(0,w.useState)(!1),[i,a]=(0,w.useState)(null),o=(0,w.useCallback)(async()=>{r(!0),a(null);try{let e=await fetch(`/api/v1/llm/budget/reset`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error||`HTTP ${e.status}`)}t()}catch(e){a(e.message)}finally{r(!1)}},[t]);if(!e)return null;let s=e.general?.budget_exhausted===!0,c=e.optimizer?.budget_exhausted===!0;return!s&&!c?null:(0,I.jsxs)(`div`,{"data-testid":`token-budget-banner`,className:`rounded p-4 flex items-start gap-3`,style:{background:`rgba(251, 191, 36, 0.08)`,border:`1px solid rgba(251, 191, 36, 0.3)`},children:[(0,I.jsx)(we,{size:20,className:`flex-shrink-0 mt-0.5`,style:{color:`var(--yellow)`}}),(0,I.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,I.jsx)(`div`,{className:`font-semibold mb-1`,style:{color:`var(--yellow)`},children:`LLM token budget exhausted`}),s&&(0,I.jsx)(nt,{label:`General`,client:e.general}),c&&(0,I.jsx)(nt,{label:`Optimizer`,client:e.optimizer}),i&&(0,I.jsxs)(`div`,{className:`text-xs mt-1`,style:{color:`var(--red)`},children:[`Reset failed: `,i]})]}),(0,I.jsxs)(`button`,{"data-testid":`token-budget-reset`,onClick:o,disabled:n,className:`flex items-center gap-1.5 px-3 py-1.5 rounded text-xs font-medium flex-shrink-0`,style:{background:`var(--bg-card)`,color:`var(--yellow)`,border:`1px solid rgba(251, 191, 36, 0.3)`,opacity:n?.6:1},children:[(0,I.jsx)(_e,{size:14}),n?`Resetting...`:`Reset Budget`]})]})}function it(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t{var{children:n,width:r,height:i,viewBox:a,className:o,style:s,title:c,desc:l}=e,u=gt(e,mt),d=a||{width:r,height:i,x:0,y:0},f=L(`recharts-surface`,o);return w.createElement(`svg`,ht({},ft(u),{className:f,width:r,height:i,style:s,viewBox:`${d.x} ${d.y} ${d.width} ${d.height}`,ref:t}),w.createElement(`title`,null,c),w.createElement(`desc`,null,l),n)}),yt=[`children`,`className`];function bt(){return bt=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:n,className:r}=e,i=xt(e,yt),a=L(`recharts-layer`,r);return w.createElement(`g`,bt({className:a},ft(i),{ref:t}),n)}),wt=(0,w.createContext)(null),Tt=()=>(0,w.useContext)(wt);function Et(e){return function(){return e}}var Dt=Math.cos,Ot=Math.sin,kt=Math.sqrt,At=Math.PI;At/2;var jt=2*At,Mt=Math.PI,Nt=2*Mt,Pt=1e-6,Ft=Nt-Pt;function It(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return It;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tPt)if(!(Math.abs(u*s-c*l)>Pt)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((Mt-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>Pt&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>Pt||Math.abs(this._y1-l)>Pt)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%Nt+Nt),d>Ft?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>Pt&&this._append`A${n},${n},0,${+(d>=Mt)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function zt(){return new Rt}zt.prototype=Rt.prototype;function Bt(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Rt(t)}Array.prototype.slice;function Vt(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Ht(e){this._context=e}Ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ut(e){return new Ht(e)}function Wt(e){return e[0]}function Gt(e){return e[1]}function Kt(e,t){var n=Et(!0),r=null,i=Ut,a=null,o=Bt(s);e=typeof e==`function`?e:e===void 0?Wt:Et(e),t=typeof t==`function`?t:t===void 0?Gt:Et(t);function s(s){var c,l=(s=Vt(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return Kt().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:Et(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:Et(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:Et(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:Et(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:Et(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:Et(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:Et(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var Jt=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function Yt(e){return new Jt(e,!0)}function Xt(e){return new Jt(e,!1)}var Zt={draw(e,t){let n=kt(t/At);e.moveTo(n,0),e.arc(0,0,n,0,jt)}},Qt={draw(e,t){let n=kt(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},$t=kt(1/3),en=$t*2,tn={draw(e,t){let n=kt(t/en),r=n*$t;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},nn={draw(e,t){let n=kt(t),r=-n/2;e.rect(r,r,n,n)}},rn=.8908130915292852,an=Ot(At/10)/Ot(7*At/10),on=Ot(jt/10)*an,sn=-Dt(jt/10)*an,cn={draw(e,t){let n=kt(t*rn),r=on*n,i=sn*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=jt*t/5,o=Dt(a),s=Ot(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},ln=kt(3),un={draw(e,t){let n=-kt(t/(ln*3));e.moveTo(0,n*2),e.lineTo(-ln*n,-n),e.lineTo(ln*n,-n),e.closePath()}},dn=-.5,fn=kt(3)/2,pn=1/kt(12),mn=(pn/2+1)*3,hn={draw(e,t){let n=kt(t/mn),r=n/2,i=n*pn,a=r,o=n*pn+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(dn*r-fn*i,fn*r+dn*i),e.lineTo(dn*a-fn*o,fn*a+dn*o),e.lineTo(dn*s-fn*c,fn*s+dn*c),e.lineTo(dn*r+fn*i,dn*i-fn*r),e.lineTo(dn*a+fn*o,dn*o-fn*a),e.lineTo(dn*s+fn*c,dn*c-fn*s),e.closePath()}};function gn(e,t){let n=null,r=Bt(i);e=typeof e==`function`?e:Et(e||Zt),t=typeof t==`function`?t:Et(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:Et(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:Et(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function _n(){}function vn(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function yn(e){this._context=e}yn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:vn(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:vn(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function bn(e){return new yn(e)}function xn(e){this._context=e}xn.prototype={areaStart:_n,areaEnd:_n,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:vn(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Sn(e){return new xn(e)}function Cn(e){this._context=e}Cn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:vn(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function wn(e){return new Cn(e)}function Tn(e){this._context=e}Tn.prototype={areaStart:_n,areaEnd:_n,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function En(e){return new Tn(e)}function Dn(e){return e<0?-1:1}function On(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(Dn(a)+Dn(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function kn(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function An(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function jn(e){this._context=e}jn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:An(this,this._t0,kn(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,An(this,kn(this,n=On(this,e,t)),n);break;default:An(this,this._t0,n=On(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function Mn(e){this._context=new Nn(e)}(Mn.prototype=Object.create(jn.prototype)).point=function(e,t){jn.prototype.point.call(this,t,e)};function Nn(e){this._context=e}Nn.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function Pn(e){return new jn(e)}function Fn(e){return new Mn(e)}function In(e){this._context=e}In.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=Ln(e),i=Ln(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function Bn(e){return new zn(e,.5)}function Vn(e){return new zn(e,0)}function Hn(e){return new zn(e,1)}function Un(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function Gn(e,t){return e[t]}function Kn(e){let t=[];return t.key=e,t}function qn(){var e=Et([]),t=Wn,n=Un,r=Gn;function i(i){var a=Array.from(e.apply(this,arguments),Kn),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e===`__proto__`}e.isUnsafeProperty=t})),Qn=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e.includes(`.`)||e.includes(`[`)||e.includes(`]`)}}e.isDeepKey=t})),$n=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}e.toKey=t})),er=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(e==null)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(t).join(`,`);let n=String(e);return n===`0`&&Object.is(Number(e),-0)?`-0`:n}e.toString=t})),tr=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=er(),n=$n();function r(e){if(Array.isArray(e))return e.map(n.toKey);if(typeof e==`symbol`)return[e];e=t.toString(e);let r=[],i=e.length;if(i===0)return r;let a=0,o=``,s=``,c=!1;for(e.charCodeAt(0)===46&&(r.push(``),a++);a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Zn(),n=Qn(),r=$n(),i=tr();function a(e,s,c){if(e==null)return c;switch(typeof s){case`string`:{if(t.isUnsafeProperty(s))return c;let r=e[s];return r===void 0?n.isDeepKey(s)?a(e,i.toPath(s),c):c:r}case`number`:case`symbol`:{typeof s==`number`&&(s=r.toKey(s));let t=e[s];return t===void 0?c:t}default:{if(Array.isArray(s))return o(e,s,c);if(s=Object.is(s?.valueOf(),-0)?`-0`:String(s),t.isUnsafeProperty(s))return c;let n=e[s];return n===void 0?c:n}}}function o(e,n,r){if(n.length===0)return r;let i=e;for(let e=0;e{t.exports=nr().get})),ir=4;function ar(e){var t=10**(arguments.length>1&&arguments[1]!==void 0?arguments[1]:ir),n=Math.round(e*t)/t;return Object.is(n,-0)?0:n}function or(e){var t=[...arguments].slice(1);return e.reduce((e,n,r)=>{var i=t[r-1];return typeof i==`string`?e+i+n:i===void 0?e+n:e+ar(i)+n},``)}var sr=l(rr()),cr=e=>e===0?0:e>0?1:-1,lr=e=>typeof e==`number`&&e!=+e,ur=e=>typeof e==`string`&&e.indexOf(`%`)===e.length-1,R=e=>(typeof e==`number`||e instanceof Number)&&!lr(e),dr=e=>R(e)||typeof e==`string`,fr=0,pr=e=>{var t=++fr;return`${e||``}${t}`},mr=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!R(e)&&typeof e!=`string`)return n;var i;if(ur(e)){if(t==null)return n;var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return lr(i)&&(i=n),r&&t!=null&&i>t&&(i=t),i},hr=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;re&&(typeof t==`function`?t(e):(0,sr.default)(e,t))===n)}var vr=e=>e==null,yr=e=>vr(e)?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`;function br(e){return e!=null}function xr(){}var Sr=[`type`,`size`,`sizeType`];function Cr(){return Cr=Object.assign?Object.assign.bind():function(e){for(var t=1;tjr[`symbol${yr(e)}`]||Zt,Pr=(e,t,n)=>{if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*Mr;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},Fr=(e,t)=>{jr[`symbol${yr(e)}`]=t},Ir=e=>{var{type:t=`circle`,size:n=64,sizeType:r=`area`}=e,i=Tr(Tr({},kr(e,Sr)),{},{type:t,size:n,sizeType:r}),a=`circle`;typeof t==`string`&&(a=t);var o=()=>{var e=Nr(a),t=gn().type(e).size(Pr(n,r,a))();if(t!==null)return t},{className:s,cx:c,cy:l}=i,u=ft(i);return R(c)&&R(l)&&R(n)?w.createElement(`path`,Cr({},u,{className:L(`recharts-symbols`,s),transform:`translate(${c}, ${l})`,d:o()})):null};Ir.registerSymbol=Fr;var Lr=e=>`radius`in e&&`startAngle`in e&&`endAngle`in e,Rr=(e,t)=>{if(!e||typeof e==`function`||typeof e==`boolean`)return null;var n=e;if((0,w.isValidElement)(e)&&(n=e.props),typeof n!=`object`&&typeof n!=`function`)return null;var r={};return Object.keys(n).forEach(e=>{ot(e)&&typeof n[e]==`function`&&(r[e]=t||(t=>n[e](n,t)))}),r},zr=(e,t,n)=>r=>(e(t,n,r),null),Br=(e,t,n)=>{if(e===null||typeof e!=`object`&&typeof e!=`function`)return null;var r=null;return Object.keys(e).forEach(i=>{var a=e[i];ot(i)&&typeof a==`function`&&(r||={},r[i]=zr(a,t,n))}),r};function Vr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Hr(e){for(var t=1;t(e[t]===void 0&&r[t]!==void 0&&(e[t]=r[t]),e),n)}function qr(){return qr=Object.assign?Object.assign.bind():function(e){for(var t=1;t180),+(u>0),y.x,y.y,a,a,+(u<0),b.x,b.y)}else v+=or(lm||=dm([`L`,`,`,`Z`]),t,n);return v},gm={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},_m=e=>{var t=Kr(e,gm),{cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:o,forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u,className:d}=t;if(a0&&Math.abs(l-u)<360?hm({cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u}):mm({cx:n,cy:r,innerRadius:i,outerRadius:a,startAngle:l,endAngle:u});return w.createElement(`path`,um({},ft(t),{className:f,d:h}))};function vm(e,t,n){if(e===`horizontal`)return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e===`vertical`)return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(Lr(t)){if(e===`centric`){var{cx:r,cy:i,innerRadius:a,outerRadius:o,angle:s}=t,c=Yp(r,i,a,s),l=Yp(r,i,o,s);return[{x:c.x,y:c.y},{x:l.x,y:l.y}]}return nm(t)}}var ym=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=oa();function n(e){return t.isSymbol(e)?NaN:Number(e)}e.toNumber=n})),bm=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ym();function n(e){return e?(e=t.toNumber(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}e.toFinite=n})),xm=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ua(),n=bm();function r(e,r,i){i&&typeof i!=`number`&&t.isIterateeCall(e,r,i)&&(r=i=void 0),e=n.toFinite(e),r===void 0?(r=e,e=0):r=n.toFinite(r),i=i===void 0?e{t.exports=xm().range})),Cm=e=>e.chartData,wm=V([Cm],e=>{var t=e.chartData==null?0:e.chartData.length-1;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),Tm=(e,t,n,r)=>r?wm(e):Cm(e),Em=V([Tm],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});V([wm],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});var Dm=V([Cm],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});function Om(e){if(Array.isArray(e)&&e.length===2){var[t,n]=e;if(W(t)&&W(n))return!0}return!1}function km(e,t,n){return n?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function Am(e,t){if(t&&typeof e!=`function`&&Array.isArray(e)&&e.length===2){var[n,r]=e,i,a;if(W(n))i=n;else if(typeof n==`function`)return;if(W(r))a=r;else if(typeof r==`function`)return;var o=[i,a];if(Om(o))return o}}function jm(e,t,n){if(!(!n&&t==null)){if(typeof e==`function`&&t!=null)try{var r=e(t,n);if(Om(r))return km(r,t,n)}catch{}if(Array.isArray(e)&&e.length===2){var[i,a]=e,o,s;if(i===`auto`)t!=null&&(o=Math.min(...t));else if(R(i))o=i;else if(typeof i==`function`)try{t!=null&&(o=i(t?.[0]))}catch{}else if(typeof i==`string`&&Nc.test(i)){var c=Nc.exec(i);if(c==null||c[1]==null||t==null)o=void 0;else{var l=+c[1];o=t[0]-l}}else o=t?.[0];if(a===`auto`)t!=null&&(s=Math.max(...t));else if(R(a))s=a;else if(typeof a==`function`)try{t!=null&&(s=a(t?.[1]))}catch{}else if(typeof a==`string`&&Pc.test(a)){var u=Pc.exec(a);if(u==null||u[1]==null||t==null)s=void 0;else{var d=+u[1];s=t[1]+d}}else s=t?.[1];var f=[o,s];if(Om(f))return t==null?f:km(f,t,n)}}}var Z=l(o(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,!l){if(s<0)throw Error(a+`NaN`)}else if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),A(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),A(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,A=r.constructor,j=r.s==i.s?1:-1,M=r.d,N=i.d;if(!r.s)return new A(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=N.length,T=M.length,g=new A(j),_=g.d=[],u=0;N[u]==(M[u]||0);)++u;if(N[u]>(M[u]||0)&&--l,x=o==null?o=A.precision:s?o+(S(r)-S(i))+1:o,x<0)return new A(0);if(x=x/p+2|0,u=0,O==1)for(d=0,N=N[0],x++;(u1&&(N=e(N,d),M=e(M,d),O=N.length,T=M.length),w=O,v=M.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(N,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(N,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function A(e,t){if(e.length>t)return e.length=t,!0}function j(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=j,i.config=i.set=M,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=j(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}))());function Mm(e){return e===0?1:Math.floor(new Z.default(e).abs().log(10).toNumber())+1}function Nm(e,t,n){for(var r=new Z.default(e),i=0,a=[];r.lt(t)&&i<1e5;)a.push(r.toNumber()),r=r.add(n),i++;return a}var Pm=e=>{var[t,n]=e,[r,i]=[t,n];return t>n&&([r,i]=[n,t]),[r,i]},Fm=(e,t,n)=>{if(e.lte(0))return new Z.default(0);var r=Mm(e.toNumber()),i=new Z.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new Z.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?new Z.default(s.toNumber()):new Z.default(Math.ceil(s.toNumber()))},Im=(e,t,n)=>{if(e.lte(0))return new Z.default(0);var r=[1,2,2.5,5],i=e.toNumber(),a=Math.floor(new Z.default(i).abs().log(10).toNumber()),o=new Z.default(10).pow(a),s=e.div(o).toNumber(),c=r.findIndex(e=>e>=s-1e-10);if(c===-1&&(o=o.mul(10),c=0),c+=n,c>=r.length){var l=Math.floor(c/r.length);c%=r.length,o=o.mul(new Z.default(10).pow(l))}var u=new Z.default(r[c]??1).mul(o);return t?u:new Z.default(Math.ceil(u.toNumber()))},Lm=(e,t,n)=>{var r=new Z.default(1),i=new Z.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new Z.default(10).pow(Mm(e)-1),i=new Z.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new Z.default(Math.floor(e)))}else e===0?i=new Z.default(Math.floor((t-1)/2)):n||(i=new Z.default(Math.floor(e)));for(var o=Math.floor((t-1)/2),s=[],c=0;c4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:Fm;if(!Number.isFinite((t-e)/(n-1)))return{step:new Z.default(0),tickMin:new Z.default(0),tickMax:new Z.default(0)};var o=a(new Z.default(t).sub(e).div(n-1),r,i),s;e<=0&&t>=0?s=new Z.default(0):(s=new Z.default(e).add(t).div(2),s=s.sub(new Z.default(s).mod(o)));var c=Math.ceil(s.sub(e).div(o).toNumber()),l=Math.ceil(new Z.default(t).sub(s).div(o).toNumber()),u=c+l+1;return u>n?Rm(e,t,n,r,i+1,a):(u0?l+(n-u):l,c=t>0?c:c+(n-u)),{step:o,tickMin:s.sub(new Z.default(c).mul(o)),tickMax:s.add(new Z.default(l).mul(o))})},zm=function(e){var[t,n]=e,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,o=Math.max(r,2),[s,c]=Pm([t,n]);if(s===-1/0||c===1/0){var l=c===1/0?[s,...Array(r-1).fill(1/0)]:[...Array(r-1).fill(-1/0),c];return t>n?l.reverse():l}if(s===c)return Lm(s,r,i);var{step:u,tickMin:d,tickMax:f}=Rm(s,c,o,i,0,a===`snap125`?Im:Fm),p=Nm(d,f.add(new Z.default(.1).mul(u)),u);return t>n?p.reverse():p},Bm=function(e,t){var[n,r]=e,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,[o,s]=Pm([n,r]);if(o===-1/0||s===1/0)return[n,r];if(o===s)return[o];var c=a===`snap125`?Im:Fm,l=Math.max(t,2),u=c(new Z.default(s).sub(o).div(l-1),i,0),d=[...Nm(new Z.default(o),new Z.default(s),u),s];return i===!1&&(d=d.map(e=>Math.round(e))),n>r?d.reverse():d},Vm=e=>e.rootProps.barCategoryGap,Hm=e=>e.rootProps.stackOffset,Um=e=>e.rootProps.reverseStackOrder,Wm=e=>e.options.chartName,Gm=e=>e.rootProps.syncId,Km=e=>e.rootProps.syncMethod,qm=e=>e.options.eventEmitter,Jm={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},Ym={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:`polygon`,cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:`auto`,orientation:`outer`,reversed:!1,scale:`auto`,tick:!0,tickLine:!0,tickSize:8,type:`auto`,zIndex:Jm.axis},Xm={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:`auto`,label:!1,orientation:`right`,radiusAxisId:0,reversed:!1,scale:`auto`,stroke:`#ccc`,tick:!0,tickCount:5,tickLine:!0,type:`auto`,zIndex:Jm.axis},Zm=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function Qm(e,t,n){if(n!==`auto`)return n;if(e!=null)return wc(e,t)?`category`:`number`}function $m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function eh(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},Ul],(e,t)=>{if(e!=null)return e;var n=Qm(t,`angleAxis`,ih.type)??`category`;return eh(eh({},ih),{},{type:n})}),sh=V([(e,t)=>e.polarAxis.radiusAxis[t],Ul],(e,t)=>{if(e!=null)return e;var n=Qm(t,`radiusAxis`,ah.type)??`category`;return eh(eh({},ah),{},{type:n})}),ch=e=>e.polarOptions,lh=V([Bc,Vc,rl],Xp),uh=V([ch,lh],(e,t)=>{if(e!=null)return mr(e.innerRadius,t,0)}),dh=V([ch,lh],(e,t)=>{if(e!=null)return mr(e.outerRadius,t,t*.8)}),fh=V([ch],e=>{if(e==null)return[0,0];var{startAngle:t,endAngle:n}=e;return[t,n]});V([oh,fh],Zm);var ph=V([lh,uh,dh],(e,t,n)=>{if(!(e==null||t==null||n==null))return[t,n]});V([sh,ph],Zm);var mh=V([J,ch,uh,dh,Bc,Vc],(e,t,n,r,i,a)=>{if(!(e!==`centric`&&e!==`radial`||t==null||n==null||r==null)){var{cx:o,cy:s,startAngle:c,endAngle:l}=t;return{cx:mr(o,i,i/2),cy:mr(s,a,a/2),innerRadius:n,outerRadius:r,startAngle:c,endAngle:l,clockWise:!1}}}),hh=(e,t)=>t,gh=(e,t,n)=>n;function _h(e){return e?.id}function vh(e,t,n){var{chartData:r=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=n,o=new Map;return e.forEach(e=>{var t=e.data??r;if(!(t==null||t.length===0)){var n=_h(e);t.forEach((t,r)=>{var s=a==null||i?r:String(Sc(t,a,null)),c=Sc(t,e.dataKey,0),l=o.has(s)?o.get(s):{};Object.assign(l,{[n]:c}),o.set(s,l)})}}),Array.from(o.values())}function yh(e){return`stackId`in e&&e.stackId!=null&&e.dataKey!=null}var bh=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function xh(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function Sh(e,t){if(e.length===t.length){for(var n=0;n{var t=J(e);return t===`horizontal`?`xAxis`:t===`vertical`?`yAxis`:t===`centric`?`angleAxis`:`radiusAxis`},wh=e=>e.tooltip.settings.axisId;function Th(e){if(e!=null){var t=e.ticks,n=e.bandwidth,r=e.range(),i=[Math.min(...r),Math.max(...r)];return{domain:()=>e.domain(),range:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(()=>i),rangeMin:()=>i[0],rangeMax:()=>i[1],isInRange(e){var t=i[0],n=i[1];return t<=n?e>=t&&e<=n:e>=n&&e<=t},bandwidth:n?()=>n.call(e):void 0,ticks:t?n=>t.call(e,n):void 0,map:(t,n)=>{var r=e(t);if(r!=null){if(e.bandwidth&&n!=null&&n.position){var i=e.bandwidth();switch(n.position){case`middle`:r+=i/2;break;case`end`:r+=i;break;default:break}}return r}}}}}var Eh=(e,t)=>{if(t!=null)switch(e){case`linear`:if(!Om(t)){for(var n,r,i=0;ir)&&(r=a))}return n!==void 0&&r!==void 0?[n,r]:void 0}return t;default:return t}};function Dh(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Oh(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function kh(e){let t,n,r;e.length===2?(t=e===Dh||e===Oh?e:Ah,n=e,r=e):(t=Dh,n=(t,n)=>Dh(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function Ah(){return 0}function jh(e){return e===null?NaN:+e}function*Mh(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var Nh=kh(Dh),Ph=Nh.right;Nh.left,kh(jh).center;var Fh=class extends Map{constructor(e,t=zh){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(Ih(this,e))}has(e){return super.has(Ih(this,e))}set(e,t){return super.set(Lh(this,e),t)}delete(e){return super.delete(Rh(this,e))}};function Ih({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function Lh({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function Rh({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function zh(e){return typeof e==`object`&&e?e.valueOf():e}function Bh(e=Dh){if(e===Dh)return Vh;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Vh(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Hh=Math.sqrt(50),Uh=Math.sqrt(10),Wh=Math.sqrt(2);function Gh(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Hh?10:a>=Uh?5:a>=Wh?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function Xh(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Zh(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Vh:Bh(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Zh(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Qh(e,n,t),i(e[r],a)>0&&Qh(e,n,r);o0;)--s}i(e[n],a)===0?Qh(e,n,s):(++s,Qh(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Qh(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function $h(e,t,n){if(e=Float64Array.from(Mh(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return Xh(e);if(t>=1)return Yh(e);var r,i=(r-1)*t,a=Math.floor(i),o=Yh(Zh(e,a).subarray(0,a+1));return o+(Xh(e.subarray(a+1))-o)*(i-a)}}function eg(e,t,n=jh){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function tg(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?jg(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?jg(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=vg.exec(e))?new Pg(t[1],t[2],t[3],1):(t=yg.exec(e))?new Pg(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=bg.exec(e))?jg(t[1],t[2],t[3],t[4]):(t=xg.exec(e))?jg(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Sg.exec(e))?Vg(t[1],t[2]/100,t[3]/100,1):(t=Cg.exec(e))?Vg(t[1],t[2]/100,t[3]/100,t[4]):wg.hasOwnProperty(e)?Ag(wg[e]):e===`transparent`?new Pg(NaN,NaN,NaN,0):null}function Ag(e){return new Pg(e>>16&255,e>>8&255,e&255,1)}function jg(e,t,n,r){return r<=0&&(e=t=n=NaN),new Pg(e,t,n,r)}function Mg(e){return e instanceof dg||(e=kg(e)),e?(e=e.rgb(),new Pg(e.r,e.g,e.b,e.opacity)):new Pg}function Ng(e,t,n,r){return arguments.length===1?Mg(e):new Pg(e,t,n,r??1)}function Pg(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}lg(Pg,Ng,ug(dg,{brighter(e){return e=e==null?pg:pg**+e,new Pg(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?fg:fg**+e,new Pg(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Pg(zg(this.r),zg(this.g),zg(this.b),Rg(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Fg,formatHex:Fg,formatHex8:Ig,formatRgb:Lg,toString:Lg}));function Fg(){return`#${Bg(this.r)}${Bg(this.g)}${Bg(this.b)}`}function Ig(){return`#${Bg(this.r)}${Bg(this.g)}${Bg(this.b)}${Bg((isNaN(this.opacity)?1:this.opacity)*255)}`}function Lg(){let e=Rg(this.opacity);return`${e===1?`rgb(`:`rgba(`}${zg(this.r)}, ${zg(this.g)}, ${zg(this.b)}${e===1?`)`:`, ${e})`}`}function Rg(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function zg(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Bg(e){return e=zg(e),(e<16?`0`:``)+e.toString(16)}function Vg(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Wg(e,t,n,r)}function Hg(e){if(e instanceof Wg)return new Wg(e.h,e.s,e.l,e.opacity);if(e instanceof dg||(e=kg(e)),!e)return new Wg;if(e instanceof Wg)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new Wg(o,s,c,e.opacity)}function Ug(e,t,n,r){return arguments.length===1?Hg(e):new Wg(e,t,n,r??1)}function Wg(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}lg(Wg,Ug,ug(dg,{brighter(e){return e=e==null?pg:pg**+e,new Wg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fg:fg**+e,new Wg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Pg(qg(e>=240?e-240:e+120,i,r),qg(e,i,r),qg(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Wg(Gg(this.h),Kg(this.s),Kg(this.l),Rg(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Rg(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Gg(this.h)}, ${Kg(this.s)*100}%, ${Kg(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Gg(e){return e=(e||0)%360,e<0?e+360:e}function Kg(e){return Math.max(0,Math.min(1,e||0))}function qg(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Jg=e=>()=>e;function Yg(e,t){return function(n){return e+n*t}}function Xg(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Zg(e){return(e=+e)==1?Qg:function(t,n){return n-t?Xg(t,n,e):Jg(isNaN(t)?n:t)}}function Qg(e,t){var n=t-e;return n?Yg(e,n):Jg(isNaN(e)?t:e)}var $g=(function e(t){var n=Zg(t);function r(e,t){var r=n((e=Ng(e)).r,(t=Ng(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Qg(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function e_(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:i_(r,i)})),n=s_.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function b_(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?x_:b_,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),i_))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,h_),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=f_,u()},d.clamp=function(e){return arguments.length?(o=e?!0:__,u()):o!==__},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function w_(){return C_()(__,__)}function T_(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function E_(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function D_(e){return e=E_(Math.abs(e)),e?e[1]:NaN}function O_(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function k_(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var A_=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function j_(e){if(!(t=A_.exec(e)))throw Error(`invalid format: `+e);var t;return new M_({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}j_.prototype=M_.prototype;function M_(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}M_.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function N_(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var P_;function F_(e,t){var n=E_(e,t);if(!n)return P_=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(P_=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+E_(e,Math.max(0,t+a-1))[0]}function I_(e,t){var n=E_(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var L_={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:T_,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>I_(e*100,t),r:I_,s:F_,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function R_(e){return e}var z_=Array.prototype.map,B_=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function V_(e){var t=e.grouping===void 0||e.thousands===void 0?R_:O_(z_.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?R_:k_(z_.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=j_(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):L_[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=L_[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=N_(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&P_!==void 0?B_[8+P_/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(D_(t)/3)))*3,r=10**-n,i=l((e=j_(e),e.type=`f`,e),{suffix:B_[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var H_,U_,W_;G_({thousands:`,`,grouping:[3],currency:[`$`,``]});function G_(e){return H_=V_(e),U_=H_.format,W_=H_.formatPrefix,H_}function K_(e){return Math.max(0,-D_(Math.abs(e)))}function q_(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(D_(t)/3)))*3-D_(Math.abs(e)))}function J_(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,D_(t)-D_(e))+1}function Y_(e,t,n,r){var i=Jh(e,t,n),a;switch(r=j_(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=q_(i,o))&&(r.precision=a),W_(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=J_(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=K_(i))&&(r.precision=a-(r.type===`%`)*2);break}return U_(r)}function X_(e){var t=e.domain;return e.ticks=function(e){var n=t();return Kh(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return Y_(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=qh(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function Z_(){var e=w_();return e.copy=function(){return S_(e,Z_())},ng.apply(e,arguments),X_(e)}function Q_(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,h_),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return Q_(e).unknown(t)},e=arguments.length?Array.from(e,h_):[0,1],X_(n)}function $_(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function ov(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function sv(e){return(t,n)=>-e(-t,n)}function cv(e){let t=e(ev,tv),n=t.domain,r=10,i,a;function o(){return i=ov(r),a=av(r),n()[0]<0?(i=sv(i),a=sv(a),e(nv,rv)):e(ev,tv),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=j_(n)).precision==null&&(n.trim=!0),n=U_(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn($_(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function lv(){let e=cv(C_()).domain([1,10]);return e.copy=()=>S_(e,lv()).base(e.base()),ng.apply(e,arguments),e}function uv(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function dv(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function fv(e){var t=1,n=e(uv(t),dv(t));return n.constant=function(n){return arguments.length?e(uv(t=+n),dv(t)):t},X_(n)}function pv(){var e=fv(C_());return e.copy=function(){return S_(e,pv()).constant(e.constant())},ng.apply(e,arguments)}function mv(e){return function(t){return t<0?-((-t)**+e):t**+e}}function hv(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function gv(e){return e<0?-e*e:e*e}function _v(e){var t=e(__,__),n=1;function r(){return n===1?e(__,__):n===.5?e(hv,gv):e(mv(n),mv(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},X_(t)}function vv(){var e=_v(C_());return e.copy=function(){return S_(e,vv()).exponent(e.exponent())},ng.apply(e,arguments),e}function yv(){return vv.apply(null,arguments).exponent(.5)}function bv(e){return Math.sign(e)*e*e}function xv(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function Sv(){var e=w_(),t=[0,1],n=!1,r;function i(t){var i=xv(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(bv(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,h_)).map(bv)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return Sv(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},ng.apply(i,arguments),X_(i)}function Cv(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return wv().domain([e,t]).range(i).unknown(a)},ng.apply(X_(o),arguments)}function Tv(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[Ph(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return Tv().domain(e).range(t).unknown(n)},ng.apply(i,arguments)}var Ev=new Date,Dv=new Date;function Ov(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sOv(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(Ev.setTime(+t),Dv.setTime(+r),e(Ev),e(Dv),Math.floor(n(Ev,Dv))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var kv=Ov(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);kv.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Ov(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):kv),kv.range;var Av=1e3,jv=Av*60,Mv=jv*60,Nv=Mv*24,Pv=Nv*7,Fv=Nv*30,Iv=Nv*365,Lv=Ov(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*Av)},(e,t)=>(t-e)/Av,e=>e.getUTCSeconds());Lv.range;var Rv=Ov(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Av)},(e,t)=>{e.setTime(+e+t*jv)},(e,t)=>(t-e)/jv,e=>e.getMinutes());Rv.range;var zv=Ov(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*jv)},(e,t)=>(t-e)/jv,e=>e.getUTCMinutes());zv.range;var Bv=Ov(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*Av-e.getMinutes()*jv)},(e,t)=>{e.setTime(+e+t*Mv)},(e,t)=>(t-e)/Mv,e=>e.getHours());Bv.range;var Vv=Ov(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Mv)},(e,t)=>(t-e)/Mv,e=>e.getUTCHours());Vv.range;var Hv=Ov(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*jv)/Nv,e=>e.getDate()-1);Hv.range;var Uv=Ov(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Nv,e=>e.getUTCDate()-1);Uv.range;var Wv=Ov(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/Nv,e=>Math.floor(e/Nv));Wv.range;function Gv(e){return Ov(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*jv)/Pv)}var Kv=Gv(0),qv=Gv(1),Jv=Gv(2),Yv=Gv(3),Xv=Gv(4),Zv=Gv(5),Qv=Gv(6);Kv.range,qv.range,Jv.range,Yv.range,Xv.range,Zv.range,Qv.range;function $v(e){return Ov(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/Pv)}var ey=$v(0),ty=$v(1),ny=$v(2),ry=$v(3),iy=$v(4),ay=$v(5),oy=$v(6);ey.range,ty.range,ny.range,ry.range,iy.range,ay.range,oy.range;var sy=Ov(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());sy.range;var cy=Ov(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());cy.range;var ly=Ov(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());ly.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Ov(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),ly.range;var uy=Ov(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());uy.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Ov(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),uy.range;function dy(e,t,n,r,i,a){let o=[[Lv,1,Av],[Lv,5,5*Av],[Lv,15,15*Av],[Lv,30,30*Av],[a,1,jv],[a,5,5*jv],[a,15,15*jv],[a,30,30*jv],[i,1,Mv],[i,3,3*Mv],[i,6,6*Mv],[i,12,12*Mv],[r,1,Nv],[r,2,2*Nv],[n,1,Pv],[t,1,Fv],[t,3,3*Fv],[e,1,Iv]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(Jh(t/Iv,n/Iv,r));if(a===0)return kv.every(Math.max(Jh(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=_y(vy(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?ty.ceil(a):ty(a),a=Uv.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=gy(vy(r.y,0,1)),o=a.getDay(),a=o>4||o===0?qv.ceil(a):qv(a),a=Hv.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?_y(vy(r.y,0,1)).getUTCDay():gy(vy(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,_y(r)):gy(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in by?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function A(e,n,r){return w(e,t,n,r)}function j(e,t,r){return w(e,n,t,r)}function M(e,t,n){return w(e,r,t,n)}function N(e){return o[e.getDay()]}function ee(e){return a[e.getDay()]}function te(e){return c[e.getMonth()]}function P(e){return s[e.getMonth()]}function F(e){return i[+(e.getHours()>=12)]}function ne(e){return 1+~~(e.getMonth()/3)}function re(e){return o[e.getUTCDay()]}function ie(e){return a[e.getUTCDay()]}function ae(e){return c[e.getUTCMonth()]}function oe(e){return s[e.getUTCMonth()]}function se(e){return i[+(e.getUTCHours()>=12)]}function ce(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var by={"-":``,_:` `,0:`0`},xy=/^\s*\d+/,Sy=/^%/,Cy=/[\\^$*+?|[\]().{}]/g;function Q(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function Dy(e,t,n){var r=xy.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Oy(e,t,n){var r=xy.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function ky(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ay(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function jy(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function My(e,t,n){var r=xy.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Ny(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Py(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Fy(e,t,n){var r=xy.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Iy(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Ly(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Ry(e,t,n){var r=xy.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function zy(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function By(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Vy(e,t,n){var r=xy.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Hy(e,t,n){var r=xy.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Uy(e,t,n){var r=xy.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Wy(e,t,n){var r=Sy.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Gy(e,t,n){var r=xy.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Ky(e,t,n){var r=xy.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function qy(e,t){return Q(e.getDate(),t,2)}function Jy(e,t){return Q(e.getHours(),t,2)}function Yy(e,t){return Q(e.getHours()%12||12,t,2)}function Xy(e,t){return Q(1+Hv.count(ly(e),e),t,3)}function Zy(e,t){return Q(e.getMilliseconds(),t,3)}function Qy(e,t){return Zy(e,t)+`000`}function $y(e,t){return Q(e.getMonth()+1,t,2)}function eb(e,t){return Q(e.getMinutes(),t,2)}function tb(e,t){return Q(e.getSeconds(),t,2)}function nb(e){var t=e.getDay();return t===0?7:t}function rb(e,t){return Q(Kv.count(ly(e)-1,e),t,2)}function ib(e){var t=e.getDay();return t>=4||t===0?Xv(e):Xv.ceil(e)}function ab(e,t){return e=ib(e),Q(Xv.count(ly(e),e)+(ly(e).getDay()===4),t,2)}function ob(e){return e.getDay()}function sb(e,t){return Q(qv.count(ly(e)-1,e),t,2)}function cb(e,t){return Q(e.getFullYear()%100,t,2)}function lb(e,t){return e=ib(e),Q(e.getFullYear()%100,t,2)}function ub(e,t){return Q(e.getFullYear()%1e4,t,4)}function db(e,t){var n=e.getDay();return e=n>=4||n===0?Xv(e):Xv.ceil(e),Q(e.getFullYear()%1e4,t,4)}function fb(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+Q(t/60|0,`0`,2)+Q(t%60,`0`,2)}function pb(e,t){return Q(e.getUTCDate(),t,2)}function mb(e,t){return Q(e.getUTCHours(),t,2)}function hb(e,t){return Q(e.getUTCHours()%12||12,t,2)}function gb(e,t){return Q(1+Uv.count(uy(e),e),t,3)}function _b(e,t){return Q(e.getUTCMilliseconds(),t,3)}function vb(e,t){return _b(e,t)+`000`}function yb(e,t){return Q(e.getUTCMonth()+1,t,2)}function bb(e,t){return Q(e.getUTCMinutes(),t,2)}function xb(e,t){return Q(e.getUTCSeconds(),t,2)}function Sb(e){var t=e.getUTCDay();return t===0?7:t}function Cb(e,t){return Q(ey.count(uy(e)-1,e),t,2)}function wb(e){var t=e.getUTCDay();return t>=4||t===0?iy(e):iy.ceil(e)}function Tb(e,t){return e=wb(e),Q(iy.count(uy(e),e)+(uy(e).getUTCDay()===4),t,2)}function Eb(e){return e.getUTCDay()}function Db(e,t){return Q(ty.count(uy(e)-1,e),t,2)}function Ob(e,t){return Q(e.getUTCFullYear()%100,t,2)}function kb(e,t){return e=wb(e),Q(e.getUTCFullYear()%100,t,2)}function Ab(e,t){return Q(e.getUTCFullYear()%1e4,t,4)}function jb(e,t){var n=e.getUTCDay();return e=n>=4||n===0?iy(e):iy.ceil(e),Q(e.getUTCFullYear()%1e4,t,4)}function Mb(){return`+0000`}function Nb(){return`%`}function Pb(e){return+e}function Fb(e){return Math.floor(e/1e3)}var Ib,Lb,Rb;zb({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function zb(e){return Ib=yy(e),Lb=Ib.format,Ib.parse,Rb=Ib.utcFormat,Ib.utcParse,Ib}function Bb(e){return new Date(e)}function Vb(e){return e instanceof Date?+e:+new Date(+e)}function Hb(e,t,n,r,i,a,o,s,c,l){var u=w_(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>$h(e,r/t))},n.copy=function(){return Qb(t).domain(e)},rg.apply(n,arguments)}function $b(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=__,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*eog,scaleDiverging:()=>ex,scaleDivergingLog:()=>tx,scaleDivergingPow:()=>rx,scaleDivergingSqrt:()=>ix,scaleDivergingSymlog:()=>nx,scaleIdentity:()=>Q_,scaleImplicit:()=>ig,scaleLinear:()=>Z_,scaleLog:()=>lv,scaleOrdinal:()=>ag,scalePoint:()=>cg,scalePow:()=>vv,scaleQuantile:()=>Cv,scaleQuantize:()=>wv,scaleRadial:()=>Sv,scaleSequential:()=>qb,scaleSequentialLog:()=>Jb,scaleSequentialPow:()=>Xb,scaleSequentialQuantile:()=>Qb,scaleSequentialSqrt:()=>Zb,scaleSequentialSymlog:()=>Yb,scaleSqrt:()=>yv,scaleSymlog:()=>pv,scaleThreshold:()=>Tv,scaleTime:()=>Ub,scaleUtc:()=>Wb,tickFormat:()=>Y_});function ox(e){var t=ax;if(e in t&&typeof t[e]==`function`)return t[e]();var n=`scale${yr(e)}`;if(n in t&&typeof t[n]==`function`)return t[n]()}function sx(e,t,n){if(typeof e==`function`)return e.copy().domain(t).range(n);if(e!=null){var r=ox(e);if(r!=null)return r.domain(t).range(n),r}}function cx(e,t,n,r){if(!(n==null||r==null))return typeof e.scale==`function`?sx(e.scale,n,r):sx(t,n,r)}function lx(e){return`scale${yr(e)}`}function ux(e){return lx(e)in ax}var dx=(e,t,n)=>{if(e!=null){var{scale:r,type:i}=e;if(r===`auto`)return i===`category`&&n&&(n.indexOf(`LineChart`)>=0||n.indexOf(`AreaChart`)>=0||n.indexOf(`ComposedChart`)>=0&&!t)?`point`:i===`category`?`band`:`linear`;if(typeof r==`string`)return ux(r)?r:`point`}};function fx(e,t){for(var n=0,r=e.length,i=e[0]t)?n=a+1:r=a}return n}function px(e,t){if(e){var n=t??e.domain(),r=n.map(t=>e(t)??0),i=e.range();if(!(n.length===0||i.length<2))return e=>{var t=fx(r,e);if(t<=0)return n[0];if(t>=n.length)return n[n.length-1];var i=r[t-1]??0,a=r[t]??0;return Math.abs(e-i)<=Math.abs(e-a)?n[t-1]:n[t]}}}function mx(e){if(e!=null)return`invert`in e&&typeof e.invert==`function`?e.invert.bind(e):px(e,void 0)}var hx=l(Sm());function gx(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _x(e){for(var t=1;te.cartesianAxis.xAxis[t],wx=(e,t)=>Cx(e,t)??Sx,Tx={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:xx,hide:!0,id:0,includeHidden:!1,interval:`preserveEnd`,minTickGap:5,mirror:!1,name:void 0,orientation:`left`,padding:{top:0,bottom:0},reversed:!1,scale:`auto`,tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:`number`,unit:void 0,niceTicks:`auto`,width:60},Ex=(e,t)=>e.cartesianAxis.yAxis[t],Dx=(e,t)=>Ex(e,t)??Tx,Ox={domain:[0,`auto`],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:``,range:[64,64],scale:`auto`,type:`number`,unit:``},kx=(e,t)=>e.cartesianAxis.zAxis[t]??Ox,Ax=(e,t,n)=>{switch(t){case`xAxis`:return wx(e,n);case`yAxis`:return Dx(e,n);case`zAxis`:return kx(e,n);case`angleAxis`:return oh(e,n);case`radiusAxis`:return sh(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},jx=(e,t,n)=>{switch(t){case`xAxis`:return wx(e,n);case`yAxis`:return Dx(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},Mx=(e,t,n)=>{switch(t){case`xAxis`:return wx(e,n);case`yAxis`:return Dx(e,n);case`angleAxis`:return oh(e,n);case`radiusAxis`:return sh(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},Nx=e=>e.graphicalItems.cartesianItems.some(e=>e.type===`bar`)||e.graphicalItems.polarItems.some(e=>e.type===`radialBar`);function Px(e,t){return n=>{switch(e){case`xAxis`:return`xAxisId`in n&&n.xAxisId===t;case`yAxis`:return`yAxisId`in n&&n.yAxisId===t;case`zAxis`:return`zAxisId`in n&&n.zAxisId===t;case`angleAxis`:return`angleAxisId`in n&&n.angleAxisId===t;case`radiusAxis`:return`radiusAxisId`in n&&n.radiusAxisId===t;default:return!1}}}var Fx=e=>e.graphicalItems.cartesianItems,Ix=V([hh,gh],Px),Lx=(e,t,n)=>e.filter(n).filter(e=>t?.includeHidden===!0?!0:!e.hide),Rx=V([Fx,Ax,Ix],Lx,{memoizeOptions:{resultEqualityCheck:xh}}),zx=V([Rx],e=>e.filter(e=>e.type===`area`||e.type===`bar`).filter(yh)),Bx=e=>e.filter(e=>!(`stackId`in e)||e.stackId===void 0),Vx=V([Rx],Bx),Hx=e=>e.map(e=>e.data).filter(Boolean).flat(1),Ux=V([Rx],e=>e.some(e=>!e.data)),Wx=V([Rx],Hx,{memoizeOptions:{resultEqualityCheck:xh}}),Gx=(e,t)=>{var{chartData:n=[],dataStartIndex:r,dataEndIndex:i}=t;return e.length>0?e:n.slice(r,i+1)},Kx=V([Wx,Tm],Gx),qx=(e,t,n)=>t?.dataKey==null?n.length>0?n.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:Sc(e,t)}))):e.map(e=>({value:e})):e.map(e=>({value:Sc(e,t.dataKey)})),Jx=(e,t,n,r,i,a)=>{var{chartData:o=[],dataStartIndex:s,dataEndIndex:c}=r,l=qx(e,t,n);return i&&t?.dataKey!=null&&a.length>0?[...o.slice(s,c+1).map(e=>({value:Sc(e,t.dataKey)})).filter(e=>e.value!=null),...l]:l},Yx=V([Kx,Ax,Rx,Tm,Ux,Wx],Jx);function Xx(e){if(dr(e)||e instanceof Date){var t=Number(e);if(W(t))return t}}function Zx(e){if(Array.isArray(e)){var t=[Xx(e[0]),Xx(e[1])];return Om(t)?t:void 0}var n=Xx(e);if(n!=null)return[n,n]}function Qx(e){return e.map(Xx).filter(br)}function $x(e,t){var n=Xx(e),r=Xx(t);return n==null&&r==null?0:n==null?-1:r==null?1:n-r}var eS=V([Yx],e=>e?.map(e=>e.value).sort($x));function tS(e,t){switch(e){case`xAxis`:return t.direction===`x`;case`yAxis`:return t.direction===`y`;default:return!1}}function nS(e,t,n){if(!n||!n.length)return[];var r;if(typeof t==`number`&&!lr(t))r=t;else if(Array.isArray(t)){var i=Qx(t);i.length>0&&(r=Math.max(...i))}return r==null?[]:Qx(n.flatMap(t=>{var n=Sc(e,t.dataKey),i,a;if(Array.isArray(n)?[i,a]=n:i=a=n,!(!W(i)||!W(a)))return[r-i,r+a]}))}var rS=e=>Mx(e,Ch(e),wh(e)),iS=V([rS],e=>e?.dataKey),aS=V([zx,Tm,rS],vh),oS=(e,t,n,r)=>{var i=t.reduce((e,t)=>{if(t.stackId==null)return e;var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=r?[...a].reverse():a;return[i,{stackedData:Oc(e,o.map(_h),n),graphicalItems:o}]}))},sS=V([aS,zx,Hm,Um],oS),cS=(e,t,n,r)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(r==null&&n!==`zAxis`){var o=Mc(e,i,a);if(!(o!=null&&o[0]===0&&o[1]===0))return o}},lS=V([Ax],e=>e.allowDataOverflow),uS=e=>{if(e==null||!(`domain`in e))return xx;if(e.domain!=null)return e.domain;if(`ticks`in e&&e.ticks!=null){if(e.type===`number`){var t=Qx(e.ticks);return[Math.min(...t),Math.max(...t)]}if(e.type===`category`)return e.ticks.map(String)}return e?.domain??xx},dS=V([Ax],uS),fS=V([dS,lS],Am),pS=V([sS,Cm,hh,fS],cS,{memoizeOptions:{resultEqualityCheck:bh}}),mS=e=>e.errorBars,hS=(e,t,n)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>tS(n,e)),gS=function(){var e=[...arguments].filter(Boolean);if(e.length!==0){var t=e.flat();return[Math.min(...t),Math.max(...t)]}},_S=function(e,t,n,r,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[],o,s;if(n.length>0&&n.forEach(e=>{var n=e.data==null?a:[...e.data],c=r[e.id]?.filter(e=>tS(i,e));n.forEach(n=>{var r=Sc(n,t.dataKey??e.dataKey),i=nS(n,r,c);if(i.length>=2){var a=Math.min(...i),l=Math.max(...i);(o==null||as)&&(s=l)}var u=Zx(r);u!=null&&(o=o==null?u[0]:Math.min(o,u[0]),s=s==null?u[1]:Math.max(s,u[1]))})}),t?.dataKey!=null&&n.length===0&&e.forEach(e=>{var n=Zx(Sc(e,t.dataKey));n!=null&&(o=o==null?n[0]:Math.min(o,n[0]),s=s==null?n[1]:Math.max(s,n[1]))}),W(o)&&W(s))return[o,s]},vS=V([Kx,Ax,Vx,mS,hh,Em],_S,{memoizeOptions:{resultEqualityCheck:bh}});function yS(e){var{value:t}=e;if(dr(t)||t instanceof Date)return t}var bS=(e,t,n)=>{var r=e.map(yS).filter(e=>e!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&hr(r))?(0,hx.default)(0,e.length):t.allowDuplicatedCategory?r:Array.from(new Set(r))},xS=e=>e.referenceElements.dots,SS=(e,t,n)=>e.filter(e=>e.ifOverflow===`extendDomain`).filter(e=>t===`xAxis`?e.xAxisId===n:e.yAxisId===n),CS=V([xS,hh,gh],SS),wS=e=>e.referenceElements.areas,TS=V([wS,hh,gh],SS),ES=e=>e.referenceElements.lines,DS=V([ES,hh,gh],SS),OS=(e,t)=>{if(e!=null){var n=Qx(e.map(e=>t===`xAxis`?e.x:e.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},kS=V(CS,hh,OS),AS=(e,t)=>{if(e!=null){var n=Qx(e.flatMap(e=>[t===`xAxis`?e.x1:e.y1,t===`xAxis`?e.x2:e.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},jS=V([TS,hh],AS);function MS(e){if(e.x!=null)return Qx([e.x]);var t=e.segment?.map(e=>e.x);return t==null||t.length===0?[]:Qx(t)}function NS(e){if(e.y!=null)return Qx([e.y]);var t=e.segment?.map(e=>e.y);return t==null||t.length===0?[]:Qx(t)}var PS=(e,t)=>{if(e!=null){var n=e.flatMap(e=>t===`xAxis`?MS(e):NS(e));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},FS=V(kS,V([DS,hh],PS),jS,(e,t,n)=>gS(e,n,t)),IS=(e,t,n,r,i,a,o,s)=>n??jm(t,o===`vertical`&&s===`xAxis`||o===`horizontal`&&s===`yAxis`?gS(r,a,i):gS(a,i),e.allowDataOverflow),LS=V([Ax,dS,fS,pS,vS,FS,J,hh],IS,{memoizeOptions:{resultEqualityCheck:bh}}),RS=[0,1],zS=(e,t,n,r,i,a,o)=>{if(!((e==null||n==null||n.length===0)&&o===void 0)){var{dataKey:s,type:c}=e,l=wc(t,a);return l&&s==null?(0,hx.default)(0,n?.length??0):c===`category`?bS(r,e,l):i===`expand`&&!l?RS:o}},BS=V([Ax,J,Kx,Yx,Hm,hh,LS],zS),VS=V([Ax,Nx,Wm],dx),HS=(e,t,n)=>{var{niceTicks:r}=t;if(r!==`none`){var i=uS(t),a=Array.isArray(i)&&(i[0]===`auto`||i[1]===`auto`);if((r===`snap125`||r===`adaptive`)&&t!=null&&t.tickCount&&Om(e)){if(a)return zm(e,t.tickCount,t.allowDecimals,r);if(t.type===`number`)return Bm(e,t.tickCount,t.allowDecimals,r)}if(r===`auto`&&n===`linear`&&t!=null&&t.tickCount){if(a&&Om(e))return zm(e,t.tickCount,t.allowDecimals,`adaptive`);if(t.type===`number`&&Om(e))return Bm(e,t.tickCount,t.allowDecimals,`adaptive`)}}},US=V([BS,Mx,VS],HS),WS=(e,t,n,r)=>{if(r!==`angleAxis`&&e?.type===`number`&&Om(t)&&Array.isArray(n)&&n.length>0){var i=t[0],a=n[0]??0,o=t[1],s=n[n.length-1]??0;return[Math.min(i,a),Math.max(o,s)]}return t},GS=V([Ax,BS,US,hh],WS),KS=V(V(Yx,Ax,(e,t)=>{if(!(!t||t.type!==`number`)){var n=1/0,r=Array.from(Qx(e.map(e=>e.value))).sort((e,t)=>e-t),i=r[0],a=r[r.length-1];if(i==null||a==null)return 1/0;var o=a-i;if(o===0)return 1/0;for(var s=0;si,(e,t,n,r,i)=>{if(!W(e))return 0;var a=t===`vertical`?r.height:r.width;if(i===`gap`)return e*a/2;if(i===`no-gap`){var o=mr(n,e*a),s=e*a/2;return s-o-(s-o)/a*o}return 0}),qS=(e,t,n)=>{var r=wx(e,t);return r==null||typeof r.padding!=`string`?0:KS(e,`xAxis`,t,n,r.padding)},JS=(e,t,n)=>{var r=Dx(e,t);return r==null||typeof r.padding!=`string`?0:KS(e,`yAxis`,t,n,r.padding)},YS=V(wx,qS,(e,t)=>{if(e==null)return{left:0,right:0};var{padding:n}=e;return typeof n==`string`?{left:t,right:t}:{left:(n.left??0)+t,right:(n.right??0)+t}}),XS=V(Dx,JS,(e,t)=>{if(e==null)return{top:0,bottom:0};var{padding:n}=e;return typeof n==`string`?{top:t,bottom:t}:{top:(n.top??0)+t,bottom:(n.bottom??0)+t}}),ZS=V([rl,YS,ll,cl,(e,t,n)=>n],(e,t,n,r,i)=>{var{padding:a}=r;return i?[a.left,n.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),QS=V([rl,J,XS,ll,cl,(e,t,n)=>n],(e,t,n,r,i,a)=>{var{padding:o}=i;return a?[r.height-o.bottom,o.top]:t===`horizontal`?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),$S=(e,t,n,r)=>{switch(t){case`xAxis`:return ZS(e,n,r);case`yAxis`:return QS(e,n,r);case`zAxis`:return kx(e,n)?.range;case`angleAxis`:return fh(e);case`radiusAxis`:return ph(e,n);default:return}},eC=V([Ax,$S],Zm),tC=V([Ax,VS,V([VS,GS],Eh),eC],cx),nC=(e,t,n,r)=>{if(!(n==null||n.dataKey==null)){var{type:i,scale:a}=n;if(wc(e,r)&&(i===`number`||a!==`auto`))return t.map(e=>e.value)}},rC=V([J,Yx,Mx,hh],nC),iC=V([tC],Th);V([tC],mx),V([tC,eS],px),V([Rx,mS,hh],hS);function aC(e,t){return e.idt.id?1:0}var oC=(e,t)=>t,sC=(e,t,n)=>n,cC=V(Wc,oC,sC,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(aC)),lC=V(Gc,oC,sC,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(aC)),uC=(e,t)=>({width:e.width,height:t.height}),dC=(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height}),fC=V(rl,wx,uC),pC=(e,t,n)=>{switch(t){case`top`:return e.top;case`bottom`:return n-e.bottom;default:return 0}},mC=(e,t,n)=>{switch(t){case`left`:return e.left;case`right`:return n-e.right;default:return 0}},hC=V(Vc,rl,cC,oC,sC,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=uC(t,n);o??=pC(t,r,e);var c=r===`top`&&!i||r===`bottom`&&i;a[n.id]=o-Number(c)*s.height,o+=(c?-1:1)*s.height}),a}),gC=V(Bc,rl,lC,oC,sC,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=dC(t,n);o??=mC(t,r,e);var c=r===`left`&&!i||r===`right`&&i;a[n.id]=o-Number(c)*s.width,o+=(c?-1:1)*s.width}),a}),_C=V([rl,wx,(e,t)=>{var n=wx(e,t);if(n!=null)return hC(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:e.left,y:0}:{x:e.left,y:i}}}),vC=V([rl,Dx,(e,t)=>{var n=Dx(e,t);if(n!=null)return gC(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:0,y:e.top}:{x:i,y:e.top}}}),yC=V(rl,Dx,(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height})),bC=(e,t,n,r)=>{if(n!=null){var{allowDuplicatedCategory:i,type:a,dataKey:o}=n,s=wc(e,r),c=t.map(e=>e.value),l=c.filter(e=>e!=null);if(o&&s&&a===`category`&&i&&hr(l))return c}},xC=V([J,Yx,Ax,hh],bC),SC=V([J,jx,VS,iC,xC,rC,$S,US,hh],(e,t,n,r,i,a,o,s,c)=>{if(t!=null){var l=wc(e,c);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:c,categoricalDomain:a,duplicateDomain:i,isCategorical:l,niceTicks:s,range:o,realScaleType:n,scale:r}}}),CC=V([J,Mx,VS,iC,US,$S,xC,rC,hh],(e,t,n,r,i,a,o,s,c)=>{if(!(t==null||r==null)){var l=wc(e,c),{type:u,ticks:d,tickCount:f}=t,p=n===`scaleBand`&&typeof r.bandwidth==`function`?r.bandwidth()/2:2,m=u===`category`&&r.bandwidth?r.bandwidth()/p:0;m=c===`angleAxis`&&a!=null&&a.length>=2?cr(a[0]-a[1])*2*m:m;var h=d||i;return h?h.map((e,t)=>{var n=o?o.indexOf(e):e,i=r.map(n);return W(i)?{index:t,coordinate:i+m,value:e,offset:m}:null}).filter(br):l&&s?s.map((e,t)=>{var n=r.map(e);return W(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(br):r.ticks?r.ticks(f).map((e,t)=>{var n=r.map(e);return W(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(br):r.domain().map((e,t)=>{var n=r.map(e);return W(n)?{coordinate:n+m,value:o?o[e]:e,index:t,offset:m}:null}).filter(br)}}),wC=V([J,Mx,iC,$S,xC,rC,hh],(e,t,n,r,i,a,o)=>{if(!(t==null||n==null||r==null||r[0]===r[1])){var s=wc(e,o),{tickCount:c}=t,l=0;return l=o===`angleAxis`&&r?.length>=2?cr(r[0]-r[1])*2*l:l,s&&a?a.map((e,t)=>{var r=n.map(e);return W(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(br):n.ticks?n.ticks(c).map((e,t)=>{var r=n.map(e);return W(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(br):n.domain().map((e,t)=>{var r=n.map(e);return W(r)?{coordinate:r+l,value:i?i[e]:e,index:t,offset:l}:null}).filter(br)}}),TC=V(Ax,iC,(e,t)=>{if(!(e==null||t==null))return _x(_x({},e),{},{scale:t})});V((e,t,n)=>kx(e,n),V([V([Ax,VS,BS,eC],cx)],Th),(e,t)=>{if(!(e==null||t==null))return _x(_x({},e),{},{scale:t})});var EC=V([J,Wc,Gc],(e,t,n)=>{switch(e){case`horizontal`:return t.some(e=>e.reversed)?`right-to-left`:`left-to-right`;case`vertical`:return n.some(e=>e.reversed)?`bottom-to-top`:`top-to-bottom`;case`centric`:case`radial`:return`left-to-right`;default:return}});V([(e,t,n)=>e.renderedTicks[t]?.[n]],e=>{if(!(!e||e.length===0))return t=>{var n=1/0,r=e[0];for(var i of e){var a=Math.abs(i.coordinate-t);ae.options.defaultTooltipEventType,OC=e=>e.options.validateTooltipEventTypes;function kC(e,t,n){if(e==null)return t;var r=e?`axis`:`item`;return n==null?t:n.includes(r)?r:t}function AC(e,t){return kC(t,DC(e),OC(e))}function jC(e){return B(t=>AC(t,e))}var MC=(e,t)=>{var n,r=Number(t);if(!(lr(r)||t==null))return r>=0?e==null||(n=e[r])==null?void 0:n.value:void 0},NC=e=>e.tooltip.settings,PC={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},FC=xs({name:`tooltip`,initialState:{itemInteraction:{click:PC,hover:PC},axisInteraction:{click:PC,hover:PC},keyboardInteraction:PC,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:`hover`,axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Y(t.payload))},prepare:ss()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:n,next:r}=t.payload,i=qo(e).tooltipItemPayloads.indexOf(Y(n));i>-1&&(e.tooltipItemPayloads[i]=Y(r))},prepare:ss()},removeTooltipEntrySettings:{reducer(e,t){var n=qo(e).tooltipItemPayloads.indexOf(Y(t.payload));n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:ss()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),{addTooltipEntrySettings:IC,replaceTooltipEntrySettings:LC,removeTooltipEntrySettings:RC,setTooltipSettingsState:zC,setActiveMouseOverItemIndex:BC,mouseLeaveItem:VC,mouseLeaveChart:HC,setActiveClickItemIndex:UC,setMouseOverAxisIndex:WC,setMouseClickAxisIndex:GC,setSyncInteraction:KC,setKeyboardInteraction:qC}=FC.actions,JC=FC.reducer;function YC(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function XC(e){for(var t=1;t{if(t==null)return PC;var i=ew(e,t,n);if(i==null)return PC;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(tw(i)){if(a)return XC(XC({},i),{},{active:!0})}else if(r!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:r,graphicalItemId:void 0};return XC(XC({},PC),{},{coordinate:i.coordinate})};function rw(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function iw(e,t){var n=rw(e),r=t[0],i=t[1];return n===void 0?!1:n>=Math.min(r,i)&&n<=Math.max(r,i)}function aw(e,t,n){if(n==null||t==null)return!0;var r=Sc(e,t);return r==null||!Om(n)?!0:iw(r,n)}var ow=(e,t,n,r)=>{var i=e?.index;if(i==null)return null;var a=Number(i);if(!W(a))return i;var o=0,s=1/0;t.length>0&&(s=t.length-1);var c=Math.max(o,Math.min(a,s)),l=t[c];return l==null||aw(l,n,r)?String(c):null},sw=(e,t,n,r,i,a,o)=>{if(a!=null){var s=o[0]?.getPosition(a);if(s!=null)return s;var c=i?.[Number(a)];if(c)switch(n){case`horizontal`:return{x:c.coordinate,y:(r.top+t)/2};default:return{x:(r.left+e)/2,y:c.coordinate}}}},cw=(e,t,n,r)=>{if(t===`axis`)return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var i=n===`hover`?e.itemInteraction.hover.graphicalItemId:e.itemInteraction.click.graphicalItemId;if(e.syncInteraction.active&&i==null)return e.tooltipItemPayloads;if(i==null&&(r!=null||e.keyboardInteraction.active)){var a=e.tooltipItemPayloads[0];return a==null?[]:[a]}return e.tooltipItemPayloads.filter(e=>e.settings?.graphicalItemId===i)},lw=e=>e.options.tooltipPayloadSearcher,uw=e=>e.tooltip;function dw(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function fw(e){for(var t=1;te(t)}function yw(e){if(typeof e==`string`)return e}function bw(e){if(!(typeof e!=`object`||!e))return{name:`name`in e?gw(e.name):void 0,unit:`unit`in e?_w(e.unit):void 0,dataKey:`dataKey`in e?vw(e.dataKey):void 0,payload:`payload`in e?e.payload:void 0,color:`color`in e?yw(e.color):void 0,fill:`fill`in e?yw(e.fill):void 0}}function xw(e,t){return e??t}var Sw=(e,t,n,r,i,a,o)=>{if(!(t==null||a==null)){var{chartData:s,computedData:c,dataStartIndex:l,dataEndIndex:u}=n;return e.reduce((e,n)=>{var{dataDefinedOnItem:d,settings:f}=n,p=xw(d,s),m=Array.isArray(p)?hc(p,l,u):p,h=f?.dataKey??r,g=f?.nameKey,_=r&&Array.isArray(m)&&!Array.isArray(m[0])&&o===`axis`?_r(m,r,i):a(m,t,c,g);return Array.isArray(_)?_.forEach(t=>{var n=bw(t),r=n?.name,i=n?.dataKey,a=n?.payload,o=fw(fw({},f),{},{name:r,unit:n?.unit,color:n?.color??f?.color,fill:n?.fill??f?.fill});e.push(Ic({tooltipEntrySettings:o,dataKey:i,payload:a,value:Sc(a,i),name:r==null?void 0:String(r)}))}):e.push(Ic({tooltipEntrySettings:f,dataKey:h,payload:_,value:Sc(_,h),name:Sc(_,g)??f?.name})),e},[])}},Cw=V([rS,Nx,Wm],dx),ww=V([V([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),rS,V([Ch,wh],Px)],Lx,{memoizeOptions:{resultEqualityCheck:xh}}),Tw=V([ww],e=>e.filter(yh)),Ew=V([ww],Hx,{memoizeOptions:{resultEqualityCheck:xh}}),Dw=V([ww],e=>e.some(e=>!e.data)),Ow=V([Ew,Cm],Gx),kw=V([Tw,Cm,rS],vh),Aw=V([Ow,rS,ww,Cm,Dw,Ew],Jx),jw=V([rS],uS),Mw=V([jw,V([rS],e=>e.allowDataOverflow)],Am),Nw=V([V([kw,V([ww],e=>e.filter(yh)),Hm,Um],oS),Cm,Ch,Mw],cS),Pw=V([Ow,rS,V([ww],Bx),mS,Ch,Dm],_S,{memoizeOptions:{resultEqualityCheck:bh}}),Fw=V([V([xS,Ch,wh],SS),Ch],OS),Iw=V([V([wS,Ch,wh],SS),Ch],AS),Lw=V([rS,J,Ow,Aw,Hm,Ch,V([rS,jw,Mw,Nw,Pw,V([Fw,V([V([ES,Ch,wh],SS),Ch],PS),Iw],gS),J,Ch],IS)],zS),Rw=V([rS,Lw,V([Lw,rS,Cw],HS),Ch],WS),zw=e=>$S(e,Ch(e),wh(e),!1),Bw=V([rS,zw],Zm),Vw=V([V([rS,Cw,Rw,Bw],cx)],Th),Hw=V([J,rS,Cw,Vw,zw,V([J,Aw,rS,Ch],bC),V([J,Aw,rS,Ch],nC),Ch],(e,t,n,r,i,a,o,s)=>{if(t){var{type:c}=t,l=wc(e,s);if(r){var u=n===`scaleBand`&&r.bandwidth?r.bandwidth()/2:2,d=c===`category`&&r.bandwidth?r.bandwidth()/u:0;return d=s===`angleAxis`&&i!=null&&i?.length>=2?cr(i[0]-i[1])*2*d:d,l&&o?o.map((e,t)=>{var n=r.map(e);return W(n)?{coordinate:n+d,value:e,index:t,offset:d}:null}).filter(br):r.domain().map((e,t)=>{var n=r.map(e);return W(n)?{coordinate:n+d,value:a?a[e]:e,index:t,offset:d}:null}).filter(br)}}}),Uw=V([DC,OC,NC],(e,t,n)=>kC(n.shared,e,t)),Ww=e=>e.tooltip.settings.trigger,Gw=e=>e.tooltip.settings.defaultIndex,Kw=V([uw,Uw,Ww,Gw],nw),qw=V([Kw,Ow,iS,Lw],ow),Jw=V([Hw,qw],MC),Yw=V([Kw],e=>{if(e)return e.dataKey}),Xw=V([Kw],e=>{if(e)return e.graphicalItemId}),Zw=V([uw,Uw,Ww,Gw],cw),Qw=V([Kw,V([Bc,Vc,J,rl,Hw,Gw,Zw],sw)],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),$w=V([Kw],e=>e?.active??!1),eT=V([V([Zw,qw,Cm,iS,Jw,lw,Uw],Sw)],e=>{if(e!=null){var t=e.map(e=>e.payload).filter(e=>e!=null);return Array.from(new Set(t))}});function tT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function nT(e){for(var t=1;tB(rS),sT=()=>{var e=oT(),t=B(Hw),n=B(Vw);return Fc(!e||!n?void 0:nT(nT({},e),{},{scale:n}),t)};function cT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function lT(e){for(var t=1;t{var i=t.find(e=>e&&e.index===n);if(i){if(e===`horizontal`)return{x:i.coordinate,y:r.relativeY};if(e===`vertical`)return{x:r.relativeX,y:i.coordinate}}return{x:0,y:0}},mT=(e,t,n,r)=>{var i=t.find(e=>e&&e.index===n);if(i){if(e===`centric`){var a=i.coordinate,{radius:o}=r;return lT(lT(lT({},r),Yp(r.cx,r.cy,o,a)),{},{angle:a,radius:o})}var s=i.coordinate,{angle:c}=r;return lT(lT(lT({},r),Yp(r.cx,r.cy,s,c)),{},{angle:c,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function hT(e,t){var{relativeX:n,relativeY:r}=e;return n>=t.left&&n<=t.left+t.width&&r>=t.top&&r<=t.top+t.height}var gT=(e,t,n,r,i)=>{var a=t?.length??0;if(a<=1||e==null)return 0;if(r===`angleAxis`&&i!=null&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var o=0;o0?n[o-1]?.coordinate:n[a-1]?.coordinate,c=n[o]?.coordinate,l=o>=a-1?n[0]?.coordinate:n[o+1]?.coordinate,u=void 0;if(!(s==null||c==null||l==null))if(cr(c-s)!==cr(l-c)){var d=[];if(cr(l-c)===cr(i[1]-i[0])){u=l;var f=c+i[1]-i[0];d[0]=Math.min(f,(f+s)/2),d[1]=Math.max(f,(f+s)/2)}else{u=s;var p=l+i[1]-i[0];d[0]=Math.min(c,(p+c)/2),d[1]=Math.max(c,(p+c)/2)}var m=[Math.min(c,(u+c)/2),Math.max(c,(u+c)/2)];if(e>m[0]&&e<=m[1]||e>=d[0]&&e<=d[1])return n[o]?.index}else{var h=Math.min(s,l),g=Math.max(s,l);if(e>(h+c)/2&&e<=(g+c)/2)return n[o]?.index}}else if(t)for(var _=0;_(v.coordinate+b.coordinate)/2||_>0&&_(v.coordinate+b.coordinate)/2&&e<=(v.coordinate+y.coordinate)/2)return v.index}}return-1},_T=()=>B(Wm),vT=(e,t)=>t,yT=(e,t,n)=>n,bT=(e,t,n,r)=>r,xT=V(Hw,e=>(0,fa.default)(e,e=>e.coordinate)),ST=V([uw,vT,yT,bT],nw),CT=V([ST,Ow,iS,Lw],ow),wT=(e,t,n)=>{if(t!=null){var r=uw(e);return t===`axis`?n===`hover`?r.axisInteraction.hover.dataKey:r.axisInteraction.click.dataKey:n===`hover`?r.itemInteraction.hover.dataKey:r.itemInteraction.click.dataKey}},TT=V([uw,vT,yT,bT],cw),ET=V([Bc,Vc,J,rl,Hw,bT,TT],sw),DT=V([ST,ET],(e,t)=>e.coordinate??t),OT=V([Hw,CT],MC),kT=V([TT,CT,Cm,iS,OT,lw,vT],Sw),AT=V([ST,CT],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),jT=(e,t,n,r,i,a,o)=>{if(!(!e||!n||!r||!i)&&hT(e,o)){var s=gT(Rc(e,t),a,i,n,r),c=pT(t,i,s,e);return{activeIndex:String(s),activeCoordinate:c}}},MT=(e,t,n,r,i,a,o)=>{if(!(!e||!r||!i||!a||!n)){var s=tm(e,n);if(s){var c=gT(zc(s,t),o,a,r,i),l=mT(t,a,c,s);return{activeIndex:String(c),activeCoordinate:l}}}},NT=(e,t,n,r,i,a,o,s)=>{if(!(!e||!t||!r||!i||!a))return t===`horizontal`||t===`vertical`?jT(e,t,r,i,a,o,s):MT(e,t,n,r,i,a,o)},PT=V(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var r=e[t];if(r!=null)return n?r.panoramaElement:r.element}}),FT=V(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(Jm));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:Sh}});function IT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function LT(e){for(var t=1;tLT(LT({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),{})},HT=new Set(Object.values(Jm));function UT(e){return HT.has(e)}var WT=xs({name:`zIndex`,initialState:VT,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:ss()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(--e.zIndexMap[n].consumers,e.zIndexMap[n].consumers<=0&&!UT(n)&&delete e.zIndexMap[n])},prepare:ss()},registerZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n,element:r,isPanorama:i}=t.payload;e.zIndexMap[n]?i?e.zIndexMap[n].panoramaElement=Y(r):e.zIndexMap[n].element=Y(r):e.zIndexMap[n]={consumers:0,element:i?void 0:Y(r),panoramaElement:i?Y(r):void 0}},prepare:ss()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:ss()}}}),{registerZIndexPortal:GT,unregisterZIndexPortal:KT,registerZIndexPortalElement:qT,unregisterZIndexPortalElement:JT}=WT.actions,YT=WT.reducer;function XT(e){var{zIndex:t,children:n}=e,r=Wl()&&t!==void 0&&t!==0,i=sl(),a=(0,w.useRef)(void 0),o=(0,w.useRef)(new Set),s=Vi(),c=B(e=>PT(e,t,i));if((0,w.useLayoutEffect)(()=>{if(!r){var e=o.current;e.forEach(e=>{s(KT({zIndex:e}))}),e.clear(),a.current=void 0;return}if(o.current.has(t)||(s(GT({zIndex:t})),o.current.add(t)),c){a.current=c;var n=o.current;n.forEach(e=>{e!==t&&(s(KT({zIndex:e})),n.delete(e))})}},[s,t,r,c]),(0,w.useLayoutEffect)(()=>{var e=o.current;return()=>{e.forEach(e=>{s(KT({zIndex:e}))}),e.clear()}},[s]),!r)return n;var l=c??a.current;return l?(0,pd.createPortal)(n,l):null}function ZT(){return ZT=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,w.useContext)(oE),cE=l(o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!lr(n))return e[n]}},pE=xs({name:`options`,initialState:{chartName:``,tooltipPayloadSearcher:()=>void 0,eventEmitter:void 0,defaultTooltipEventType:`axis`},reducers:{createEventEmitter:e=>{e.eventEmitter??=Symbol(`rechartsEventEmitter`)}}}),mE=pE.reducer,{createEventEmitter:hE}=pE.actions;function gE(e){return e.tooltip.syncInteraction}var _E=xs({name:`chartData`,initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=Y(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:n,endIndex:r}=t.payload;n!=null&&(e.dataStartIndex=n),r!=null&&(e.dataEndIndex=r)}}}),{setChartData:vE,setDataStartEndIndexes:yE,setComputedData:bE}=_E.actions,xE=_E.reducer,SE=[`x`,`y`];function CE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function wE(e){for(var t=1;t{if(e==null)return xr;var s=(s,c,l)=>{if(t!==l&&e===s){if(c.payload.active===!1){n(KC({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(r===`index`){var u;if(o&&c!=null&&(u=c.payload)!=null&&u.coordinate&&c.payload.sourceViewBox){var d=c.payload.coordinate,{x:f,y:p}=d,m=OE(d,SE),{x:h,y:g,width:_,height:v}=c.payload.sourceViewBox,y=wE(wE({},m),{},{x:o.x+(_?(f-h)/_:0)*o.width,y:o.y+(v?(p-g)/v:0)*o.height});n(wE(wE({},c),{},{payload:wE(wE({},c.payload),{},{coordinate:y})}))}else n(c);return}if(i!=null){var b;typeof r==`function`?b=i[r(i,{activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate})]:r===`value`&&(b=i.find(e=>String(e.value)===c.payload.label));var{coordinate:x}=c.payload;if(x==null||o==null){n(KC({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(b==null){n(KC({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var{x:S,y:C}=x,w=Math.min(S,o.x+o.width),T=Math.min(C,o.y+o.height),E={x:a===`horizontal`?b.coordinate:w,y:a===`horizontal`?T:b.coordinate};n(KC({active:c.payload.active,coordinate:E,dataKey:c.payload.dataKey,index:String(b.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId}))}}};return lE.on(uE,s),()=>{lE.off(uE,s)}},[B(e=>e.rootProps.className),n,t,e,r,i,a,o])}function jE(){var e=B(Gm),t=B(qm),n=Vi();(0,w.useEffect)(()=>{if(e==null)return xr;var r=(r,i,a)=>{t!==a&&e===r&&n(yE(i))};return lE.on(dE,r),()=>{lE.off(dE,r)}},[n,t,e])}function ME(){var e=Vi();(0,w.useEffect)(()=>{e(hE())},[e]),AE(),jE()}function NE(e,t,n,r,i,a){var o=B(n=>wT(n,e,t)),s=B(Xw),c=B(qm),l=B(Gm),u=B(Km),d=B(gE)?.sourceViewBox!=null,f=Rl();(0,w.useEffect)(()=>{if(!d&&l!=null&&c!=null){var e=KC({active:a,coordinate:n,dataKey:o,index:i,label:typeof r==`number`?String(r):r,sourceViewBox:f,graphicalItemId:s});lE.emit(uE,l,e,c)}},[d,n,o,s,i,r,c,l,u,a,f])}function PE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function FE(e){for(var t=1;t{x(zC({shared:g,trigger:_,axisId:b,active:n,defaultIndex:S}))},[x,g,_,b,n,S]);var C=Rl(),T=rf(),E=jC(g),{activeIndex:D,isActive:O}=B(e=>AT(e,E,_,S))??{},k=B(e=>kT(e,E,_,S)),A=B(e=>OT(e,E,_,S)),j=B(e=>DT(e,E,_,S)),M=k,N=sE(),ee=n??O??!1,[te,P]=va([M,ee]),F=E===`axis`?A:void 0;NE(E,_,j,F,D,ee);var ne=y??N;if(ne==null||C==null||E==null)return null;var re=M??VE;ee||(re=VE),s&&re.length&&(re=Pi(re.filter(e=>e.value!=null&&(e.hide!==!0||t.includeHidden)),u,zE));var ie=re.length>0,ae=FE(FE({},t),{},{payload:re,label:F,active:ee,activeIndex:D,coordinate:j,accessibilityLayer:T}),oe=w.createElement(nf,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:c,active:ee,coordinate:j,hasPayload:ie,offset:l,position:d,reverseDirection:f,useTranslate3d:p,viewBox:C,wrapperStyle:m,lastBoundingBox:te,innerRef:P,hasPortalFromProps:!!y},BE(o,ae));return w.createElement(w.Fragment,null,(0,pd.createPortal)(oe,ne),ee&&w.createElement(aE,{cursor:h,tooltipEventType:E,coordinate:j,payload:re,index:D}))}function WE(e,t,n){return(t=GE(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function GE(e){var t=KE(e,`string`);return typeof t==`symbol`?t:t+``}function KE(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var qE=class{constructor(e){WE(this,`cache`,new Map),this.maxSize=e}get(e){var t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};function JE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function YE(e){for(var t=1;t{try{var n=document.getElementById(nD);n||(n=document.createElement(`span`),n.setAttribute(`id`,nD),n.setAttribute(`aria-hidden`,`true`),document.body.appendChild(n)),Object.assign(n.style,tD,t),n.textContent=`${e}`;var r=n.getBoundingClientRect();return{width:r.width,height:r.height}}catch{return{width:0,height:0}}},aD=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||qd.isSsr)return{width:0,height:0};if(!$E.enableCache)return iD(e,t);var n=rD(e,t),r=eD.get(n);if(r)return r;var i=iD(e,t);return eD.set(n,i),i},oD;function sD(e,t,n){return(t=cD(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function cD(e){var t=lD(e,`string`);return typeof t==`symbol`?t:t+``}function lD(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var uD=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,dD=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,fD=/^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/,pD=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,mD={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},hD=[`cm`,`mm`,`pt`,`pc`,`in`,`Q`,`px`];function gD(e){return hD.includes(e)}var _D=`NaN`;function vD(e,t){return e*mD[t]}var yD=class e{static parse(t){var[,n,r]=pD.exec(t)??[];return n==null?e.NaN:new e(parseFloat(n),r??``)}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,lr(e)&&(this.unit=``),t!==``&&!fD.test(t)&&(this.num=NaN,this.unit=``),gD(t)&&(this.num=vD(e,t),this.unit=`px`)}add(t){return this.unit===t.unit?new e(this.num+t.num,this.unit):new e(NaN,``)}subtract(t){return this.unit===t.unit?new e(this.num-t.num,this.unit):new e(NaN,``)}multiply(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num*t.num,this.unit||t.unit)}divide(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num/t.num,this.unit||t.unit)}toString(){return`${this.num}${this.unit}`}isNaN(){return lr(this.num)}};oD=yD,sD(yD,`NaN`,new oD(NaN,``));function bD(e){if(e==null||e.includes(_D))return _D;for(var t=e;t.includes(`*`)||t.includes(`/`);){var[,n,r,i]=uD.exec(t)??[],a=yD.parse(n??``),o=yD.parse(i??``),s=r===`*`?a.multiply(o):a.divide(o);if(s.isNaN())return _D;t=t.replace(uD,s.toString())}for(;t.includes(`+`)||/.-\d+(?:\.\d+)?/.test(t);){var[,c,l,u]=dD.exec(t)??[],d=yD.parse(c??``),f=yD.parse(u??``),p=l===`+`?d.add(f):d.subtract(f);if(p.isNaN())return _D;t=t.replace(dD,p.toString())}return t}var xD=/\(([^()]*)\)/;function SD(e){for(var t=e,n;(n=xD.exec(t))!=null;){var[,r]=n;t=t.replace(xD,bD(r))}return t}function CD(e){var t=e.replace(/\s+/g,``);return t=SD(t),t=bD(t),t}function wD(e){try{return CD(e)}catch{return _D}}function TD(e){var t=wD(e.slice(5,-1));return t===_D?``:t}var ED=[`x`,`y`,`lineHeight`,`capHeight`,`fill`,`scaleToFit`,`textAnchor`,`verticalAnchor`],DD=[`dx`,`dy`,`angle`,`className`,`breakAll`];function OD(){return OD=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:n,style:r}=e;try{var i=[];return vr(t)||(i=n?t.toString().split(``):t.toString().split(jD)),{wordsWithComputedWidth:i.map(e=>({word:e,width:aD(e,r).width})),spaceWidth:n?0:aD(`\xA0`,r).width}}catch{return null}};function ND(e){return e===`start`||e===`middle`||e===`end`||e===`inherit`}function PD(e){return vr(e)||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}var FD=(e,t,n,r)=>e.reduce((e,i)=>{var{word:a,width:o}=i,s=e[e.length-1];if(s&&o!=null&&(t==null||r||s.width+o+ne.reduce((e,t)=>e.width>t.width?e:t),LD=`…`,RD=(e,t,n,r,i,a,o,s)=>{var c=MD({breakAll:n,style:r,children:e.slice(0,t)+LD});if(!c)return[!1,[]];var l=FD(c.wordsWithComputedWidth,a,o,s);return[l.length>i||ID(l).width>Number(a),l]},zD=(e,t,n,r,i)=>{var{maxLines:a,children:o,style:s,breakAll:c}=e,l=R(a),u=String(o),d=FD(t,r,n,i);if(!l||i||!(d.length>a||ID(d).width>Number(r)))return d;for(var f=0,p=u.length-1,m=0,h;f<=p&&m<=u.length-1;){var g=Math.floor((f+p)/2),[_,v]=RD(u,g-1,c,s,a,r,n,i),[y]=RD(u,g,c,s,a,r,n,i);if(!_&&!y&&(f=g+1),_&&y&&(p=g-1),!_&&y){h=v;break}m++}return h||d},BD=e=>[{words:vr(e)?[]:e.toString().split(jD),width:void 0}],VD=e=>{var{width:t,scaleToFit:n,children:r,style:i,breakAll:a,maxLines:o}=e;if((t||n)&&!qd.isSsr){var s,c,l=MD({breakAll:a,children:r,style:i});if(l){var{wordsWithComputedWidth:u,spaceWidth:d}=l;s=u,c=d}else return BD(r);return zD({breakAll:a,children:r,maxLines:o,style:i},s,c,t,!!n)}return BD(r)},HD=`#808080`,UD={angle:0,breakAll:!1,capHeight:`0.71em`,fill:HD,lineHeight:`1em`,scaleToFit:!1,textAnchor:`start`,verticalAnchor:`end`,x:0,y:0},WD=(0,w.forwardRef)((e,t)=>{var n=Kr(e,UD),{x:r,y:i,lineHeight:a,capHeight:o,fill:s,scaleToFit:c,textAnchor:l,verticalAnchor:u}=n,d=kD(n,ED),f=(0,w.useMemo)(()=>VD({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:c,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,c,d.style,d.width]),{dx:p,dy:m,angle:h,className:g,breakAll:_}=d,v=kD(d,DD);if(!dr(r)||!dr(i)||f.length===0)return null;var y=Number(r)+(R(p)?p:0),b=Number(i)+(R(m)?m:0);if(!W(y)||!W(b))return null;var x;switch(u){case`start`:x=TD(`calc(${o})`);break;case`middle`:x=TD(`calc(${(f.length-1)/2} * -${a} + (${o} / 2))`);break;default:x=TD(`calc(${f.length-1} * -${a})`);break}var S=[],C=f[0];if(c&&C!=null){var T=C.width,{width:E}=d;S.push(`scale(${R(E)&&R(T)?E/T:1})`)}return h&&S.push(`rotate(${h}, ${y}, ${b})`),S.length&&(v.transform=S.join(` `)),w.createElement(`text`,OD({},ft(v),{ref:t,x:y,y:b,className:L(`recharts-text`,g),textAnchor:l,fill:s.includes(`url`)?HD:s}),f.map((e,t)=>{var n=e.words.join(_?``:` `);return w.createElement(`tspan`,{x:y,dy:t===0?x:a,key:`${n}-${t}`},n)}))});WD.displayName=`Text`;function GD(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function KD(e){for(var t=1;t{var{viewBox:t,position:n,offset:r=0,parentViewBox:i,clamp:a}=e,{x:o,y:s,height:c,upperWidth:l,lowerWidth:u}=Ll(t),d=o,f=o+(l-u)/2,p=(d+f)/2,m=(l+u)/2,h=d+l/2,g=c>=0?1:-1,_=g*r,v=g>0?`end`:`start`,y=g>0?`start`:`end`,b=l>=0?1:-1,x=b*r,S=b>0?`end`:`start`,C=b>0?`start`:`end`,w=i;if(n===`top`){var T={x:d+l/2,y:s-_,horizontalAnchor:`middle`,verticalAnchor:v};return a&&w&&(T.height=Math.max(s-w.y,0),T.width=l),T}if(n===`bottom`){var E={x:f+u/2,y:s+c+_,horizontalAnchor:`middle`,verticalAnchor:y};return a&&w&&(E.height=Math.max(w.y+w.height-(s+c),0),E.width=u),E}if(n===`left`){var D={x:p-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`};return a&&w&&(D.width=Math.max(D.x-w.x,0),D.height=c),D}if(n===`right`){var O={x:p+m+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`};return a&&w&&(O.width=Math.max(w.x+w.width-O.x,0),O.height=c),O}var k=a&&w?{width:m,height:c}:{};return n===`insideLeft`?KD({x:p+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`},k):n===`insideRight`?KD({x:p+m-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`},k):n===`insideTop`?KD({x:d+l/2,y:s+_,horizontalAnchor:`middle`,verticalAnchor:y},k):n===`insideBottom`?KD({x:f+u/2,y:s+c-_,horizontalAnchor:`middle`,verticalAnchor:v},k):n===`insideTopLeft`?KD({x:d+x,y:s+_,horizontalAnchor:C,verticalAnchor:y},k):n===`insideTopRight`?KD({x:d+l-x,y:s+_,horizontalAnchor:S,verticalAnchor:y},k):n===`insideBottomLeft`?KD({x:f+x,y:s+c-_,horizontalAnchor:C,verticalAnchor:v},k):n===`insideBottomRight`?KD({x:f+u-x,y:s+c-_,horizontalAnchor:S,verticalAnchor:v},k):n&&typeof n==`object`&&(R(n.x)||ur(n.x))&&(R(n.y)||ur(n.y))?KD({x:o+mr(n.x,m),y:s+mr(n.y,c),horizontalAnchor:`end`,verticalAnchor:`end`},k):KD({x:h,y:s+c/2,horizontalAnchor:`middle`,verticalAnchor:`middle`},k)},ZD=[`labelRef`],QD=[`content`];function $D(e,t){if(e==null)return{};var n,r,i=eO(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o,children:s}=e,c=(0,w.useMemo)(()=>({x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o}),[t,n,r,i,a,o]);return w.createElement(sO.Provider,{value:c},s)},lO=()=>{var e=(0,w.useContext)(sO),t=Rl();return e||(t?Ll(t):void 0)},uO=(0,w.createContext)(null),dO=()=>{var e=(0,w.useContext)(uO),t=B(mh);return e||t},fO=e=>{var{value:t,formatter:n}=e,r=vr(e.children)?t:e.children;return typeof n==`function`?n(r):r},pO=e=>e!=null&&typeof e==`function`,mO=(e,t)=>cr(t-e)*Math.min(Math.abs(t-e),360),hO=(e,t,n,r,i)=>{var{offset:a,className:o}=e,{cx:s,cy:c,innerRadius:l,outerRadius:u,startAngle:d,endAngle:f,clockWise:p}=i,m=(l+u)/2,h=mO(d,f),g=h>=0?1:-1,_,v;switch(t){case`insideStart`:_=d+g*a,v=p;break;case`insideEnd`:_=f-g*a,v=!p;break;case`end`:_=f+g*a,v=p;break;default:throw Error(`Unsupported position ${t}`)}v=h<=0?v:!v;var y=Yp(s,c,m,_),b=Yp(s,c,m,_+(v?1:-1)*359),x=`M${y.x},${y.y} A${m},${m},0,1,${v?0:1}, - ${b.x},${b.y}`,S=vr(e.id)?pr(`recharts-radial-line-`):e.id;return w.createElement(`text`,oO({},r,{dominantBaseline:`central`,className:L(`recharts-radial-bar-label`,o)}),w.createElement(`defs`,null,w.createElement(`path`,{id:S,d:x})),w.createElement(`textPath`,{xlinkHref:`#${S}`},n))},gO=(e,t,n)=>{var{cx:r,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:c}=e,l=(s+c)/2;if(n===`outside`){var{x:u,y:d}=Yp(r,i,o+t,l);return{x:u,y:d,textAnchor:u>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var{x:f,y:p}=Yp(r,i,(a+o)/2,l);return{x:f,y:p,textAnchor:`middle`,verticalAnchor:`middle`}},_O=e=>e!=null&&`cx`in e&&R(e.cx),vO={angle:0,offset:5,zIndex:Jm.label,position:`middle`,textBreakAll:!1};function yO(e){if(!_O(e))return e;var{cx:t,cy:n,outerRadius:r}=e,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function bO(e){var t=Kr(e,vO),{viewBox:n,parentViewBox:r,position:i,value:a,children:o,content:s,className:c=``,textBreakAll:l,labelRef:u}=t,d=dO(),f=lO(),p=n==null?i===`center`?f:d??f:_O(n)?n:Ll(n),m,h,g=yO(p);if(!p||vr(a)&&vr(o)&&!(0,w.isValidElement)(s)&&typeof s!=`function`)return null;var _=nO(nO({},t),{},{viewBox:p});if((0,w.isValidElement)(s)){var{labelRef:v}=_;return(0,w.cloneElement)(s,$D(_,ZD))}if(typeof s==`function`){var{content:y}=_;if(m=(0,w.createElement)(s,$D(_,QD)),(0,w.isValidElement)(m))return m}else m=fO(t);var b=ft(t);if(_O(p)){if(i===`insideStart`||i===`insideEnd`||i===`end`)return hO(t,i,m,b,p);h=gO(p,t.offset,t.position)}else{if(!g)return null;var x=XD({viewBox:g,position:i,offset:t.offset,parentViewBox:_O(r)?void 0:r,clamp:!0});h=nO(nO({x:x.x,y:x.y,textAnchor:x.horizontalAnchor,verticalAnchor:x.verticalAnchor},x.width===void 0?{}:{width:x.width}),x.height===void 0?{}:{height:x.height})}return w.createElement(XT,{zIndex:t.zIndex},w.createElement(WD,oO({ref:u,className:L(`recharts-label`,c)},b,h,{textAnchor:ND(b.textAnchor)?b.textAnchor:h.textAnchor,breakAll:l}),m))}bO.displayName=`Label`;var xO=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?w.createElement(bO,oO({key:`label-implicit`},r)):dr(e)?w.createElement(bO,oO({key:`label-implicit`,value:e},r)):(0,w.isValidElement)(e)?e.type===bO?(0,w.cloneElement)(e,nO({key:`label-implicit`},r)):w.createElement(bO,oO({key:`label-implicit`,content:e},r)):pO(e)?w.createElement(bO,oO({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?w.createElement(bO,oO({},e,{key:`label-implicit`},r)):null};function SO(e){var{label:t,labelRef:n}=e;return xO(t,lO(),n)||null}var CO=[`valueAccessor`],wO=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function TO(){return TO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(PD(t))return t},kO=(0,w.createContext)(void 0),AO=kO.Provider,jO=(0,w.createContext)(void 0);jO.Provider;function MO(){return(0,w.useContext)(kO)}function NO(){return(0,w.useContext)(jO)}function PO(e){var{valueAccessor:t=OO}=e,n=EO(e,CO),{dataKey:r,clockWise:i,id:a,textBreakAll:o,zIndex:s}=n,c=EO(n,wO),l=MO(),u=NO(),d=l||u;return!d||!d.length?null:w.createElement(XT,{zIndex:s??Jm.label},w.createElement(Ct,{className:`recharts-label-list`},d.map((e,i)=>{var s=vr(r)?t(e,i):Sc(e.payload,r),l=vr(a)?{}:{id:`${a}-${i}`};return w.createElement(bO,TO({key:`label-${i}`},ft(e),c,l,{fill:n.fill??e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:o,viewBox:e.viewBox,index:i,zIndex:0}))})))}PO.displayName=`LabelList`;function FO(e){var{label:t}=e;return t?t===!0?w.createElement(PO,{key:`labelList-implicit`}):w.isValidElement(t)||pO(t)?w.createElement(PO,{key:`labelList-implicit`,content:t}):typeof t==`object`?w.createElement(PO,TO({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function IO(){return IO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r,className:i}=e,a=L(`recharts-dot`,i);return R(t)&&R(n)&&R(r)?w.createElement(`circle`,IO({},ut(e),Rr(e),{className:a,cx:t,cy:n,r})):null},RO=xs({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Y(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Y(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:zO,removeRadiusAxis:BO,addAngleAxis:VO,removeAngleAxis:HO}=RO.actions,UO=RO.reducer;function WO(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}var GO=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0,KO=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.isPlainObject=t})),qO=o(((e,t)=>{t.exports=KO().isPlainObject})),JO,YO,XO,ZO,QO;function $O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ek(e){for(var t=1;t{var a=n-r,o=or(JO||=ak([`M `,`,`,``]),e,t);return o+=or(YO||=ak([`L `,`,`,``]),e+n,t),o+=or(XO||=ak([`L `,`,`,``]),e+n-a/2,t+i),o+=or(ZO||=ak([`L `,`,`,``]),e+n-a/2-r,t+i),o+=or(QO||=ak([`L `,`,`,` Z`]),e,t),o},sk={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},ck=e=>{var t=Kr(e,sk),{x:n,y:r,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:c,animationDuration:l,animationBegin:u,isUpdateAnimationActive:d}=t,f=(0,w.useRef)(null),[p,m]=(0,w.useState)(-1),h=(0,w.useRef)(i),g=(0,w.useRef)(a),_=(0,w.useRef)(o),v=(0,w.useRef)(n),y=(0,w.useRef)(r),b=_p(e,`trapezoid-`);if((0,w.useEffect)(()=>{if(f.current&&f.current.getTotalLength)try{var e=f.current.getTotalLength();e&&m(e)}catch{}},[]),n!==+n||r!==+r||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var x=L(`recharts-trapezoid`,s);if(!d)return w.createElement(`g`,null,w.createElement(`path`,ik({},ft(t),{className:x,d:ok(n,r,i,a,o)})));var S=h.current,C=g.current,T=_.current,E=v.current,D=y.current,O=`0px ${p===-1?1:p}px`,k=`${p}px ${p}px`,A=Rf([`strokeDasharray`],l,c);return w.createElement(gp,{animationId:b,key:b,canBegin:p>0,duration:l,easing:c,isActive:d,begin:u},e=>{var s=gr(S,i,e),c=gr(C,a,e),l=gr(T,o,e),u=gr(E,n,e),d=gr(D,r,e);f.current&&(h.current=s,g.current=c,_.current=l,v.current=u,y.current=d);var p=e>0?{transition:A,strokeDasharray:k}:{strokeDasharray:O};return w.createElement(`path`,ik({},ft(t),{className:x,d:ok(u,d,s,c,l),ref:f,style:ek(ek({},p),t.style)}))})},lk=l(qO()),uk=[`option`,`shapeType`,`activeClassName`,`inActiveClassName`];function dk(e,t){if(e==null)return{};var n,r,i=fk(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{r||(i.current===null?n(IC(t)):i.current!==t&&n(LC({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(RC(i.current)),null)},[n]),null}function wk(e){var{legendPayload:t}=e,n=Vi(),r=sl(),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r||(i.current===null?n(Wu(t)):i.current!==t&&n(Gu({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(Ku(i.current)),null)},[n]),null}var Tk=w.useId??(()=>{var[e]=w.useState(()=>pr(`uid-`));return e});function Ek(e,t){var n=Tk();return t||(e?`${e}-${n}`:n)}var Dk=(0,w.createContext)(void 0),Ok=e=>{var{id:t,type:n,children:r}=e,i=Ek(`recharts-${n}`,t);return w.createElement(Dk.Provider,{value:i},r(i))},kk=xs({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Y(t.payload))},prepare:ss()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=qo(e).cartesianItems.indexOf(Y(n));i>-1&&(e.cartesianItems[i]=Y(r))},prepare:ss()},removeCartesianGraphicalItem:{reducer(e,t){var n=qo(e).cartesianItems.indexOf(Y(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:ss()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Y(t.payload))},prepare:ss()},removePolarGraphicalItem:{reducer(e,t){var n=qo(e).polarItems.indexOf(Y(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:ss()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=qo(e).polarItems.indexOf(Y(n));i>-1&&(e.polarItems[i]=Y(r))},prepare:ss()}}}),{addCartesianGraphicalItem:Ak,replaceCartesianGraphicalItem:jk,removeCartesianGraphicalItem:Mk,addPolarGraphicalItem:Nk,removePolarGraphicalItem:Pk,replacePolarGraphicalItem:Fk}=kk.actions,Ik=kk.reducer,Lk=(0,w.memo)(e=>{var t=Vi(),n=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{n.current===null?t(Ak(e)):n.current!==e&&t(jk({prev:n.current,next:e})),n.current=e},[t,e]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(Mk(n.current)),null)},[t]),null}),Rk=[`points`];function zk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Bk(e){for(var t=1;t{var s=Bk(Bk(Bk({r:3},o),d),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return w.createElement(qk,{key:`dot-${r}`,option:n,dotProps:s,className:i})}),p={};return s&&c!=null&&(p.clipPath=`url(#clipPath-${u?``:`dots-`}${c})`),w.createElement(XT,{zIndex:l},w.createElement(Ct,Wk({className:r},p),f))}function Xk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Zk(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),Bc,Vc],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),mA=()=>B(pA),hA=()=>B(eT);function gA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _A(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:r,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s=_A(_A(_A({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),dt(i)),Rr(i)),c=(0,w.isValidElement)(i)?(0,w.cloneElement)(i,s):typeof i==`function`?i(s):w.createElement(LO,s);return w.createElement(Ct,{className:`recharts-active-dot`,clipPath:o},c)};function SA(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:i,clipPath:a,zIndex:o=Jm.activeDot}=e,s=B(qw),c=hA();if(t==null||c==null)return null;var l=t.find(e=>c.includes(e.payload));return vr(l)?null:w.createElement(XT,{zIndex:o},w.createElement(xA,{point:l,childIndex:Number(s),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var CA=e=>{var{chartData:t}=e,n=Vi(),r=sl();return(0,w.useEffect)(()=>r?()=>{}:(n(vE(t)),()=>{n(vE(void 0))}),[t,n,r]),null},wA={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},TA=xs({name:`brush`,initialState:wA,reducers:{setBrushSettings(e,t){return t.payload==null?wA:t.payload}}}),{setBrushSettings:EA}=TA.actions,DA=TA.reducer;function OA(e){return(e%180+180)%180}var kA=function(e){var{width:t,height:n}=e,r=OA(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=qo(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=qo(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(Y(t.payload))},removeLine:(e,t)=>{var n=qo(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:jA,removeDot:MA,addArea:NA,removeArea:PA,addLine:FA,removeLine:IA}=AA.actions,LA=AA.reducer,RA=(0,w.createContext)(void 0),zA=e=>{var{children:t}=e,[n]=(0,w.useState)(`${pr(`recharts`)}-clip`),r=mA();if(r==null)return null;var{x:i,y:a,width:o,height:s}=r;return w.createElement(RA.Provider,{value:n},w.createElement(`defs`,null,w.createElement(`clipPath`,{id:n},w.createElement(`rect`,{x:i,y:a,height:s,width:o}))),t)};function BA(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;re*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function WA(e,t){return BA(e,t+1)}function GA(e,t,n,r,i){for(var a=(r||[]).slice(),{start:o,end:s}=t,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:BA(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||UA(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function KA(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var{start:o,end:s}=t,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||UA(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=JA(JA({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=JA(JA({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&UA(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=JA(JA({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function $A(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,{start:c,end:l}=t;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=JA(JA({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&UA(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=JA(JA({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=JA(JA({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=JA(JA({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&UA(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=JA(JA({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?VA(aD(i,{fontSize:t,letterSpacing:n}),m,d):aD(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?cr(_.coordinate-g.coordinate):1,y=HA(a,v,p);return c===`equidistantPreserveStart`?GA(v,y,h,i,o):c===`equidistantPreserveEnd`?KA(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?$A(v,y,h,i,o,c===`preserveStartEnd`):QA(v,y,h,i,o),f.filter(e=>e.isShow))}var tj=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var s=n?n.getBoundingClientRect().width:0,c=i+a,l=o+c+s+(n?r:0);return Math.round(l)}return 0},nj=xs({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:i}=t.payload;e[n][r]=Y(i)},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:rj,removeRenderedTicks:ij}=nj.actions,aj=nj.reducer,oj=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function sj(e,t){if(e==null)return{};var n,r,i=cj(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;rr==null||n==null?xr:(i(rj({ticks:t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),axisId:r,axisType:n})),()=>{i(ij({axisId:r,axisType:n}))}),[i,t,r,n]),null}var Sj=(0,w.forwardRef)((e,t)=>{var{ticks:n=[],tick:r,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:c,tickTextProps:l,orientation:u,mirror:d,x:f,y:p,width:m,height:h,tickSize:g,tickMargin:_,fontSize:v,letterSpacing:y,getTicksConfig:b,events:x,axisType:S,axisId:C}=e,T=ej(dj(dj({},b),{},{ticks:n}),v,y),E=ut(b),D=dt(r),O=ND(E.textAnchor)?E.textAnchor:vj(u,d),k=yj(u,d),A={};typeof i==`object`&&(A=i);var j=dj(dj({},E),{},{fill:`none`},A),M=T.map(e=>dj({entry:e},_j(e,f,p,m,h,u,g,d,_))),N=M.map(e=>{var{entry:t,line:n}=e;return w.createElement(Ct,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},i&&w.createElement(`line`,lj({},j,n,{className:L(`recharts-cartesian-axis-tick-line`,(0,sr.default)(i,`className`))})))}),ee=M.map((e,t)=>{var{entry:n,tick:i}=e,u=dj(dj({},dj(dj(dj(dj({verticalAnchor:k},E),{},{textAnchor:O,stroke:`none`,fill:a},i),{},{index:t,payload:n,visibleTicksCount:T.length,tickFormatter:o,padding:c},l),{},{angle:l?.angle??E.angle??0})),D);return w.createElement(Ct,lj({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},Br(x,n,t)),r&&w.createElement(bj,{option:r,tickProps:u,value:`${typeof o==`function`?o(n.value,t):n.value}${s||``}`}))});return w.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${S}-ticks`},w.createElement(xj,{ticks:T,axisId:C,axisType:S}),ee.length>0&&w.createElement(XT,{zIndex:Jm.label},w.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${S}-tick-labels`,ref:t},ee)),N.length>0&&w.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${S}-tick-lines`},N))}),Cj=(0,w.forwardRef)((e,t)=>{var{axisLine:n,width:r,height:i,className:a,hide:o,ticks:s,axisType:c,axisId:l}=e,u=sj(e,oj),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(``),h=(0,w.useRef)(null);(0,w.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>tj({ticks:h.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var g=(0,w.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);h.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==d||a!==p)&&(f(i),m(a))}}},[d,p]);return o||r!=null&&r<=0||i!=null&&i<=0?null:w.createElement(XT,{zIndex:e.zIndex},w.createElement(Ct,{className:L(`recharts-cartesian-axis`,a)},w.createElement(gj,{x:e.x,y:e.y,width:r,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:ut(e)}),w.createElement(Sj,{ref:g,axisType:c,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:p,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:l}),w.createElement(cO,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},w.createElement(SO,{label:e.label,labelRef:e.labelRef}),e.children)))}),wj=w.forwardRef((e,t)=>{var n=Kr(e,hj);return w.createElement(Cj,lj({},n,{ref:t}))});wj.displayName=`CartesianAxis`;var Tj=[`x1`,`y1`,`x2`,`y2`,`key`],Ej=[`offset`],Dj=[`xAxisId`,`yAxisId`],Oj=[`xAxisId`,`yAxisId`];function kj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Aj(e){for(var t=1;t{var{fill:t}=e;if(!t||t===`none`)return null;var{fillOpacity:n,x:r,y:i,width:a,height:o,ry:s}=e;return w.createElement(`rect`,{x:r,y:i,ry:s,width:a,height:o,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function Rj(e){var{option:t,lineItemProps:n}=e,r;if(w.isValidElement(t))r=w.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var{x1:i,y1:a,x2:o,y2:s,key:c}=n,l=ut(Fj(n,Tj))??{},{offset:u}=l,d=Fj(l,Ej);r=w.createElement(`line`,Pj({},d,{x1:i,y1:a,x2:o,y2:s,fill:`none`,key:c}))}return r}function zj(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=Fj(e,Dj),c=i.map((e,i)=>{var a=Aj(Aj({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${i}`,index:i});return w.createElement(Rj,{key:`line-${i}`,option:r,lineItemProps:a})});return w.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function Bj(e){var{y:t,height:n,vertical:r=!0,verticalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=Fj(e,Oj),c=i.map((e,i)=>{var a=Aj(Aj({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${i}`,index:i});return w.createElement(Rj,{option:r,lineItemProps:a,key:`line-${i}`})});return w.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function Vj(e){var{horizontalFill:t,fillOpacity:n,x:r,y:i,width:a,height:o,horizontalPoints:s,horizontal:c=!0}=e;if(!c||!t||!t.length||s==null)return null;var l=s.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,s)=>{var c=l[s+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=s%t.length;return w.createElement(`rect`,{key:`react-${s}`,y:e,x:r,height:u,width:a,stroke:`none`,fill:t[d],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},u)}function Hj(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:i,y:a,width:o,height:s,verticalPoints:c}=e;if(!t||!n||!n.length)return null;var l=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,t)=>{var c=l[t+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=t%n.length;return w.createElement(`rect`,{key:`react-${t}`,x:e,y:a,width:u,height:s,stroke:`none`,fill:n[d],fillOpacity:r,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},u)}var Uj=(e,t)=>{var{xAxis:n,width:r,height:i,offset:a}=e;return Tc(ej(Aj(Aj(Aj({},hj),n),{},{ticks:Ec(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},Wj=(e,t)=>{var{yAxis:n,width:r,height:i,offset:a}=e;return Tc(ej(Aj(Aj(Aj({},hj),n),{},{ticks:Ec(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},Gj={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:`#ccc`,fill:`none`,verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Jm.grid};function Kj(e){var t=Bl(),n=K(),r=G(),i=Aj(Aj({},Kr(e,Gj)),{},{x:R(e.x)?e.x:r.left,y:R(e.y)?e.y:r.top,width:R(e.width)?e.width:r.width,height:R(e.height)?e.height:r.height}),{xAxisId:a,yAxisId:o,x:s,y:c,width:l,height:u,syncWithTicks:d,horizontalValues:f,verticalValues:p}=i,m=sl(),h=B(e=>SC(e,`xAxis`,a,m)),g=B(e=>SC(e,`yAxis`,o,m));if(!gc(l)||!gc(u)||!R(s)||!R(c))return null;var _=i.verticalCoordinatesGenerator||Uj,v=i.horizontalCoordinatesGenerator||Wj,{horizontalPoints:y,verticalPoints:b}=i;if((!y||!y.length)&&typeof v==`function`){var x=f&&f.length,S=v({yAxis:g?Aj(Aj({},g),{},{ticks:x?f:g.ticks}):void 0,width:t??l,height:n??u,offset:r},x?!0:d);hl(Array.isArray(S),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof S}]`),Array.isArray(S)&&(y=S)}if((!b||!b.length)&&typeof _==`function`){var C=p&&p.length,T=_({xAxis:h?Aj(Aj({},h),{},{ticks:C?p:h.ticks}):void 0,width:t??l,height:n??u,offset:r},C?!0:d);hl(Array.isArray(T),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof T}]`),Array.isArray(T)&&(b=T)}return w.createElement(XT,{zIndex:i.zIndex},w.createElement(`g`,{className:`recharts-cartesian-grid`},w.createElement(Lj,{fill:i.fill,fillOpacity:i.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),w.createElement(Vj,Pj({},i,{horizontalPoints:y})),w.createElement(Hj,Pj({},i,{verticalPoints:b})),w.createElement(zj,Pj({},i,{offset:r,horizontalPoints:y,xAxis:h,yAxis:g})),w.createElement(Bj,Pj({},i,{offset:r,verticalPoints:b,xAxis:h,yAxis:g}))))}Kj.displayName=`CartesianGrid`;var qj=xs({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:i}=t.payload;e[n]&&(e[n]=e[n].map(e=>e.dataKey===r.dataKey&&e.direction===r.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(e=>e.dataKey!==r.dataKey||e.direction!==r.direction))}}}),{addErrorBar:Jj,replaceErrorBar:Yj,removeErrorBar:Xj}=qj.actions,Zj=qj.reducer,Qj=[`children`];function $j(e,t){if(e==null)return{};var n,r,i=eM(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r({x:0,y:0,value:0}),errorBarOffset:0});function nM(e){var{children:t}=e,n=$j(e,Qj);return w.createElement(tM.Provider,{value:n},t)}function rM(e,t){var n=B(t=>wx(t,e)),r=B(e=>Dx(e,t)),i=n?.allowDataOverflow??Sx.allowDataOverflow,a=r?.allowDataOverflow??Tx.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function iM(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,i=mA(),{needClipX:a,needClipY:o,needClip:s}=rM(t,n);if(!s||!i)return null;var{x:c,y:l,width:u,height:d}=i;return w.createElement(`clipPath`,{id:`clipPath-${r}`},w.createElement(`rect`,{x:a?c:c-u/2,y:o?l:l-d/2,width:a?u:u*2,height:o?d:d*2}))}var aM=(e,t,n,r)=>TC(e,`xAxis`,t,r),oM=(e,t,n,r)=>wC(e,`xAxis`,t,r),sM=(e,t,n,r)=>TC(e,`yAxis`,n,r),cM=(e,t,n,r)=>wC(e,`yAxis`,n,r),lM=V([J,aM,sM,oM,cM],(e,t,n,r,i)=>wc(e,`xAxis`)?Fc(t,r,!1):Fc(n,i,!1)),uM=(e,t,n,r,i)=>i;function dM(e){return e.type===`line`}var fM=V([J,aM,sM,oM,cM,V([Fx,uM],(e,t)=>e.filter(dM).find(e=>e.id===t)),lM,Tm],(e,t,n,r,i,a,o,s)=>{var{chartData:c,dataStartIndex:l,dataEndIndex:u}=s;if(!(a==null||t==null||n==null||r==null||i==null||r.length===0||i.length===0||o==null||e!==`horizontal`&&e!==`vertical`)){var{dataKey:d,data:f}=a,p=f!=null&&f.length>0?f:c?.slice(l,u+1);if(p!=null)return BM({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:p})}});function pM(e){var t=dt(e),n=3,r=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}var mM=[`id`],hM=[`type`,`layout`,`connectNulls`,`needClip`,`shape`],gM=[`activeDot`,`animateNewValues`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`hide`,`isAnimationActive`,`label`,`legendType`,`xAxisId`,`yAxisId`,`id`];function _M(){return _M=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Lc(n,t),payload:e}]},EM=w.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:xr,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:Lc(o,t),hide:s,type:l,color:r,unit:c,graphicalItemId:u}};return w.createElement(Ck,{tooltipEntrySettings:d})}),DM=(e,t)=>`${t}px ${e}px`;function OM(e,t){for(var n=e.length%2==0?e:[...e,0],r=[],i=0;i{var r=n.reduce((e,t)=>e+t,0);if(!r)return DM(t,e);for(var i=Math.floor(e/r),a=e%r,o=[],s=0,c=0;sa){o=[...n.slice(0,s),a-c];break}}var d=o.length%2==0?[0,t]:[t];return[...OM(n,i),...o,...d].map(e=>`${e}px`).join(`, `)};function AM(e){var{clipPathId:t,points:n,props:r}=e,{dot:i,dataKey:a,needClip:o}=r,{id:s}=r,c=ut(CM(r,mM));return w.createElement(Yk,{points:n,dot:i,className:`recharts-line-dots`,dotClassName:`recharts-line-dot`,dataKey:a,baseProps:c,needClip:o,clipPathId:t})}function jM(e){var{showLabels:t,children:n,points:r}=e,i=(0,w.useMemo)(()=>r?.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return yM(yM({},t),{},{value:e.value,payload:e.payload,viewBox:t,parentViewBox:void 0,fill:void 0})}),[r]);return w.createElement(AO,{value:t?i:void 0},n)}function MM(e){var{clipPathId:t,pathRef:n,points:r,strokeDasharray:i,props:a}=e,{type:o,layout:s,connectNulls:c,needClip:l,shape:u}=a,d=yM(yM({},ft(CM(a,hM))),{},{fill:`none`,className:`recharts-line-curve`,clipPath:l?`url(#clipPath-${t})`:void 0,points:r,type:o,layout:s,connectNulls:c,strokeDasharray:i??a.strokeDasharray});return w.createElement(w.Fragment,null,r?.length>1&&w.createElement(Sk,_M({shapeType:`curve`,option:u},d,{pathRef:n})),w.createElement(AM,{points:r,clipPathId:t,props:a}))}function NM(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function PM(e){var{clipPathId:t,props:n,pathRef:r,previousPointsRef:i,longestAnimatedLengthRef:a}=e,{points:o,strokeDasharray:s,isAnimationActive:c,animationBegin:l,animationDuration:u,animationEasing:d,animateNewValues:f,width:p,height:m,onAnimationEnd:h,onAnimationStart:g}=n,_=i.current,v=_p(o,`recharts-line-`),y=(0,w.useRef)(v),[b,x]=(0,w.useState)(!1),S=!b,C=(0,w.useCallback)(()=>{typeof h==`function`&&h(),x(!1)},[h]),T=(0,w.useCallback)(()=>{typeof g==`function`&&g(),x(!0)},[g]),E=NM(r.current),D=(0,w.useRef)(0);y.current!==v&&(D.current=a.current,y.current=v);var O=D.current;return w.createElement(jM,{points:o,showLabels:S},n.children,w.createElement(gp,{animationId:v,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:C,onAnimationStart:T,key:v},e=>{var l=gr(O,E+O,e),u=Math.min(l,E),d=c?s?kM(u,E,`${s}`.split(/[,\s]+/gim).map(e=>parseFloat(e))):DM(E,u):s==null?void 0:String(s);if(e>0&&E>0&&(i.current=o,a.current=Math.max(a.current,u)),_){var h=_.length/o.length,g=e===1?o:o.map((t,n)=>{var r=Math.floor(n*h);if(_[r]){var i=_[r];return yM(yM({},t),{},{x:gr(i.x,t.x,e),y:gr(i.y,t.y,e)})}return f?yM(yM({},t),{},{x:gr(p*2,t.x,e),y:gr(m/2,t.y,e)}):yM(yM({},t),{},{x:t.x,y:t.y})});return i.current=g,w.createElement(MM,{props:n,points:g,clipPathId:t,pathRef:r,strokeDasharray:d})}return w.createElement(MM,{props:n,points:o,clipPathId:t,pathRef:r,strokeDasharray:d})}),w.createElement(FO,{label:n.label}))}function FM(e){var{clipPathId:t,props:n}=e,r=(0,w.useRef)(null),i=(0,w.useRef)(0),a=(0,w.useRef)(null);return w.createElement(PM,{props:n,clipPathId:t,previousPointsRef:r,longestAnimatedLengthRef:i,pathRef:a})}var IM=(e,t)=>({x:e.x??void 0,y:e.y??void 0,value:e.value,errorVal:Sc(e.payload,t)}),LM=class extends w.Component{render(){var{hide:e,dot:t,points:n,className:r,xAxisId:i,yAxisId:a,top:o,left:s,width:c,height:l,id:u,needClip:d,zIndex:f}=this.props;if(e)return null;var p=L(`recharts-line`,r),m=u,{r:h,strokeWidth:g}=pM(t),_=GO(t),v=h*2+g,y=d?`url(#clipPath-${_?``:`dots-`}${m})`:void 0;return w.createElement(XT,{zIndex:f},w.createElement(Ct,{className:p},d&&w.createElement(`defs`,null,w.createElement(iM,{clipPathId:m,xAxisId:i,yAxisId:a}),!_&&w.createElement(`clipPath`,{id:`clipPath-dots-${m}`},w.createElement(`rect`,{x:s-v/2,y:o-v/2,width:c+v,height:l+v}))),w.createElement(nM,{xAxisId:i,yAxisId:a,data:n,dataPointFormatter:IM,errorBarOffset:0},w.createElement(FM,{props:this.props,clipPathId:m}))),w.createElement(SA,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:y}))}},RM={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!0,fill:`#fff`,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Jm.line,type:`linear`};function zM(e){var t=Kr(e,RM),{activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,connectNulls:s,dot:c,hide:l,isAnimationActive:u,label:d,legendType:f,xAxisId:p,yAxisId:m,id:h}=t,g=CM(t,gM),{needClip:_}=rM(p,m),v=mA(),y=Vl(),b=sl(),x=B(e=>fM(e,p,m,b,h));if(y!==`horizontal`&&y!==`vertical`||x==null||v==null)return null;var{height:S,width:C,x:T,y:E}=v;return w.createElement(LM,_M({},g,{id:h,connectNulls:s,dot:c,activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,isAnimationActive:u,hide:l,label:d,legendType:f,xAxisId:p,yAxisId:m,points:x,layout:y,height:S,width:C,left:T,top:E,needClip:_}))}function BM(e){var{layout:t,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:s,displayedData:c}=e;return c.map((e,c)=>{var l=Sc(e,o);if(t===`horizontal`)return{x:kc({axis:n,ticks:i,bandSize:s,entry:e,index:c}),y:(vr(l)?null:r.scale.map(l))??null,value:l,payload:e};var u=vr(l)?null:n.scale.map(l),d=kc({axis:r,ticks:a,bandSize:s,entry:e,index:c});return u==null||d==null?null:{x:u,y:d,value:l,payload:e}}).filter(Boolean)}function VM(e){var t=Kr(e,RM),n=sl();return w.createElement(Ok,{id:t.id,type:`line`},e=>w.createElement(w.Fragment,null,w.createElement(wk,{legendPayload:TM(t)}),w.createElement(EM,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),w.createElement(Lk,{type:`line`,id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),w.createElement(zM,_M({},t,{id:e}))))}var HM=w.memo(VM,fd);HM.displayName=`Line`;var UM=[`domain`,`range`],WM=[`domain`,`range`];function GM(e,t){if(e==null)return{};var n,r,i=KM(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(o!=null)return eN(eN({},a),{},{type:o})},[a,o]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(nA(s)):n.current!==s&&t(rA({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(iA(n.current)),null)},[t]),null}var sN=e=>{var{xAxisId:t,className:n}=e,r=B(al),i=sl(),a=`xAxis`,o=B(e=>CC(e,a,t,i)),s=B(e=>fC(e,t)),c=B(e=>_C(e,t)),l=B(e=>Cx(e,t));if(s==null||c==null||l==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:f}=e,p=iN(e,XM),{id:m,scale:h}=l,g=iN(l,ZM);return w.createElement(wj,QM({},p,g,{x:c.x,y:c.y,width:s.width,height:s.height,className:L(`recharts-${a} ${a}`,n),viewBox:r,ticks:o,axisType:a,axisId:t}))},cN={allowDataOverflow:Sx.allowDataOverflow,allowDecimals:Sx.allowDecimals,allowDuplicatedCategory:Sx.allowDuplicatedCategory,angle:Sx.angle,axisLine:hj.axisLine,height:Sx.height,hide:!1,includeHidden:Sx.includeHidden,interval:Sx.interval,label:!1,minTickGap:Sx.minTickGap,mirror:Sx.mirror,orientation:Sx.orientation,padding:Sx.padding,reversed:Sx.reversed,scale:Sx.scale,tick:Sx.tick,tickCount:Sx.tickCount,tickLine:hj.tickLine,tickSize:hj.tickSize,type:Sx.type,niceTicks:Sx.niceTicks,xAxisId:0},lN=w.memo(e=>{var t=Kr(e,cN);return w.createElement(w.Fragment,null,w.createElement(oN,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),w.createElement(sN,t))},JM);lN.displayName=`XAxis`;var uN=[`type`],dN=[`dangerouslySetInnerHTML`,`ticks`,`scale`],fN=[`id`,`scale`];function pN(){return pN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(o!=null)return hN(hN({},a),{},{type:o})},[o,a]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(aA(s)):n.current!==s&&t(oA({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(sA(n.current)),null)},[t]),null}function SN(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,w.useRef)(null),o=(0,w.useRef)(null),s=B(al),c=sl(),l=Vi(),u=`yAxis`,d=B(e=>yC(e,t)),f=B(e=>vC(e,t)),p=B(e=>CC(e,u,t,c)),m=B(e=>Ex(e,t));if((0,w.useLayoutEffect)(()=>{if(!(r!==`auto`||!d||pO(i)||(0,w.isValidElement)(i)||m==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(d.width)!==Math.round(n)&&l(dA({id:t,width:n}))}}},[p,d,l,i,t,r,m]),d==null||f==null||m==null)return null;var{dangerouslySetInnerHTML:h,ticks:g,scale:_}=e,v=yN(e,dN),{id:y,scale:b}=m,x=yN(m,fN);return w.createElement(wj,pN({},v,x,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:d.width,height:d.height,className:L(`recharts-${u} ${u}`,n),viewBox:s,ticks:p,axisType:u,axisId:t}))}var CN={allowDataOverflow:Tx.allowDataOverflow,allowDecimals:Tx.allowDecimals,allowDuplicatedCategory:Tx.allowDuplicatedCategory,angle:Tx.angle,axisLine:hj.axisLine,hide:!1,includeHidden:Tx.includeHidden,interval:Tx.interval,label:!1,minTickGap:Tx.minTickGap,mirror:Tx.mirror,orientation:Tx.orientation,padding:Tx.padding,reversed:Tx.reversed,scale:Tx.scale,tick:Tx.tick,tickCount:Tx.tickCount,tickLine:hj.tickLine,tickSize:hj.tickSize,type:Tx.type,niceTicks:Tx.niceTicks,width:Tx.width,yAxisId:0},wN=w.memo(e=>{var t=Kr(e,CN);return w.createElement(w.Fragment,null,w.createElement(xN,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),w.createElement(SN,t))},JM);wN.displayName=`YAxis`;var TN=V([(e,t)=>t,J,mh,Ch,Bw,Hw,xT,rl],NT);function EN(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function DN(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(EN(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var ON=es(`mouseClick`),kN=sc();kN.startListening({actionCreator:ON,effect:(e,t)=>{var n=e.payload,r=TN(t.getState(),DN(n));r?.activeIndex!=null&&t.dispatch(GC({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var AN=es(`mouseMove`),jN=sc(),MN=null,NN=null,PN=null;jN.startListening({actionCreator:AN,effect:(e,t)=>{var n=e.payload,{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i?.includes(`mousemove`);MN!==null&&(cancelAnimationFrame(MN),MN=null),NN!==null&&(typeof r!=`number`||!a)&&(clearTimeout(NN),NN=null),PN=DN(n);var o=()=>{var e=t.getState(),n=AC(e,e.tooltip.settings.shared);if(!PN){MN=null,NN=null;return}if(n===`axis`){var r=TN(e,PN);r?.activeIndex==null?t.dispatch(HC()):t.dispatch(WC({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}MN=null,NN=null};if(!a){o();return}r===`raf`?MN=requestAnimationFrame(o):typeof r==`number`&&NN===null&&(NN=setTimeout(o,r))}});function FN(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var IN={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},LN=xs({name:`rootProps`,initialState:IN,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??IN.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),RN=LN.reducer,{updateOptions:zN}=LN.actions,BN=xs({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),{updatePolarOptions:VN}=BN.actions,HN=BN.reducer,UN=es(`keyDown`),WN=es(`focus`),GN=es(`blur`),KN=sc(),qN=null,JN=null,YN=null;KN.startListening({actionCreator:UN,effect:(e,t)=>{YN=e.payload,qN!==null&&(cancelAnimationFrame(qN),qN=null);var{throttleDelay:n,throttledEvents:r}=t.getState().eventSettings,i=r===`all`||r.includes(`keydown`);JN!==null&&(typeof n!=`number`||!i)&&(clearTimeout(JN),JN=null);var a=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var{keyboardInteraction:n}=e.tooltip,r=YN;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=ow(n,Ow(e),iS(e),Lw(e)),a=i==null?-1:Number(i),o=!Number.isFinite(a)||a<0,s=Hw(e),c=Ow(e),l=AC(e,e.tooltip.settings.shared);if(r===`Enter`){if(o)return;var u=ET(e,l,`hover`,String(n.index));t.dispatch(qC({active:!n.active,activeIndex:n.index,activeCoordinate:u}));return}var d=EC(e)===`left-to-right`?1:-1,f=r===`ArrowRight`?1:-1,p;if(o){var m=iS(e),h=Lw(e),g=f*d,_=e=>({active:!1,index:String(e),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(p=-1,g>0){for(var v=0;v=0;y--)if(ow(_(y),c,m,h)!=null){p=y;break}if(p<0)return}else{p=a+f*d;var b=s?.length||c.length;if(b===0||p>=b||p<0)return}var x=ET(e,l,`hover`,String(p));t.dispatch(qC({active:!0,activeIndex:p.toString(),activeCoordinate:x}))}finally{qN=null,JN=null}};if(!i){a();return}n===`raf`?qN=requestAnimationFrame(a):typeof n==`number`&&JN===null&&(a(),YN=null,JN=setTimeout(()=>{YN?a():(JN=null,qN=null)},n))}}),KN.startListening({actionCreator:WN,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;if(!r.active&&r.index==null){var i=`0`,a=ET(n,AC(n,n.tooltip.settings.shared),`hover`,String(i));t.dispatch(qC({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),KN.startListening({actionCreator:GN,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;r.active&&t.dispatch(qC({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function XN(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var ZN=es(`externalEvent`),QN=sc(),$N=new Map,eP=new Map,tP=new Map;QN.startListening({actionCreator:ZN,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var i=r.type,a=XN(r);tP.set(i,{handler:n,reactEvent:a});var o=$N.get(i);o!==void 0&&(cancelAnimationFrame(o),$N.delete(i));var{throttleDelay:s,throttledEvents:c}=t.getState().eventSettings,l=c,u=l===`all`||l?.includes(i),d=eP.get(i);d!==void 0&&(typeof s!=`number`||!u)&&(clearTimeout(d),eP.delete(i));var f=()=>{var e=tP.get(i);try{if(!e)return;var{handler:n,reactEvent:r}=e,a=t.getState(),o={activeCoordinate:Qw(a),activeDataKey:Yw(a),activeIndex:qw(a),activeLabel:Jw(a),activeTooltipIndex:qw(a),isTooltipActive:$w(a)};n&&n(o,r)}finally{$N.delete(i),eP.delete(i),tP.delete(i)}};if(!u){f();return}if(s===`raf`){var p=requestAnimationFrame(f);$N.set(i,p)}else if(typeof s==`number`){if(!eP.has(i)){f();var m=setTimeout(f,s);eP.set(i,m)}}else f()}}});var nP=V([V([uw],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var{getPosition:i}=r;if(i!=null)return i(t)}}}),rP=es(`touchMove`),iP=sc(),aP=null,oP=null,sP=null,cP=null;iP.startListening({actionCreator:rP,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){cP=XN(n);var{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i.includes(`touchmove`);aP!==null&&(cancelAnimationFrame(aP),aP=null),oP!==null&&(typeof r!=`number`||!a)&&(clearTimeout(oP),oP=null),sP=Array.from(n.touches).map(e=>DN({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var o=()=>{if(cP!=null){var e=t.getState(),n=AC(e,e.tooltip.settings.shared);if(n===`axis`){var r=sP?.[0];if(r==null){aP=null,oP=null;return}var i=TN(e,r);i?.activeIndex!=null&&t.dispatch(WC({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=cP.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(Kc),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=ww(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var{dataKey:u}=l,d=nP(e,s,c);t.dispatch(BC({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}aP=null,oP=null}};if(!a){o();return}r===`raf`?aP=requestAnimationFrame(o):typeof r==`number`&&oP===null&&(o(),cP=null,oP=setTimeout(()=>{cP?o():(oP=null,aP=null)},r))}}});var lP={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},uP=xs({name:`eventSettings`,initialState:lP,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Y(t.payload.throttledEvents))}}}),{setEventSettings:dP}=uP.actions,fP=uP.reducer,pP=Ea({brush:DA,cartesianAxis:fA,chartData:xE,errorBars:Zj,eventSettings:fP,graphicalItems:Ik,layout:mc,legend:qu,options:mE,polarAxis:UO,polarOptions:HN,referenceElements:LA,renderedTicks:aj,rootProps:RN,tooltip:JC,zIndex:YT}),mP=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return ds({reducer:pP,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([kN.middleware,jN.middleware,KN.middleware,QN.middleware,iP.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(ls({type:`raf`}))},devTools:qd.devToolsEnabled&&{serialize:{replacer:FN},name:`recharts-${t}`}})};function hP(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,i=sl(),a=(0,w.useRef)(null);if(i)return n;a.current??=mP(t,r);var o=Ri;return w.createElement(ld,{context:o,store:a.current},n)}function gP(e){var{layout:t,margin:n}=e,r=Vi(),i=sl();return(0,w.useEffect)(()=>{i||(r(dc(t)),r(uc(n)))},[r,i,t,n]),null}var _P=(0,w.memo)(gP,fd);function vP(e){var t=Vi();return(0,w.useEffect)(()=>{t(zN(e))},[t,e]),null}var yP=(0,w.memo)(e=>{var t=Vi();return(0,w.useEffect)(()=>{t(dP(e))},[t,e]),null},fd);function bP(e){var{zIndex:t,isPanorama:n}=e,r=(0,w.useRef)(null),i=Vi();return(0,w.useLayoutEffect)(()=>(r.current&&i(qT({zIndex:t,element:r.current,isPanorama:n})),()=>{i(JT({zIndex:t,isPanorama:n}))}),[i,t,n]),w.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function xP(e){var{children:t,isPanorama:n}=e,r=B(FT);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return w.createElement(w.Fragment,null,i.map(e=>w.createElement(bP,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>w.createElement(bP,{key:e,zIndex:e,isPanorama:n})))}var SP=[`children`];function CP(e,t){if(e==null)return{};var n,r,i=wP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=Bl(),r=K(),i=rf();if(!gc(n)||!gc(r))return null;var{children:a,otherAttributes:o,title:s,desc:c}=e,l,u;return o!=null&&(l=typeof o.tabIndex==`number`?o.tabIndex:i?0:void 0,u=typeof o.role==`string`?o.role:i?`application`:void 0),w.createElement(vt,TP({},o,{title:s,desc:c,role:u,tabIndex:l,width:n,height:r,style:EP,ref:t}),a)}),OP=e=>{var{children:t}=e,n=B(ll);if(!n)return null;var{width:r,height:i,y:a,x:o}=n;return w.createElement(vt,{width:r,height:i,x:o,y:a},t)},kP=(0,w.forwardRef)((e,t)=>{var{children:n}=e,r=CP(e,SP);return sl()?w.createElement(OP,null,w.createElement(xP,{isPanorama:!0},n)):w.createElement(DP,TP({ref:t},r),w.createElement(xP,{isPanorama:!1},n))});function AP(){var e=Vi(),[t,n]=(0,w.useState)(null),r=B(Hc);return(0,w.useEffect)(()=>{if(t!=null){var n=t.getBoundingClientRect().width/t.offsetWidth;W(n)&&n!==r&&e(pc(n))}},[t,e,r]),n}function jP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function MP(e){for(var t=1;t(ME(),null);function RP(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var zP=(0,w.forwardRef)((e,t)=>{var n=(0,w.useRef)(null),[r,i]=(0,w.useState)({containerWidth:RP(e.style?.width),containerHeight:RP(e.style?.height)}),a=(0,w.useCallback)((e,t)=>{i(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),o=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),n.current!=null&&(n.current.disconnect(),n.current=null),e!=null&&typeof ResizeObserver<`u`){var{width:r,height:i}=e.getBoundingClientRect();a(r,i);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var{width:n,height:r}=t.contentRect;a(n,r)}});o.observe(e),n.current=o}},[t,a]);return(0,w.useEffect)(()=>()=>{n.current?.disconnect()},[a]),w.createElement(w.Fragment,null,w.createElement(Gl,{width:r.containerWidth,height:r.containerHeight}),w.createElement(`div`,IP({ref:o},e)))}),BP=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e,[i,a]=(0,w.useState)({containerWidth:RP(n),containerHeight:RP(r)}),o=(0,w.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),s=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var{width:n,height:r}=e.getBoundingClientRect();o(n,r)}},[t,o]);return w.createElement(w.Fragment,null,w.createElement(Gl,{width:i.containerWidth,height:i.containerHeight}),w.createElement(`div`,IP({ref:s},e)))}),VP=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return w.createElement(w.Fragment,null,w.createElement(Gl,{width:n,height:r}),w.createElement(`div`,IP({ref:t},e)))}),HP=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return typeof n==`string`||typeof r==`string`?w.createElement(BP,IP({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?w.createElement(VP,IP({},e,{width:n,height:r,ref:t})):w.createElement(w.Fragment,null,w.createElement(Gl,{width:n,height:r}),w.createElement(`div`,IP({ref:t},e)))});function UP(e){return e?zP:HP}var WP=(0,w.forwardRef)((e,t)=>{var{children:n,className:r,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:c,onMouseEnter:l,onMouseLeave:u,onMouseMove:d,onMouseUp:f,onTouchEnd:p,onTouchMove:m,onTouchStart:h,style:g,width:_,responsive:v,dispatchTouchEvents:y=!0}=e,b=(0,w.useRef)(null),x=Vi(),[S,C]=(0,w.useState)(null),[T,E]=(0,w.useState)(null),D=AP(),O=Pl(),k=O?.width>0?O.width:_,A=O?.height>0?O.height:i,j=(0,w.useCallback)(e=>{D(e),typeof t==`function`&&t(e),C(e),E(e),e!=null&&(b.current=e)},[D,t,C,E]),M=(0,w.useCallback)(e=>{x(ON(e)),x(ZN({handler:a,reactEvent:e}))},[x,a]),N=(0,w.useCallback)(e=>{x(AN(e)),x(ZN({handler:l,reactEvent:e}))},[x,l]),ee=(0,w.useCallback)(e=>{x(HC()),x(ZN({handler:u,reactEvent:e}))},[x,u]),te=(0,w.useCallback)(e=>{x(AN(e)),x(ZN({handler:d,reactEvent:e}))},[x,d]),P=(0,w.useCallback)(()=>{x(WN())},[x]),F=(0,w.useCallback)(()=>{x(GN())},[x]),ne=(0,w.useCallback)(e=>{x(UN(e.key))},[x]),re=(0,w.useCallback)(e=>{x(ZN({handler:o,reactEvent:e}))},[x,o]),ie=(0,w.useCallback)(e=>{x(ZN({handler:s,reactEvent:e}))},[x,s]),ae=(0,w.useCallback)(e=>{x(ZN({handler:c,reactEvent:e}))},[x,c]),oe=(0,w.useCallback)(e=>{x(ZN({handler:f,reactEvent:e}))},[x,f]),se=(0,w.useCallback)(e=>{x(ZN({handler:h,reactEvent:e}))},[x,h]),ce=(0,w.useCallback)(e=>{y&&x(rP(e)),x(ZN({handler:m,reactEvent:e}))},[x,y,m]),le=(0,w.useCallback)(e=>{x(ZN({handler:p,reactEvent:e}))},[x,p]),ue=UP(v);return w.createElement(oE.Provider,{value:S},w.createElement(wt.Provider,{value:T},w.createElement(ue,{width:k??g?.width,height:A??g?.height,className:L(`recharts-wrapper`,r),style:MP({position:`relative`,cursor:`default`,width:k,height:A},g),onClick:M,onContextMenu:re,onDoubleClick:ie,onFocus:P,onBlur:F,onKeyDown:ne,onMouseDown:ae,onMouseEnter:N,onMouseLeave:ee,onMouseMove:te,onMouseUp:oe,onTouchEnd:le,onTouchMove:ce,onTouchStart:se,ref:j},w.createElement(LP,null),n)))}),GP=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function KP(e,t){if(e==null)return{};var n,r,i=qP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{width:n,height:r,responsive:i,children:a,className:o,style:s,compact:c,title:l,desc:u}=e,d=ut(KP(e,GP));return c?w.createElement(w.Fragment,null,w.createElement(Gl,{width:n,height:r}),w.createElement(kP,{otherAttributes:d,title:l,desc:u},a)):w.createElement(WP,{className:o,style:s,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},w.createElement(kP,{otherAttributes:d,title:l,desc:u,ref:t},w.createElement(zA,null,a)))});function YP(){return YP=Object.assign?Object.assign.bind():function(e){for(var t=1;tw.createElement(nF,{chartName:`LineChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:rF,tooltipPayloadSearcher:fE,categoricalChartProps:e,ref:t})),aF=[`#4c8bf5`,`#5ac882`,`#f0a54a`,`#a07cf2`,`#ff8a8a`,`#9dc7ff`,`#ffd666`,`#6ad4c1`];function oF(e){let t=0;for(let n=0;n({name:e,key:`series_${t}`}));for(let r of n){let n=r.name;for(let i of e[n]||[]){let e=new Date(i.t).getTime();t.has(e)||t.set(e,{t:e}),t.get(e)[r.key]=i.health}}return{rows:Array.from(t.values()).sort((e,t)=>e.t-t.t),series:n}}function cF(e){return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function lF({database:e}){let t=ze(),{data:n,loading:r,error:i}=Ae(je(`/api/v1/fleet/health${e&&e!==`all`?`?database=${e}`:``}`,t),6e4);if(r&&!n)return(0,I.jsx)(`div`,{"data-testid":`fleet-health-chart-skeleton`,className:`h-48 rounded animate-pulse`,style:{background:`var(--bg-hover)`}});if(i)return(0,I.jsxs)(`div`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:[`Health history unavailable: `,i]});let{rows:a,series:o}=sF(n?.databases||{});return a.length===0?(0,I.jsx)(`div`,{className:`text-xs`,"data-testid":`fleet-health-chart-empty`,style:{color:`var(--text-secondary)`},children:`No health samples recorded yet for this window.`}):(0,I.jsxs)(`div`,{"data-testid":`fleet-health-chart`,className:`rounded p-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`flex items-center justify-between mb-2`,children:(0,I.jsx)(`h2`,{className:`text-sm font-medium`,style:{color:`var(--text-secondary)`},children:`Fleet Health Over Time`})}),(0,I.jsx)(`div`,{style:{width:`100%`,height:220},children:(0,I.jsx)(Il,{width:`100%`,height:`100%`,children:(0,I.jsxs)(iF,{data:a,children:[(0,I.jsx)(Kj,{strokeDasharray:`3 3`,stroke:`var(--border)`}),(0,I.jsx)(lN,{dataKey:`t`,tickFormatter:cF,tick:{fill:`var(--text-secondary)`,fontSize:11},stroke:`var(--border)`}),(0,I.jsx)(wN,{domain:[0,100],tick:{fill:`var(--text-secondary)`,fontSize:11},stroke:`var(--border)`}),(0,I.jsx)(UE,{labelFormatter:e=>new Date(e).toLocaleString(),contentStyle:{background:`var(--bg-card)`,border:`1px solid var(--border)`,color:`var(--text-primary)`}}),(0,I.jsx)(Ad,{wrapperStyle:{fontSize:11}}),o.map(e=>(0,I.jsx)(HM,{type:`monotone`,dataKey:e.key,name:e.name,stroke:oF(e.name),strokeWidth:2,dot:!1,isAnimationActive:!1},e.key))]})})})]})}function uF({connected:e,error:t}){let n=e?t?`var(--yellow)`:`var(--green)`:`var(--red)`,r=e?t?`Warning`:`Connected`:`Disconnected`;return(0,I.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,role:`status`,"aria-label":r,children:[(0,I.jsx)(`span`,{className:`inline-block w-2.5 h-2.5 rounded-full`,style:{background:n}}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:n},children:r})]})}function dF(e){return e==null?`var(--text-secondary)`:e>=85?`var(--green)`:e>=60?`var(--yellow)`:`var(--red)`}function fF({db:e,selected:t,onSelect:n}){let r=e.status||{},i=r.findings_critical||0,a=r.findings_warning||0,o=r.findings_info||0,s=i===0&&a===0,c=r.trust_level||e.trust_level||null;return(0,I.jsxs)(`button`,{type:`button`,"data-testid":`db-list-item`,onClick:()=>n?.(e.name),className:`rounded p-4 text-left transition-colors`,style:{background:t?`var(--bg-hover)`:`var(--bg-card)`,border:`1px solid ${t?`var(--accent)`:`var(--border)`}`,cursor:`pointer`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,I.jsx)(uF,{connected:r.connected,error:r.error}),(0,I.jsx)(be,{size:14,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{className:`font-medium flex-1 truncate`,style:{color:`var(--text-primary)`},children:e.name})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider`,style:{color:`var(--text-secondary)`},children:`Health`}),(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:dF(r.health_score)},children:r.health_score??`—`})]}),(0,I.jsx)(`div`,{className:`flex-1 flex flex-wrap gap-1`,children:s?(0,I.jsxs)(`span`,{className:`flex items-center gap-1 text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(34,197,94,0.12)`,color:`var(--green)`},children:[(0,I.jsx)(F,{size:11}),` Clean`]}):(0,I.jsxs)(I.Fragment,{children:[i>0&&(0,I.jsxs)(`span`,{className:`flex items-center gap-1 text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(239,68,68,0.15)`,color:`var(--red)`},children:[(0,I.jsx)(we,{size:11}),` `,i,` critical`]}),a>0&&(0,I.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(245,158,11,0.15)`,color:`var(--yellow)`},children:[a,` warning`]}),o>0&&(0,I.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(59,130,246,0.15)`,color:`var(--blue, #3b82f6)`},children:[o,` info`]})]})})]}),c&&(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider`,style:{color:`var(--text-secondary)`},children:mF(c)||c}),(0,I.jsx)(He,{level:c,compact:!0})]})]})}var pF={0:`Observation`,1:`Advisory`,2:`Autonomous`,observation:`Observation`,advisory:`Advisory`,autonomous:`Autonomous`};function mF(e){return e==null||e===``?null:pF[typeof e==`number`?e:String(e).toLowerCase()]||String(e)}function hF({label:e,value:t,color:n,"data-testid":r,badge:i}){let a=t==null;return(0,I.jsxs)(`div`,{className:`rounded p-4 relative`,"data-testid":r,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`text-xs mb-1`,style:{color:`var(--text-secondary)`},children:e}),a?(0,I.jsx)(`div`,{className:`h-7 w-16 rounded animate-pulse`,"data-testid":`stat-card-skeleton`,style:{background:`var(--bg-hover)`}}):(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:n||`var(--text-primary)`},children:t}),i!=null&&i>0&&(0,I.jsxs)(`span`,{"data-testid":`new-since-visit-badge`,className:`absolute top-2 right-2 px-1.5 py-0.5 rounded-full\r - text-xs font-semibold`,style:{background:`var(--red)`,color:`#fff`},children:[`+`,i,` new`]})]})}function gF({summary:e}){if(e.degraded===0&&e.total_critical===0)return(0,I.jsxs)(`div`,{"data-testid":`health-hero`,className:`rounded p-4 flex items-center gap-3`,style:{background:`rgba(34, 197, 94, 0.08)`,border:`1px solid rgba(34, 197, 94, 0.3)`},children:[(0,I.jsx)(F,{size:28,style:{color:`var(--green)`}}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`font-semibold`,style:{color:`var(--green)`},children:`All Systems Healthy`}),(0,I.jsxs)(`div`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:[`pg_sage is monitoring `,e.total_databases,` `,`database(s). No issues detected.`]})]})]});let t=[];e.total_critical>0&&t.push(`${e.total_critical} critical finding`+(e.total_critical>1?`s`:``)),e.degraded>0&&t.push(`${e.degraded} degraded database`+(e.degraded>1?`s`:``));let n=e.total_critical+e.degraded,r=t.length>0?t.join(` across `):`Check findings for details.`;return(0,I.jsxs)(`div`,{"data-testid":`health-hero`,className:`rounded p-4 flex items-center gap-3`,style:{background:e.total_critical>0?`rgba(239, 68, 68, 0.08)`:`rgba(245, 158, 11, 0.08)`,border:e.total_critical>0?`1px solid rgba(239, 68, 68, 0.3)`:`1px solid rgba(245, 158, 11, 0.3)`},children:[(0,I.jsx)(be,{size:28,style:{color:e.total_critical>0?`var(--red)`:`var(--yellow)`}}),(0,I.jsxs)(`div`,{children:[(0,I.jsxs)(`div`,{className:`font-semibold`,style:{color:e.total_critical>0?`var(--red)`:`var(--yellow)`},children:[n,` Issue`,n===1?``:`s`,` `,`Need Attention`]}),(0,I.jsx)(`div`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:r})]})]})}function _F(){return(0,I.jsxs)(`div`,{"data-testid":`onboarding-welcome`,className:`rounded p-8 text-center`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h1`,{className:`text-2xl font-bold mb-2`,style:{color:`var(--text-primary)`},children:`Welcome to pg_sage`}),(0,I.jsxs)(`p`,{className:`mb-6`,style:{color:`var(--text-secondary)`},children:[`Your agentic Postgres DBA.`,` `,`Let's get started.`]}),(0,I.jsxs)(`div`,{className:`space-y-4 text-left max-w-md mx-auto mb-8`,children:[(0,I.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,I.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full\r - flex items-center justify-center text-sm font-bold`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:`1`}),(0,I.jsx)(`div`,{className:`pt-0.5`,children:(0,I.jsx)(`a`,{href:`#/manage-databases`,className:`font-medium underline`,style:{color:`var(--blue, #3b82f6)`},children:`Add your first database`})})]}),(0,I.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,I.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full\r - flex items-center justify-center text-sm font-bold`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:`2`}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2 pt-0.5`,children:[(0,I.jsx)(ie,{size:16,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`pg_sage will automatically start monitoring`})]})]}),(0,I.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,I.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full\r - flex items-center justify-center text-sm font-bold`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:`3`}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2 pt-0.5`,children:[(0,I.jsx)(fe,{size:16,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`Review recommendations as they come in`})]})]})]}),(0,I.jsx)(`a`,{href:`#/manage-databases`,className:`inline-block px-6 py-2 rounded font-medium`,style:{background:`var(--blue, #3b82f6)`,color:`#fff`},children:`Add Database`})]})}function vF({database:e,onSelectDB:t}){let n=e&&e!==`all`?`?database=${e}`:``,{data:r,loading:i,error:a,refetch:o}=Ae(`/api/v1/databases`),s=Ae(`/api/v1/findings${n}${n?`&`:`?`}limit=5`);Fe([`findings`,`health`],o),Fe([`findings`],s.refetch);let[c,l]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pg_sage_findings_visit`);return e?parseInt(e,10):0}catch{return 0}});(0,w.useEffect)(()=>{let e=e=>{e.key===`pg_sage_findings_visit`&&l(parseInt(e.newValue,10)||0)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]);let u=(()=>{let e=s.data?.findings;return!Array.isArray(e)||!c?0:e.filter(e=>{let t=e.first_seen||e.created_at||e.last_seen;return t?new Date(t).getTime()>c:!1}).length})();if(a)return(0,I.jsx)($e,{message:a,onRetry:o});let d=r?.summary,f=r?.databases;return!i&&(!d||d.total_databases===0)?(0,I.jsx)(_F,{}):(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsx)(rt,{}),d&&(0,I.jsx)(gF,{summary:d}),(0,I.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:[(0,I.jsx)(hF,{label:`Databases`,value:d?.total_databases,"data-testid":`stat-databases`}),(0,I.jsx)(hF,{label:`Healthy`,value:d?.healthy,color:`var(--green)`,"data-testid":`stat-healthy`}),(0,I.jsx)(hF,{label:`Degraded`,value:d?.degraded,color:d?.degraded>0?`var(--red)`:`var(--green)`}),(0,I.jsx)(hF,{label:`Critical Findings`,value:d?.total_critical,color:d?.total_critical>0?`var(--red)`:`var(--text-primary)`,badge:u})]}),(0,I.jsx)(lF,{database:e}),(0,I.jsxs)(`div`,{className:`rounded p-4`,"data-testid":`db-list`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Databases`}),i&&!f&&(0,I.jsx)(`div`,{className:`h-24 rounded animate-pulse`,"data-testid":`db-list-skeleton`,style:{background:`var(--bg-hover)`}}),(0,I.jsx)(`div`,{className:`grid gap-3`,"data-testid":`db-tile-grid`,style:{gridTemplateColumns:`repeat(auto-fill, minmax(220px, 1fr))`},children:(f||[]).map(n=>(0,I.jsx)(fF,{db:n,selected:e===n.name,onSelect:t},n.name))})]}),s.data?.findings?.length>0&&(0,I.jsxs)(`div`,{className:`rounded p-4`,"data-testid":`recent-findings`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Recent Recommendations`}),(0,I.jsx)(`div`,{className:`space-y-2`,children:s.data.findings.slice(0,5).map((e,t)=>(0,I.jsxs)(`div`,{className:`flex items-center gap-3 p-2 rounded`,style:{background:`var(--bg-primary)`},children:[(0,I.jsx)(Qe,{severity:e.severity}),(0,I.jsx)(`span`,{className:`flex-1 text-sm`,children:e.title}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:e.database_name})]},t))}),(0,I.jsx)(`a`,{href:`#/findings`,className:`inline-block mt-3 text-sm`,style:{color:`var(--accent)`},children:`View all recommendations`})]})]})}function yF(){return(0,I.jsx)(`div`,{className:`flex items-center justify-center p-12`,children:(0,I.jsx)(`div`,{className:`w-8 h-8 border-2 rounded-full animate-spin`,style:{borderColor:`var(--border)`,borderTopColor:`var(--accent)`}})})}function bF(e){return e&&e!==`all`?`?database=${encodeURIComponent(e)}`:``}function xF(e){return e.case_id||e.id||e.identity_key}function SF(e,t){return e[t]??`n/a`}function CF(e){let t=e.action_candidates?.[0];return t?t.blocked_reason?t.blocked_reason:t.action_type:`No action proposed`}function wF({database:e}){let{data:t,loading:n,error:r,refetch:i}=Ae(`/api/v1/cases${bF(e)}`,3e4);if(n)return(0,I.jsx)(yF,{});if(r)return(0,I.jsx)($e,{message:r,onRetry:i});let a=t?.cases||[];return(0,I.jsxs)(`div`,{className:`space-y-4`,"data-testid":`cases-page`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold`,style:{color:`var(--text-primary)`},children:`Cases`}),(0,I.jsxs)(`p`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:[a.length,` active cases ranked by urgency and actionability.`]})]}),(0,I.jsx)(`div`,{className:`space-y-2`,children:a.map(e=>(0,I.jsxs)(`article`,{className:`rounded border p-3`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`font-medium`,style:{color:`var(--text-primary)`},children:e.title}),(0,I.jsx)(`p`,{className:`text-sm mt-1`,style:{color:`var(--text-secondary)`},children:e.why_now||`not urgent`})]}),(0,I.jsx)(`span`,{className:`text-xs uppercase`,style:{color:`var(--text-secondary)`},children:e.severity})]}),(0,I.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2 text-xs`,style:{color:`var(--text-secondary)`},children:[(0,I.jsxs)(`span`,{children:[`State: `,e.state]}),(0,I.jsxs)(`span`,{children:[`Impact: `,SF(e,`impact_score`)]}),(0,I.jsxs)(`span`,{children:[`Urgency: `,SF(e,`urgency_score`)]}),(0,I.jsxs)(`span`,{children:[`Next: `,(0,I.jsx)(`span`,{children:CF(e)})]})]})]},xF(e)))})]})}var TF=new Set(`SELECT.FROM.WHERE.AND.OR.NOT.NULL.IS.INSERT.INTO.VALUES.UPDATE.SET.DELETE.RETURNING.CREATE.DROP.ALTER.TABLE.INDEX.VIEW.SEQUENCE.CONCURRENTLY.IF.EXISTS.PRIMARY.KEY.FOREIGN.REFERENCES.UNIQUE.ON.USING.BTREE.GIN.GIST.HASH.BRIN.ORDER.BY.GROUP.HAVING.LIMIT.OFFSET.AS.JOIN.LEFT.RIGHT.INNER.OUTER.FULL.CROSS.UNION.INTERSECT.EXCEPT.DISTINCT.CASE.WHEN.THEN.ELSE.END.IN.BETWEEN.LIKE.ILIKE.VACUUM.ANALYZE.REINDEX.CLUSTER.EXPLAIN.BEGIN.COMMIT.ROLLBACK.TRANSACTION.WITH.RECURSIVE.TRUE.FALSE.ASC.DESC.NULLS.FIRST.LAST`.split(`.`)),EF=RegExp(`(--[^\\n]*)|(/\\*[\\s\\S]*?\\*/)|('(?:''|[^'])*')|("(?:""|[^"])*")|(\\b\\d+(?:\\.\\d+)?\\b)|(\\b[A-Za-z_][A-Za-z0-9_]*\\b)|(\\s+)|(.)`,`g`);function DF(e){let t=[],n;for(EF.lastIndex=0;(n=EF.exec(e))!==null;)if(n[1]||n[2])t.push({t:`comment`,v:n[0]});else if(n[3]||n[4])t.push({t:`string`,v:n[0]});else if(n[5])t.push({t:`number`,v:n[0]});else if(n[6]){let e=n[6].toUpperCase();t.push({t:TF.has(e)?`keyword`:`ident`,v:n[0]})}else t.push({t:`text`,v:n[0]});return t}var OF={keyword:`var(--sql-keyword, #60a5fa)`,string:`var(--sql-string, #86efac)`,number:`var(--sql-number, #fbbf24)`,comment:`var(--sql-comment, #6b7280)`,ident:`var(--text-primary)`,text:`var(--text-primary)`};function kF({sql:e}){return(0,I.jsx)(I.Fragment,{children:DF(e).map((e,t)=>(0,I.jsx)(`span`,{style:{color:OF[e.t],fontWeight:e.t===`keyword`?600:400},children:e.v},t))})}function AF({sql:e}){let[t,n]=(0,w.useState)(!1);return e?(0,I.jsxs)(`div`,{className:`relative rounded p-3 text-sm font-mono overflow-x-auto`,style:{background:`var(--bg-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),2e3)},"aria-label":t?`Copied SQL`:`Copy SQL to clipboard`,title:t?`Copied`:`Copy`,className:`absolute top-2 right-2 p-1 rounded`,style:{color:`var(--text-secondary)`},children:t?(0,I.jsx)(N,{size:14}):(0,I.jsx)(ae,{size:14})}),(0,I.jsx)(`pre`,{className:`m-0 whitespace-pre-wrap`,style:{color:`var(--text-primary)`},children:(0,I.jsx)(kF,{sql:e})})]}):null}function jF(e){let[t,n]=(0,w.useState)(!1);return(0,w.useEffect)(()=>{let t=e.current;if(!t)return;let r=()=>{n(t.scrollWidth>t.clientWidth)};r();let i=typeof ResizeObserver<`u`?new ResizeObserver(r):null;return i&&i.observe(t),window.addEventListener(`resize`,r),()=>{i&&i.disconnect(),window.removeEventListener(`resize`,r)}},[e]),t}function MF({columns:e,rows:t,expandable:n,renderExpanded:r,rowKey:i,...a}){let[o,s]=(0,w.useState)(null),c=(0,w.useRef)(null),l=jF(c),u=(e,t)=>i?i(e,t):e&&e.id!=null?e.id:e&&e.finding_id!=null?e.finding_id:t;return(0,I.jsxs)(`div`,{className:`rounded relative`,...a,style:{border:`1px solid var(--border)`},children:[l&&(0,I.jsx)(`div`,{"data-testid":`scroll-hint`,className:`md:hidden absolute top-1 right-2 text-xs\r + ${b.x},${b.y}`,S=vr(e.id)?pr(`recharts-radial-line-`):e.id;return w.createElement(`text`,oO({},r,{dominantBaseline:`central`,className:L(`recharts-radial-bar-label`,o)}),w.createElement(`defs`,null,w.createElement(`path`,{id:S,d:x})),w.createElement(`textPath`,{xlinkHref:`#${S}`},n))},gO=(e,t,n)=>{var{cx:r,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:c}=e,l=(s+c)/2;if(n===`outside`){var{x:u,y:d}=Yp(r,i,o+t,l);return{x:u,y:d,textAnchor:u>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var{x:f,y:p}=Yp(r,i,(a+o)/2,l);return{x:f,y:p,textAnchor:`middle`,verticalAnchor:`middle`}},_O=e=>e!=null&&`cx`in e&&R(e.cx),vO={angle:0,offset:5,zIndex:Jm.label,position:`middle`,textBreakAll:!1};function yO(e){if(!_O(e))return e;var{cx:t,cy:n,outerRadius:r}=e,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function bO(e){var t=Kr(e,vO),{viewBox:n,parentViewBox:r,position:i,value:a,children:o,content:s,className:c=``,textBreakAll:l,labelRef:u}=t,d=dO(),f=lO(),p=n==null?i===`center`?f:d??f:_O(n)?n:Ll(n),m,h,g=yO(p);if(!p||vr(a)&&vr(o)&&!(0,w.isValidElement)(s)&&typeof s!=`function`)return null;var _=nO(nO({},t),{},{viewBox:p});if((0,w.isValidElement)(s)){var{labelRef:v}=_;return(0,w.cloneElement)(s,$D(_,ZD))}if(typeof s==`function`){var{content:y}=_;if(m=(0,w.createElement)(s,$D(_,QD)),(0,w.isValidElement)(m))return m}else m=fO(t);var b=ft(t);if(_O(p)){if(i===`insideStart`||i===`insideEnd`||i===`end`)return hO(t,i,m,b,p);h=gO(p,t.offset,t.position)}else{if(!g)return null;var x=XD({viewBox:g,position:i,offset:t.offset,parentViewBox:_O(r)?void 0:r,clamp:!0});h=nO(nO({x:x.x,y:x.y,textAnchor:x.horizontalAnchor,verticalAnchor:x.verticalAnchor},x.width===void 0?{}:{width:x.width}),x.height===void 0?{}:{height:x.height})}return w.createElement(XT,{zIndex:t.zIndex},w.createElement(WD,oO({ref:u,className:L(`recharts-label`,c)},b,h,{textAnchor:ND(b.textAnchor)?b.textAnchor:h.textAnchor,breakAll:l}),m))}bO.displayName=`Label`;var xO=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?w.createElement(bO,oO({key:`label-implicit`},r)):dr(e)?w.createElement(bO,oO({key:`label-implicit`,value:e},r)):(0,w.isValidElement)(e)?e.type===bO?(0,w.cloneElement)(e,nO({key:`label-implicit`},r)):w.createElement(bO,oO({key:`label-implicit`,content:e},r)):pO(e)?w.createElement(bO,oO({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?w.createElement(bO,oO({},e,{key:`label-implicit`},r)):null};function SO(e){var{label:t,labelRef:n}=e;return xO(t,lO(),n)||null}var CO=[`valueAccessor`],wO=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function TO(){return TO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(PD(t))return t},kO=(0,w.createContext)(void 0),AO=kO.Provider,jO=(0,w.createContext)(void 0);jO.Provider;function MO(){return(0,w.useContext)(kO)}function NO(){return(0,w.useContext)(jO)}function PO(e){var{valueAccessor:t=OO}=e,n=EO(e,CO),{dataKey:r,clockWise:i,id:a,textBreakAll:o,zIndex:s}=n,c=EO(n,wO),l=MO(),u=NO(),d=l||u;return!d||!d.length?null:w.createElement(XT,{zIndex:s??Jm.label},w.createElement(Ct,{className:`recharts-label-list`},d.map((e,i)=>{var s=vr(r)?t(e,i):Sc(e.payload,r),l=vr(a)?{}:{id:`${a}-${i}`};return w.createElement(bO,TO({key:`label-${i}`},ft(e),c,l,{fill:n.fill??e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:o,viewBox:e.viewBox,index:i,zIndex:0}))})))}PO.displayName=`LabelList`;function FO(e){var{label:t}=e;return t?t===!0?w.createElement(PO,{key:`labelList-implicit`}):w.isValidElement(t)||pO(t)?w.createElement(PO,{key:`labelList-implicit`,content:t}):typeof t==`object`?w.createElement(PO,TO({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function IO(){return IO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r,className:i}=e,a=L(`recharts-dot`,i);return R(t)&&R(n)&&R(r)?w.createElement(`circle`,IO({},ut(e),Rr(e),{className:a,cx:t,cy:n,r})):null},RO=xs({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Y(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Y(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:zO,removeRadiusAxis:BO,addAngleAxis:VO,removeAngleAxis:HO}=RO.actions,UO=RO.reducer;function WO(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}var GO=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0,KO=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.isPlainObject=t})),qO=o(((e,t)=>{t.exports=KO().isPlainObject})),JO,YO,XO,ZO,QO;function $O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ek(e){for(var t=1;t{var a=n-r,o=or(JO||=ak([`M `,`,`,``]),e,t);return o+=or(YO||=ak([`L `,`,`,``]),e+n,t),o+=or(XO||=ak([`L `,`,`,``]),e+n-a/2,t+i),o+=or(ZO||=ak([`L `,`,`,``]),e+n-a/2-r,t+i),o+=or(QO||=ak([`L `,`,`,` Z`]),e,t),o},sk={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},ck=e=>{var t=Kr(e,sk),{x:n,y:r,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:c,animationDuration:l,animationBegin:u,isUpdateAnimationActive:d}=t,f=(0,w.useRef)(null),[p,m]=(0,w.useState)(-1),h=(0,w.useRef)(i),g=(0,w.useRef)(a),_=(0,w.useRef)(o),v=(0,w.useRef)(n),y=(0,w.useRef)(r),b=_p(e,`trapezoid-`);if((0,w.useEffect)(()=>{if(f.current&&f.current.getTotalLength)try{var e=f.current.getTotalLength();e&&m(e)}catch{}},[]),n!==+n||r!==+r||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var x=L(`recharts-trapezoid`,s);if(!d)return w.createElement(`g`,null,w.createElement(`path`,ik({},ft(t),{className:x,d:ok(n,r,i,a,o)})));var S=h.current,C=g.current,T=_.current,E=v.current,D=y.current,O=`0px ${p===-1?1:p}px`,k=`${p}px ${p}px`,A=Rf([`strokeDasharray`],l,c);return w.createElement(gp,{animationId:b,key:b,canBegin:p>0,duration:l,easing:c,isActive:d,begin:u},e=>{var s=gr(S,i,e),c=gr(C,a,e),l=gr(T,o,e),u=gr(E,n,e),d=gr(D,r,e);f.current&&(h.current=s,g.current=c,_.current=l,v.current=u,y.current=d);var p=e>0?{transition:A,strokeDasharray:k}:{strokeDasharray:O};return w.createElement(`path`,ik({},ft(t),{className:x,d:ok(u,d,s,c,l),ref:f,style:ek(ek({},p),t.style)}))})},lk=l(qO()),uk=[`option`,`shapeType`,`activeClassName`,`inActiveClassName`];function dk(e,t){if(e==null)return{};var n,r,i=fk(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{r||(i.current===null?n(IC(t)):i.current!==t&&n(LC({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(RC(i.current)),null)},[n]),null}function wk(e){var{legendPayload:t}=e,n=Vi(),r=sl(),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r||(i.current===null?n(Wu(t)):i.current!==t&&n(Gu({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(Ku(i.current)),null)},[n]),null}var Tk=w.useId??(()=>{var[e]=w.useState(()=>pr(`uid-`));return e});function Ek(e,t){var n=Tk();return t||(e?`${e}-${n}`:n)}var Dk=(0,w.createContext)(void 0),Ok=e=>{var{id:t,type:n,children:r}=e,i=Ek(`recharts-${n}`,t);return w.createElement(Dk.Provider,{value:i},r(i))},kk=xs({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Y(t.payload))},prepare:ss()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=qo(e).cartesianItems.indexOf(Y(n));i>-1&&(e.cartesianItems[i]=Y(r))},prepare:ss()},removeCartesianGraphicalItem:{reducer(e,t){var n=qo(e).cartesianItems.indexOf(Y(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:ss()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Y(t.payload))},prepare:ss()},removePolarGraphicalItem:{reducer(e,t){var n=qo(e).polarItems.indexOf(Y(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:ss()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=qo(e).polarItems.indexOf(Y(n));i>-1&&(e.polarItems[i]=Y(r))},prepare:ss()}}}),{addCartesianGraphicalItem:Ak,replaceCartesianGraphicalItem:jk,removeCartesianGraphicalItem:Mk,addPolarGraphicalItem:Nk,removePolarGraphicalItem:Pk,replacePolarGraphicalItem:Fk}=kk.actions,Ik=kk.reducer,Lk=(0,w.memo)(e=>{var t=Vi(),n=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{n.current===null?t(Ak(e)):n.current!==e&&t(jk({prev:n.current,next:e})),n.current=e},[t,e]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(Mk(n.current)),null)},[t]),null}),Rk=[`points`];function zk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Bk(e){for(var t=1;t{var s=Bk(Bk(Bk({r:3},o),d),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return w.createElement(qk,{key:`dot-${r}`,option:n,dotProps:s,className:i})}),p={};return s&&c!=null&&(p.clipPath=`url(#clipPath-${u?``:`dots-`}${c})`),w.createElement(XT,{zIndex:l},w.createElement(Ct,Wk({className:r},p),f))}function Xk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Zk(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),Bc,Vc],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),mA=()=>B(pA),hA=()=>B(eT);function gA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _A(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:r,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s=_A(_A(_A({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),dt(i)),Rr(i)),c=(0,w.isValidElement)(i)?(0,w.cloneElement)(i,s):typeof i==`function`?i(s):w.createElement(LO,s);return w.createElement(Ct,{className:`recharts-active-dot`,clipPath:o},c)};function SA(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:i,clipPath:a,zIndex:o=Jm.activeDot}=e,s=B(qw),c=hA();if(t==null||c==null)return null;var l=t.find(e=>c.includes(e.payload));return vr(l)?null:w.createElement(XT,{zIndex:o},w.createElement(xA,{point:l,childIndex:Number(s),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var CA=e=>{var{chartData:t}=e,n=Vi(),r=sl();return(0,w.useEffect)(()=>r?()=>{}:(n(vE(t)),()=>{n(vE(void 0))}),[t,n,r]),null},wA={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},TA=xs({name:`brush`,initialState:wA,reducers:{setBrushSettings(e,t){return t.payload==null?wA:t.payload}}}),{setBrushSettings:EA}=TA.actions,DA=TA.reducer;function OA(e){return(e%180+180)%180}var kA=function(e){var{width:t,height:n}=e,r=OA(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=qo(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=qo(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(Y(t.payload))},removeLine:(e,t)=>{var n=qo(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:jA,removeDot:MA,addArea:NA,removeArea:PA,addLine:FA,removeLine:IA}=AA.actions,LA=AA.reducer,RA=(0,w.createContext)(void 0),zA=e=>{var{children:t}=e,[n]=(0,w.useState)(`${pr(`recharts`)}-clip`),r=mA();if(r==null)return null;var{x:i,y:a,width:o,height:s}=r;return w.createElement(RA.Provider,{value:n},w.createElement(`defs`,null,w.createElement(`clipPath`,{id:n},w.createElement(`rect`,{x:i,y:a,height:s,width:o}))),t)};function BA(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;re*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function WA(e,t){return BA(e,t+1)}function GA(e,t,n,r,i){for(var a=(r||[]).slice(),{start:o,end:s}=t,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:BA(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||UA(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function KA(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var{start:o,end:s}=t,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||UA(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=JA(JA({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=JA(JA({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&UA(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=JA(JA({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function $A(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,{start:c,end:l}=t;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=JA(JA({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&UA(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=JA(JA({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=JA(JA({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=JA(JA({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&UA(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=JA(JA({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?VA(aD(i,{fontSize:t,letterSpacing:n}),m,d):aD(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?cr(_.coordinate-g.coordinate):1,y=HA(a,v,p);return c===`equidistantPreserveStart`?GA(v,y,h,i,o):c===`equidistantPreserveEnd`?KA(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?$A(v,y,h,i,o,c===`preserveStartEnd`):QA(v,y,h,i,o),f.filter(e=>e.isShow))}var tj=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var s=n?n.getBoundingClientRect().width:0,c=i+a,l=o+c+s+(n?r:0);return Math.round(l)}return 0},nj=xs({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:i}=t.payload;e[n][r]=Y(i)},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:rj,removeRenderedTicks:ij}=nj.actions,aj=nj.reducer,oj=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function sj(e,t){if(e==null)return{};var n,r,i=cj(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;rr==null||n==null?xr:(i(rj({ticks:t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),axisId:r,axisType:n})),()=>{i(ij({axisId:r,axisType:n}))}),[i,t,r,n]),null}var Sj=(0,w.forwardRef)((e,t)=>{var{ticks:n=[],tick:r,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:c,tickTextProps:l,orientation:u,mirror:d,x:f,y:p,width:m,height:h,tickSize:g,tickMargin:_,fontSize:v,letterSpacing:y,getTicksConfig:b,events:x,axisType:S,axisId:C}=e,T=ej(dj(dj({},b),{},{ticks:n}),v,y),E=ut(b),D=dt(r),O=ND(E.textAnchor)?E.textAnchor:vj(u,d),k=yj(u,d),A={};typeof i==`object`&&(A=i);var j=dj(dj({},E),{},{fill:`none`},A),M=T.map(e=>dj({entry:e},_j(e,f,p,m,h,u,g,d,_))),N=M.map(e=>{var{entry:t,line:n}=e;return w.createElement(Ct,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},i&&w.createElement(`line`,lj({},j,n,{className:L(`recharts-cartesian-axis-tick-line`,(0,sr.default)(i,`className`))})))}),ee=M.map((e,t)=>{var{entry:n,tick:i}=e,u=dj(dj({},dj(dj(dj(dj({verticalAnchor:k},E),{},{textAnchor:O,stroke:`none`,fill:a},i),{},{index:t,payload:n,visibleTicksCount:T.length,tickFormatter:o,padding:c},l),{},{angle:l?.angle??E.angle??0})),D);return w.createElement(Ct,lj({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},Br(x,n,t)),r&&w.createElement(bj,{option:r,tickProps:u,value:`${typeof o==`function`?o(n.value,t):n.value}${s||``}`}))});return w.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${S}-ticks`},w.createElement(xj,{ticks:T,axisId:C,axisType:S}),ee.length>0&&w.createElement(XT,{zIndex:Jm.label},w.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${S}-tick-labels`,ref:t},ee)),N.length>0&&w.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${S}-tick-lines`},N))}),Cj=(0,w.forwardRef)((e,t)=>{var{axisLine:n,width:r,height:i,className:a,hide:o,ticks:s,axisType:c,axisId:l}=e,u=sj(e,oj),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(``),h=(0,w.useRef)(null);(0,w.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>tj({ticks:h.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var g=(0,w.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);h.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==d||a!==p)&&(f(i),m(a))}}},[d,p]);return o||r!=null&&r<=0||i!=null&&i<=0?null:w.createElement(XT,{zIndex:e.zIndex},w.createElement(Ct,{className:L(`recharts-cartesian-axis`,a)},w.createElement(gj,{x:e.x,y:e.y,width:r,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:ut(e)}),w.createElement(Sj,{ref:g,axisType:c,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:p,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:l}),w.createElement(cO,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},w.createElement(SO,{label:e.label,labelRef:e.labelRef}),e.children)))}),wj=w.forwardRef((e,t)=>{var n=Kr(e,hj);return w.createElement(Cj,lj({},n,{ref:t}))});wj.displayName=`CartesianAxis`;var Tj=[`x1`,`y1`,`x2`,`y2`,`key`],Ej=[`offset`],Dj=[`xAxisId`,`yAxisId`],Oj=[`xAxisId`,`yAxisId`];function kj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Aj(e){for(var t=1;t{var{fill:t}=e;if(!t||t===`none`)return null;var{fillOpacity:n,x:r,y:i,width:a,height:o,ry:s}=e;return w.createElement(`rect`,{x:r,y:i,ry:s,width:a,height:o,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function Rj(e){var{option:t,lineItemProps:n}=e,r;if(w.isValidElement(t))r=w.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var{x1:i,y1:a,x2:o,y2:s,key:c}=n,l=ut(Fj(n,Tj))??{},{offset:u}=l,d=Fj(l,Ej);r=w.createElement(`line`,Pj({},d,{x1:i,y1:a,x2:o,y2:s,fill:`none`,key:c}))}return r}function zj(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=Fj(e,Dj),c=i.map((e,i)=>{var a=Aj(Aj({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${i}`,index:i});return w.createElement(Rj,{key:`line-${i}`,option:r,lineItemProps:a})});return w.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function Bj(e){var{y:t,height:n,vertical:r=!0,verticalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=Fj(e,Oj),c=i.map((e,i)=>{var a=Aj(Aj({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${i}`,index:i});return w.createElement(Rj,{option:r,lineItemProps:a,key:`line-${i}`})});return w.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function Vj(e){var{horizontalFill:t,fillOpacity:n,x:r,y:i,width:a,height:o,horizontalPoints:s,horizontal:c=!0}=e;if(!c||!t||!t.length||s==null)return null;var l=s.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,s)=>{var c=l[s+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=s%t.length;return w.createElement(`rect`,{key:`react-${s}`,y:e,x:r,height:u,width:a,stroke:`none`,fill:t[d],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},u)}function Hj(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:i,y:a,width:o,height:s,verticalPoints:c}=e;if(!t||!n||!n.length)return null;var l=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,t)=>{var c=l[t+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=t%n.length;return w.createElement(`rect`,{key:`react-${t}`,x:e,y:a,width:u,height:s,stroke:`none`,fill:n[d],fillOpacity:r,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},u)}var Uj=(e,t)=>{var{xAxis:n,width:r,height:i,offset:a}=e;return Tc(ej(Aj(Aj(Aj({},hj),n),{},{ticks:Ec(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},Wj=(e,t)=>{var{yAxis:n,width:r,height:i,offset:a}=e;return Tc(ej(Aj(Aj(Aj({},hj),n),{},{ticks:Ec(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},Gj={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:`#ccc`,fill:`none`,verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Jm.grid};function Kj(e){var t=Bl(),n=K(),r=G(),i=Aj(Aj({},Kr(e,Gj)),{},{x:R(e.x)?e.x:r.left,y:R(e.y)?e.y:r.top,width:R(e.width)?e.width:r.width,height:R(e.height)?e.height:r.height}),{xAxisId:a,yAxisId:o,x:s,y:c,width:l,height:u,syncWithTicks:d,horizontalValues:f,verticalValues:p}=i,m=sl(),h=B(e=>SC(e,`xAxis`,a,m)),g=B(e=>SC(e,`yAxis`,o,m));if(!gc(l)||!gc(u)||!R(s)||!R(c))return null;var _=i.verticalCoordinatesGenerator||Uj,v=i.horizontalCoordinatesGenerator||Wj,{horizontalPoints:y,verticalPoints:b}=i;if((!y||!y.length)&&typeof v==`function`){var x=f&&f.length,S=v({yAxis:g?Aj(Aj({},g),{},{ticks:x?f:g.ticks}):void 0,width:t??l,height:n??u,offset:r},x?!0:d);hl(Array.isArray(S),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof S}]`),Array.isArray(S)&&(y=S)}if((!b||!b.length)&&typeof _==`function`){var C=p&&p.length,T=_({xAxis:h?Aj(Aj({},h),{},{ticks:C?p:h.ticks}):void 0,width:t??l,height:n??u,offset:r},C?!0:d);hl(Array.isArray(T),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof T}]`),Array.isArray(T)&&(b=T)}return w.createElement(XT,{zIndex:i.zIndex},w.createElement(`g`,{className:`recharts-cartesian-grid`},w.createElement(Lj,{fill:i.fill,fillOpacity:i.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),w.createElement(Vj,Pj({},i,{horizontalPoints:y})),w.createElement(Hj,Pj({},i,{verticalPoints:b})),w.createElement(zj,Pj({},i,{offset:r,horizontalPoints:y,xAxis:h,yAxis:g})),w.createElement(Bj,Pj({},i,{offset:r,verticalPoints:b,xAxis:h,yAxis:g}))))}Kj.displayName=`CartesianGrid`;var qj=xs({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:i}=t.payload;e[n]&&(e[n]=e[n].map(e=>e.dataKey===r.dataKey&&e.direction===r.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(e=>e.dataKey!==r.dataKey||e.direction!==r.direction))}}}),{addErrorBar:Jj,replaceErrorBar:Yj,removeErrorBar:Xj}=qj.actions,Zj=qj.reducer,Qj=[`children`];function $j(e,t){if(e==null)return{};var n,r,i=eM(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r({x:0,y:0,value:0}),errorBarOffset:0});function nM(e){var{children:t}=e,n=$j(e,Qj);return w.createElement(tM.Provider,{value:n},t)}function rM(e,t){var n=B(t=>wx(t,e)),r=B(e=>Dx(e,t)),i=n?.allowDataOverflow??Sx.allowDataOverflow,a=r?.allowDataOverflow??Tx.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function iM(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,i=mA(),{needClipX:a,needClipY:o,needClip:s}=rM(t,n);if(!s||!i)return null;var{x:c,y:l,width:u,height:d}=i;return w.createElement(`clipPath`,{id:`clipPath-${r}`},w.createElement(`rect`,{x:a?c:c-u/2,y:o?l:l-d/2,width:a?u:u*2,height:o?d:d*2}))}var aM=(e,t,n,r)=>TC(e,`xAxis`,t,r),oM=(e,t,n,r)=>wC(e,`xAxis`,t,r),sM=(e,t,n,r)=>TC(e,`yAxis`,n,r),cM=(e,t,n,r)=>wC(e,`yAxis`,n,r),lM=V([J,aM,sM,oM,cM],(e,t,n,r,i)=>wc(e,`xAxis`)?Fc(t,r,!1):Fc(n,i,!1)),uM=(e,t,n,r,i)=>i;function dM(e){return e.type===`line`}var fM=V([J,aM,sM,oM,cM,V([Fx,uM],(e,t)=>e.filter(dM).find(e=>e.id===t)),lM,Tm],(e,t,n,r,i,a,o,s)=>{var{chartData:c,dataStartIndex:l,dataEndIndex:u}=s;if(!(a==null||t==null||n==null||r==null||i==null||r.length===0||i.length===0||o==null||e!==`horizontal`&&e!==`vertical`)){var{dataKey:d,data:f}=a,p=f!=null&&f.length>0?f:c?.slice(l,u+1);if(p!=null)return BM({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:p})}});function pM(e){var t=dt(e),n=3,r=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}var mM=[`id`],hM=[`type`,`layout`,`connectNulls`,`needClip`,`shape`],gM=[`activeDot`,`animateNewValues`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`hide`,`isAnimationActive`,`label`,`legendType`,`xAxisId`,`yAxisId`,`id`];function _M(){return _M=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Lc(n,t),payload:e}]},EM=w.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:xr,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:Lc(o,t),hide:s,type:l,color:r,unit:c,graphicalItemId:u}};return w.createElement(Ck,{tooltipEntrySettings:d})}),DM=(e,t)=>`${t}px ${e}px`;function OM(e,t){for(var n=e.length%2==0?e:[...e,0],r=[],i=0;i{var r=n.reduce((e,t)=>e+t,0);if(!r)return DM(t,e);for(var i=Math.floor(e/r),a=e%r,o=[],s=0,c=0;sa){o=[...n.slice(0,s),a-c];break}}var d=o.length%2==0?[0,t]:[t];return[...OM(n,i),...o,...d].map(e=>`${e}px`).join(`, `)};function AM(e){var{clipPathId:t,points:n,props:r}=e,{dot:i,dataKey:a,needClip:o}=r,{id:s}=r,c=ut(CM(r,mM));return w.createElement(Yk,{points:n,dot:i,className:`recharts-line-dots`,dotClassName:`recharts-line-dot`,dataKey:a,baseProps:c,needClip:o,clipPathId:t})}function jM(e){var{showLabels:t,children:n,points:r}=e,i=(0,w.useMemo)(()=>r?.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return yM(yM({},t),{},{value:e.value,payload:e.payload,viewBox:t,parentViewBox:void 0,fill:void 0})}),[r]);return w.createElement(AO,{value:t?i:void 0},n)}function MM(e){var{clipPathId:t,pathRef:n,points:r,strokeDasharray:i,props:a}=e,{type:o,layout:s,connectNulls:c,needClip:l,shape:u}=a,d=yM(yM({},ft(CM(a,hM))),{},{fill:`none`,className:`recharts-line-curve`,clipPath:l?`url(#clipPath-${t})`:void 0,points:r,type:o,layout:s,connectNulls:c,strokeDasharray:i??a.strokeDasharray});return w.createElement(w.Fragment,null,r?.length>1&&w.createElement(Sk,_M({shapeType:`curve`,option:u},d,{pathRef:n})),w.createElement(AM,{points:r,clipPathId:t,props:a}))}function NM(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function PM(e){var{clipPathId:t,props:n,pathRef:r,previousPointsRef:i,longestAnimatedLengthRef:a}=e,{points:o,strokeDasharray:s,isAnimationActive:c,animationBegin:l,animationDuration:u,animationEasing:d,animateNewValues:f,width:p,height:m,onAnimationEnd:h,onAnimationStart:g}=n,_=i.current,v=_p(o,`recharts-line-`),y=(0,w.useRef)(v),[b,x]=(0,w.useState)(!1),S=!b,C=(0,w.useCallback)(()=>{typeof h==`function`&&h(),x(!1)},[h]),T=(0,w.useCallback)(()=>{typeof g==`function`&&g(),x(!0)},[g]),E=NM(r.current),D=(0,w.useRef)(0);y.current!==v&&(D.current=a.current,y.current=v);var O=D.current;return w.createElement(jM,{points:o,showLabels:S},n.children,w.createElement(gp,{animationId:v,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:C,onAnimationStart:T,key:v},e=>{var l=gr(O,E+O,e),u=Math.min(l,E),d=c?s?kM(u,E,`${s}`.split(/[,\s]+/gim).map(e=>parseFloat(e))):DM(E,u):s==null?void 0:String(s);if(e>0&&E>0&&(i.current=o,a.current=Math.max(a.current,u)),_){var h=_.length/o.length,g=e===1?o:o.map((t,n)=>{var r=Math.floor(n*h);if(_[r]){var i=_[r];return yM(yM({},t),{},{x:gr(i.x,t.x,e),y:gr(i.y,t.y,e)})}return f?yM(yM({},t),{},{x:gr(p*2,t.x,e),y:gr(m/2,t.y,e)}):yM(yM({},t),{},{x:t.x,y:t.y})});return i.current=g,w.createElement(MM,{props:n,points:g,clipPathId:t,pathRef:r,strokeDasharray:d})}return w.createElement(MM,{props:n,points:o,clipPathId:t,pathRef:r,strokeDasharray:d})}),w.createElement(FO,{label:n.label}))}function FM(e){var{clipPathId:t,props:n}=e,r=(0,w.useRef)(null),i=(0,w.useRef)(0),a=(0,w.useRef)(null);return w.createElement(PM,{props:n,clipPathId:t,previousPointsRef:r,longestAnimatedLengthRef:i,pathRef:a})}var IM=(e,t)=>({x:e.x??void 0,y:e.y??void 0,value:e.value,errorVal:Sc(e.payload,t)}),LM=class extends w.Component{render(){var{hide:e,dot:t,points:n,className:r,xAxisId:i,yAxisId:a,top:o,left:s,width:c,height:l,id:u,needClip:d,zIndex:f}=this.props;if(e)return null;var p=L(`recharts-line`,r),m=u,{r:h,strokeWidth:g}=pM(t),_=GO(t),v=h*2+g,y=d?`url(#clipPath-${_?``:`dots-`}${m})`:void 0;return w.createElement(XT,{zIndex:f},w.createElement(Ct,{className:p},d&&w.createElement(`defs`,null,w.createElement(iM,{clipPathId:m,xAxisId:i,yAxisId:a}),!_&&w.createElement(`clipPath`,{id:`clipPath-dots-${m}`},w.createElement(`rect`,{x:s-v/2,y:o-v/2,width:c+v,height:l+v}))),w.createElement(nM,{xAxisId:i,yAxisId:a,data:n,dataPointFormatter:IM,errorBarOffset:0},w.createElement(FM,{props:this.props,clipPathId:m}))),w.createElement(SA,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:y}))}},RM={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!0,fill:`#fff`,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Jm.line,type:`linear`};function zM(e){var t=Kr(e,RM),{activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,connectNulls:s,dot:c,hide:l,isAnimationActive:u,label:d,legendType:f,xAxisId:p,yAxisId:m,id:h}=t,g=CM(t,gM),{needClip:_}=rM(p,m),v=mA(),y=Vl(),b=sl(),x=B(e=>fM(e,p,m,b,h));if(y!==`horizontal`&&y!==`vertical`||x==null||v==null)return null;var{height:S,width:C,x:T,y:E}=v;return w.createElement(LM,_M({},g,{id:h,connectNulls:s,dot:c,activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,isAnimationActive:u,hide:l,label:d,legendType:f,xAxisId:p,yAxisId:m,points:x,layout:y,height:S,width:C,left:T,top:E,needClip:_}))}function BM(e){var{layout:t,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:s,displayedData:c}=e;return c.map((e,c)=>{var l=Sc(e,o);if(t===`horizontal`)return{x:kc({axis:n,ticks:i,bandSize:s,entry:e,index:c}),y:(vr(l)?null:r.scale.map(l))??null,value:l,payload:e};var u=vr(l)?null:n.scale.map(l),d=kc({axis:r,ticks:a,bandSize:s,entry:e,index:c});return u==null||d==null?null:{x:u,y:d,value:l,payload:e}}).filter(Boolean)}function VM(e){var t=Kr(e,RM),n=sl();return w.createElement(Ok,{id:t.id,type:`line`},e=>w.createElement(w.Fragment,null,w.createElement(wk,{legendPayload:TM(t)}),w.createElement(EM,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),w.createElement(Lk,{type:`line`,id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),w.createElement(zM,_M({},t,{id:e}))))}var HM=w.memo(VM,fd);HM.displayName=`Line`;var UM=[`domain`,`range`],WM=[`domain`,`range`];function GM(e,t){if(e==null)return{};var n,r,i=KM(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(o!=null)return eN(eN({},a),{},{type:o})},[a,o]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(nA(s)):n.current!==s&&t(rA({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(iA(n.current)),null)},[t]),null}var sN=e=>{var{xAxisId:t,className:n}=e,r=B(al),i=sl(),a=`xAxis`,o=B(e=>CC(e,a,t,i)),s=B(e=>fC(e,t)),c=B(e=>_C(e,t)),l=B(e=>Cx(e,t));if(s==null||c==null||l==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:f}=e,p=iN(e,XM),{id:m,scale:h}=l,g=iN(l,ZM);return w.createElement(wj,QM({},p,g,{x:c.x,y:c.y,width:s.width,height:s.height,className:L(`recharts-${a} ${a}`,n),viewBox:r,ticks:o,axisType:a,axisId:t}))},cN={allowDataOverflow:Sx.allowDataOverflow,allowDecimals:Sx.allowDecimals,allowDuplicatedCategory:Sx.allowDuplicatedCategory,angle:Sx.angle,axisLine:hj.axisLine,height:Sx.height,hide:!1,includeHidden:Sx.includeHidden,interval:Sx.interval,label:!1,minTickGap:Sx.minTickGap,mirror:Sx.mirror,orientation:Sx.orientation,padding:Sx.padding,reversed:Sx.reversed,scale:Sx.scale,tick:Sx.tick,tickCount:Sx.tickCount,tickLine:hj.tickLine,tickSize:hj.tickSize,type:Sx.type,niceTicks:Sx.niceTicks,xAxisId:0},lN=w.memo(e=>{var t=Kr(e,cN);return w.createElement(w.Fragment,null,w.createElement(oN,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),w.createElement(sN,t))},JM);lN.displayName=`XAxis`;var uN=[`type`],dN=[`dangerouslySetInnerHTML`,`ticks`,`scale`],fN=[`id`,`scale`];function pN(){return pN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(o!=null)return hN(hN({},a),{},{type:o})},[o,a]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(aA(s)):n.current!==s&&t(oA({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(sA(n.current)),null)},[t]),null}function SN(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,w.useRef)(null),o=(0,w.useRef)(null),s=B(al),c=sl(),l=Vi(),u=`yAxis`,d=B(e=>yC(e,t)),f=B(e=>vC(e,t)),p=B(e=>CC(e,u,t,c)),m=B(e=>Ex(e,t));if((0,w.useLayoutEffect)(()=>{if(!(r!==`auto`||!d||pO(i)||(0,w.isValidElement)(i)||m==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(d.width)!==Math.round(n)&&l(dA({id:t,width:n}))}}},[p,d,l,i,t,r,m]),d==null||f==null||m==null)return null;var{dangerouslySetInnerHTML:h,ticks:g,scale:_}=e,v=yN(e,dN),{id:y,scale:b}=m,x=yN(m,fN);return w.createElement(wj,pN({},v,x,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:d.width,height:d.height,className:L(`recharts-${u} ${u}`,n),viewBox:s,ticks:p,axisType:u,axisId:t}))}var CN={allowDataOverflow:Tx.allowDataOverflow,allowDecimals:Tx.allowDecimals,allowDuplicatedCategory:Tx.allowDuplicatedCategory,angle:Tx.angle,axisLine:hj.axisLine,hide:!1,includeHidden:Tx.includeHidden,interval:Tx.interval,label:!1,minTickGap:Tx.minTickGap,mirror:Tx.mirror,orientation:Tx.orientation,padding:Tx.padding,reversed:Tx.reversed,scale:Tx.scale,tick:Tx.tick,tickCount:Tx.tickCount,tickLine:hj.tickLine,tickSize:hj.tickSize,type:Tx.type,niceTicks:Tx.niceTicks,width:Tx.width,yAxisId:0},wN=w.memo(e=>{var t=Kr(e,CN);return w.createElement(w.Fragment,null,w.createElement(xN,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),w.createElement(SN,t))},JM);wN.displayName=`YAxis`;var TN=V([(e,t)=>t,J,mh,Ch,Bw,Hw,xT,rl],NT);function EN(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function DN(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(EN(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var ON=es(`mouseClick`),kN=sc();kN.startListening({actionCreator:ON,effect:(e,t)=>{var n=e.payload,r=TN(t.getState(),DN(n));r?.activeIndex!=null&&t.dispatch(GC({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var AN=es(`mouseMove`),jN=sc(),MN=null,NN=null,PN=null;jN.startListening({actionCreator:AN,effect:(e,t)=>{var n=e.payload,{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i?.includes(`mousemove`);MN!==null&&(cancelAnimationFrame(MN),MN=null),NN!==null&&(typeof r!=`number`||!a)&&(clearTimeout(NN),NN=null),PN=DN(n);var o=()=>{var e=t.getState(),n=AC(e,e.tooltip.settings.shared);if(!PN){MN=null,NN=null;return}if(n===`axis`){var r=TN(e,PN);r?.activeIndex==null?t.dispatch(HC()):t.dispatch(WC({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}MN=null,NN=null};if(!a){o();return}r===`raf`?MN=requestAnimationFrame(o):typeof r==`number`&&NN===null&&(NN=setTimeout(o,r))}});function FN(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var IN={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},LN=xs({name:`rootProps`,initialState:IN,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??IN.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),RN=LN.reducer,{updateOptions:zN}=LN.actions,BN=xs({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),{updatePolarOptions:VN}=BN.actions,HN=BN.reducer,UN=es(`keyDown`),WN=es(`focus`),GN=es(`blur`),KN=sc(),qN=null,JN=null,YN=null;KN.startListening({actionCreator:UN,effect:(e,t)=>{YN=e.payload,qN!==null&&(cancelAnimationFrame(qN),qN=null);var{throttleDelay:n,throttledEvents:r}=t.getState().eventSettings,i=r===`all`||r.includes(`keydown`);JN!==null&&(typeof n!=`number`||!i)&&(clearTimeout(JN),JN=null);var a=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var{keyboardInteraction:n}=e.tooltip,r=YN;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=ow(n,Ow(e),iS(e),Lw(e)),a=i==null?-1:Number(i),o=!Number.isFinite(a)||a<0,s=Hw(e),c=Ow(e),l=AC(e,e.tooltip.settings.shared);if(r===`Enter`){if(o)return;var u=ET(e,l,`hover`,String(n.index));t.dispatch(qC({active:!n.active,activeIndex:n.index,activeCoordinate:u}));return}var d=EC(e)===`left-to-right`?1:-1,f=r===`ArrowRight`?1:-1,p;if(o){var m=iS(e),h=Lw(e),g=f*d,_=e=>({active:!1,index:String(e),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(p=-1,g>0){for(var v=0;v=0;y--)if(ow(_(y),c,m,h)!=null){p=y;break}if(p<0)return}else{p=a+f*d;var b=s?.length||c.length;if(b===0||p>=b||p<0)return}var x=ET(e,l,`hover`,String(p));t.dispatch(qC({active:!0,activeIndex:p.toString(),activeCoordinate:x}))}finally{qN=null,JN=null}};if(!i){a();return}n===`raf`?qN=requestAnimationFrame(a):typeof n==`number`&&JN===null&&(a(),YN=null,JN=setTimeout(()=>{YN?a():(JN=null,qN=null)},n))}}),KN.startListening({actionCreator:WN,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;if(!r.active&&r.index==null){var i=`0`,a=ET(n,AC(n,n.tooltip.settings.shared),`hover`,String(i));t.dispatch(qC({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),KN.startListening({actionCreator:GN,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;r.active&&t.dispatch(qC({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function XN(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var ZN=es(`externalEvent`),QN=sc(),$N=new Map,eP=new Map,tP=new Map;QN.startListening({actionCreator:ZN,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var i=r.type,a=XN(r);tP.set(i,{handler:n,reactEvent:a});var o=$N.get(i);o!==void 0&&(cancelAnimationFrame(o),$N.delete(i));var{throttleDelay:s,throttledEvents:c}=t.getState().eventSettings,l=c,u=l===`all`||l?.includes(i),d=eP.get(i);d!==void 0&&(typeof s!=`number`||!u)&&(clearTimeout(d),eP.delete(i));var f=()=>{var e=tP.get(i);try{if(!e)return;var{handler:n,reactEvent:r}=e,a=t.getState(),o={activeCoordinate:Qw(a),activeDataKey:Yw(a),activeIndex:qw(a),activeLabel:Jw(a),activeTooltipIndex:qw(a),isTooltipActive:$w(a)};n&&n(o,r)}finally{$N.delete(i),eP.delete(i),tP.delete(i)}};if(!u){f();return}if(s===`raf`){var p=requestAnimationFrame(f);$N.set(i,p)}else if(typeof s==`number`){if(!eP.has(i)){f();var m=setTimeout(f,s);eP.set(i,m)}}else f()}}});var nP=V([V([uw],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var{getPosition:i}=r;if(i!=null)return i(t)}}}),rP=es(`touchMove`),iP=sc(),aP=null,oP=null,sP=null,cP=null;iP.startListening({actionCreator:rP,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){cP=XN(n);var{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i.includes(`touchmove`);aP!==null&&(cancelAnimationFrame(aP),aP=null),oP!==null&&(typeof r!=`number`||!a)&&(clearTimeout(oP),oP=null),sP=Array.from(n.touches).map(e=>DN({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var o=()=>{if(cP!=null){var e=t.getState(),n=AC(e,e.tooltip.settings.shared);if(n===`axis`){var r=sP?.[0];if(r==null){aP=null,oP=null;return}var i=TN(e,r);i?.activeIndex!=null&&t.dispatch(WC({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=cP.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(Kc),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=ww(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var{dataKey:u}=l,d=nP(e,s,c);t.dispatch(BC({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}aP=null,oP=null}};if(!a){o();return}r===`raf`?aP=requestAnimationFrame(o):typeof r==`number`&&oP===null&&(o(),cP=null,oP=setTimeout(()=>{cP?o():(oP=null,aP=null)},r))}}});var lP={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},uP=xs({name:`eventSettings`,initialState:lP,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Y(t.payload.throttledEvents))}}}),{setEventSettings:dP}=uP.actions,fP=uP.reducer,pP=Ea({brush:DA,cartesianAxis:fA,chartData:xE,errorBars:Zj,eventSettings:fP,graphicalItems:Ik,layout:mc,legend:qu,options:mE,polarAxis:UO,polarOptions:HN,referenceElements:LA,renderedTicks:aj,rootProps:RN,tooltip:JC,zIndex:YT}),mP=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return ds({reducer:pP,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([kN.middleware,jN.middleware,KN.middleware,QN.middleware,iP.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(ls({type:`raf`}))},devTools:qd.devToolsEnabled&&{serialize:{replacer:FN},name:`recharts-${t}`}})};function hP(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,i=sl(),a=(0,w.useRef)(null);if(i)return n;a.current??=mP(t,r);var o=Ri;return w.createElement(ld,{context:o,store:a.current},n)}function gP(e){var{layout:t,margin:n}=e,r=Vi(),i=sl();return(0,w.useEffect)(()=>{i||(r(dc(t)),r(uc(n)))},[r,i,t,n]),null}var _P=(0,w.memo)(gP,fd);function vP(e){var t=Vi();return(0,w.useEffect)(()=>{t(zN(e))},[t,e]),null}var yP=(0,w.memo)(e=>{var t=Vi();return(0,w.useEffect)(()=>{t(dP(e))},[t,e]),null},fd);function bP(e){var{zIndex:t,isPanorama:n}=e,r=(0,w.useRef)(null),i=Vi();return(0,w.useLayoutEffect)(()=>(r.current&&i(qT({zIndex:t,element:r.current,isPanorama:n})),()=>{i(JT({zIndex:t,isPanorama:n}))}),[i,t,n]),w.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function xP(e){var{children:t,isPanorama:n}=e,r=B(FT);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return w.createElement(w.Fragment,null,i.map(e=>w.createElement(bP,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>w.createElement(bP,{key:e,zIndex:e,isPanorama:n})))}var SP=[`children`];function CP(e,t){if(e==null)return{};var n,r,i=wP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=Bl(),r=K(),i=rf();if(!gc(n)||!gc(r))return null;var{children:a,otherAttributes:o,title:s,desc:c}=e,l,u;return o!=null&&(l=typeof o.tabIndex==`number`?o.tabIndex:i?0:void 0,u=typeof o.role==`string`?o.role:i?`application`:void 0),w.createElement(vt,TP({},o,{title:s,desc:c,role:u,tabIndex:l,width:n,height:r,style:EP,ref:t}),a)}),OP=e=>{var{children:t}=e,n=B(ll);if(!n)return null;var{width:r,height:i,y:a,x:o}=n;return w.createElement(vt,{width:r,height:i,x:o,y:a},t)},kP=(0,w.forwardRef)((e,t)=>{var{children:n}=e,r=CP(e,SP);return sl()?w.createElement(OP,null,w.createElement(xP,{isPanorama:!0},n)):w.createElement(DP,TP({ref:t},r),w.createElement(xP,{isPanorama:!1},n))});function AP(){var e=Vi(),[t,n]=(0,w.useState)(null),r=B(Hc);return(0,w.useEffect)(()=>{if(t!=null){var n=t.getBoundingClientRect().width/t.offsetWidth;W(n)&&n!==r&&e(pc(n))}},[t,e,r]),n}function jP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function MP(e){for(var t=1;t(ME(),null);function RP(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var zP=(0,w.forwardRef)((e,t)=>{var n=(0,w.useRef)(null),[r,i]=(0,w.useState)({containerWidth:RP(e.style?.width),containerHeight:RP(e.style?.height)}),a=(0,w.useCallback)((e,t)=>{i(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),o=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),n.current!=null&&(n.current.disconnect(),n.current=null),e!=null&&typeof ResizeObserver<`u`){var{width:r,height:i}=e.getBoundingClientRect();a(r,i);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var{width:n,height:r}=t.contentRect;a(n,r)}});o.observe(e),n.current=o}},[t,a]);return(0,w.useEffect)(()=>()=>{n.current?.disconnect()},[a]),w.createElement(w.Fragment,null,w.createElement(Gl,{width:r.containerWidth,height:r.containerHeight}),w.createElement(`div`,IP({ref:o},e)))}),BP=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e,[i,a]=(0,w.useState)({containerWidth:RP(n),containerHeight:RP(r)}),o=(0,w.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),s=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var{width:n,height:r}=e.getBoundingClientRect();o(n,r)}},[t,o]);return w.createElement(w.Fragment,null,w.createElement(Gl,{width:i.containerWidth,height:i.containerHeight}),w.createElement(`div`,IP({ref:s},e)))}),VP=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return w.createElement(w.Fragment,null,w.createElement(Gl,{width:n,height:r}),w.createElement(`div`,IP({ref:t},e)))}),HP=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return typeof n==`string`||typeof r==`string`?w.createElement(BP,IP({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?w.createElement(VP,IP({},e,{width:n,height:r,ref:t})):w.createElement(w.Fragment,null,w.createElement(Gl,{width:n,height:r}),w.createElement(`div`,IP({ref:t},e)))});function UP(e){return e?zP:HP}var WP=(0,w.forwardRef)((e,t)=>{var{children:n,className:r,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:c,onMouseEnter:l,onMouseLeave:u,onMouseMove:d,onMouseUp:f,onTouchEnd:p,onTouchMove:m,onTouchStart:h,style:g,width:_,responsive:v,dispatchTouchEvents:y=!0}=e,b=(0,w.useRef)(null),x=Vi(),[S,C]=(0,w.useState)(null),[T,E]=(0,w.useState)(null),D=AP(),O=Pl(),k=O?.width>0?O.width:_,A=O?.height>0?O.height:i,j=(0,w.useCallback)(e=>{D(e),typeof t==`function`&&t(e),C(e),E(e),e!=null&&(b.current=e)},[D,t,C,E]),M=(0,w.useCallback)(e=>{x(ON(e)),x(ZN({handler:a,reactEvent:e}))},[x,a]),N=(0,w.useCallback)(e=>{x(AN(e)),x(ZN({handler:l,reactEvent:e}))},[x,l]),ee=(0,w.useCallback)(e=>{x(HC()),x(ZN({handler:u,reactEvent:e}))},[x,u]),te=(0,w.useCallback)(e=>{x(AN(e)),x(ZN({handler:d,reactEvent:e}))},[x,d]),P=(0,w.useCallback)(()=>{x(WN())},[x]),F=(0,w.useCallback)(()=>{x(GN())},[x]),ne=(0,w.useCallback)(e=>{x(UN(e.key))},[x]),re=(0,w.useCallback)(e=>{x(ZN({handler:o,reactEvent:e}))},[x,o]),ie=(0,w.useCallback)(e=>{x(ZN({handler:s,reactEvent:e}))},[x,s]),ae=(0,w.useCallback)(e=>{x(ZN({handler:c,reactEvent:e}))},[x,c]),oe=(0,w.useCallback)(e=>{x(ZN({handler:f,reactEvent:e}))},[x,f]),se=(0,w.useCallback)(e=>{x(ZN({handler:h,reactEvent:e}))},[x,h]),ce=(0,w.useCallback)(e=>{y&&x(rP(e)),x(ZN({handler:m,reactEvent:e}))},[x,y,m]),le=(0,w.useCallback)(e=>{x(ZN({handler:p,reactEvent:e}))},[x,p]),ue=UP(v);return w.createElement(oE.Provider,{value:S},w.createElement(wt.Provider,{value:T},w.createElement(ue,{width:k??g?.width,height:A??g?.height,className:L(`recharts-wrapper`,r),style:MP({position:`relative`,cursor:`default`,width:k,height:A},g),onClick:M,onContextMenu:re,onDoubleClick:ie,onFocus:P,onBlur:F,onKeyDown:ne,onMouseDown:ae,onMouseEnter:N,onMouseLeave:ee,onMouseMove:te,onMouseUp:oe,onTouchEnd:le,onTouchMove:ce,onTouchStart:se,ref:j},w.createElement(LP,null),n)))}),GP=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function KP(e,t){if(e==null)return{};var n,r,i=qP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{width:n,height:r,responsive:i,children:a,className:o,style:s,compact:c,title:l,desc:u}=e,d=ut(KP(e,GP));return c?w.createElement(w.Fragment,null,w.createElement(Gl,{width:n,height:r}),w.createElement(kP,{otherAttributes:d,title:l,desc:u},a)):w.createElement(WP,{className:o,style:s,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},w.createElement(kP,{otherAttributes:d,title:l,desc:u,ref:t},w.createElement(zA,null,a)))});function YP(){return YP=Object.assign?Object.assign.bind():function(e){for(var t=1;tw.createElement(nF,{chartName:`LineChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:rF,tooltipPayloadSearcher:fE,categoricalChartProps:e,ref:t})),aF=[`#4c8bf5`,`#5ac882`,`#f0a54a`,`#a07cf2`,`#ff8a8a`,`#9dc7ff`,`#ffd666`,`#6ad4c1`];function oF(e){let t=0;for(let n=0;n({name:e,key:`series_${t}`}));for(let r of n){let n=r.name;for(let i of e[n]||[]){let e=new Date(i.t).getTime();t.has(e)||t.set(e,{t:e}),t.get(e)[r.key]=i.health}}return{rows:Array.from(t.values()).sort((e,t)=>e.t-t.t),series:n}}function cF(e){return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function lF({database:e}){let t=ze(),{data:n,loading:r,error:i}=Ae(je(`/api/v1/fleet/health${e&&e!==`all`?`?database=${e}`:``}`,t),6e4);if(r&&!n)return(0,I.jsx)(`div`,{"data-testid":`fleet-health-chart-skeleton`,className:`h-48 rounded animate-pulse`,style:{background:`var(--bg-hover)`}});if(i)return(0,I.jsxs)(`div`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:[`Health history unavailable: `,i]});let{rows:a,series:o}=sF(n?.databases||{});return a.length===0?(0,I.jsx)(`div`,{className:`text-xs`,"data-testid":`fleet-health-chart-empty`,style:{color:`var(--text-secondary)`},children:`No health samples recorded yet for this window.`}):(0,I.jsxs)(`div`,{"data-testid":`fleet-health-chart`,className:`rounded p-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`flex items-center justify-between mb-2`,children:(0,I.jsx)(`h2`,{className:`text-sm font-medium`,style:{color:`var(--text-secondary)`},children:`Fleet Health Over Time`})}),(0,I.jsx)(`div`,{style:{width:`100%`,height:220},children:(0,I.jsx)(Il,{width:`100%`,height:`100%`,children:(0,I.jsxs)(iF,{data:a,children:[(0,I.jsx)(Kj,{strokeDasharray:`3 3`,stroke:`var(--border)`}),(0,I.jsx)(lN,{dataKey:`t`,tickFormatter:cF,tick:{fill:`var(--text-secondary)`,fontSize:11},stroke:`var(--border)`}),(0,I.jsx)(wN,{domain:[0,100],tick:{fill:`var(--text-secondary)`,fontSize:11},stroke:`var(--border)`}),(0,I.jsx)(UE,{labelFormatter:e=>new Date(e).toLocaleString(),contentStyle:{background:`var(--bg-card)`,border:`1px solid var(--border)`,color:`var(--text-primary)`}}),(0,I.jsx)(Ad,{wrapperStyle:{fontSize:11}}),o.map(e=>(0,I.jsx)(HM,{type:`monotone`,dataKey:e.key,name:e.name,stroke:oF(e.name),strokeWidth:2,dot:!1,isAnimationActive:!1},e.key))]})})})]})}function uF({connected:e,error:t}){let n=e?t?`var(--yellow)`:`var(--green)`:`var(--red)`,r=e?t?`Warning`:`Connected`:`Disconnected`;return(0,I.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,role:`status`,"aria-label":r,children:[(0,I.jsx)(`span`,{className:`inline-block w-2.5 h-2.5 rounded-full`,style:{background:n}}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:n},children:r})]})}function dF(e){return e==null?`var(--text-secondary)`:e>=85?`var(--green)`:e>=60?`var(--yellow)`:`var(--red)`}function fF({db:e,selected:t,onSelect:n}){let r=e.status||{},i=r.findings_critical||0,a=r.findings_warning||0,o=r.findings_info||0,s=i===0&&a===0,c=r.trust_level||e.trust_level||null;return(0,I.jsxs)(`button`,{type:`button`,"data-testid":`db-list-item`,onClick:()=>n?.(e.name),className:`rounded p-4 text-left transition-colors`,style:{background:t?`var(--bg-hover)`:`var(--bg-card)`,border:`1px solid ${t?`var(--accent)`:`var(--border)`}`,cursor:`pointer`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,I.jsx)(uF,{connected:r.connected,error:r.error}),(0,I.jsx)(be,{size:14,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{className:`font-medium flex-1 truncate`,style:{color:`var(--text-primary)`},children:e.name})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider`,style:{color:`var(--text-secondary)`},children:`Health`}),(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:dF(r.health_score)},children:r.health_score??`—`})]}),(0,I.jsx)(`div`,{className:`flex-1 flex flex-wrap gap-1`,children:s?(0,I.jsxs)(`span`,{className:`flex items-center gap-1 text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(34,197,94,0.12)`,color:`var(--green)`},children:[(0,I.jsx)(F,{size:11}),` Clean`]}):(0,I.jsxs)(I.Fragment,{children:[i>0&&(0,I.jsxs)(`span`,{className:`flex items-center gap-1 text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(239,68,68,0.15)`,color:`var(--red)`},children:[(0,I.jsx)(we,{size:11}),` `,i,` critical`]}),a>0&&(0,I.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(245,158,11,0.15)`,color:`var(--yellow)`},children:[a,` warning`]}),o>0&&(0,I.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`rgba(59,130,246,0.15)`,color:`var(--blue, #3b82f6)`},children:[o,` info`]})]})})]}),c&&(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider`,style:{color:`var(--text-secondary)`},children:mF(c)||c}),(0,I.jsx)(He,{level:c,compact:!0})]})]})}var pF={0:`Observation`,1:`Advisory`,2:`Autonomous`,observation:`Observation`,advisory:`Advisory`,autonomous:`Autonomous`};function mF(e){return e==null||e===``?null:pF[typeof e==`number`?e:String(e).toLowerCase()]||String(e)}function hF({label:e,value:t,color:n,"data-testid":r,badge:i}){let a=t==null;return(0,I.jsxs)(`div`,{className:`rounded p-4 relative`,"data-testid":r,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`text-xs mb-1`,style:{color:`var(--text-secondary)`},children:e}),a?(0,I.jsx)(`div`,{className:`h-7 w-16 rounded animate-pulse`,"data-testid":`stat-card-skeleton`,style:{background:`var(--bg-hover)`}}):(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:n||`var(--text-primary)`},children:t}),i!=null&&i>0&&(0,I.jsxs)(`span`,{"data-testid":`new-since-visit-badge`,className:`absolute top-2 right-2 px-1.5 py-0.5 rounded-full + text-xs font-semibold`,style:{background:`var(--red)`,color:`#fff`},children:[`+`,i,` new`]})]})}function gF({summary:e}){if(e.degraded===0&&e.total_critical===0)return(0,I.jsxs)(`div`,{"data-testid":`health-hero`,className:`rounded p-4 flex items-center gap-3`,style:{background:`rgba(34, 197, 94, 0.08)`,border:`1px solid rgba(34, 197, 94, 0.3)`},children:[(0,I.jsx)(F,{size:28,style:{color:`var(--green)`}}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`font-semibold`,style:{color:`var(--green)`},children:`All Systems Healthy`}),(0,I.jsxs)(`div`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:[`pg_sage is monitoring `,e.total_databases,` `,`database(s). No issues detected.`]})]})]});let t=[];e.total_critical>0&&t.push(`${e.total_critical} critical finding`+(e.total_critical>1?`s`:``)),e.degraded>0&&t.push(`${e.degraded} degraded database`+(e.degraded>1?`s`:``));let n=e.total_critical+e.degraded,r=t.length>0?t.join(` across `):`Check findings for details.`;return(0,I.jsxs)(`div`,{"data-testid":`health-hero`,className:`rounded p-4 flex items-center gap-3`,style:{background:e.total_critical>0?`rgba(239, 68, 68, 0.08)`:`rgba(245, 158, 11, 0.08)`,border:e.total_critical>0?`1px solid rgba(239, 68, 68, 0.3)`:`1px solid rgba(245, 158, 11, 0.3)`},children:[(0,I.jsx)(be,{size:28,style:{color:e.total_critical>0?`var(--red)`:`var(--yellow)`}}),(0,I.jsxs)(`div`,{children:[(0,I.jsxs)(`div`,{className:`font-semibold`,style:{color:e.total_critical>0?`var(--red)`:`var(--yellow)`},children:[n,` Issue`,n===1?``:`s`,` `,`Need Attention`]}),(0,I.jsx)(`div`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:r})]})]})}function _F(){return(0,I.jsxs)(`div`,{"data-testid":`onboarding-welcome`,className:`rounded p-8 text-center`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h1`,{className:`text-2xl font-bold mb-2`,style:{color:`var(--text-primary)`},children:`Welcome to pg_sage`}),(0,I.jsxs)(`p`,{className:`mb-6`,style:{color:`var(--text-secondary)`},children:[`Your agentic Postgres DBA.`,` `,`Let's get started.`]}),(0,I.jsxs)(`div`,{className:`space-y-4 text-left max-w-md mx-auto mb-8`,children:[(0,I.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,I.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full + flex items-center justify-center text-sm font-bold`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:`1`}),(0,I.jsx)(`div`,{className:`pt-0.5`,children:(0,I.jsx)(`a`,{href:`#/manage-databases`,className:`font-medium underline`,style:{color:`var(--blue, #3b82f6)`},children:`Add your first database`})})]}),(0,I.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,I.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full + flex items-center justify-center text-sm font-bold`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:`2`}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2 pt-0.5`,children:[(0,I.jsx)(ie,{size:16,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`pg_sage will automatically start monitoring`})]})]}),(0,I.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,I.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full + flex items-center justify-center text-sm font-bold`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:`3`}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2 pt-0.5`,children:[(0,I.jsx)(fe,{size:16,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`Review recommendations as they come in`})]})]})]}),(0,I.jsx)(`a`,{href:`#/manage-databases`,className:`inline-block px-6 py-2 rounded font-medium`,style:{background:`var(--blue, #3b82f6)`,color:`#fff`},children:`Add Database`})]})}function vF({database:e,onSelectDB:t}){let n=e&&e!==`all`?`?database=${e}`:``,{data:r,loading:i,error:a,refetch:o}=Ae(`/api/v1/databases`),s=Ae(`/api/v1/findings${n}${n?`&`:`?`}limit=5`);Fe([`findings`,`health`],o),Fe([`findings`],s.refetch);let[c,l]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pg_sage_findings_visit`);return e?parseInt(e,10):0}catch{return 0}});(0,w.useEffect)(()=>{let e=e=>{e.key===`pg_sage_findings_visit`&&l(parseInt(e.newValue,10)||0)};return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]);let u=(()=>{let e=s.data?.findings;return!Array.isArray(e)||!c?0:e.filter(e=>{let t=e.first_seen||e.created_at||e.last_seen;return t?new Date(t).getTime()>c:!1}).length})();if(a)return(0,I.jsx)($e,{message:a,onRetry:o});let d=r?.summary,f=r?.databases;return!i&&(!d||d.total_databases===0)?(0,I.jsx)(_F,{}):(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsx)(rt,{}),d&&(0,I.jsx)(gF,{summary:d}),(0,I.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:[(0,I.jsx)(hF,{label:`Databases`,value:d?.total_databases,"data-testid":`stat-databases`}),(0,I.jsx)(hF,{label:`Healthy`,value:d?.healthy,color:`var(--green)`,"data-testid":`stat-healthy`}),(0,I.jsx)(hF,{label:`Degraded`,value:d?.degraded,color:d?.degraded>0?`var(--red)`:`var(--green)`}),(0,I.jsx)(hF,{label:`Critical Findings`,value:d?.total_critical,color:d?.total_critical>0?`var(--red)`:`var(--text-primary)`,badge:u})]}),(0,I.jsx)(lF,{database:e}),(0,I.jsxs)(`div`,{className:`rounded p-4`,"data-testid":`db-list`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Databases`}),i&&!f&&(0,I.jsx)(`div`,{className:`h-24 rounded animate-pulse`,"data-testid":`db-list-skeleton`,style:{background:`var(--bg-hover)`}}),(0,I.jsx)(`div`,{className:`grid gap-3`,"data-testid":`db-tile-grid`,style:{gridTemplateColumns:`repeat(auto-fill, minmax(220px, 1fr))`},children:(f||[]).map(n=>(0,I.jsx)(fF,{db:n,selected:e===n.name,onSelect:t},n.name))})]}),s.data?.findings?.length>0&&(0,I.jsxs)(`div`,{className:`rounded p-4`,"data-testid":`recent-findings`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Recent Recommendations`}),(0,I.jsx)(`div`,{className:`space-y-2`,children:s.data.findings.slice(0,5).map((e,t)=>(0,I.jsxs)(`div`,{className:`flex items-center gap-3 p-2 rounded`,style:{background:`var(--bg-primary)`},children:[(0,I.jsx)(Qe,{severity:e.severity}),(0,I.jsx)(`span`,{className:`flex-1 text-sm`,children:e.title}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:e.database_name})]},t))}),(0,I.jsx)(`a`,{href:`#/findings`,className:`inline-block mt-3 text-sm`,style:{color:`var(--accent)`},children:`View all recommendations`})]})]})}function yF(){return(0,I.jsx)(`div`,{className:`flex items-center justify-center p-12`,children:(0,I.jsx)(`div`,{className:`w-8 h-8 border-2 rounded-full animate-spin`,style:{borderColor:`var(--border)`,borderTopColor:`var(--accent)`}})})}function bF(e){return e&&e!==`all`?`?database=${encodeURIComponent(e)}`:``}function xF(e){return e.case_id||e.id||e.identity_key}function SF(e,t){return e[t]??`n/a`}function CF(e){let t=e.action_candidates?.[0];return t?t.blocked_reason?t.blocked_reason:t.action_type:`No action proposed`}function wF({database:e}){let{data:t,loading:n,error:r,refetch:i}=Ae(`/api/v1/cases${bF(e)}`,3e4);if(n)return(0,I.jsx)(yF,{});if(r)return(0,I.jsx)($e,{message:r,onRetry:i});let a=t?.cases||[];return(0,I.jsxs)(`div`,{className:`space-y-4`,"data-testid":`cases-page`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold`,style:{color:`var(--text-primary)`},children:`Cases`}),(0,I.jsxs)(`p`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:[a.length,` active cases ranked by urgency and actionability.`]})]}),(0,I.jsx)(`div`,{className:`space-y-2`,children:a.map(e=>(0,I.jsxs)(`article`,{className:`rounded border p-3`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`font-medium`,style:{color:`var(--text-primary)`},children:e.title}),(0,I.jsx)(`p`,{className:`text-sm mt-1`,style:{color:`var(--text-secondary)`},children:e.why_now||`not urgent`})]}),(0,I.jsx)(`span`,{className:`text-xs uppercase`,style:{color:`var(--text-secondary)`},children:e.severity})]}),(0,I.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2 text-xs`,style:{color:`var(--text-secondary)`},children:[(0,I.jsxs)(`span`,{children:[`State: `,e.state]}),(0,I.jsxs)(`span`,{children:[`Impact: `,SF(e,`impact_score`)]}),(0,I.jsxs)(`span`,{children:[`Urgency: `,SF(e,`urgency_score`)]}),(0,I.jsxs)(`span`,{children:[`Next: `,(0,I.jsx)(`span`,{children:CF(e)})]})]})]},xF(e)))})]})}var TF=new Set(`SELECT.FROM.WHERE.AND.OR.NOT.NULL.IS.INSERT.INTO.VALUES.UPDATE.SET.DELETE.RETURNING.CREATE.DROP.ALTER.TABLE.INDEX.VIEW.SEQUENCE.CONCURRENTLY.IF.EXISTS.PRIMARY.KEY.FOREIGN.REFERENCES.UNIQUE.ON.USING.BTREE.GIN.GIST.HASH.BRIN.ORDER.BY.GROUP.HAVING.LIMIT.OFFSET.AS.JOIN.LEFT.RIGHT.INNER.OUTER.FULL.CROSS.UNION.INTERSECT.EXCEPT.DISTINCT.CASE.WHEN.THEN.ELSE.END.IN.BETWEEN.LIKE.ILIKE.VACUUM.ANALYZE.REINDEX.CLUSTER.EXPLAIN.BEGIN.COMMIT.ROLLBACK.TRANSACTION.WITH.RECURSIVE.TRUE.FALSE.ASC.DESC.NULLS.FIRST.LAST`.split(`.`)),EF=RegExp(`(--[^\\n]*)|(/\\*[\\s\\S]*?\\*/)|('(?:''|[^'])*')|("(?:""|[^"])*")|(\\b\\d+(?:\\.\\d+)?\\b)|(\\b[A-Za-z_][A-Za-z0-9_]*\\b)|(\\s+)|(.)`,`g`);function DF(e){let t=[],n;for(EF.lastIndex=0;(n=EF.exec(e))!==null;)if(n[1]||n[2])t.push({t:`comment`,v:n[0]});else if(n[3]||n[4])t.push({t:`string`,v:n[0]});else if(n[5])t.push({t:`number`,v:n[0]});else if(n[6]){let e=n[6].toUpperCase();t.push({t:TF.has(e)?`keyword`:`ident`,v:n[0]})}else t.push({t:`text`,v:n[0]});return t}var OF={keyword:`var(--sql-keyword, #60a5fa)`,string:`var(--sql-string, #86efac)`,number:`var(--sql-number, #fbbf24)`,comment:`var(--sql-comment, #6b7280)`,ident:`var(--text-primary)`,text:`var(--text-primary)`};function kF({sql:e}){return(0,I.jsx)(I.Fragment,{children:DF(e).map((e,t)=>(0,I.jsx)(`span`,{style:{color:OF[e.t],fontWeight:e.t===`keyword`?600:400},children:e.v},t))})}function AF({sql:e}){let[t,n]=(0,w.useState)(!1);return e?(0,I.jsxs)(`div`,{className:`relative rounded p-3 text-sm font-mono overflow-x-auto`,style:{background:`var(--bg-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),2e3)},"aria-label":t?`Copied SQL`:`Copy SQL to clipboard`,title:t?`Copied`:`Copy`,className:`absolute top-2 right-2 p-1 rounded`,style:{color:`var(--text-secondary)`},children:t?(0,I.jsx)(N,{size:14}):(0,I.jsx)(ae,{size:14})}),(0,I.jsx)(`pre`,{className:`m-0 whitespace-pre-wrap`,style:{color:`var(--text-primary)`},children:(0,I.jsx)(kF,{sql:e})})]}):null}function jF(e){let[t,n]=(0,w.useState)(!1);return(0,w.useEffect)(()=>{let t=e.current;if(!t)return;let r=()=>{n(t.scrollWidth>t.clientWidth)};r();let i=typeof ResizeObserver<`u`?new ResizeObserver(r):null;return i&&i.observe(t),window.addEventListener(`resize`,r),()=>{i&&i.disconnect(),window.removeEventListener(`resize`,r)}},[e]),t}function MF({columns:e,rows:t,expandable:n,renderExpanded:r,rowKey:i,...a}){let[o,s]=(0,w.useState)(null),c=(0,w.useRef)(null),l=jF(c),u=(e,t)=>i?i(e,t):e&&e.id!=null?e.id:e&&e.finding_id!=null?e.finding_id:t;return(0,I.jsxs)(`div`,{className:`rounded relative`,...a,style:{border:`1px solid var(--border)`},children:[l&&(0,I.jsx)(`div`,{"data-testid":`scroll-hint`,className:`md:hidden absolute top-1 right-2 text-xs pointer-events-none px-1.5 py-0.5 rounded z-10`,style:{background:`var(--bg-hover)`,color:`var(--text-secondary)`},children:`← scroll →`}),(0,I.jsx)(`div`,{ref:c,className:`overflow-x-auto`,children:(0,I.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{style:{background:`var(--bg-card)`},children:[n&&(0,I.jsx)(`th`,{className:`w-8 p-2`}),e.map(e=>(0,I.jsx)(`th`,{className:`p-2 text-left font-medium`,style:{color:`var(--text-secondary)`},children:e.label},e.key))]})}),(0,I.jsx)(`tbody`,{children:t.map((t,i)=>{let a=u(t,i),c=o===a;return(0,I.jsxs)(w.Fragment,{children:[(0,I.jsxs)(`tr`,{"data-row-key":String(a),className:n?`cursor-pointer`:``,style:{borderTop:`1px solid var(--border)`,background:c?`var(--bg-hover)`:`transparent`},onClick:()=>n&&s(c?null:a),children:[n&&(0,I.jsx)(`td`,{className:`p-2`,children:(0,I.jsx)(`button`,{type:`button`,"aria-label":c?`Collapse row`:`Expand row`,"aria-expanded":c,"data-testid":`row-expander`,className:`p-1 rounded`,onClick:e=>{e.stopPropagation(),s(c?null:a)},onKeyDown:e=>{e.key!==`Enter`&&e.key!==` `||(e.stopPropagation(),e.preventDefault(),s(c?null:a))},style:{color:`var(--text-secondary)`},children:c?(0,I.jsx)(ee,{size:14}):(0,I.jsx)(te,{size:14})})}),e.map(e=>(0,I.jsx)(`td`,{className:`p-2`,style:{color:`var(--text-primary)`},children:e.render?e.render(t):t[e.key]},e.key))]}),n&&c&&r&&(0,I.jsx)(`tr`,{children:(0,I.jsx)(`td`,{colSpan:e.length+1,className:`p-4`,style:{background:`var(--bg-hover)`},children:r(t)})})]},a)})})]})})]})}function NF(e){return e<60?`${e}s ago`:e<3600?`${Math.floor(e/60)}m ago`:e<86400?`${Math.floor(e/3600)}h ago`:`${Math.floor(e/86400)}d ago`}function PF({timestamp:e}){let[t]=(0,w.useState)(()=>Date.now());return e?(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:NF(Math.floor((t-new Date(e).getTime())/1e3))}):(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`--`})}function FF({timestamp:e,tickMs:t=15e3}){let[n,r]=(0,w.useState)(()=>Date.now());if((0,w.useEffect)(()=>{if(!e)return;let n=setInterval(()=>r(Date.now()),t);return()=>clearInterval(n)},[e,t]),!e)return(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`--`});let i=Math.floor((n-new Date(e).getTime())/1e3);return(0,I.jsx)(`span`,{"data-testid":`live-time-ago`,style:{color:`var(--text-secondary)`},children:NF(i)})}function IF({message:e,action:t,actionLabel:n,icon:r}){return(0,I.jsxs)(`div`,{className:`flex flex-col items-center justify-center p-12 text-center gap-3`,children:[(0,I.jsx)(r||ue,{size:32,style:{color:`var(--text-secondary)`,opacity:.5}}),(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:e||`No data available`}),t&&n&&(0,I.jsx)(`a`,{href:t,className:`px-4 py-2 rounded text-sm font-medium mt-2`,style:{background:`var(--accent)`,color:`#fff`},children:n})]})}var LF={background:`linear-gradient(90deg, var(--bg-card) 0%, var(--bg-hover) 50%, var(--bg-card) 100%)`,backgroundSize:`200% 100%`,animation:`skeleton-shimmer 1.4s ease-in-out infinite`,borderRadius:4,display:`inline-block`};function RF({width:e=`100%`,height:t=16,shape:n=`rect`,style:r={},className:i=``,"data-testid":a}){let o={...LF,width:e,height:t,...r};return n===`circle`?o.borderRadius=`50%`:n===`text`&&(o.borderRadius=2,o.height=t||12),(0,I.jsx)(`span`,{role:`status`,"aria-label":`Loading`,"aria-busy":`true`,"data-testid":a||`skeleton`,className:i,style:o})}function zF({cols:e=4,height:t=14}){return(0,I.jsx)(`div`,{style:{display:`flex`,gap:12,padding:`8px 0`},children:Array.from({length:e}).map((n,r)=>(0,I.jsx)(RF,{height:t,width:`${100/e}%`},r))})}var BF=(0,w.createContext)(null);function VF(){return(0,w.useContext)(BF)||{push:()=>{},success:()=>{},error:()=>{},info:()=>{},warning:()=>{}}}var HF=1;function UF({children:e}){let[t,n]=(0,w.useState)([]),r=(0,w.useCallback)(e=>{n(t=>t.filter(t=>t.id!==e))},[]),i=(0,w.useCallback)(e=>{let t=HF++,i=e.duration??4e3;return n(n=>[...n,{...e,id:t}]),i>0&&setTimeout(()=>r(t),i),t},[r]),a={push:i,success:(e,t={})=>i({...t,message:e,variant:`success`}),error:(e,t={})=>i({...t,message:e,variant:`error`}),info:(e,t={})=>i({...t,message:e,variant:`info`}),warning:(e,t={})=>i({...t,message:e,variant:`warning`}),dismiss:r};return(0,I.jsxs)(BF.Provider,{value:a,children:[e,(0,I.jsx)(WF,{toasts:t,onDismiss:r})]})}function WF({toasts:e,onDismiss:t}){return(0,I.jsx)(`div`,{role:`region`,"aria-live":`polite`,"aria-label":`Notifications`,className:`fixed z-50 flex flex-col gap-2`,style:{right:`1rem`,bottom:`1rem`,maxWidth:`min(420px, calc(100vw - 2rem))`,pointerEvents:`none`},children:e.map(e=>(0,I.jsx)(KF,{toast:e,onDismiss:t},e.id))})}var GF={success:{bg:`#0f2a1f`,border:`#34d399`,Icon:ne,iconColor:`#34d399`},error:{bg:`#2a0f14`,border:`#ef4444`,Icon:re,iconColor:`#ef4444`},warning:{bg:`#2a220f`,border:`#fbbf24`,Icon:P,iconColor:`#fbbf24`},info:{bg:`#0f1d2a`,border:`#4a9eff`,Icon:de,iconColor:`#4a9eff`}};function KF({toast:e,onDismiss:t}){let n=GF[e.variant]||GF.info,{Icon:r}=n,[i,a]=(0,w.useState)(!1);return(0,w.useEffect)(()=>{let e=requestAnimationFrame(()=>a(!0));return()=>cancelAnimationFrame(e)},[]),(0,I.jsxs)(`div`,{role:`status`,"data-testid":`toast`,"data-variant":e.variant,className:`flex items-start gap-3 rounded px-3 py-2`,style:{background:n.bg,border:`1px solid ${n.border}`,color:`var(--text-primary)`,pointerEvents:`auto`,boxShadow:`0 4px 12px rgba(0,0,0,0.4)`,transform:i?`translateX(0)`:`translateX(calc(100% + 1.5rem))`,transition:`transform 180ms ease`},children:[(0,I.jsx)(r,{size:18,style:{color:n.iconColor,flexShrink:0,marginTop:2}}),(0,I.jsxs)(`div`,{style:{flex:1,fontSize:14,lineHeight:1.4},children:[e.title&&(0,I.jsx)(`div`,{style:{fontWeight:600,marginBottom:2},children:e.title}),(0,I.jsx)(`div`,{children:e.message})]}),(0,I.jsx)(`button`,{type:`button`,onClick:()=>t(e.id),"aria-label":`Dismiss notification`,className:`rounded hover:bg-white/10`,style:{background:`transparent`,border:0,color:`var(--text-secondary)`,cursor:`pointer`,padding:2},children:(0,I.jsx)(Te,{size:16})})]})}function qF(e){return e.status||e.action_status||e.outcome||`unknown`}function JF(e){return e.risk_tier||e.action_risk||e.risk||`unknown`}function YF(e){return e.verification_status||e.status||`not_started`}function XF({database:e,user:t}){let[n,r]=(0,w.useState)(`executed`),i=ze(),a=t?.role===`admin`||t?.role===`operator`,o=a?n:`executed`,s=e&&e!==`all`?`?database=${e}`:``,{data:c,loading:l,error:u,refetch:d}=Ae(je(`/api/v1/actions${s}`,i)),{data:f,loading:p,error:m,refetch:h}=Ae(a?`/api/v1/actions/pending${s}`:null);return Fe([`actions`],d),Fe([`actions`],a?h:null),o===`executed`?(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsx)(ZF,{tab:o,setTab:r,pendingCount:f?.total||0,canReview:a}),(0,I.jsx)(QF,{data:c,loading:l,error:u,refetch:d,user:t})]}):(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsx)(ZF,{tab:o,setTab:r,pendingCount:f?.total||0,canReview:a}),(0,I.jsx)(eI,{data:f,loading:p,error:m,refetch:h})]})}function ZF({tab:e,setTab:t,pendingCount:n,canReview:r}){let i=[{key:`executed`,label:`Executed`}];return r&&i.push({key:`pending`,label:`Pending Approval`}),(0,I.jsx)(`div`,{className:`flex gap-2`,children:i.map(r=>(0,I.jsxs)(`button`,{onClick:()=>t(r.key),"data-testid":`actions-tab-${r.key}`,className:`px-3 py-1.5 rounded text-sm`,style:{background:e===r.key?`var(--accent)`:`var(--bg-card)`,color:e===r.key?`#fff`:`var(--text-secondary)`,border:`1px solid var(--border)`},children:[r.label,r.key===`pending`&&n>0&&(0,I.jsx)(`span`,{className:`ml-1.5 px-1.5 py-0.5 rounded-full text-xs`,style:{background:`var(--red)`,color:`#fff`},children:n})]},r.key))})}function QF({data:e,loading:t,error:n,refetch:r,user:i}){let a=VF(),o=i?.role===`admin`||i?.role===`operator`;if(t)return(0,I.jsx)(`div`,{className:`space-y-2`,"data-testid":`executed-actions-loading`,children:Array.from({length:6}).map((e,t)=>(0,I.jsx)(zF,{cols:4},t))});if(n)return(0,I.jsx)($e,{message:n,onRetry:r});let s=e?.actions||[],c=e=>{switch(e){case`success`:return{bg:`rgba(34,197,94,0.15)`,color:`var(--green)`,label:`Success`};case`failed`:return{bg:`rgba(239,68,68,0.15)`,color:`var(--red)`,label:`Failed`};case`rolled_back`:return{bg:`rgba(245,158,11,0.15)`,color:`var(--yellow)`,label:`Rolled Back`};case`pending`:return{bg:`rgba(59,130,246,0.15)`,color:`var(--blue, #3b82f6)`,label:`Monitoring`};default:return{bg:`rgba(107,114,128,0.15)`,color:`var(--text-secondary)`,label:e||`Unknown`}}},l=[{key:`action_type`,label:`Type`,render:e=>{let t=(e.action_type||``).replace(/_/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}},{key:`summary`,label:`Summary`,render:e=>{let t=(e.action_type||``).toLowerCase(),n=(e.sql_executed||``).match(/(?:public\.)?([\w.]+)\s*[;(]/i)?.[1]||``;if(e.outcome===`failed`&&e.rollback_reason)return(0,I.jsx)(`span`,{style:{color:`var(--red)`},children:e.rollback_reason.length>80?e.rollback_reason.slice(0,80)+`...`:e.rollback_reason});if(t===`drop_index`)return`Dropped index${n?` `+n:``}`;if(t===`create_index`)return`Created index${n?` on `+n:``}`;if(t===`vacuum`)return`Vacuumed${n?` `+n:` table`}`;if(t===`analyze`)return`Updated statistics${n?` for `+n:``}`;if(t===`reindex`)return`Reindexed${n?` `+n:``}`;if(t===`alter`)return`Altered${n?` `+n:` object`}`;let r=e.action_type||``;return r.charAt(0).toUpperCase()+r.slice(1)}},{key:`outcome`,label:`Outcome`,render:e=>{let t=c(qF(e));return(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded-full text-xs - font-medium inline-block`,style:{background:t.bg,color:t.color},children:t.label})}},...s.some(e=>e.verification_status)?[{key:`verification_status`,label:`Verification`,render:e=>YF(e)}]:[],...s.some(e=>e.database_name)?[{key:`database_name`,label:`Database`}]:[],{key:`executed_at`,label:`When`,render:e=>(0,I.jsx)(FF,{timestamp:e.executed_at})}];async function u(e){if(!window.confirm(`Run the stored rollback SQL for this action?`))return;let t=e.database_name?`?database=${encodeURIComponent(e.database_name)}`:``,n=await fetch(`/api/v1/actions/${e.id}/rollback${t}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:`manual rollback from actions UI`})}),i=await n.json();if(!n.ok||!i.ok){a.error(i.error||`Rollback failed`);return}a.success(`Action ${e.id} rolled back`),r()}return s.length===0?(0,I.jsx)(IF,{message:`No actions have been executed yet. Actions will appear here as pg_sage works on your databases.`}):(0,I.jsx)(MF,{"data-testid":`executed-actions-table`,columns:l,rows:s,expandable:!0,renderExpanded:e=>(0,I.jsxs)(`div`,{className:`space-y-3`,children:[e.outcome===`failed`&&e.rollback_reason&&(0,I.jsxs)(`div`,{className:`p-3 rounded text-sm`,style:{background:`rgba(239,68,68,0.1)`,border:`1px solid rgba(239,68,68,0.3)`},children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--red)`},children:`Error Details`}),(0,I.jsx)(`code`,{className:`text-xs`,style:{color:`var(--text-primary)`,wordBreak:`break-all`},children:e.rollback_reason})]}),e.outcome===`rolled_back`&&e.rollback_reason&&(0,I.jsxs)(`div`,{className:`p-3 rounded text-sm`,style:{background:`rgba(245,158,11,0.1)`,border:`1px solid rgba(245,158,11,0.3)`},children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--yellow)`},children:`Rollback Reason`}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-primary)`},children:e.rollback_reason})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`SQL Executed`}),(0,I.jsx)(AF,{sql:e.sql_executed})]}),e.rollback_sql&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Rollback SQL`}),(0,I.jsx)(AF,{sql:e.rollback_sql}),o&&(e.outcome===`success`||e.outcome===`monitoring`||e.outcome===`pending`)&&(0,I.jsx)(`button`,{type:`button`,"data-testid":`rollback-action-button`,onClick:()=>u(e),className:`mt-2 px-2 py-1 rounded text-xs`,style:{background:`var(--yellow)`,color:`#111827`},children:`Roll Back Action`})]}),(0,I.jsxs)(`div`,{className:`flex gap-4 text-xs`,style:{color:`var(--text-secondary)`},children:[e.finding_id&&(0,I.jsxs)(`span`,{children:[`Finding #`,e.finding_id]}),e.database_name&&(0,I.jsxs)(`span`,{children:[`Database: `,e.database_name]}),e.measured_at&&(0,I.jsxs)(`span`,{children:[`Verified: `,(0,I.jsx)(FF,{timestamp:e.measured_at})]})]})]})})}function $F(){return(0,I.jsx)(`div`,{className:`space-y-2`,"data-testid":`pending-skeleton`,children:[0,1,2].map(e=>(0,I.jsx)(`div`,{className:`h-10 rounded animate-pulse`,style:{background:`var(--bg-hover)`}},e))})}function eI({data:e,loading:t,error:n,refetch:r}){let[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(``),[c,l]=(0,w.useState)(null),u=We(),d=VF();if(t)return(0,I.jsx)($F,{});if(n)return(0,I.jsx)($e,{message:n,onRetry:r});let f=e?.pending||[];async function p(e){l(null);try{let t=f.find(t=>t.id===e),n=t?.database_name?`?database=${encodeURIComponent(t.database_name)}`:``,i=await(await fetch(`/api/v1/actions/${e}/approve${n}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}})).json();i.ok?(d.success(`Action ${e} approved and executed`),l({type:`success`,text:`Action ${e} approved and executed`})):(d.error(i.error||`Approve failed`),l({type:`error`,text:i.error||`Approve failed`})),r(),u()}catch(e){d.error(`Approve failed: ${e.message}`),l({type:`error`,text:e.message})}}async function m(e){l(null);let t=o.trim();if(!t){l({type:`error`,text:`A rejection reason is required`});return}try{let n=f.find(t=>t.id===e),i=n?.database_name?`?database=${encodeURIComponent(n.database_name)}`:``,o=await(await fetch(`/api/v1/actions/${e}/reject${i}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:t})})).json();o.ok?(d.success(`Action ${e} rejected`),l({type:`success`,text:`Action ${e} rejected`})):(d.error(o.error||`Reject failed`),l({type:`error`,text:o.error||`Reject failed`})),a(null),s(``),r(),u()}catch(e){d.error(`Reject failed: ${e.message}`),l({type:`error`,text:e.message})}}let h=[{key:`action_risk`,label:`Risk`,render:e=>{let t={safe:{label:`Low Risk`,color:`var(--green)`},moderate:{label:`Moderate Risk`,color:`var(--yellow)`},high:{label:`High Risk`,color:`var(--red)`}},n=JF(e),r=t[n]||{label:n,color:`var(--text-secondary)`};return(0,I.jsx)(`span`,{style:{color:r.color},children:r.label})}},{key:`database_name`,label:`Database`},{key:`finding_id`,label:`Finding`},{key:`proposed_sql`,label:`SQL Preview`,render:e=>{let t=(e.proposed_sql||``).replace(/\s+/g,` `).trim();return t.length>90?t.slice(0,90)+`...`:t}},{key:`proposed_at`,label:`Proposed`,render:e=>(0,I.jsx)(FF,{timestamp:e.proposed_at})},{key:`actions`,label:``,render:e=>(0,I.jsxs)(`div`,{className:`flex gap-2`,children:[(0,I.jsx)(`button`,{onClick:()=>p(e.id),"data-testid":`approve-button`,className:`px-2 py-1 rounded text-xs`,style:{background:`var(--green)`,color:`#fff`},children:`Approve`}),(0,I.jsx)(`button`,{onClick:()=>a(i===e.id?null:e.id),"data-testid":`reject-button`,className:`px-2 py-1 rounded text-xs`,style:{background:`var(--red)`,color:`#fff`},children:`Reject`})]})}];return f.length===0?(0,I.jsx)(IF,{message:`No actions waiting for approval. When pg_sage identifies improvements that need your OK, they'll appear here.`}):(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsx)(`p`,{"data-testid":`pending-help-text`,className:`text-sm`,style:{color:`var(--text-secondary)`},children:`These actions are waiting for your review. Approve to execute, or reject with a reason.`}),c&&(0,I.jsx)(`div`,{className:`p-2 rounded text-sm`,style:{background:c.type===`success`?`var(--green)`:`var(--red)`,color:`#fff`,opacity:.9},children:c.text}),(0,I.jsx)(MF,{"data-testid":`pending-actions-table`,columns:h,rows:f,expandable:!0,renderExpanded:e=>(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Proposed SQL`}),(0,I.jsx)(AF,{sql:e.proposed_sql})]}),e.rollback_sql&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Rollback SQL`}),(0,I.jsx)(AF,{sql:e.rollback_sql})]}),i===e.id&&(0,I.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,I.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),placeholder:`Reason for rejection...`,className:`px-2 py-1 rounded text-sm flex-1`,style:{background:`var(--bg-primary)`,color:`var(--text-primary)`,border:`1px solid var(--border)`}}),(0,I.jsx)(`button`,{onClick:()=>m(e.id),disabled:!o.trim(),className:`px-2 py-1 rounded text-xs`,style:{background:`var(--red)`,color:`#fff`,opacity:o.trim()?1:.45,cursor:o.trim()?`pointer`:`not-allowed`},children:`Confirm Reject`})]})]})})]})}var tI=5e5;function nI({snapshot:e}){let[t,n]=(0,w.useState)(!1),[r,i]=(0,w.useState)(null),a=null;try{let t=JSON.stringify(e,null,2);if(t.length>tI)throw Error(`Snapshot is too large to display (${t.length} chars)`);a=t}catch(e){r||i(e.message)}let o=()=>{try{let t=JSON.stringify(e);navigator.clipboard.writeText(t),n(!0),setTimeout(()=>n(!1),2e3)}catch{}};return r?(0,I.jsxs)(`div`,{className:`space-y-2`,"data-testid":`snapshot-error`,children:[(0,I.jsxs)(`div`,{className:`text-sm p-3 rounded`,style:{background:`#3b1111`,border:`1px solid var(--red)`,color:`var(--red)`},children:[`Unable to render snapshot: `,r]}),(0,I.jsx)(`button`,{onClick:o,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-card)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:t?`Copied!`:`Copy raw response`})]}):(0,I.jsx)(`pre`,{className:`text-xs overflow-auto`,style:{color:`var(--text-secondary)`},children:a})}function rI({database:e}){let t=e&&e!==`all`?e:null,{data:n,loading:r,error:i,refetch:a}=Ae(t?`/api/v1/snapshots/latest?database=${t}`:null,0);return t?r?(0,I.jsx)(yF,{}):i?(0,I.jsx)($e,{message:i,onRetry:a}):(0,I.jsx)(`div`,{className:`space-y-6`,children:(0,I.jsxs)(`div`,{className:`rounded p-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`h2`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:[`Database: `,t]}),n?.snapshot?(0,I.jsx)(nI,{snapshot:n.snapshot}):(0,I.jsx)(IF,{message:`No snapshot data available yet`})]})}):(0,I.jsx)(IF,{message:`Select a database from the picker above`})}typeof window<`u`&&window.document&&window.document.createElement;function iI(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function aI(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function oI(...e){return t=>{let n=!1,r=e.map(e=>{let r=aI(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=w.useMemo(()=>o,Object.values(o));return(0,I.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=w.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>w.createContext(e));return function(n){let r=n?.[e]||t;return w.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,lI(i,...t)]}function lI(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return w.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function uI(e){let t=dI(e),n=w.forwardRef((e,n)=>{let{children:r,...i}=e,a=w.Children.toArray(r),o=a.find(mI);if(o){let e=o.props.children,r=a.map(t=>t===o?w.Children.count(e)>1?w.Children.only(null):w.isValidElement(e)?e.props.children:null:t);return(0,I.jsx)(t,{...i,ref:n,children:w.isValidElement(e)?w.cloneElement(e,void 0,r):null})}return(0,I.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function dI(e){let t=w.forwardRef((e,t)=>{let{children:n,...r}=e;if(w.isValidElement(n)){let e=gI(n),i=hI(r,n.props);return n.type!==w.Fragment&&(i.ref=t?oI(t,e):e),w.cloneElement(n,i)}return w.Children.count(n)>1?w.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var fI=Symbol(`radix.slottable`);function pI(e){let t=({children:e})=>(0,I.jsx)(I.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=fI,t}function mI(e){return w.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===fI}function hI(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function gI(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var _I=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=uI(`Primitive.${t}`),r=w.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,I.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function vI(e,t){e&&pd.flushSync(()=>e.dispatchEvent(t))}function yI(e){let t=w.useRef(e);return w.useEffect(()=>{t.current=e}),w.useMemo(()=>(...e)=>t.current?.(...e),[])}function bI(e,t=globalThis?.document){let n=yI(e);w.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var xI=`DismissableLayer`,SI=`dismissableLayer.update`,CI=`dismissableLayer.pointerDownOutside`,wI=`dismissableLayer.focusOutside`,TI,EI=w.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),DI=w.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=w.useContext(EI),[u,d]=w.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=w.useState({}),m=sI(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),_=h.indexOf(g),v=u?h.indexOf(u):-1,y=l.layersWithOutsidePointerEventsDisabled.size>0,b=v>=_,x=AI(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!b||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),S=jI(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return bI(e=>{v===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),w.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(TI=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),MI(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=TI)}},[u,f,n,l]),w.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),MI())},[u,l]),w.useEffect(()=>{let e=()=>p({});return document.addEventListener(SI,e),()=>document.removeEventListener(SI,e)},[]),(0,I.jsx)(_I.div,{...c,ref:m,style:{pointerEvents:y?b?`auto`:`none`:void 0,...e.style},onFocusCapture:iI(e.onFocusCapture,S.onFocusCapture),onBlurCapture:iI(e.onBlurCapture,S.onBlurCapture),onPointerDownCapture:iI(e.onPointerDownCapture,x.onPointerDownCapture)})});DI.displayName=xI;var OI=`DismissableLayerBranch`,kI=w.forwardRef((e,t)=>{let n=w.useContext(EI),r=w.useRef(null),i=sI(t,r);return w.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,I.jsx)(_I.div,{...e,ref:i})});kI.displayName=OI;function AI(e,t=globalThis?.document){let n=yI(e),r=w.useRef(!1),i=w.useRef(()=>{});return w.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){NI(CI,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function jI(e,t=globalThis?.document){let n=yI(e),r=w.useRef(!1);return w.useEffect(()=>{let e=e=>{e.target&&!r.current&&NI(wI,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function MI(){let e=new CustomEvent(SI);document.dispatchEvent(e)}function NI(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?vI(i,a):i.dispatchEvent(a)}var PI=globalThis?.document?w.useLayoutEffect:()=>{},FI=w.useId||(()=>void 0),II=0;function LI(e){let[t,n]=w.useState(FI());return PI(()=>{e||n(e=>e??String(II++))},[e]),e||(t?`radix-${t}`:``)}var RI=[`top`,`right`,`bottom`,`left`],zI=Math.min,BI=Math.max,VI=Math.round,HI=Math.floor,UI=e=>({x:e,y:e}),WI={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function GI(e,t,n){return BI(e,zI(t,n))}function KI(e,t){return typeof e==`function`?e(t):e}function qI(e){return e.split(`-`)[0]}function JI(e){return e.split(`-`)[1]}function YI(e){return e===`x`?`y`:`x`}function XI(e){return e===`y`?`height`:`width`}function ZI(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function QI(e){return YI(ZI(e))}function $I(e,t,n){n===void 0&&(n=!1);let r=JI(e),i=QI(e),a=XI(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=cL(o)),[o,cL(o)]}function eL(e){let t=cL(e);return[tL(e),t,tL(t)]}function tL(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var nL=[`left`,`right`],rL=[`right`,`left`],iL=[`top`,`bottom`],aL=[`bottom`,`top`];function oL(e,t,n){switch(e){case`top`:case`bottom`:return n?t?rL:nL:t?nL:rL;case`left`:case`right`:return t?iL:aL;default:return[]}}function sL(e,t,n,r){let i=JI(e),a=oL(qI(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(tL)))),a}function cL(e){let t=qI(e);return WI[t]+e.slice(t.length)}function lL(e){return{top:0,right:0,bottom:0,left:0,...e}}function uL(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:lL(e)}function dL(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function fL(e,t,n){let{reference:r,floating:i}=e,a=ZI(t),o=QI(t),s=XI(o),c=qI(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(JI(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function pL(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=KI(t,e),p=uL(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=dL(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=dL(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var mL=50,hL=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:pL},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=fL(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=KI(e,t)||{};if(l==null)return{};let d=uL(u),f={x:n,y:r},p=QI(i),m=XI(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=zI(d[_],T),D=zI(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=GI(O,A,k),M=!c.arrow&&JI(i)!=null&&A!==j&&a.reference[m]/2-(Ae<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==ZI(t))||T.every(e=>ZI(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=ZI(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function vL(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function yL(e){return RI.some(t=>e[t]>=0)}var bL=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=KI(e,t);switch(i){case`referenceHidden`:{let e=vL(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:yL(e)}}}case`escaped`:{let e=vL(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:yL(e)}}}default:return{}}}}},xL=new Set([`left`,`top`]);async function SL(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=qI(n),s=JI(n),c=ZI(n)===`y`,l=xL.has(o)?-1:1,u=a&&c?-1:1,d=KI(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var CL=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await SL(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},wL=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=KI(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=ZI(qI(i)),p=YI(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=GI(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=GI(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},TL=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=KI(e,t),u={x:n,y:r},d=ZI(i),f=YI(d),p=u[f],m=u[d],h=KI(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=xL.has(qI(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},EL=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=KI(e,t),u=await o.detectOverflow(t,l),d=qI(i),f=JI(i),p=ZI(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=zI(h-u[g],v),x=zI(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=BI(u.left,0),t=BI(u.right,0),n=BI(u.top,0),r=BI(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:BI(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:BI(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function DL(){return typeof window<`u`}function OL(e){return jL(e)?(e.nodeName||``).toLowerCase():`#document`}function kL(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function AL(e){return((jL(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function jL(e){return DL()?e instanceof Node||e instanceof kL(e).Node:!1}function ML(e){return DL()?e instanceof Element||e instanceof kL(e).Element:!1}function NL(e){return DL()?e instanceof HTMLElement||e instanceof kL(e).HTMLElement:!1}function PL(e){return!DL()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof kL(e).ShadowRoot}function FL(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=KL(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function IL(e){return/^(table|td|th)$/.test(OL(e))}function LL(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var RL=/transform|translate|scale|rotate|perspective|filter/,zL=/paint|layout|strict|content/,BL=e=>!!e&&e!==`none`,VL;function HL(e){let t=ML(e)?KL(e):e;return BL(t.transform)||BL(t.translate)||BL(t.scale)||BL(t.rotate)||BL(t.perspective)||!WL()&&(BL(t.backdropFilter)||BL(t.filter))||RL.test(t.willChange||``)||zL.test(t.contain||``)}function UL(e){let t=JL(e);for(;NL(t)&&!GL(t);){if(HL(t))return t;if(LL(t))return null;t=JL(t)}return null}function WL(){return VL??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),VL}function GL(e){return/^(html|body|#document)$/.test(OL(e))}function KL(e){return kL(e).getComputedStyle(e)}function qL(e){return ML(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function JL(e){if(OL(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||PL(e)&&e.host||AL(e);return PL(t)?t.host:t}function YL(e){let t=JL(e);return GL(t)?e.ownerDocument?e.ownerDocument.body:e.body:NL(t)&&FL(t)?t:YL(t)}function XL(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=YL(e),i=r===e.ownerDocument?.body,a=kL(r);if(i){let e=ZL(a);return t.concat(a,a.visualViewport||[],FL(r)?r:[],e&&n?XL(e):[])}else return t.concat(r,XL(r,[],n))}function ZL(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function QL(e){let t=KL(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=NL(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=VI(n)!==a||VI(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function $L(e){return ML(e)?e:e.contextElement}function eR(e){let t=$L(e);if(!NL(t))return UI(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=QL(t),o=(a?VI(n.width):n.width)/r,s=(a?VI(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var tR=UI(0);function nR(e){let t=kL(e);return!WL()||!t.visualViewport?tR:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function rR(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==kL(e)?!1:t}function iR(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=$L(e),o=UI(1);t&&(r?ML(r)&&(o=eR(r)):o=eR(e));let s=rR(a,n,r)?nR(a):UI(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=kL(a),t=r&&ML(r)?kL(r):r,n=e,i=ZL(n);for(;i&&r&&t!==n;){let e=eR(i),t=i.getBoundingClientRect(),r=KL(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=kL(i),i=ZL(n)}}return dL({width:u,height:d,x:c,y:l})}function aR(e,t){let n=qL(e).scrollLeft;return t?t.left+n:iR(AL(e)).left+n}function oR(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-aR(e,n),y:n.top+t.scrollTop}}function sR(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=AL(r),s=t?LL(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=UI(1),u=UI(0),d=NL(r);if((d||!d&&!a)&&((OL(r)!==`body`||FL(o))&&(c=qL(r)),d)){let e=iR(r);l=eR(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?oR(o,c):UI(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function cR(e){return Array.from(e.getClientRects())}function lR(e){let t=AL(e),n=qL(e),r=e.ownerDocument.body,i=BI(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=BI(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+aR(e),s=-n.scrollTop;return KL(r).direction===`rtl`&&(o+=BI(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var uR=25;function dR(e,t){let n=kL(e),r=AL(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=WL();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=aR(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=uR&&(a-=o)}else l<=uR&&(a+=l);return{width:a,height:o,x:s,y:c}}function fR(e,t){let n=iR(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=NL(e)?eR(e):UI(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function pR(e,t,n){let r;if(t===`viewport`)r=dR(e,n);else if(t===`document`)r=lR(AL(e));else if(ML(t))r=fR(t,n);else{let n=nR(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return dL(r)}function mR(e,t){let n=JL(e);return n===t||!ML(n)||GL(n)?!1:KL(n).position===`fixed`||mR(n,t)}function hR(e,t){let n=t.get(e);if(n)return n;let r=XL(e,[],!1).filter(e=>ML(e)&&OL(e)!==`body`),i=null,a=KL(e).position===`fixed`,o=a?JL(e):e;for(;ML(o)&&!GL(o);){let t=KL(o),n=HL(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||FL(o)&&!n&&mR(e,o))?r=r.filter(e=>e!==o):i=t,o=JL(o)}return t.set(e,r),r}function gR(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?LL(t)?[]:hR(t,this._c):[].concat(n),r],o=pR(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!TR(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function DR(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=$L(e),u=i||a?[...l?XL(l):[],...t?XL(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?ER(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?iR(e):null;c&&g();function g(){let t=iR(e);h&&!TR(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var OR=CL,kR=wL,AR=_L,jR=EL,MR=bL,NR=gL,PR=TL,FR=(e,t,n)=>{let r=new Map,i={platform:wR,...n},a={...i.platform,_c:r};return hL(e,t,{...i,platform:a})},IR=typeof document<`u`?w.useLayoutEffect:function(){};function LR(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 n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!LR(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!LR(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function RR(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function zR(e,t){let n=RR(e);return Math.round(t*n)/n}function BR(e){let t=w.useRef(e);return IR(()=>{t.current=e}),t}function VR(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=w.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=w.useState(r);LR(f,r)||p(r);let[m,h]=w.useState(null),[g,_]=w.useState(null),v=w.useCallback(e=>{e!==S.current&&(S.current=e,h(e))},[]),y=w.useCallback(e=>{e!==C.current&&(C.current=e,_(e))},[]),b=a||m,x=o||g,S=w.useRef(null),C=w.useRef(null),T=w.useRef(u),E=c!=null,D=BR(c),O=BR(i),k=BR(l),A=w.useCallback(()=>{if(!S.current||!C.current)return;let e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),FR(S.current,C.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!LR(T.current,t)&&(T.current=t,pd.flushSync(()=>{d(t)}))})},[f,t,n,O,k]);IR(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let j=w.useRef(!1);IR(()=>(j.current=!0,()=>{j.current=!1}),[]),IR(()=>{if(b&&(S.current=b),x&&(C.current=x),b&&x){if(D.current)return D.current(b,x,A);A()}},[b,x,A,D,E]);let M=w.useMemo(()=>({reference:S,floating:C,setReference:v,setFloating:y}),[v,y]),N=w.useMemo(()=>({reference:b,floating:x}),[b,x]),ee=w.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=zR(N.floating,u.x),r=zR(N.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...RR(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,N.floating,u.x,u.y]);return w.useMemo(()=>({...u,update:A,refs:M,elements:N,floatingStyles:ee}),[u,A,M,N,ee])}var HR=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:NR({element:r.current,padding:i}).fn(n):r?NR({element:r,padding:i}).fn(n):{}}}},UR=(e,t)=>{let n=OR(e);return{name:n.name,fn:n.fn,options:[e,t]}},WR=(e,t)=>{let n=kR(e);return{name:n.name,fn:n.fn,options:[e,t]}},GR=(e,t)=>({fn:PR(e).fn,options:[e,t]}),KR=(e,t)=>{let n=AR(e);return{name:n.name,fn:n.fn,options:[e,t]}},qR=(e,t)=>{let n=jR(e);return{name:n.name,fn:n.fn,options:[e,t]}},JR=(e,t)=>{let n=MR(e);return{name:n.name,fn:n.fn,options:[e,t]}},YR=(e,t)=>{let n=HR(e);return{name:n.name,fn:n.fn,options:[e,t]}},XR=`Arrow`,ZR=w.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,I.jsx)(_I.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,I.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});ZR.displayName=XR;var QR=ZR;function $R(e){let[t,n]=w.useState(void 0);return PI(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var ez=`Popper`,[tz,nz]=cI(ez),[rz,iz]=tz(ez),az=e=>{let{__scopePopper:t,children:n}=e,[r,i]=w.useState(null);return(0,I.jsx)(rz,{scope:t,anchor:r,onAnchorChange:i,children:n})};az.displayName=ez;var oz=`PopperAnchor`,sz=w.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=iz(oz,n),o=w.useRef(null),s=sI(t,o),c=w.useRef(null);return w.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,I.jsx)(_I.div,{...i,ref:s})});sz.displayName=oz;var cz=`PopperContent`,[lz,uz]=tz(cz),dz=w.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=iz(cz,n),[_,v]=w.useState(null),y=sI(t,e=>v(e)),[b,x]=w.useState(null),S=$R(b),C=S?.width??0,T=S?.height??0,E=r+(a===`center`?``:`-`+a),D=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},O=Array.isArray(l)?l:[l],k=O.length>0,A={padding:D,boundary:O.filter(hz),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:ee,middlewareData:te}=VR({strategy:`fixed`,placement:E,whileElementsMounted:(...e)=>DR(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[UR({mainAxis:i+T,alignmentAxis:o}),c&&WR({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?GR():void 0,...A}),c&&KR({...A}),qR({...A,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),b&&YR({element:b,padding:s}),gz({arrowWidth:C,arrowHeight:T}),f&&JR({strategy:`referenceHidden`,...A})]}),[P,F]=_z(N),ne=yI(m);PI(()=>{ee&&ne?.()},[ee,ne]);let re=te.arrow?.x,ie=te.arrow?.y,ae=te.arrow?.centerOffset!==0,[oe,se]=w.useState();return PI(()=>{_&&se(window.getComputedStyle(_).zIndex)},[_]),(0,I.jsx)(`div`,{ref:j.setFloating,"data-radix-popper-content-wrapper":``,style:{...M,transform:ee?M.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:oe,"--radix-popper-transform-origin":[te.transformOrigin?.x,te.transformOrigin?.y].join(` `),...te.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,I.jsx)(lz,{scope:n,placedSide:P,onArrowChange:x,arrowX:re,arrowY:ie,shouldHideArrow:ae,children:(0,I.jsx)(_I.div,{"data-side":P,"data-align":F,...h,ref:y,style:{...h.style,animation:ee?void 0:`none`}})})})});dz.displayName=cz;var fz=`PopperArrow`,pz={top:`bottom`,right:`left`,bottom:`top`,left:`right`},mz=w.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=uz(fz,n),a=pz[i.placedSide];return(0,I.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,I.jsx)(QR,{...r,ref:t,style:{...r.style,display:`block`}})})});mz.displayName=fz;function hz(e){return e!==null}var gz=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=_z(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function _z(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var vz=az,yz=sz,bz=dz,xz=mz,Sz=`Portal`,Cz=w.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=w.useState(!1);PI(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?pd.createPortal((0,I.jsx)(_I.div,{...r,ref:t}),o):null});Cz.displayName=Sz;function wz(e,t){return w.useReducer((e,n)=>t[e][n]??e,e)}var Tz=e=>{let{present:t,children:n}=e,r=Ez(t),i=typeof n==`function`?n({present:r.isPresent}):w.Children.only(n),a=sI(r.ref,Oz(i));return typeof n==`function`||r.isPresent?w.cloneElement(i,{ref:a}):null};Tz.displayName=`Presence`;function Ez(e){let[t,n]=w.useState(),r=w.useRef(null),i=w.useRef(e),a=w.useRef(`none`),[o,s]=wz(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return w.useEffect(()=>{let e=Dz(r.current);a.current=o===`mounted`?e:`none`},[o]),PI(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=Dz(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),PI(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=Dz(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=Dz(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:w.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function Dz(e){return e?.animationName||`none`}function Oz(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var kz=w.useInsertionEffect||PI;function Az({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=jz({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=w.useRef(e!==void 0);w.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`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.`),t.current=s},[s,r])}return[c,w.useCallback(t=>{if(s){let n=Mz(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function jz({defaultProp:e,onChange:t}){let[n,r]=w.useState(e),i=w.useRef(n),a=w.useRef(t);return kz(()=>{a.current=t},[t]),w.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function Mz(e){return typeof e==`function`}var Nz=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`}),Pz=`VisuallyHidden`,Fz=w.forwardRef((e,t)=>(0,I.jsx)(_I.span,{...e,ref:t,style:{...Nz,...e.style}}));Fz.displayName=Pz;var Iz=Fz,[Lz,Rz]=cI(`Tooltip`,[nz]),zz=nz(),Bz=`TooltipProvider`,Vz=700,Hz=`tooltip.open`,[Uz,Wz]=Lz(Bz),Gz=e=>{let{__scopeTooltip:t,delayDuration:n=Vz,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=w.useRef(!0),s=w.useRef(!1),c=w.useRef(0);return w.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,I.jsx)(Uz,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:w.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:w.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:w.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Gz.displayName=Bz;var Kz=`Tooltip`,[qz,Jz]=Lz(Kz),Yz=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Wz(Kz,e.__scopeTooltip),l=zz(t),[u,d]=w.useState(null),f=LI(),p=w.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=w.useRef(!1),[_,v]=Az({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Hz))):c.onClose(),a?.(e)},caller:Kz}),y=w.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),b=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),S=w.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return w.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,I.jsx)(vz,{...l,children:(0,I.jsx)(qz,{scope:t,contentId:f,open:_,stateAttribute:y,trigger:u,onTriggerChange:d,onTriggerEnter:w.useCallback(()=>{c.isOpenDelayedRef.current?S():b()},[c.isOpenDelayedRef,S,b]),onTriggerLeave:w.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:b,onClose:x,disableHoverableContent:m,children:n})})};Yz.displayName=Kz;var Xz=`TooltipTrigger`,Zz=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Jz(Xz,n),a=Wz(Xz,n),o=zz(n),s=sI(t,w.useRef(null),i.onTriggerChange),c=w.useRef(!1),l=w.useRef(!1),u=w.useCallback(()=>c.current=!1,[]);return w.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,I.jsx)(yz,{asChild:!0,...o,children:(0,I.jsx)(_I.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:iI(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:iI(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:iI(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:iI(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:iI(e.onBlur,i.onClose),onClick:iI(e.onClick,i.onClose)})})});Zz.displayName=Xz;var Qz=`TooltipPortal`,[$z,eB]=Lz(Qz,{forceMount:void 0}),tB=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Jz(Qz,t);return(0,I.jsx)($z,{scope:t,forceMount:n,children:(0,I.jsx)(Tz,{present:n||a.open,children:(0,I.jsx)(Cz,{asChild:!0,container:i,children:r})})})};tB.displayName=Qz;var nB=`TooltipContent`,rB=w.forwardRef((e,t)=>{let n=eB(nB,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Jz(nB,e.__scopeTooltip);return(0,I.jsx)(Tz,{present:r||o.open,children:o.disableHoverableContent?(0,I.jsx)(cB,{side:i,...a,ref:t}):(0,I.jsx)(iB,{side:i,...a,ref:t})})}),iB=w.forwardRef((e,t)=>{let n=Jz(nB,e.__scopeTooltip),r=Wz(nB,e.__scopeTooltip),i=w.useRef(null),a=sI(t,i),[o,s]=w.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=w.useCallback(()=>{s(null),d(!1)},[d]),p=w.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=fB(r,dB(r,n.getBoundingClientRect())),a=pB(t.getBoundingClientRect());s(hB([...i,...a])),d(!0)},[d]);return w.useEffect(()=>()=>f(),[f]),w.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),w.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!mB(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,I.jsx)(cB,{...e,ref:a})}),[aB,oB]=Lz(Kz,{isInside:!1}),sB=pI(`TooltipContent`),cB=w.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=Jz(nB,n),l=zz(n),{onClose:u}=c;return w.useEffect(()=>(document.addEventListener(Hz,u),()=>document.removeEventListener(Hz,u)),[u]),w.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,I.jsx)(DI,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,I.jsxs)(bz,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.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:[(0,I.jsx)(sB,{children:r}),(0,I.jsx)(aB,{scope:n,isInside:!0,children:(0,I.jsx)(Iz,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});rB.displayName=nB;var lB=`TooltipArrow`,uB=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=zz(n);return oB(lB,n).isInside?null:(0,I.jsx)(xz,{...i,...r,ref:t})});uB.displayName=lB;function dB(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function fB(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function pB(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function mB(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function hB(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),gB(t)}function gB(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var _B=Gz,vB=Yz,yB=Zz,bB=tB,xB=rB,SB=uB,CB={type:`string`,default:null,doc:`Passphrase used to encrypt sensitive fleet-mode fields (per-database passwords). Rotate via the key-rotation runbook.`,secret:!0},wB={type:`string`,default:``,doc:`DSN of the metadata database used in fleet mode to persist cross-target state. Blank in standalone mode.`},TB={type:`string`,default:`extension`,doc:`Operating mode: extension, standalone, or fleet. Standalone connects to one PostgreSQL target; fleet manages many databases from one sidecar.`},EB={"advisor.bloat_enabled":{type:`bool`,default:!0,doc:``},"advisor.connection_enabled":{type:`bool`,default:!0,doc:``},"advisor.enabled":{type:`bool`,default:!1,doc:``},"advisor.interval_seconds":{type:`int`,default:86400,doc:``},"advisor.memory_enabled":{type:`bool`,default:!0,doc:``},"advisor.rewrite_enabled":{type:`bool`,default:!0,doc:``},"advisor.vacuum_enabled":{type:`bool`,default:!0,doc:``},"advisor.wal_enabled":{type:`bool`,default:!0,doc:``},"alerting.check_interval_seconds":{type:`int`,default:60,doc:``},"alerting.cooldown_minutes":{type:`int`,default:15,doc:``},"alerting.enabled":{type:`bool`,default:!1,doc:``},"alerting.pagerduty_routing_key":{type:`string`,default:``,doc:``},"alerting.quiet_hours_end":{type:`string`,default:``,doc:``},"alerting.quiet_hours_start":{type:`string`,default:``,doc:``},"alerting.routes[].channels":{type:`[]string`,default:null,doc:``},"alerting.routes[].severity":{type:`string`,default:``,doc:``},"alerting.slack_webhook_url":{type:`string`,default:``,doc:``},"alerting.timezone":{type:`string`,default:`UTC`,doc:``},"alerting.webhooks[].headers":{type:`map[string]string`,default:null,doc:``},"alerting.webhooks[].name":{type:`string`,default:``,doc:``},"alerting.webhooks[].url":{type:`string`,default:``,doc:``},"analyzer.cache_hit_ratio_warning":{type:`float64`,default:.95,doc:`Warn when the shared buffers cache hit ratio falls below this fraction (0.0-1.0). Low ratios suggest shared_buffers is under-sized or working set is too large.`},"analyzer.checkpoint_frequency_warning_per_hour":{type:`int`,default:12,doc:`Warn when checkpoints occur more than this many times per hour. High frequency indicates max_wal_size is too small.`},"analyzer.idle_in_transaction_timeout_minutes":{type:`int`,default:30,doc:`Report sessions sitting in 'idle in transaction' longer than this. Long idle-in-tx sessions block vacuum and hold locks.`},"analyzer.index_bloat_threshold_pct":{type:`int`,default:30,doc:`Minimum bloat percentage (0-100) an index must exhibit before it becomes a REINDEX candidate.`},"analyzer.interval_seconds":{type:`int`,default:600,doc:`How often the analyzer runs its rule checks, in seconds. Lower values detect issues faster but add load.`},"analyzer.regression_lookback_days":{type:`int`,default:7,doc:`How many days of pg_stat_statements history the regression detector compares against.`},"analyzer.regression_threshold_pct":{type:`int`,default:50,doc:`Percent latency regression required before a query is flagged as a regressor. Set low for sensitive detection, higher to reduce noise.`},"analyzer.seq_scan_min_rows":{type:`int`,default:1e5,doc:`Minimum table row count before a sequential scan is reported as a finding. Below this, a seq scan is usually cheaper than an index lookup.`},"analyzer.slow_query_threshold_ms":{type:`int`,default:1e3,doc:`Queries with mean_exec_time above this are considered slow and become candidates for optimization findings.`},"analyzer.table_bloat_dead_tuple_pct":{type:`int`,default:20,doc:`Dead-tuple percentage threshold for reporting table bloat. Above this the analyzer emits a vacuum or repack finding.`},"analyzer.table_bloat_min_rows":{type:`int`,default:1e3,doc:`Minimum row count before a table is considered for bloat analysis. Tiny tables are noisy and not worth reporting.`},"analyzer.unused_index_window_days":{type:`int`,default:7,doc:`An index must be unused (idx_scan=0) for at least this many days before the analyzer suggests dropping it. Default 7 days.`,warning:`Setting this too low can recommend dropping indexes that support infrequent but critical queries (e.g. monthly reports).`},"analyzer.work_mem_promotion_threshold":{type:`int`,default:5,doc:`How many active work_mem hints a single role must accumulate before the analyzer recommends promoting work_mem at the role level via ALTER ROLE. Set 0 to disable the advisor.`},"analyzer.xid_wraparound_critical":{type:`int64`,default:1e9,doc:`Transaction age at which the analyzer escalates to critical severity. Normally ~1.5 billion — past this autovacuum will force emergency wraparound runs.`,warning:`If this is hit, autovacuum enters aggressive mode and the database may eventually refuse writes.`},"analyzer.xid_wraparound_warning":{type:`int64`,default:5e8,doc:`Transaction age at which the analyzer emits a wraparound warning. Normally ~200 million.`},"api.listen_addr":{type:`string`,default:`0.0.0.0:8080`,doc:`Address the REST API and dashboard HTTP server binds to (host:port). Use :8080 to listen on all interfaces.`},"auto_explain.collect_interval_seconds":{type:`int`,default:300,doc:``},"auto_explain.enabled":{type:`bool`,default:!0,doc:``},"auto_explain.log_min_duration_ms":{type:`int`,default:1e3,doc:``},"auto_explain.max_plans_per_cycle":{type:`int`,default:100,doc:``},"auto_explain.prefer_session_load":{type:`bool`,default:!0,doc:``},"briefing.channels":{type:`[]string`,default:null,doc:``},"briefing.schedule":{type:`string`,default:`0 6 * * *`,doc:``},"briefing.slack_webhook_url":{type:`string`,default:``,doc:``},"collector.batch_size":{type:`int`,default:1e3,doc:``},"collector.interval_seconds":{type:`int`,default:60,doc:``},"collector.max_queries":{type:`int`,default:500,doc:``},"databases[].analyzer_interval_seconds":{type:`int`,default:0,doc:`Per-database analyzer interval override. Zero falls back to defaults.analyzer_interval_seconds.`,mode:`fleet-only`},"databases[].collector_interval_seconds":{type:`int`,default:0,doc:`Per-database collector interval override. Zero falls back to defaults.collector_interval_seconds.`,mode:`fleet-only`},"databases[].database":{type:`string`,default:``,doc:`Database name on the target instance.`,mode:`fleet-only`},"databases[].host":{type:`string`,default:``,doc:`Hostname or IP of this fleet database.`,mode:`fleet-only`},"databases[].max_connections":{type:`int`,default:0,doc:`Maximum connections the sidecar pgx pool opens to this database. Falls back to defaults.max_connections when zero.`,mode:`fleet-only`},"databases[].name":{type:`string`,default:``,doc:`Logical name for this database in fleet mode. Must be unique across the fleet.`,mode:`fleet-only`},"databases[].password":{type:`string`,default:null,doc:`Password for the login role. Encrypted at rest using encryption_key when persisted to the meta database.`,mode:`fleet-only`,secret:!0},"databases[].port":{type:`int`,default:0,doc:`TCP port of this fleet database.`,mode:`fleet-only`},"databases[].sslmode":{type:`string`,default:``,doc:`libpq sslmode for this connection (disable, prefer, require, verify-ca, verify-full).`,mode:`fleet-only`},"databases[].tags":{type:`[]string`,default:null,doc:`Free-form tags used to group databases for fleet operations (e.g. tier=prod, team=payments).`,mode:`fleet-only`},"databases[].trust_level":{type:`string`,default:``,doc:`Per-database override of the global trust.level. Useful for running a pilot database in autonomous while the fleet stays in advisory.`,mode:`fleet-only`},"databases[].user":{type:`string`,default:``,doc:`Login role the sidecar uses to connect to this fleet database.`,mode:`fleet-only`},"defaults.analyzer_interval_seconds":{type:`int`,default:0,doc:`Default analyzer interval applied to fleet databases that don't set their own value.`,mode:`fleet-only`},"defaults.collector_interval_seconds":{type:`int`,default:0,doc:`Default collector interval applied to fleet databases that don't set their own value.`,mode:`fleet-only`},"defaults.max_connections":{type:`int`,default:0,doc:`Default max_connections applied to fleet databases that don't set their own value.`,mode:`fleet-only`},"defaults.trust_level":{type:`string`,default:``,doc:`Default trust level applied to fleet databases. Falls back to the global trust.level when unset.`,mode:`fleet-only`},encryption_key:CB,"forecaster.cache_warn_threshold":{type:`float64`,default:.95,doc:``},"forecaster.connection_warn_pct":{type:`float64`,default:80,doc:``},"forecaster.disk_warn_growth_gb_day":{type:`float64`,default:5,doc:``},"forecaster.enabled":{type:`bool`,default:!0,doc:``},"forecaster.lookback_days":{type:`int`,default:30,doc:``},"forecaster.sequence_critical_days":{type:`int`,default:30,doc:``},"forecaster.sequence_warn_days":{type:`int`,default:90,doc:``},"llm.api_key":{type:`string`,default:null,doc:"Authentication token for the LLM provider. Prefer sourcing from environment via ${LLM_API_KEY} rather than committing literal values.",secret:!0},"llm.context_budget_tokens":{type:`int`,default:8192,doc:`Maximum tokens attached as context (schema, stats, plans) to a single LLM request. Prevents oversized prompts from busting the model context window.`},"llm.cooldown_seconds":{type:`int`,default:300,doc:`Minimum seconds between two LLM requests. Rate-limits the sidecar so it cannot burst the provider during a busy cycle.`},"llm.enabled":{type:`bool`,default:!1,doc:`Global enable for LLM-assisted analysis (planner explanations, recommendation narratives). When disabled, pg_sage falls back to deterministic heuristics only.`},"llm.endpoint":{type:`string`,default:``,doc:`LLM provider base URL. Supports OpenAI-compatible chat-completions endpoints. Can be left blank to use the vendor default.`},"llm.index_optimizer.enabled":{type:`bool`,default:!1,doc:``},"llm.index_optimizer.max_include_columns":{type:`int`,default:3,doc:``},"llm.index_optimizer.max_indexes_per_table":{type:`int`,default:10,doc:``},"llm.index_optimizer.min_query_calls":{type:`int`,default:100,doc:``},"llm.index_optimizer.over_indexed_ratio_pct":{type:`int`,default:150,doc:``},"llm.index_optimizer.write_heavy_ratio_pct":{type:`int`,default:70,doc:``},"llm.model":{type:`string`,default:``,doc:`Model identifier sent to the provider (e.g. gpt-4o-mini). Must support JSON-mode responses for structured outputs.`},"llm.optimizer.confidence_threshold":{type:`float64`,default:.5,doc:``},"llm.optimizer.enabled":{type:`bool`,default:!1,doc:``},"llm.optimizer.hypopg_min_improvement_pct":{type:`float64`,default:10,doc:``},"llm.optimizer.max_include_columns":{type:`int`,default:3,doc:``},"llm.optimizer.max_indexes_per_table":{type:`int`,default:10,doc:``},"llm.optimizer.max_new_per_table":{type:`int`,default:3,doc:``},"llm.optimizer.min_query_calls":{type:`int`,default:100,doc:``},"llm.optimizer.min_snapshots":{type:`int`,default:2,doc:``},"llm.optimizer.over_indexed_ratio_pct":{type:`int`,default:150,doc:``},"llm.optimizer.plan_source":{type:`string`,default:`auto`,doc:``},"llm.optimizer.write_heavy_ratio_pct":{type:`int`,default:70,doc:``},"llm.optimizer.write_impact_threshold_pct":{type:`float64`,default:15,doc:``},"llm.optimizer_llm.api_key":{type:`string`,default:null,doc:`API key for the optimizer LLM. Prefer env-var substitution over literal values.`,secret:!0},"llm.optimizer_llm.cooldown_seconds":{type:`int`,default:300,doc:`Minimum seconds between two optimizer LLM requests.`},"llm.optimizer_llm.enabled":{type:`bool`,default:!1,doc:`Enable the dedicated reasoning-tier LLM used by the index optimizer. When false the optimizer falls back to the general llm.* client.`},"llm.optimizer_llm.endpoint":{type:`string`,default:``,doc:`Base URL for the optimizer LLM provider. Can differ from the general llm.endpoint when the reasoning tier lives on another provider.`},"llm.optimizer_llm.fallback_to_general":{type:`bool`,default:!0,doc:`If true, fall back to the general llm.* client when the optimizer LLM is unavailable or over budget.`},"llm.optimizer_llm.max_output_tokens":{type:`int`,default:8192,doc:`Upper bound on output tokens accepted from the optimizer LLM. Truncates runaway responses.`},"llm.optimizer_llm.model":{type:`string`,default:``,doc:`Reasoning-tier model identifier (e.g. o1-mini). Must return JSON when requested.`},"llm.optimizer_llm.timeout_seconds":{type:`int`,default:120,doc:`Per-request timeout for optimizer LLM calls. Reasoning models typically need longer timeouts than chat models.`},"llm.optimizer_llm.token_budget_daily":{type:`int`,default:5e5,doc:`Daily token cap for the optimizer LLM — independent of the general llm.token_budget_daily so reasoning spend can be tracked separately.`},"llm.timeout_seconds":{type:`int`,default:30,doc:`HTTP request timeout for each LLM call. Low values protect the analyzer cycle from slow providers; high values tolerate cold-start latency.`},"llm.token_budget_daily":{type:`int`,default:5e5,doc:`Soft daily cap on total tokens (input + output) the sidecar will spend on LLM requests. Once exceeded the LLM is skipped until the next UTC day.`},meta_db:wB,mode:TB,"oauth.client_id":{type:`string`,default:``,doc:`OAuth client ID issued by the provider when the pg_sage application was registered.`},"oauth.client_secret":{type:`string`,default:null,doc:`OAuth client secret issued by the provider. Source from an environment variable in production.`,secret:!0},"oauth.default_role":{type:`string`,default:`viewer`,doc:`Role assigned to newly authenticated users when no role mapping rule matches.`},"oauth.enabled":{type:`bool`,default:!1,doc:`Enable OAuth single sign-on for the sidecar UI. When false, the UI falls back to local auth.`},"oauth.issuer_url":{type:`string`,default:``,doc:`OIDC issuer URL used to discover the provider's authorization and token endpoints.`},"oauth.provider":{type:`string`,default:``,doc:`OAuth provider identifier. Supported values include google, github, okta, and generic OIDC.`},"oauth.redirect_url":{type:`string`,default:``,doc:`Absolute URL the provider redirects to after authentication. Must match the URI registered at the provider.`},"postgres.database":{type:`string`,default:`postgres`,doc:`Target database name the sidecar connects to. Ignored when database_url is set.`},"postgres.database_url":{type:`string`,default:``,doc:`Full libpq connection URL. When set, overrides host/port/user/password/database/sslmode.`},"postgres.host":{type:`string`,default:`localhost`,doc:`Hostname or IP of the target PostgreSQL instance. Ignored when database_url is set.`},"postgres.max_connections":{type:`int`,default:2,doc:`Maximum connections the sidecar pgx pool will open to this target. Keep well below max_connections on the server.`},"postgres.password":{type:`string`,default:null,doc:`Password for the sidecar login role. Prefer environment-variable substitution or a secrets manager over committing literal values.`,secret:!0},"postgres.port":{type:`int`,default:5432,doc:`TCP port of the target PostgreSQL instance. Ignored when database_url is set.`},"postgres.sslmode":{type:`string`,default:`prefer`,doc:`libpq sslmode string (disable, allow, prefer, require, verify-ca, verify-full). Use verify-full in production.`},"postgres.user":{type:`string`,default:`sage_agent`,doc:`PostgreSQL login role used by the sidecar. Requires pg_read_all_stats plus write access to the sage schema.`},"prometheus.listen_addr":{type:`string`,default:`127.0.0.1:9187`,doc:``},"retention.actions_days":{type:`int`,default:365,doc:``},"retention.explains_days":{type:`int`,default:90,doc:``},"retention.findings_days":{type:`int`,default:180,doc:``},"retention.snapshots_days":{type:`int`,default:90,doc:``},"safety.backoff_consecutive_skips":{type:`int`,default:3,doc:`After this many consecutive skipped cycles (e.g. CPU ceiling hit repeatedly), enter dormant mode and slow the cadence until load subsides.`},"safety.cpu_ceiling_pct":{type:`int`,default:90,doc:`Skip cycles when database-host CPU exceeds this percent (1-100). Prevents pg_sage from adding load during incidents.`},"safety.ddl_timeout_seconds":{type:`int`,default:300,doc:`Timeout applied to DDL actions (CREATE INDEX, ALTER TABLE) executed by the executor. Per-statement ceiling, not per-cycle.`},"safety.disk_pressure_threshold_pct":{type:`int`,default:5,doc:`When database data volume usage exceeds this percent, skip write-producing actions. Prevents adding indexes to a near-full volume.`},"safety.dormant_interval_seconds":{type:`int`,default:600,doc:`Cycle interval (seconds) used while in dormant mode — typically much larger than the normal interval so the sidecar wakes rarely while the target is stressed.`},"safety.lock_timeout_ms":{type:`int`,default:3e4,doc:`lock_timeout applied to connections running DDL or ANALYZE. Must be > 0 for ANALYZE actions in v0.8.5 — autovacuum can hold a ShareUpdateExclusiveLock indefinitely.`,warning:`Zero disables the timeout entirely and is refused by the executor for ANALYZE actions.`},"safety.query_timeout_ms":{type:`int`,default:500,doc:`statement_timeout applied to every collector and analyzer query issued by the sidecar. Protects the target from runaway introspection.`},"trust.cascade_cooldown_cycles":{type:`int`,default:3,doc:`If N consecutive cycles each propose new actions, throttle to observe impact. Prevents storm-like cascades of small changes.`},"trust.level":{type:`string`,default:`observation`,doc:`Autonomy tier. observation = log only; advisory = queue actions for approval; autonomous = execute safe/moderate actions directly.`,warning:`Changing to autonomous enables DDL execution without human review.`},"trust.maintenance_window":{type:`string`,default:``,doc:`Cron-like window (e.g. 'Sun 02:00-06:00') during which heavy maintenance actions like ANALYZE on large tables or REINDEX are permitted.`},"trust.ramp_start":{type:`string`,default:``,doc:`RFC3339 timestamp when the trust ramp began. Auto-persisted on first startup if empty. Used to gate newly-supported actions behind a soak period.`},"trust.rollback_cooldown_days":{type:`int`,default:7,doc:`After a rollback, the same action family is blocked for this many days to prevent flap. Default 3 days.`},"trust.rollback_threshold_pct":{type:`int`,default:10,doc:`Latency regression percentage (0-100) that triggers automatic rollback of a recently applied action. Lower = more sensitive.`},"trust.rollback_window_minutes":{type:`int`,default:15,doc:`How many minutes after applying an action pg_sage watches for regressions before considering it stable.`},"trust.tier3_high_risk":{type:`bool`,default:!1,doc:`Enable tier-3 actions classified as high risk. Ignored outside fleet mode — standalone always forces this to false.`,warning:`High-risk actions can destabilize production — enable only with a reviewed rollback plan.`,mode:`fleet-only`},"trust.tier3_moderate":{type:`bool`,default:!1,doc:`Enable tier-3 actions classified as moderate risk (e.g. VACUUM FULL on small tables). Requires trust.level=autonomous.`,warning:`Moderate actions can briefly lock tables.`},"trust.tier3_safe":{type:`bool`,default:!0,doc:`Enable tier-3 actions classified as safe (e.g. CREATE INDEX CONCURRENTLY on small tables). Requires trust.level=autonomous.`},"tuner.analyze_cooldown_minutes":{type:`int`,default:60,doc:`Minimum minutes between tuner-initiated ANALYZE runs on the same table. Also respects autovacuum last_analyze as a recent-run signal.`},"tuner.analyze_maintenance_threshold_mb":{type:`int64`,default:1024,doc:`Tables larger than this many MB can only be ANALYZEd during the configured maintenance_window. Default 1024 (1GB).`},"tuner.analyze_max_table_mb":{type:`int64`,default:10240,doc:`Tables larger than this many MB are never auto-ANALYZEd — an advisory finding is emitted instead for operator review.`,warning:`Default 10240 (10GB). Raise with care — ANALYZE on TB-scale tables can saturate I/O.`},"tuner.analyze_timeout_ms":{type:`int`,default:6e5,doc:`statement_timeout for ANALYZE actions. Default 600000 (10 minutes). Exceeding this marks the action failed_timeout and extends the cooldown.`},"tuner.enabled":{type:`bool`,default:!0,doc:`Master switch for the per-query tuner. When false, no hints are written and Tune() is a no-op — the analyzer still runs.`},"tuner.hint_retirement_days":{type:`int`,default:14,doc:`Hints older than this many days are retired unconditionally, regardless of current query behavior. Safety net against stale hint accumulation.`},"tuner.llm_enabled":{type:`bool`,default:!1,doc:`Allow the tuner to call the LLM for hint prescription when deterministic rules do not produce a recommendation. Budget-gated by llm.token_budget_daily.`},"tuner.max_concurrent_analyze":{type:`int`,default:1,doc:`Hard cap on concurrent ANALYZE actions across the entire sidecar process (shared semaphore — fleet-wide, not per-database). Default 1.`},"tuner.min_query_calls":{type:`int`,default:100,doc:`Require at least this many pg_stat_statements.calls before the tuner will act on a query. Filters out one-offs.`},"tuner.nested_loop_row_threshold":{type:`int64`,default:1e4,doc:`Minimum actual-row count on a nested-loop inner that triggers the bad-nested-loop symptom. Smaller values increase sensitivity.`},"tuner.parallel_min_table_rows":{type:`int64`,default:1e6,doc:`Threshold for suggesting parallel-enable hints on large sequential scans. Tables smaller than this are assumed not to benefit from parallelism.`},"tuner.plan_time_ratio":{type:`float64`,default:3,doc:`When plan_time / exec_time exceeds this ratio, the tuner flags the query as plan-time-dominated and considers prepared-statement hints.`},"tuner.revalidation_explain_timeout_ms":{type:`int`,default:1e4,doc:`statement_timeout applied to EXPLAIN queries issued by the revalidation loop. Queries that cannot be explained in time are deferred.`},"tuner.revalidation_interval_hours":{type:`int`,default:24,doc:`How often the hint revalidation loop runs. Set to 0 to disable the loop entirely. Default 24 hours.`},"tuner.revalidation_keep_ratio":{type:`float64`,default:1.2,doc:`During cost comparison, hinted plan cost must be at most this ratio of the unhinted plan to keep the hint. Default 1.2 (hinted <= 120% of unhinted).`},"tuner.revalidation_rollback_ratio":{type:`float64`,default:.8,doc:`When hinted-plan cost exceeds unhinted by this ratio, the hint is marked broken and rolled back. Default 0.8 (hinted >= 125% of unhinted).`},"tuner.stale_stats_age_minutes":{type:`int`,default:60,doc:`Both manual and autovacuum last_analyze must be older than this many minutes before the table is considered stale. Default 60.`},"tuner.stale_stats_estimate_skew":{type:`float64`,default:10,doc:`Ratio ActualRows / PlanRows above which a plan node is considered row-estimate skewed. Default 10 — same threshold as the bad-nested-loop check.`},"tuner.stale_stats_mod_ratio":{type:`float64`,default:.1,doc:`Fraction of rows modified since last ANALYZE (n_mod_since_analyze / reltuples) required to treat a table as stale. Default 0.1 = 10%.`},"tuner.verify_after_apply":{type:`bool`,default:!0,doc:`Run the daily hint revalidation loop. Removes hints that have become redundant, harmful, or broken. Requires pg_hint_plan.`,warning:`v0.8.5 activates a real background cycle here — upgrade note: if you want v0.8.4 inert behavior, set this to false before upgrading.`},"tuner.work_mem_max_mb":{type:`int`,default:512,doc:`Maximum per-query work_mem (MB) the tuner is allowed to prescribe via Set(work_mem) hints. Ceiling prevents runaway memory suggestions.`}},DB=`/docs`;function OB({configKey:e,children:t,side:n=`top`}){let r=EB[e];if(!r||!r.doc)return t;let i=!!r.warning,a=r.docs_url?`${DB}${r.docs_url}`:null;return(0,I.jsx)(_B,{delayDuration:200,children:(0,I.jsxs)(vB,{children:[(0,I.jsx)(yB,{asChild:!0,children:(0,I.jsx)(`span`,{className:`inline-flex items-center gap-1 cursor-help border-b border-dotted border-gray-400`,"data-config-key":e,children:t})}),(0,I.jsx)(bB,{children:(0,I.jsxs)(xB,{side:n,sideOffset:6,className:`z-50 max-w-sm rounded-md px-3 py-2 text-xs shadow-lg `+(i?`bg-yellow-50 text-yellow-900 border border-yellow-300`:`bg-gray-900 text-gray-50 border border-gray-700`),children:[(0,I.jsx)(`div`,{className:`font-semibold mb-1 break-all`,children:e}),(0,I.jsx)(`div`,{className:`mb-1 whitespace-normal`,children:r.doc}),i&&(0,I.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-yellow-300 font-semibold`,children:[`⚠ `,r.warning]}),r.mode&&r.mode!==`both`&&(0,I.jsx)(`div`,{className:`mt-1 text-[10px] uppercase opacity-70`,children:r.mode}),r.secret&&(0,I.jsx)(`div`,{className:`mt-1 text-[10px] uppercase opacity-70`,children:`sensitive — not shown in UI`}),a&&(0,I.jsx)(`div`,{className:`mt-2`,children:(0,I.jsx)(`a`,{href:a,className:`underline text-blue-300 hover:text-blue-200`,target:`_blank`,rel:`noreferrer`,children:`Read more →`})}),(0,I.jsx)(SB,{className:i?`fill-yellow-50`:`fill-gray-900`})]})})]})})}function kB(e,t){let n=[];for(let r of Object.keys(e)){let i=t[r]?.value,a=e[r],o=t[r]?.source??`default`;n.push({key:r,before:i,after:a,source:o})}return n.sort((e,t)=>e.key.localeCompare(t.key)),n}function AB(e){if(e==null||e===``)return(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`(unset)`});if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function jB({edits:e,cfg:t,saving:n,onConfirm:r,onCancel:i}){(0,w.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!n&&i()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i,n]);let a=kB(e,t);return(0,I.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,role:`dialog`,"aria-modal":`true`,"data-testid":`config-diff-modal`,style:{background:`rgba(0,0,0,0.5)`},onClick:()=>{n||i()},children:(0,I.jsxs)(`div`,{className:`rounded max-w-2xl w-full mx-4 max-h-[85vh]\r + font-medium inline-block`,style:{background:t.bg,color:t.color},children:t.label})}},...s.some(e=>e.verification_status)?[{key:`verification_status`,label:`Verification`,render:e=>YF(e)}]:[],...s.some(e=>e.database_name)?[{key:`database_name`,label:`Database`}]:[],{key:`executed_at`,label:`When`,render:e=>(0,I.jsx)(FF,{timestamp:e.executed_at})}];async function u(e){if(!window.confirm(`Run the stored rollback SQL for this action?`))return;let t=e.database_name?`?database=${encodeURIComponent(e.database_name)}`:``,n=await fetch(`/api/v1/actions/${e.id}/rollback${t}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:`manual rollback from actions UI`})}),i=await n.json();if(!n.ok||!i.ok){a.error(i.error||`Rollback failed`);return}a.success(`Action ${e.id} rolled back`),r()}return s.length===0?(0,I.jsx)(IF,{message:`No actions have been executed yet. Actions will appear here as pg_sage works on your databases.`}):(0,I.jsx)(MF,{"data-testid":`executed-actions-table`,columns:l,rows:s,expandable:!0,renderExpanded:e=>(0,I.jsxs)(`div`,{className:`space-y-3`,children:[e.outcome===`failed`&&e.rollback_reason&&(0,I.jsxs)(`div`,{className:`p-3 rounded text-sm`,style:{background:`rgba(239,68,68,0.1)`,border:`1px solid rgba(239,68,68,0.3)`},children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--red)`},children:`Error Details`}),(0,I.jsx)(`code`,{className:`text-xs`,style:{color:`var(--text-primary)`,wordBreak:`break-all`},children:e.rollback_reason})]}),e.outcome===`rolled_back`&&e.rollback_reason&&(0,I.jsxs)(`div`,{className:`p-3 rounded text-sm`,style:{background:`rgba(245,158,11,0.1)`,border:`1px solid rgba(245,158,11,0.3)`},children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--yellow)`},children:`Rollback Reason`}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-primary)`},children:e.rollback_reason})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`SQL Executed`}),(0,I.jsx)(AF,{sql:e.sql_executed})]}),e.rollback_sql&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Rollback SQL`}),(0,I.jsx)(AF,{sql:e.rollback_sql}),o&&(e.outcome===`success`||e.outcome===`monitoring`||e.outcome===`pending`)&&(0,I.jsx)(`button`,{type:`button`,"data-testid":`rollback-action-button`,onClick:()=>u(e),className:`mt-2 px-2 py-1 rounded text-xs`,style:{background:`var(--yellow)`,color:`#111827`},children:`Roll Back Action`})]}),(0,I.jsxs)(`div`,{className:`flex gap-4 text-xs`,style:{color:`var(--text-secondary)`},children:[e.finding_id&&(0,I.jsxs)(`span`,{children:[`Finding #`,e.finding_id]}),e.database_name&&(0,I.jsxs)(`span`,{children:[`Database: `,e.database_name]}),e.measured_at&&(0,I.jsxs)(`span`,{children:[`Verified: `,(0,I.jsx)(FF,{timestamp:e.measured_at})]})]})]})})}function $F(){return(0,I.jsx)(`div`,{className:`space-y-2`,"data-testid":`pending-skeleton`,children:[0,1,2].map(e=>(0,I.jsx)(`div`,{className:`h-10 rounded animate-pulse`,style:{background:`var(--bg-hover)`}},e))})}function eI({data:e,loading:t,error:n,refetch:r}){let[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(``),[c,l]=(0,w.useState)(null),u=We(),d=VF();if(t)return(0,I.jsx)($F,{});if(n)return(0,I.jsx)($e,{message:n,onRetry:r});let f=e?.pending||[];async function p(e){l(null);try{let t=f.find(t=>t.id===e),n=t?.database_name?`?database=${encodeURIComponent(t.database_name)}`:``,i=await(await fetch(`/api/v1/actions/${e}/approve${n}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}})).json();i.ok?(d.success(`Action ${e} approved and executed`),l({type:`success`,text:`Action ${e} approved and executed`})):(d.error(i.error||`Approve failed`),l({type:`error`,text:i.error||`Approve failed`})),r(),u()}catch(e){d.error(`Approve failed: ${e.message}`),l({type:`error`,text:e.message})}}async function m(e){l(null);let t=o.trim();if(!t){l({type:`error`,text:`A rejection reason is required`});return}try{let n=f.find(t=>t.id===e),i=n?.database_name?`?database=${encodeURIComponent(n.database_name)}`:``,o=await(await fetch(`/api/v1/actions/${e}/reject${i}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:t})})).json();o.ok?(d.success(`Action ${e} rejected`),l({type:`success`,text:`Action ${e} rejected`})):(d.error(o.error||`Reject failed`),l({type:`error`,text:o.error||`Reject failed`})),a(null),s(``),r(),u()}catch(e){d.error(`Reject failed: ${e.message}`),l({type:`error`,text:e.message})}}let h=[{key:`action_risk`,label:`Risk`,render:e=>{let t={safe:{label:`Low Risk`,color:`var(--green)`},moderate:{label:`Moderate Risk`,color:`var(--yellow)`},high:{label:`High Risk`,color:`var(--red)`}},n=JF(e),r=t[n]||{label:n,color:`var(--text-secondary)`};return(0,I.jsx)(`span`,{style:{color:r.color},children:r.label})}},{key:`database_name`,label:`Database`},{key:`finding_id`,label:`Finding`},{key:`proposed_sql`,label:`SQL Preview`,render:e=>{let t=(e.proposed_sql||``).replace(/\s+/g,` `).trim();return t.length>90?t.slice(0,90)+`...`:t}},{key:`proposed_at`,label:`Proposed`,render:e=>(0,I.jsx)(FF,{timestamp:e.proposed_at})},{key:`actions`,label:``,render:e=>(0,I.jsxs)(`div`,{className:`flex gap-2`,children:[(0,I.jsx)(`button`,{onClick:()=>p(e.id),"data-testid":`approve-button`,className:`px-2 py-1 rounded text-xs`,style:{background:`var(--green)`,color:`#fff`},children:`Approve`}),(0,I.jsx)(`button`,{onClick:()=>a(i===e.id?null:e.id),"data-testid":`reject-button`,className:`px-2 py-1 rounded text-xs`,style:{background:`var(--red)`,color:`#fff`},children:`Reject`})]})}];return f.length===0?(0,I.jsx)(IF,{message:`No actions waiting for approval. When pg_sage identifies improvements that need your OK, they'll appear here.`}):(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsx)(`p`,{"data-testid":`pending-help-text`,className:`text-sm`,style:{color:`var(--text-secondary)`},children:`These actions are waiting for your review. Approve to execute, or reject with a reason.`}),c&&(0,I.jsx)(`div`,{className:`p-2 rounded text-sm`,style:{background:c.type===`success`?`var(--green)`:`var(--red)`,color:`#fff`,opacity:.9},children:c.text}),(0,I.jsx)(MF,{"data-testid":`pending-actions-table`,columns:h,rows:f,expandable:!0,renderExpanded:e=>(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Proposed SQL`}),(0,I.jsx)(AF,{sql:e.proposed_sql})]}),e.rollback_sql&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Rollback SQL`}),(0,I.jsx)(AF,{sql:e.rollback_sql})]}),i===e.id&&(0,I.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,I.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),placeholder:`Reason for rejection...`,className:`px-2 py-1 rounded text-sm flex-1`,style:{background:`var(--bg-primary)`,color:`var(--text-primary)`,border:`1px solid var(--border)`}}),(0,I.jsx)(`button`,{onClick:()=>m(e.id),disabled:!o.trim(),className:`px-2 py-1 rounded text-xs`,style:{background:`var(--red)`,color:`#fff`,opacity:o.trim()?1:.45,cursor:o.trim()?`pointer`:`not-allowed`},children:`Confirm Reject`})]})]})})]})}var tI=5e5;function nI({snapshot:e}){let[t,n]=(0,w.useState)(!1),[r,i]=(0,w.useState)(null),a=null;try{let t=JSON.stringify(e,null,2);if(t.length>tI)throw Error(`Snapshot is too large to display (${t.length} chars)`);a=t}catch(e){r||i(e.message)}let o=()=>{try{let t=JSON.stringify(e);navigator.clipboard.writeText(t),n(!0),setTimeout(()=>n(!1),2e3)}catch{}};return r?(0,I.jsxs)(`div`,{className:`space-y-2`,"data-testid":`snapshot-error`,children:[(0,I.jsxs)(`div`,{className:`text-sm p-3 rounded`,style:{background:`#3b1111`,border:`1px solid var(--red)`,color:`var(--red)`},children:[`Unable to render snapshot: `,r]}),(0,I.jsx)(`button`,{onClick:o,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-card)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:t?`Copied!`:`Copy raw response`})]}):(0,I.jsx)(`pre`,{className:`text-xs overflow-auto`,style:{color:`var(--text-secondary)`},children:a})}function rI({database:e}){let t=e&&e!==`all`?e:null,{data:n,loading:r,error:i,refetch:a}=Ae(t?`/api/v1/snapshots/latest?database=${t}`:null,0);return t?r?(0,I.jsx)(yF,{}):i?(0,I.jsx)($e,{message:i,onRetry:a}):(0,I.jsx)(`div`,{className:`space-y-6`,children:(0,I.jsxs)(`div`,{className:`rounded p-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`h2`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:[`Database: `,t]}),n?.snapshot?(0,I.jsx)(nI,{snapshot:n.snapshot}):(0,I.jsx)(IF,{message:`No snapshot data available yet`})]})}):(0,I.jsx)(IF,{message:`Select a database from the picker above`})}typeof window<`u`&&window.document&&window.document.createElement;function iI(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function aI(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function oI(...e){return t=>{let n=!1,r=e.map(e=>{let r=aI(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=w.useMemo(()=>o,Object.values(o));return(0,I.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=w.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>w.createContext(e));return function(n){let r=n?.[e]||t;return w.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,lI(i,...t)]}function lI(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return w.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}function uI(e){let t=dI(e),n=w.forwardRef((e,n)=>{let{children:r,...i}=e,a=w.Children.toArray(r),o=a.find(mI);if(o){let e=o.props.children,r=a.map(t=>t===o?w.Children.count(e)>1?w.Children.only(null):w.isValidElement(e)?e.props.children:null:t);return(0,I.jsx)(t,{...i,ref:n,children:w.isValidElement(e)?w.cloneElement(e,void 0,r):null})}return(0,I.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function dI(e){let t=w.forwardRef((e,t)=>{let{children:n,...r}=e;if(w.isValidElement(n)){let e=gI(n),i=hI(r,n.props);return n.type!==w.Fragment&&(i.ref=t?oI(t,e):e),w.cloneElement(n,i)}return w.Children.count(n)>1?w.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var fI=Symbol(`radix.slottable`);function pI(e){let t=({children:e})=>(0,I.jsx)(I.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=fI,t}function mI(e){return w.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===fI}function hI(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function gI(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var _I=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=uI(`Primitive.${t}`),r=w.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,I.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function vI(e,t){e&&pd.flushSync(()=>e.dispatchEvent(t))}function yI(e){let t=w.useRef(e);return w.useEffect(()=>{t.current=e}),w.useMemo(()=>(...e)=>t.current?.(...e),[])}function bI(e,t=globalThis?.document){let n=yI(e);w.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var xI=`DismissableLayer`,SI=`dismissableLayer.update`,CI=`dismissableLayer.pointerDownOutside`,wI=`dismissableLayer.focusOutside`,TI,EI=w.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),DI=w.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...c}=e,l=w.useContext(EI),[u,d]=w.useState(null),f=u?.ownerDocument??globalThis?.document,[,p]=w.useState({}),m=sI(t,e=>d(e)),h=Array.from(l.layers),[g]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),_=h.indexOf(g),v=u?h.indexOf(u):-1,y=l.layersWithOutsidePointerEventsDisabled.size>0,b=v>=_,x=AI(e=>{let t=e.target,n=[...l.branches].some(e=>e.contains(t));!b||n||(i?.(e),o?.(e),e.defaultPrevented||s?.())},f),S=jI(e=>{let t=e.target;[...l.branches].some(e=>e.contains(t))||(a?.(e),o?.(e),e.defaultPrevented||s?.())},f);return bI(e=>{v===l.layers.size-1&&(r?.(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},f),w.useEffect(()=>{if(u)return n&&(l.layersWithOutsidePointerEventsDisabled.size===0&&(TI=f.body.style.pointerEvents,f.body.style.pointerEvents=`none`),l.layersWithOutsidePointerEventsDisabled.add(u)),l.layers.add(u),MI(),()=>{n&&l.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=TI)}},[u,f,n,l]),w.useEffect(()=>()=>{u&&(l.layers.delete(u),l.layersWithOutsidePointerEventsDisabled.delete(u),MI())},[u,l]),w.useEffect(()=>{let e=()=>p({});return document.addEventListener(SI,e),()=>document.removeEventListener(SI,e)},[]),(0,I.jsx)(_I.div,{...c,ref:m,style:{pointerEvents:y?b?`auto`:`none`:void 0,...e.style},onFocusCapture:iI(e.onFocusCapture,S.onFocusCapture),onBlurCapture:iI(e.onBlurCapture,S.onBlurCapture),onPointerDownCapture:iI(e.onPointerDownCapture,x.onPointerDownCapture)})});DI.displayName=xI;var OI=`DismissableLayerBranch`,kI=w.forwardRef((e,t)=>{let n=w.useContext(EI),r=w.useRef(null),i=sI(t,r);return w.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,I.jsx)(_I.div,{...e,ref:i})});kI.displayName=OI;function AI(e,t=globalThis?.document){let n=yI(e),r=w.useRef(!1),i=w.useRef(()=>{});return w.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){NI(CI,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function jI(e,t=globalThis?.document){let n=yI(e),r=w.useRef(!1);return w.useEffect(()=>{let e=e=>{e.target&&!r.current&&NI(wI,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function MI(){let e=new CustomEvent(SI);document.dispatchEvent(e)}function NI(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?vI(i,a):i.dispatchEvent(a)}var PI=globalThis?.document?w.useLayoutEffect:()=>{},FI=w.useId||(()=>void 0),II=0;function LI(e){let[t,n]=w.useState(FI());return PI(()=>{e||n(e=>e??String(II++))},[e]),e||(t?`radix-${t}`:``)}var RI=[`top`,`right`,`bottom`,`left`],zI=Math.min,BI=Math.max,VI=Math.round,HI=Math.floor,UI=e=>({x:e,y:e}),WI={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function GI(e,t,n){return BI(e,zI(t,n))}function KI(e,t){return typeof e==`function`?e(t):e}function qI(e){return e.split(`-`)[0]}function JI(e){return e.split(`-`)[1]}function YI(e){return e===`x`?`y`:`x`}function XI(e){return e===`y`?`height`:`width`}function ZI(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function QI(e){return YI(ZI(e))}function $I(e,t,n){n===void 0&&(n=!1);let r=JI(e),i=QI(e),a=XI(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=cL(o)),[o,cL(o)]}function eL(e){let t=cL(e);return[tL(e),t,tL(t)]}function tL(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var nL=[`left`,`right`],rL=[`right`,`left`],iL=[`top`,`bottom`],aL=[`bottom`,`top`];function oL(e,t,n){switch(e){case`top`:case`bottom`:return n?t?rL:nL:t?nL:rL;case`left`:case`right`:return t?iL:aL;default:return[]}}function sL(e,t,n,r){let i=JI(e),a=oL(qI(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(tL)))),a}function cL(e){let t=qI(e);return WI[t]+e.slice(t.length)}function lL(e){return{top:0,right:0,bottom:0,left:0,...e}}function uL(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:lL(e)}function dL(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function fL(e,t,n){let{reference:r,floating:i}=e,a=ZI(t),o=QI(t),s=XI(o),c=qI(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(JI(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function pL(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=KI(t,e),p=uL(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=dL(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=dL(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var mL=50,hL=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:pL},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=fL(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=KI(e,t)||{};if(l==null)return{};let d=uL(u),f={x:n,y:r},p=QI(i),m=XI(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=zI(d[_],T),D=zI(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=GI(O,A,k),M=!c.arrow&&JI(i)!=null&&A!==j&&a.reference[m]/2-(Ae<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==ZI(t))||T.every(e=>ZI(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=ZI(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function vL(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function yL(e){return RI.some(t=>e[t]>=0)}var bL=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=KI(e,t);switch(i){case`referenceHidden`:{let e=vL(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:yL(e)}}}case`escaped`:{let e=vL(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:yL(e)}}}default:return{}}}}},xL=new Set([`left`,`top`]);async function SL(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=qI(n),s=JI(n),c=ZI(n)===`y`,l=xL.has(o)?-1:1,u=a&&c?-1:1,d=KI(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var CL=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await SL(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},wL=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=KI(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=ZI(qI(i)),p=YI(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=GI(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=GI(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},TL=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=KI(e,t),u={x:n,y:r},d=ZI(i),f=YI(d),p=u[f],m=u[d],h=KI(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=xL.has(qI(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},EL=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=KI(e,t),u=await o.detectOverflow(t,l),d=qI(i),f=JI(i),p=ZI(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=zI(h-u[g],v),x=zI(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=BI(u.left,0),t=BI(u.right,0),n=BI(u.top,0),r=BI(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:BI(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:BI(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function DL(){return typeof window<`u`}function OL(e){return jL(e)?(e.nodeName||``).toLowerCase():`#document`}function kL(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function AL(e){return((jL(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function jL(e){return DL()?e instanceof Node||e instanceof kL(e).Node:!1}function ML(e){return DL()?e instanceof Element||e instanceof kL(e).Element:!1}function NL(e){return DL()?e instanceof HTMLElement||e instanceof kL(e).HTMLElement:!1}function PL(e){return!DL()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof kL(e).ShadowRoot}function FL(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=KL(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function IL(e){return/^(table|td|th)$/.test(OL(e))}function LL(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var RL=/transform|translate|scale|rotate|perspective|filter/,zL=/paint|layout|strict|content/,BL=e=>!!e&&e!==`none`,VL;function HL(e){let t=ML(e)?KL(e):e;return BL(t.transform)||BL(t.translate)||BL(t.scale)||BL(t.rotate)||BL(t.perspective)||!WL()&&(BL(t.backdropFilter)||BL(t.filter))||RL.test(t.willChange||``)||zL.test(t.contain||``)}function UL(e){let t=JL(e);for(;NL(t)&&!GL(t);){if(HL(t))return t;if(LL(t))return null;t=JL(t)}return null}function WL(){return VL??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),VL}function GL(e){return/^(html|body|#document)$/.test(OL(e))}function KL(e){return kL(e).getComputedStyle(e)}function qL(e){return ML(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function JL(e){if(OL(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||PL(e)&&e.host||AL(e);return PL(t)?t.host:t}function YL(e){let t=JL(e);return GL(t)?e.ownerDocument?e.ownerDocument.body:e.body:NL(t)&&FL(t)?t:YL(t)}function XL(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=YL(e),i=r===e.ownerDocument?.body,a=kL(r);if(i){let e=ZL(a);return t.concat(a,a.visualViewport||[],FL(r)?r:[],e&&n?XL(e):[])}else return t.concat(r,XL(r,[],n))}function ZL(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function QL(e){let t=KL(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=NL(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=VI(n)!==a||VI(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function $L(e){return ML(e)?e:e.contextElement}function eR(e){let t=$L(e);if(!NL(t))return UI(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=QL(t),o=(a?VI(n.width):n.width)/r,s=(a?VI(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var tR=UI(0);function nR(e){let t=kL(e);return!WL()||!t.visualViewport?tR:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function rR(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==kL(e)?!1:t}function iR(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=$L(e),o=UI(1);t&&(r?ML(r)&&(o=eR(r)):o=eR(e));let s=rR(a,n,r)?nR(a):UI(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=kL(a),t=r&&ML(r)?kL(r):r,n=e,i=ZL(n);for(;i&&r&&t!==n;){let e=eR(i),t=i.getBoundingClientRect(),r=KL(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=kL(i),i=ZL(n)}}return dL({width:u,height:d,x:c,y:l})}function aR(e,t){let n=qL(e).scrollLeft;return t?t.left+n:iR(AL(e)).left+n}function oR(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-aR(e,n),y:n.top+t.scrollTop}}function sR(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=AL(r),s=t?LL(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=UI(1),u=UI(0),d=NL(r);if((d||!d&&!a)&&((OL(r)!==`body`||FL(o))&&(c=qL(r)),d)){let e=iR(r);l=eR(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?oR(o,c):UI(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function cR(e){return Array.from(e.getClientRects())}function lR(e){let t=AL(e),n=qL(e),r=e.ownerDocument.body,i=BI(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=BI(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+aR(e),s=-n.scrollTop;return KL(r).direction===`rtl`&&(o+=BI(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var uR=25;function dR(e,t){let n=kL(e),r=AL(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=WL();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=aR(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=uR&&(a-=o)}else l<=uR&&(a+=l);return{width:a,height:o,x:s,y:c}}function fR(e,t){let n=iR(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=NL(e)?eR(e):UI(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function pR(e,t,n){let r;if(t===`viewport`)r=dR(e,n);else if(t===`document`)r=lR(AL(e));else if(ML(t))r=fR(t,n);else{let n=nR(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return dL(r)}function mR(e,t){let n=JL(e);return n===t||!ML(n)||GL(n)?!1:KL(n).position===`fixed`||mR(n,t)}function hR(e,t){let n=t.get(e);if(n)return n;let r=XL(e,[],!1).filter(e=>ML(e)&&OL(e)!==`body`),i=null,a=KL(e).position===`fixed`,o=a?JL(e):e;for(;ML(o)&&!GL(o);){let t=KL(o),n=HL(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||FL(o)&&!n&&mR(e,o))?r=r.filter(e=>e!==o):i=t,o=JL(o)}return t.set(e,r),r}function gR(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?LL(t)?[]:hR(t,this._c):[].concat(n),r],o=pR(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!TR(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function DR(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=$L(e),u=i||a?[...l?XL(l):[],...t?XL(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?ER(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?iR(e):null;c&&g();function g(){let t=iR(e);h&&!TR(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var OR=CL,kR=wL,AR=_L,jR=EL,MR=bL,NR=gL,PR=TL,FR=(e,t,n)=>{let r=new Map,i={platform:wR,...n},a={...i.platform,_c:r};return hL(e,t,{...i,platform:a})},IR=typeof document<`u`?w.useLayoutEffect:function(){};function LR(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 n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!LR(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!LR(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function RR(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function zR(e,t){let n=RR(e);return Math.round(t*n)/n}function BR(e){let t=w.useRef(e);return IR(()=>{t.current=e}),t}function VR(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=w.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=w.useState(r);LR(f,r)||p(r);let[m,h]=w.useState(null),[g,_]=w.useState(null),v=w.useCallback(e=>{e!==S.current&&(S.current=e,h(e))},[]),y=w.useCallback(e=>{e!==C.current&&(C.current=e,_(e))},[]),b=a||m,x=o||g,S=w.useRef(null),C=w.useRef(null),T=w.useRef(u),E=c!=null,D=BR(c),O=BR(i),k=BR(l),A=w.useCallback(()=>{if(!S.current||!C.current)return;let e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),FR(S.current,C.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!LR(T.current,t)&&(T.current=t,pd.flushSync(()=>{d(t)}))})},[f,t,n,O,k]);IR(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let j=w.useRef(!1);IR(()=>(j.current=!0,()=>{j.current=!1}),[]),IR(()=>{if(b&&(S.current=b),x&&(C.current=x),b&&x){if(D.current)return D.current(b,x,A);A()}},[b,x,A,D,E]);let M=w.useMemo(()=>({reference:S,floating:C,setReference:v,setFloating:y}),[v,y]),N=w.useMemo(()=>({reference:b,floating:x}),[b,x]),ee=w.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=zR(N.floating,u.x),r=zR(N.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...RR(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,N.floating,u.x,u.y]);return w.useMemo(()=>({...u,update:A,refs:M,elements:N,floatingStyles:ee}),[u,A,M,N,ee])}var HR=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:NR({element:r.current,padding:i}).fn(n):r?NR({element:r,padding:i}).fn(n):{}}}},UR=(e,t)=>{let n=OR(e);return{name:n.name,fn:n.fn,options:[e,t]}},WR=(e,t)=>{let n=kR(e);return{name:n.name,fn:n.fn,options:[e,t]}},GR=(e,t)=>({fn:PR(e).fn,options:[e,t]}),KR=(e,t)=>{let n=AR(e);return{name:n.name,fn:n.fn,options:[e,t]}},qR=(e,t)=>{let n=jR(e);return{name:n.name,fn:n.fn,options:[e,t]}},JR=(e,t)=>{let n=MR(e);return{name:n.name,fn:n.fn,options:[e,t]}},YR=(e,t)=>{let n=HR(e);return{name:n.name,fn:n.fn,options:[e,t]}},XR=`Arrow`,ZR=w.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,I.jsx)(_I.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,I.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});ZR.displayName=XR;var QR=ZR;function $R(e){let[t,n]=w.useState(void 0);return PI(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var ez=`Popper`,[tz,nz]=cI(ez),[rz,iz]=tz(ez),az=e=>{let{__scopePopper:t,children:n}=e,[r,i]=w.useState(null);return(0,I.jsx)(rz,{scope:t,anchor:r,onAnchorChange:i,children:n})};az.displayName=ez;var oz=`PopperAnchor`,sz=w.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=iz(oz,n),o=w.useRef(null),s=sI(t,o),c=w.useRef(null);return w.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,I.jsx)(_I.div,{...i,ref:s})});sz.displayName=oz;var cz=`PopperContent`,[lz,uz]=tz(cz),dz=w.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=iz(cz,n),[_,v]=w.useState(null),y=sI(t,e=>v(e)),[b,x]=w.useState(null),S=$R(b),C=S?.width??0,T=S?.height??0,E=r+(a===`center`?``:`-`+a),D=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},O=Array.isArray(l)?l:[l],k=O.length>0,A={padding:D,boundary:O.filter(hz),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:ee,middlewareData:te}=VR({strategy:`fixed`,placement:E,whileElementsMounted:(...e)=>DR(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[UR({mainAxis:i+T,alignmentAxis:o}),c&&WR({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?GR():void 0,...A}),c&&KR({...A}),qR({...A,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),b&&YR({element:b,padding:s}),gz({arrowWidth:C,arrowHeight:T}),f&&JR({strategy:`referenceHidden`,...A})]}),[P,F]=_z(N),ne=yI(m);PI(()=>{ee&&ne?.()},[ee,ne]);let re=te.arrow?.x,ie=te.arrow?.y,ae=te.arrow?.centerOffset!==0,[oe,se]=w.useState();return PI(()=>{_&&se(window.getComputedStyle(_).zIndex)},[_]),(0,I.jsx)(`div`,{ref:j.setFloating,"data-radix-popper-content-wrapper":``,style:{...M,transform:ee?M.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:oe,"--radix-popper-transform-origin":[te.transformOrigin?.x,te.transformOrigin?.y].join(` `),...te.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,I.jsx)(lz,{scope:n,placedSide:P,onArrowChange:x,arrowX:re,arrowY:ie,shouldHideArrow:ae,children:(0,I.jsx)(_I.div,{"data-side":P,"data-align":F,...h,ref:y,style:{...h.style,animation:ee?void 0:`none`}})})})});dz.displayName=cz;var fz=`PopperArrow`,pz={top:`bottom`,right:`left`,bottom:`top`,left:`right`},mz=w.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=uz(fz,n),a=pz[i.placedSide];return(0,I.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,I.jsx)(QR,{...r,ref:t,style:{...r.style,display:`block`}})})});mz.displayName=fz;function hz(e){return e!==null}var gz=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=_z(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function _z(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var vz=az,yz=sz,bz=dz,xz=mz,Sz=`Portal`,Cz=w.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=w.useState(!1);PI(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?pd.createPortal((0,I.jsx)(_I.div,{...r,ref:t}),o):null});Cz.displayName=Sz;function wz(e,t){return w.useReducer((e,n)=>t[e][n]??e,e)}var Tz=e=>{let{present:t,children:n}=e,r=Ez(t),i=typeof n==`function`?n({present:r.isPresent}):w.Children.only(n),a=sI(r.ref,Oz(i));return typeof n==`function`||r.isPresent?w.cloneElement(i,{ref:a}):null};Tz.displayName=`Presence`;function Ez(e){let[t,n]=w.useState(),r=w.useRef(null),i=w.useRef(e),a=w.useRef(`none`),[o,s]=wz(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return w.useEffect(()=>{let e=Dz(r.current);a.current=o===`mounted`?e:`none`},[o]),PI(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=Dz(t);e?s(`MOUNT`):o===`none`||t?.display===`none`?s(`UNMOUNT`):s(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,s]),PI(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=a=>{let o=Dz(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(s(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},c=e=>{e.target===t&&(a.current=Dz(r.current))};return t.addEventListener(`animationstart`,c),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,c),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}else s(`ANIMATION_END`)},[t,s]),{isPresent:[`mounted`,`unmountSuspended`].includes(o),ref:w.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function Dz(e){return e?.animationName||`none`}function Oz(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var kz=w.useInsertionEffect||PI;function Az({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=jz({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=w.useRef(e!==void 0);w.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`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.`),t.current=s},[s,r])}return[c,w.useCallback(t=>{if(s){let n=Mz(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function jz({defaultProp:e,onChange:t}){let[n,r]=w.useState(e),i=w.useRef(n),a=w.useRef(t);return kz(()=>{a.current=t},[t]),w.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function Mz(e){return typeof e==`function`}var Nz=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`}),Pz=`VisuallyHidden`,Fz=w.forwardRef((e,t)=>(0,I.jsx)(_I.span,{...e,ref:t,style:{...Nz,...e.style}}));Fz.displayName=Pz;var Iz=Fz,[Lz,Rz]=cI(`Tooltip`,[nz]),zz=nz(),Bz=`TooltipProvider`,Vz=700,Hz=`tooltip.open`,[Uz,Wz]=Lz(Bz),Gz=e=>{let{__scopeTooltip:t,delayDuration:n=Vz,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=w.useRef(!0),s=w.useRef(!1),c=w.useRef(0);return w.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,I.jsx)(Uz,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:w.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:w.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:w.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Gz.displayName=Bz;var Kz=`Tooltip`,[qz,Jz]=Lz(Kz),Yz=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Wz(Kz,e.__scopeTooltip),l=zz(t),[u,d]=w.useState(null),f=LI(),p=w.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=w.useRef(!1),[_,v]=Az({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Hz))):c.onClose(),a?.(e)},caller:Kz}),y=w.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),b=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),S=w.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return w.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,I.jsx)(vz,{...l,children:(0,I.jsx)(qz,{scope:t,contentId:f,open:_,stateAttribute:y,trigger:u,onTriggerChange:d,onTriggerEnter:w.useCallback(()=>{c.isOpenDelayedRef.current?S():b()},[c.isOpenDelayedRef,S,b]),onTriggerLeave:w.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:b,onClose:x,disableHoverableContent:m,children:n})})};Yz.displayName=Kz;var Xz=`TooltipTrigger`,Zz=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Jz(Xz,n),a=Wz(Xz,n),o=zz(n),s=sI(t,w.useRef(null),i.onTriggerChange),c=w.useRef(!1),l=w.useRef(!1),u=w.useCallback(()=>c.current=!1,[]);return w.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,I.jsx)(yz,{asChild:!0,...o,children:(0,I.jsx)(_I.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:iI(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:iI(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:iI(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:iI(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:iI(e.onBlur,i.onClose),onClick:iI(e.onClick,i.onClose)})})});Zz.displayName=Xz;var Qz=`TooltipPortal`,[$z,eB]=Lz(Qz,{forceMount:void 0}),tB=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Jz(Qz,t);return(0,I.jsx)($z,{scope:t,forceMount:n,children:(0,I.jsx)(Tz,{present:n||a.open,children:(0,I.jsx)(Cz,{asChild:!0,container:i,children:r})})})};tB.displayName=Qz;var nB=`TooltipContent`,rB=w.forwardRef((e,t)=>{let n=eB(nB,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Jz(nB,e.__scopeTooltip);return(0,I.jsx)(Tz,{present:r||o.open,children:o.disableHoverableContent?(0,I.jsx)(cB,{side:i,...a,ref:t}):(0,I.jsx)(iB,{side:i,...a,ref:t})})}),iB=w.forwardRef((e,t)=>{let n=Jz(nB,e.__scopeTooltip),r=Wz(nB,e.__scopeTooltip),i=w.useRef(null),a=sI(t,i),[o,s]=w.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=w.useCallback(()=>{s(null),d(!1)},[d]),p=w.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=fB(r,dB(r,n.getBoundingClientRect())),a=pB(t.getBoundingClientRect());s(hB([...i,...a])),d(!0)},[d]);return w.useEffect(()=>()=>f(),[f]),w.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),w.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!mB(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,I.jsx)(cB,{...e,ref:a})}),[aB,oB]=Lz(Kz,{isInside:!1}),sB=pI(`TooltipContent`),cB=w.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=Jz(nB,n),l=zz(n),{onClose:u}=c;return w.useEffect(()=>(document.addEventListener(Hz,u),()=>document.removeEventListener(Hz,u)),[u]),w.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,I.jsx)(DI,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,I.jsxs)(bz,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.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:[(0,I.jsx)(sB,{children:r}),(0,I.jsx)(aB,{scope:n,isInside:!0,children:(0,I.jsx)(Iz,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});rB.displayName=nB;var lB=`TooltipArrow`,uB=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=zz(n);return oB(lB,n).isInside?null:(0,I.jsx)(xz,{...i,...r,ref:t})});uB.displayName=lB;function dB(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function fB(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function pB(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function mB(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function hB(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),gB(t)}function gB(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var _B=Gz,vB=Yz,yB=Zz,bB=tB,xB=rB,SB=uB,CB={type:`string`,default:null,doc:`Passphrase used to encrypt sensitive fleet-mode fields (per-database passwords). Rotate via the key-rotation runbook.`,secret:!0},wB={type:`string`,default:``,doc:`DSN of the metadata database used in fleet mode to persist cross-target state. Blank in standalone mode.`},TB={type:`string`,default:`extension`,doc:`Operating mode: extension, standalone, or fleet. Standalone connects to one PostgreSQL target; fleet manages many databases from one sidecar.`},EB={"advisor.bloat_enabled":{type:`bool`,default:!0,doc:``},"advisor.connection_enabled":{type:`bool`,default:!0,doc:``},"advisor.enabled":{type:`bool`,default:!1,doc:``},"advisor.interval_seconds":{type:`int`,default:86400,doc:``},"advisor.memory_enabled":{type:`bool`,default:!0,doc:``},"advisor.rewrite_enabled":{type:`bool`,default:!0,doc:``},"advisor.vacuum_enabled":{type:`bool`,default:!0,doc:``},"advisor.wal_enabled":{type:`bool`,default:!0,doc:``},"alerting.check_interval_seconds":{type:`int`,default:60,doc:``},"alerting.cooldown_minutes":{type:`int`,default:15,doc:``},"alerting.enabled":{type:`bool`,default:!1,doc:``},"alerting.pagerduty_routing_key":{type:`string`,default:``,doc:``},"alerting.quiet_hours_end":{type:`string`,default:``,doc:``},"alerting.quiet_hours_start":{type:`string`,default:``,doc:``},"alerting.routes[].channels":{type:`[]string`,default:null,doc:``},"alerting.routes[].severity":{type:`string`,default:``,doc:``},"alerting.slack_webhook_url":{type:`string`,default:``,doc:``},"alerting.timezone":{type:`string`,default:`UTC`,doc:``},"alerting.webhooks[].headers":{type:`map[string]string`,default:null,doc:``},"alerting.webhooks[].name":{type:`string`,default:``,doc:``},"alerting.webhooks[].url":{type:`string`,default:``,doc:``},"analyzer.cache_hit_ratio_warning":{type:`float64`,default:.95,doc:`Warn when the shared buffers cache hit ratio falls below this fraction (0.0-1.0). Low ratios suggest shared_buffers is under-sized or working set is too large.`},"analyzer.checkpoint_frequency_warning_per_hour":{type:`int`,default:12,doc:`Warn when checkpoints occur more than this many times per hour. High frequency indicates max_wal_size is too small.`},"analyzer.idle_in_transaction_timeout_minutes":{type:`int`,default:30,doc:`Report sessions sitting in 'idle in transaction' longer than this. Long idle-in-tx sessions block vacuum and hold locks.`},"analyzer.index_bloat_threshold_pct":{type:`int`,default:30,doc:`Minimum bloat percentage (0-100) an index must exhibit before it becomes a REINDEX candidate.`},"analyzer.interval_seconds":{type:`int`,default:600,doc:`How often the analyzer runs its rule checks, in seconds. Lower values detect issues faster but add load.`},"analyzer.regression_lookback_days":{type:`int`,default:7,doc:`How many days of pg_stat_statements history the regression detector compares against.`},"analyzer.regression_threshold_pct":{type:`int`,default:50,doc:`Percent latency regression required before a query is flagged as a regressor. Set low for sensitive detection, higher to reduce noise.`},"analyzer.seq_scan_min_rows":{type:`int`,default:1e5,doc:`Minimum table row count before a sequential scan is reported as a finding. Below this, a seq scan is usually cheaper than an index lookup.`},"analyzer.slow_query_threshold_ms":{type:`int`,default:1e3,doc:`Queries with mean_exec_time above this are considered slow and become candidates for optimization findings.`},"analyzer.table_bloat_dead_tuple_pct":{type:`int`,default:20,doc:`Dead-tuple percentage threshold for reporting table bloat. Above this the analyzer emits a vacuum or repack finding.`},"analyzer.table_bloat_min_rows":{type:`int`,default:1e3,doc:`Minimum row count before a table is considered for bloat analysis. Tiny tables are noisy and not worth reporting.`},"analyzer.unused_index_window_days":{type:`int`,default:7,doc:`An index must be unused (idx_scan=0) for at least this many days before the analyzer suggests dropping it. Default 7 days.`,warning:`Setting this too low can recommend dropping indexes that support infrequent but critical queries (e.g. monthly reports).`},"analyzer.work_mem_promotion_threshold":{type:`int`,default:5,doc:`How many active work_mem hints a single role must accumulate before the analyzer recommends promoting work_mem at the role level via ALTER ROLE. Set 0 to disable the advisor.`},"analyzer.xid_wraparound_critical":{type:`int64`,default:1e9,doc:`Transaction age at which the analyzer escalates to critical severity. Normally ~1.5 billion — past this autovacuum will force emergency wraparound runs.`,warning:`If this is hit, autovacuum enters aggressive mode and the database may eventually refuse writes.`},"analyzer.xid_wraparound_warning":{type:`int64`,default:5e8,doc:`Transaction age at which the analyzer emits a wraparound warning. Normally ~200 million.`},"api.listen_addr":{type:`string`,default:`0.0.0.0:8080`,doc:`Address the REST API and dashboard HTTP server binds to (host:port). Use :8080 to listen on all interfaces.`},"auto_explain.collect_interval_seconds":{type:`int`,default:300,doc:``},"auto_explain.enabled":{type:`bool`,default:!0,doc:``},"auto_explain.log_min_duration_ms":{type:`int`,default:1e3,doc:``},"auto_explain.max_plans_per_cycle":{type:`int`,default:100,doc:``},"auto_explain.prefer_session_load":{type:`bool`,default:!0,doc:``},"briefing.channels":{type:`[]string`,default:null,doc:``},"briefing.schedule":{type:`string`,default:`0 6 * * *`,doc:``},"briefing.slack_webhook_url":{type:`string`,default:``,doc:``},"collector.batch_size":{type:`int`,default:1e3,doc:``},"collector.interval_seconds":{type:`int`,default:60,doc:``},"collector.max_queries":{type:`int`,default:500,doc:``},"databases[].analyzer_interval_seconds":{type:`int`,default:0,doc:`Per-database analyzer interval override. Zero falls back to defaults.analyzer_interval_seconds.`,mode:`fleet-only`},"databases[].collector_interval_seconds":{type:`int`,default:0,doc:`Per-database collector interval override. Zero falls back to defaults.collector_interval_seconds.`,mode:`fleet-only`},"databases[].database":{type:`string`,default:``,doc:`Database name on the target instance.`,mode:`fleet-only`},"databases[].host":{type:`string`,default:``,doc:`Hostname or IP of this fleet database.`,mode:`fleet-only`},"databases[].max_connections":{type:`int`,default:0,doc:`Maximum connections the sidecar pgx pool opens to this database. Falls back to defaults.max_connections when zero.`,mode:`fleet-only`},"databases[].name":{type:`string`,default:``,doc:`Logical name for this database in fleet mode. Must be unique across the fleet.`,mode:`fleet-only`},"databases[].password":{type:`string`,default:null,doc:`Password for the login role. Encrypted at rest using encryption_key when persisted to the meta database.`,mode:`fleet-only`,secret:!0},"databases[].port":{type:`int`,default:0,doc:`TCP port of this fleet database.`,mode:`fleet-only`},"databases[].sslmode":{type:`string`,default:``,doc:`libpq sslmode for this connection (disable, prefer, require, verify-ca, verify-full).`,mode:`fleet-only`},"databases[].tags":{type:`[]string`,default:null,doc:`Free-form tags used to group databases for fleet operations (e.g. tier=prod, team=payments).`,mode:`fleet-only`},"databases[].trust_level":{type:`string`,default:``,doc:`Per-database override of the global trust.level. Useful for running a pilot database in autonomous while the fleet stays in advisory.`,mode:`fleet-only`},"databases[].user":{type:`string`,default:``,doc:`Login role the sidecar uses to connect to this fleet database.`,mode:`fleet-only`},"defaults.analyzer_interval_seconds":{type:`int`,default:0,doc:`Default analyzer interval applied to fleet databases that don't set their own value.`,mode:`fleet-only`},"defaults.collector_interval_seconds":{type:`int`,default:0,doc:`Default collector interval applied to fleet databases that don't set their own value.`,mode:`fleet-only`},"defaults.max_connections":{type:`int`,default:0,doc:`Default max_connections applied to fleet databases that don't set their own value.`,mode:`fleet-only`},"defaults.trust_level":{type:`string`,default:``,doc:`Default trust level applied to fleet databases. Falls back to the global trust.level when unset.`,mode:`fleet-only`},encryption_key:CB,"forecaster.cache_warn_threshold":{type:`float64`,default:.95,doc:``},"forecaster.connection_warn_pct":{type:`float64`,default:80,doc:``},"forecaster.disk_warn_growth_gb_day":{type:`float64`,default:5,doc:``},"forecaster.enabled":{type:`bool`,default:!0,doc:``},"forecaster.lookback_days":{type:`int`,default:30,doc:``},"forecaster.sequence_critical_days":{type:`int`,default:30,doc:``},"forecaster.sequence_warn_days":{type:`int`,default:90,doc:``},"llm.api_key":{type:`string`,default:null,doc:"Authentication token for the LLM provider. Prefer sourcing from environment via ${LLM_API_KEY} rather than committing literal values.",secret:!0},"llm.context_budget_tokens":{type:`int`,default:8192,doc:`Maximum tokens attached as context (schema, stats, plans) to a single LLM request. Prevents oversized prompts from busting the model context window.`},"llm.cooldown_seconds":{type:`int`,default:300,doc:`Minimum seconds between two LLM requests. Rate-limits the sidecar so it cannot burst the provider during a busy cycle.`},"llm.enabled":{type:`bool`,default:!1,doc:`Global enable for LLM-assisted analysis (planner explanations, recommendation narratives). When disabled, pg_sage falls back to deterministic heuristics only.`},"llm.endpoint":{type:`string`,default:``,doc:`LLM provider base URL. Supports OpenAI-compatible chat-completions endpoints. Can be left blank to use the vendor default.`},"llm.index_optimizer.enabled":{type:`bool`,default:!1,doc:``},"llm.index_optimizer.max_include_columns":{type:`int`,default:3,doc:``},"llm.index_optimizer.max_indexes_per_table":{type:`int`,default:10,doc:``},"llm.index_optimizer.min_query_calls":{type:`int`,default:100,doc:``},"llm.index_optimizer.over_indexed_ratio_pct":{type:`int`,default:150,doc:``},"llm.index_optimizer.write_heavy_ratio_pct":{type:`int`,default:70,doc:``},"llm.model":{type:`string`,default:``,doc:`Model identifier sent to the provider (e.g. gpt-4o-mini). Must support JSON-mode responses for structured outputs.`},"llm.optimizer.confidence_threshold":{type:`float64`,default:.5,doc:``},"llm.optimizer.enabled":{type:`bool`,default:!1,doc:``},"llm.optimizer.hypopg_min_improvement_pct":{type:`float64`,default:10,doc:``},"llm.optimizer.max_include_columns":{type:`int`,default:3,doc:``},"llm.optimizer.max_indexes_per_table":{type:`int`,default:10,doc:``},"llm.optimizer.max_new_per_table":{type:`int`,default:3,doc:``},"llm.optimizer.min_query_calls":{type:`int`,default:100,doc:``},"llm.optimizer.min_snapshots":{type:`int`,default:2,doc:``},"llm.optimizer.over_indexed_ratio_pct":{type:`int`,default:150,doc:``},"llm.optimizer.plan_source":{type:`string`,default:`auto`,doc:``},"llm.optimizer.write_heavy_ratio_pct":{type:`int`,default:70,doc:``},"llm.optimizer.write_impact_threshold_pct":{type:`float64`,default:15,doc:``},"llm.optimizer_llm.api_key":{type:`string`,default:null,doc:`API key for the optimizer LLM. Prefer env-var substitution over literal values.`,secret:!0},"llm.optimizer_llm.cooldown_seconds":{type:`int`,default:300,doc:`Minimum seconds between two optimizer LLM requests.`},"llm.optimizer_llm.enabled":{type:`bool`,default:!1,doc:`Enable the dedicated reasoning-tier LLM used by the index optimizer. When false the optimizer falls back to the general llm.* client.`},"llm.optimizer_llm.endpoint":{type:`string`,default:``,doc:`Base URL for the optimizer LLM provider. Can differ from the general llm.endpoint when the reasoning tier lives on another provider.`},"llm.optimizer_llm.fallback_to_general":{type:`bool`,default:!0,doc:`If true, fall back to the general llm.* client when the optimizer LLM is unavailable or over budget.`},"llm.optimizer_llm.max_output_tokens":{type:`int`,default:8192,doc:`Upper bound on output tokens accepted from the optimizer LLM. Truncates runaway responses.`},"llm.optimizer_llm.model":{type:`string`,default:``,doc:`Reasoning-tier model identifier (e.g. o1-mini). Must return JSON when requested.`},"llm.optimizer_llm.timeout_seconds":{type:`int`,default:120,doc:`Per-request timeout for optimizer LLM calls. Reasoning models typically need longer timeouts than chat models.`},"llm.optimizer_llm.token_budget_daily":{type:`int`,default:5e5,doc:`Daily token cap for the optimizer LLM — independent of the general llm.token_budget_daily so reasoning spend can be tracked separately.`},"llm.timeout_seconds":{type:`int`,default:30,doc:`HTTP request timeout for each LLM call. Low values protect the analyzer cycle from slow providers; high values tolerate cold-start latency.`},"llm.token_budget_daily":{type:`int`,default:5e5,doc:`Soft daily cap on total tokens (input + output) the sidecar will spend on LLM requests. Once exceeded the LLM is skipped until the next UTC day.`},meta_db:wB,mode:TB,"oauth.client_id":{type:`string`,default:``,doc:`OAuth client ID issued by the provider when the pg_sage application was registered.`},"oauth.client_secret":{type:`string`,default:null,doc:`OAuth client secret issued by the provider. Source from an environment variable in production.`,secret:!0},"oauth.default_role":{type:`string`,default:`viewer`,doc:`Role assigned to newly authenticated users when no role mapping rule matches.`},"oauth.enabled":{type:`bool`,default:!1,doc:`Enable OAuth single sign-on for the sidecar UI. When false, the UI falls back to local auth.`},"oauth.issuer_url":{type:`string`,default:``,doc:`OIDC issuer URL used to discover the provider's authorization and token endpoints.`},"oauth.provider":{type:`string`,default:``,doc:`OAuth provider identifier. Supported values include google, github, okta, and generic OIDC.`},"oauth.redirect_url":{type:`string`,default:``,doc:`Absolute URL the provider redirects to after authentication. Must match the URI registered at the provider.`},"postgres.database":{type:`string`,default:`postgres`,doc:`Target database name the sidecar connects to. Ignored when database_url is set.`},"postgres.database_url":{type:`string`,default:``,doc:`Full libpq connection URL. When set, overrides host/port/user/password/database/sslmode.`},"postgres.host":{type:`string`,default:`localhost`,doc:`Hostname or IP of the target PostgreSQL instance. Ignored when database_url is set.`},"postgres.max_connections":{type:`int`,default:2,doc:`Maximum connections the sidecar pgx pool will open to this target. Keep well below max_connections on the server.`},"postgres.password":{type:`string`,default:null,doc:`Password for the sidecar login role. Prefer environment-variable substitution or a secrets manager over committing literal values.`,secret:!0},"postgres.port":{type:`int`,default:5432,doc:`TCP port of the target PostgreSQL instance. Ignored when database_url is set.`},"postgres.sslmode":{type:`string`,default:`prefer`,doc:`libpq sslmode string (disable, allow, prefer, require, verify-ca, verify-full). Use verify-full in production.`},"postgres.user":{type:`string`,default:`sage_agent`,doc:`PostgreSQL login role used by the sidecar. Requires pg_read_all_stats plus write access to the sage schema.`},"prometheus.listen_addr":{type:`string`,default:`127.0.0.1:9187`,doc:``},"retention.actions_days":{type:`int`,default:365,doc:``},"retention.explains_days":{type:`int`,default:90,doc:``},"retention.findings_days":{type:`int`,default:180,doc:``},"retention.snapshots_days":{type:`int`,default:90,doc:``},"safety.backoff_consecutive_skips":{type:`int`,default:3,doc:`After this many consecutive skipped cycles (e.g. CPU ceiling hit repeatedly), enter dormant mode and slow the cadence until load subsides.`},"safety.cpu_ceiling_pct":{type:`int`,default:90,doc:`Skip cycles when database-host CPU exceeds this percent (1-100). Prevents pg_sage from adding load during incidents.`},"safety.ddl_timeout_seconds":{type:`int`,default:300,doc:`Timeout applied to DDL actions (CREATE INDEX, ALTER TABLE) executed by the executor. Per-statement ceiling, not per-cycle.`},"safety.disk_pressure_threshold_pct":{type:`int`,default:5,doc:`When database data volume usage exceeds this percent, skip write-producing actions. Prevents adding indexes to a near-full volume.`},"safety.dormant_interval_seconds":{type:`int`,default:600,doc:`Cycle interval (seconds) used while in dormant mode — typically much larger than the normal interval so the sidecar wakes rarely while the target is stressed.`},"safety.lock_timeout_ms":{type:`int`,default:3e4,doc:`lock_timeout applied to connections running DDL or ANALYZE. Must be > 0 for ANALYZE actions in v0.8.5 — autovacuum can hold a ShareUpdateExclusiveLock indefinitely.`,warning:`Zero disables the timeout entirely and is refused by the executor for ANALYZE actions.`},"safety.query_timeout_ms":{type:`int`,default:500,doc:`statement_timeout applied to every collector and analyzer query issued by the sidecar. Protects the target from runaway introspection.`},"trust.cascade_cooldown_cycles":{type:`int`,default:3,doc:`If N consecutive cycles each propose new actions, throttle to observe impact. Prevents storm-like cascades of small changes.`},"trust.level":{type:`string`,default:`observation`,doc:`Autonomy tier. observation = log only; advisory = queue actions for approval; autonomous = execute safe/moderate actions directly.`,warning:`Changing to autonomous enables DDL execution without human review.`},"trust.maintenance_window":{type:`string`,default:``,doc:`Cron-like window (e.g. 'Sun 02:00-06:00') during which heavy maintenance actions like ANALYZE on large tables or REINDEX are permitted.`},"trust.ramp_start":{type:`string`,default:``,doc:`RFC3339 timestamp when the trust ramp began. Auto-persisted on first startup if empty. Used to gate newly-supported actions behind a soak period.`},"trust.rollback_cooldown_days":{type:`int`,default:7,doc:`After a rollback, the same action family is blocked for this many days to prevent flap. Default 3 days.`},"trust.rollback_threshold_pct":{type:`int`,default:10,doc:`Latency regression percentage (0-100) that triggers automatic rollback of a recently applied action. Lower = more sensitive.`},"trust.rollback_window_minutes":{type:`int`,default:15,doc:`How many minutes after applying an action pg_sage watches for regressions before considering it stable.`},"trust.tier3_high_risk":{type:`bool`,default:!1,doc:`Enable tier-3 actions classified as high risk. Ignored outside fleet mode — standalone always forces this to false.`,warning:`High-risk actions can destabilize production — enable only with a reviewed rollback plan.`,mode:`fleet-only`},"trust.tier3_moderate":{type:`bool`,default:!1,doc:`Enable tier-3 actions classified as moderate risk (e.g. VACUUM FULL on small tables). Requires trust.level=autonomous.`,warning:`Moderate actions can briefly lock tables.`},"trust.tier3_safe":{type:`bool`,default:!0,doc:`Enable tier-3 actions classified as safe (e.g. CREATE INDEX CONCURRENTLY on small tables). Requires trust.level=autonomous.`},"tuner.analyze_cooldown_minutes":{type:`int`,default:60,doc:`Minimum minutes between tuner-initiated ANALYZE runs on the same table. Also respects autovacuum last_analyze as a recent-run signal.`},"tuner.analyze_maintenance_threshold_mb":{type:`int64`,default:1024,doc:`Tables larger than this many MB can only be ANALYZEd during the configured maintenance_window. Default 1024 (1GB).`},"tuner.analyze_max_table_mb":{type:`int64`,default:10240,doc:`Tables larger than this many MB are never auto-ANALYZEd — an advisory finding is emitted instead for operator review.`,warning:`Default 10240 (10GB). Raise with care — ANALYZE on TB-scale tables can saturate I/O.`},"tuner.analyze_timeout_ms":{type:`int`,default:6e5,doc:`statement_timeout for ANALYZE actions. Default 600000 (10 minutes). Exceeding this marks the action failed_timeout and extends the cooldown.`},"tuner.enabled":{type:`bool`,default:!0,doc:`Master switch for the per-query tuner. When false, no hints are written and Tune() is a no-op — the analyzer still runs.`},"tuner.hint_retirement_days":{type:`int`,default:14,doc:`Hints older than this many days are retired unconditionally, regardless of current query behavior. Safety net against stale hint accumulation.`},"tuner.llm_enabled":{type:`bool`,default:!1,doc:`Allow the tuner to call the LLM for hint prescription when deterministic rules do not produce a recommendation. Budget-gated by llm.token_budget_daily.`},"tuner.max_concurrent_analyze":{type:`int`,default:1,doc:`Hard cap on concurrent ANALYZE actions across the entire sidecar process (shared semaphore — fleet-wide, not per-database). Default 1.`},"tuner.min_query_calls":{type:`int`,default:100,doc:`Require at least this many pg_stat_statements.calls before the tuner will act on a query. Filters out one-offs.`},"tuner.nested_loop_row_threshold":{type:`int64`,default:1e4,doc:`Minimum actual-row count on a nested-loop inner that triggers the bad-nested-loop symptom. Smaller values increase sensitivity.`},"tuner.parallel_min_table_rows":{type:`int64`,default:1e6,doc:`Threshold for suggesting parallel-enable hints on large sequential scans. Tables smaller than this are assumed not to benefit from parallelism.`},"tuner.plan_time_ratio":{type:`float64`,default:3,doc:`When plan_time / exec_time exceeds this ratio, the tuner flags the query as plan-time-dominated and considers prepared-statement hints.`},"tuner.revalidation_explain_timeout_ms":{type:`int`,default:1e4,doc:`statement_timeout applied to EXPLAIN queries issued by the revalidation loop. Queries that cannot be explained in time are deferred.`},"tuner.revalidation_interval_hours":{type:`int`,default:24,doc:`How often the hint revalidation loop runs. Set to 0 to disable the loop entirely. Default 24 hours.`},"tuner.revalidation_keep_ratio":{type:`float64`,default:1.2,doc:`During cost comparison, hinted plan cost must be at most this ratio of the unhinted plan to keep the hint. Default 1.2 (hinted <= 120% of unhinted).`},"tuner.revalidation_rollback_ratio":{type:`float64`,default:.8,doc:`When hinted-plan cost exceeds unhinted by this ratio, the hint is marked broken and rolled back. Default 0.8 (hinted >= 125% of unhinted).`},"tuner.stale_stats_age_minutes":{type:`int`,default:60,doc:`Both manual and autovacuum last_analyze must be older than this many minutes before the table is considered stale. Default 60.`},"tuner.stale_stats_estimate_skew":{type:`float64`,default:10,doc:`Ratio ActualRows / PlanRows above which a plan node is considered row-estimate skewed. Default 10 — same threshold as the bad-nested-loop check.`},"tuner.stale_stats_mod_ratio":{type:`float64`,default:.1,doc:`Fraction of rows modified since last ANALYZE (n_mod_since_analyze / reltuples) required to treat a table as stale. Default 0.1 = 10%.`},"tuner.verify_after_apply":{type:`bool`,default:!0,doc:`Run the daily hint revalidation loop. Removes hints that have become redundant, harmful, or broken. Requires pg_hint_plan.`,warning:`v0.8.5 activates a real background cycle here — upgrade note: if you want v0.8.4 inert behavior, set this to false before upgrading.`},"tuner.work_mem_max_mb":{type:`int`,default:512,doc:`Maximum per-query work_mem (MB) the tuner is allowed to prescribe via Set(work_mem) hints. Ceiling prevents runaway memory suggestions.`}},DB=`/docs`;function OB({configKey:e,children:t,side:n=`top`}){let r=EB[e];if(!r||!r.doc)return t;let i=!!r.warning,a=r.docs_url?`${DB}${r.docs_url}`:null;return(0,I.jsx)(_B,{delayDuration:200,children:(0,I.jsxs)(vB,{children:[(0,I.jsx)(yB,{asChild:!0,children:(0,I.jsx)(`span`,{className:`inline-flex items-center gap-1 cursor-help border-b border-dotted border-gray-400`,"data-config-key":e,children:t})}),(0,I.jsx)(bB,{children:(0,I.jsxs)(xB,{side:n,sideOffset:6,className:`z-50 max-w-sm rounded-md px-3 py-2 text-xs shadow-lg `+(i?`bg-yellow-50 text-yellow-900 border border-yellow-300`:`bg-gray-900 text-gray-50 border border-gray-700`),children:[(0,I.jsx)(`div`,{className:`font-semibold mb-1 break-all`,children:e}),(0,I.jsx)(`div`,{className:`mb-1 whitespace-normal`,children:r.doc}),i&&(0,I.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-yellow-300 font-semibold`,children:[`⚠ `,r.warning]}),r.mode&&r.mode!==`both`&&(0,I.jsx)(`div`,{className:`mt-1 text-[10px] uppercase opacity-70`,children:r.mode}),r.secret&&(0,I.jsx)(`div`,{className:`mt-1 text-[10px] uppercase opacity-70`,children:`sensitive — not shown in UI`}),a&&(0,I.jsx)(`div`,{className:`mt-2`,children:(0,I.jsx)(`a`,{href:a,className:`underline text-blue-300 hover:text-blue-200`,target:`_blank`,rel:`noreferrer`,children:`Read more →`})}),(0,I.jsx)(SB,{className:i?`fill-yellow-50`:`fill-gray-900`})]})})]})})}function kB(e,t){let n=[];for(let r of Object.keys(e)){let i=t[r]?.value,a=e[r],o=t[r]?.source??`default`;n.push({key:r,before:i,after:a,source:o})}return n.sort((e,t)=>e.key.localeCompare(t.key)),n}function AB(e){if(e==null||e===``)return(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:`(unset)`});if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function jB({edits:e,cfg:t,saving:n,onConfirm:r,onCancel:i}){(0,w.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!n&&i()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i,n]);let a=kB(e,t);return(0,I.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,role:`dialog`,"aria-modal":`true`,"data-testid":`config-diff-modal`,style:{background:`rgba(0,0,0,0.5)`},onClick:()=>{n||i()},children:(0,I.jsxs)(`div`,{className:`rounded max-w-2xl w-full mx-4 max-h-[85vh] flex flex-col`,onClick:e=>e.stopPropagation(),style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`div`,{className:`p-5 border-b`,style:{borderColor:`var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(se,{size:20,style:{color:`var(--accent)`}}),(0,I.jsx)(`h3`,{className:`text-sm font-semibold`,style:{color:`var(--text-primary)`},children:`Review Configuration Changes`})]}),(0,I.jsxs)(`p`,{className:`text-xs mt-1`,style:{color:`var(--text-secondary)`},children:[a.length,` key`,a.length===1?``:`s`,` will change. Review the diff before saving.`]})]}),(0,I.jsxs)(`div`,{className:`overflow-y-auto flex-1 p-5 space-y-3`,"data-testid":`config-diff-rows`,children:[a.length===0&&(0,I.jsx)(`div`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:`No changes to save.`}),a.map(e=>(0,I.jsxs)(`div`,{"data-testid":`config-diff-row-${e.key}`,className:`rounded p-3`,style:{background:`var(--bg-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,I.jsx)(`code`,{className:`text-xs font-mono`,style:{color:`var(--text-primary)`},children:e.key}),(0,I.jsxs)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:[`from: `,e.source]})]}),(0,I.jsxs)(`div`,{className:`flex items-start gap-3 text-xs font-mono`,children:[(0,I.jsx)(`div`,{className:`flex-1 rounded px-2 py-1`,"data-testid":`config-diff-before-${e.key}`,style:{background:`rgba(239, 68, 68, 0.08)`,color:`var(--red)`,border:`1px solid rgba(239, 68, 68, 0.25)`,wordBreak:`break-all`},children:AB(e.before)}),(0,I.jsx)(A,{size:14,style:{color:`var(--text-secondary)`,marginTop:4,flexShrink:0}}),(0,I.jsx)(`div`,{className:`flex-1 rounded px-2 py-1`,"data-testid":`config-diff-after-${e.key}`,style:{background:`rgba(34, 197, 94, 0.08)`,color:`var(--green)`,border:`1px solid rgba(34, 197, 94, 0.25)`,wordBreak:`break-all`},children:AB(e.after)})]})]},e.key))]}),(0,I.jsxs)(`div`,{className:`p-4 border-t flex gap-2 justify-end`,style:{borderColor:`var(--border)`},children:[(0,I.jsx)(`button`,{onClick:i,disabled:n,"data-testid":`config-diff-cancel`,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-card)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`,opacity:n?.6:1},children:`Cancel`}),(0,I.jsx)(`button`,{onClick:r,disabled:n||a.length===0,"data-testid":`config-diff-confirm`,className:`px-3 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`,opacity:n||a.length===0?.6:1},children:n?`Saving...`:`Apply ${a.length} Change${a.length===1?``:`s`}`})]})]})})}function MB(e){return e&&e!==`all`?`?database=${encodeURIComponent(e)}`:``}function NB({label:e,value:t}){return(0,I.jsxs)(`div`,{className:`rounded border p-3`,style:{background:`var(--bg-card)`,borderColor:`var(--border)`},children:[(0,I.jsx)(`div`,{className:`text-2xl font-semibold`,style:{color:`var(--text-primary)`},children:t}),(0,I.jsx)(`div`,{className:`text-xs mt-1`,style:{color:`var(--text-secondary)`},children:e})]})}function PB({database:e}){let{data:t,loading:n,error:r,refetch:i}=Ae(`/api/v1/shadow-report${MB(e)}`,3e4);return n?(0,I.jsx)(yF,{}):r?(0,I.jsx)($e,{message:r,onRetry:i}):(0,I.jsxs)(`section`,{className:`space-y-4`,"data-testid":`shadow-mode-report`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold`,style:{color:`var(--text-primary)`},children:`Shadow Mode`}),(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:`What pg_sage would have handled under auto-safe policy.`})]}),(0,I.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:[(0,I.jsx)(NB,{label:`Cases detected`,value:t?.total_cases??0}),(0,I.jsx)(NB,{label:`Would auto-resolve`,value:t?.would_auto_resolve??0}),(0,I.jsx)(NB,{label:`Needs approval`,value:t?.requires_approval??0}),(0,I.jsx)(NB,{label:`Avoided toil`,value:`${t?.estimated_toil_minutes??0} min`})]}),(t?.blocked_reasons||[]).length>0&&(0,I.jsxs)(`div`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:[`Blocked: `,t.blocked_reasons.join(`, `)]})]})}var FB={observation:`Observation: pg_sage only monitors and surfaces findings. No automated actions will run.`,advisory:`Advisory: pg_sage may automatically execute SAFE actions (ANALYZE, non-destructive index hints). Moderate and high-risk actions still require manual approval.`,autonomous:`Autonomous: pg_sage may automatically execute SAFE and MODERATE actions (CREATE INDEX CONCURRENTLY, VACUUM, dropping unused indexes). High-risk actions still require manual approval.`},IB=[`General`,`Collector`,`Analyzer`,`Trust & Safety`,`LLM`,`Alerting`,`Retention`],LB=[`General`,`Monitoring`,`AI & Alerts`];function RB(){try{let e=localStorage.getItem(`pg_sage_settings_mode`);if(e===`advanced`||e===`simple`)return e}catch{}return`simple`}function zB({database:e,databaseId:t}){let n=e&&e!==`all`,r=Number(t),i=n&&Number.isFinite(r)&&r>0,a=n?i?`/api/v1/config/databases/${r}`:null:`/api/v1/config/global`,{data:o,loading:s,error:c,refetch:l}=Ae(a,0),u=VF(),[d,f]=(0,w.useState)(RB),[p,m]=(0,w.useState)(`General`),[h,g]=(0,w.useState)({}),[_,v]=(0,w.useState)(!1),[y,b]=(0,w.useState)(null),[x,S]=(0,w.useState)(!1),[C,T]=(0,w.useState)(null),[E,D]=(0,w.useState)(!1),O=d===`simple`?LB:IB;(0,w.useEffect)(()=>{g({}),b(null)},[p,a]),(0,w.useEffect)(()=>{O.includes(p)||m(`General`)},[d,O,p]);let k=()=>{let e=d===`simple`?`advanced`:`simple`;f(e);try{localStorage.setItem(`pg_sage_settings_mode`,e)}catch{}},A=(0,w.useMemo)(()=>o?.config||{},[o?.config]),j=(0,w.useCallback)(e=>e in h?h[e]:A[e]?.value??``,[A,h]),M=(0,w.useCallback)(e=>e in h?`modified`:A[e]?.source??`default`,[A,h]),N=(e,t)=>{if(e===`trust.level`){let n=j(`trust.level`);if((n===`observation`&&(t===`advisory`||t===`autonomous`)||n===`advisory`&&t===`autonomous`)&&t!==n){T({key:e,val:t,from:n});return}}g(n=>({...n,[e]:t})),b(null)},ee=()=>{C&&(g(e=>({...e,[C.key]:C.val})),b(null),T(null))},te=async e=>{if(e in h){g(t=>{let n={...t};return delete n[e],n});return}let t=A[e]?.source,n=i&&t===`db_override`&&e!==`execution_mode`;if(n||!i&&t===`override`&&e!==`execution_mode`){let t=n?`/api/v1/config/databases/${r}/${encodeURIComponent(e)}`:`/api/v1/config/global/${encodeURIComponent(e)}`;try{let r=await fetch(t,{method:`DELETE`,credentials:`include`,headers:{"Content-Type":`application/json`}});if(!r.ok){let e=await r.json().catch(()=>({}));u.error(e.error||`Reset failed`);return}u.success(n?`Reset ${e} to inherited value`:`Reset ${e} to configured default`),l()}catch(e){u.error(e.message||`Reset failed`)}}},P=()=>{Object.keys(h).length!==0&&(b(null),D(!0))},F=async()=>{if(Object.keys(h).length===0){D(!1);return}v(!0);try{if(!a){u.error(`Selected database is not available`);return}let e=await fetch(a,{method:`PUT`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify(h)});if(!e.ok){let t=await e.json().catch(()=>({}));u.error(t.error||`Save failed`);return}u.success(`Saved ${Object.keys(h).length} ${i?`database `:`global `}configuration change(s)`),g({}),D(!1),l()}catch(e){u.error(e.message||`Save failed`)}finally{v(!1)}};if(n&&!i)return(0,I.jsx)($e,{message:`Selected database "${e}" is not available`,onRetry:l});if(s)return(0,I.jsx)(yF,{});if(c)return(0,I.jsx)($e,{message:c,onRetry:l});let ne={getVal:j,setVal:N,getSource:M,resetField:te,isDatabaseScope:i,configUrl:a},re=p===`General`,ie=Object.keys(h).length>0;return(0,I.jsxs)(`div`,{className:`space-y-4 max-w-3xl`,children:[C&&(0,I.jsx)(qB,{from:C.from,to:C.val,onConfirm:ee,onCancel:()=>T(null)}),E&&(0,I.jsx)(jB,{edits:h,cfg:A,saving:_,onConfirm:F,onCancel:()=>D(!1)}),(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsx)(KB,{tabs:O,active:p,onSelect:m}),(0,I.jsx)(`button`,{"data-testid":`settings-mode-toggle`,onClick:k,className:`text-xs px-3 py-1 rounded whitespace-nowrap ml-4`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:d===`simple`?`Show Advanced`:`Show Simple`})]}),(0,I.jsxs)(`div`,{className:`text-xs`,"data-testid":`settings-scope`,style:{color:`var(--text-secondary)`},children:[`Scope: `,i?`Database ${e} (ID ${r})`:`Global defaults`]}),(0,I.jsx)(PB,{database:e}),y&&(0,I.jsx)(JB,{...y}),(0,I.jsx)(`div`,{className:`rounded p-5`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:d===`simple`?(0,I.jsx)(BB,{tab:p,data:o,database:e,stopping:x,setStopping:S,refetch:l,...ne}):(0,I.jsx)(VB,{tab:p,data:o,database:e,stopping:x,setStopping:S,refetch:l,...ne})}),!re&&ie&&(0,I.jsxs)(`div`,{className:`flex gap-3`,children:[(0,I.jsxs)(`button`,{onClick:P,disabled:_,"data-testid":`settings-save`,className:`flex items-center gap-2 px-4 py-2 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:[(0,I.jsx)(ve,{size:16}),_?`Saving...`:`Review & Save`]}),(0,I.jsxs)(`button`,{onClick:()=>g({}),"data-testid":`settings-discard`,className:`flex items-center gap-2 px-4 py-2 rounded text-sm`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(_e,{size:16}),` Discard`]})]})]})}function BB({tab:e,data:t,database:n,stopping:r,setStopping:i,refetch:a,getVal:o,setVal:s,getSource:c,resetField:l,isDatabaseScope:u,configUrl:d}){let f={getVal:o,setVal:s,getSource:c,resetField:l,isDatabaseScope:u,configUrl:d};return e===`General`?(0,I.jsx)(ZB,{mode:t?.mode,databases:t?.databases,database:n,stopping:r,setStopping:i,refetch:a}):e===`Monitoring`?(0,I.jsx)(HB,{...f}):e===`AI & Alerts`?(0,I.jsx)(UB,{...f}):null}function VB({tab:e,data:t,database:n,stopping:r,setStopping:i,refetch:a,getVal:o,setVal:s,getSource:c,resetField:l,isDatabaseScope:u,configUrl:d}){let f={getVal:o,setVal:s,getSource:c,resetField:l,isDatabaseScope:u,configUrl:d};return e===`General`?(0,I.jsx)(ZB,{mode:t?.mode,databases:t?.databases,database:n,stopping:r,setStopping:i,refetch:a}):e===`Collector`?(0,I.jsx)(QB,{...f}):e===`Analyzer`?(0,I.jsx)($B,{...f}):e===`Trust & Safety`?(0,I.jsx)(eV,{...f}):e===`LLM`?(0,I.jsx)(rV,{...f}):e===`Alerting`?(0,I.jsx)(iV,{...f}):e===`Retention`?(0,I.jsx)(aV,{...f}):null}function HB(e){let t=[{value:`observation`,label:`Observation - Monitor only, no actions`},{value:`advisory`,label:`Advisory - Safe actions only`},{value:`autonomous`,label:`Autonomous - Safe + moderate actions`}],n=[{value:`auto`,label:`Auto - Execute without approval`},{value:`approval`,label:`Approval - Require manual approval`},{value:`manual`,label:`Manual - All actions manual`}];return(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(WB,{children:`How pg_sage monitors`}),(0,I.jsx)($,{label:`Collector Interval (seconds)`,configKey:`collector.interval_seconds`,help:`How often pg_sage checks your database health. Lower = more responsive but slightly more overhead.`,...e}),(0,I.jsx)($,{label:`Slow Query Threshold (ms)`,configKey:`analyzer.slow_query_threshold_ms`,help:`Queries taking longer than this are flagged for review. 1000ms is a good default.`,...e}),(0,I.jsx)($,{label:`Unused Index Window (days)`,configKey:`analyzer.unused_index_window_days`,help:`How many days an index must go unused before pg_sage flags it. A longer window avoids false positives from seasonal workloads.`,...e})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(WB,{children:`Safety controls`}),(0,I.jsx)($,{label:`Trust Level`,configKey:`trust.level`,type:`select`,options:t,help:`Controls how much autonomy pg_sage has. Start with Observation to just watch, then graduate to Advisory for safe recommendations.`,...e}),e.isDatabaseScope?(0,I.jsx)($,{label:`Execution Mode`,configKey:`execution_mode`,type:`select`,options:n,help:`How pg_sage handles approved actions. Auto executes immediately, Approval waits for your OK.`,...e}):(0,I.jsx)(GB,{label:`Execution Mode`}),(0,I.jsx)($,{label:`CPU Ceiling (%)`,configKey:`safety.cpu_ceiling_pct`,help:`pg_sage pauses all automated actions when CPU usage exceeds this threshold. Protects your database during peak load.`,...e})]})]})}function UB(e){return(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsx)(rt,{}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(WB,{children:`AI Analysis`}),(0,I.jsx)($,{label:`LLM Enabled`,configKey:`llm.enabled`,type:`toggle`,help:`Enable AI-powered analysis for deeper insights and natural language health briefings.`,...e}),(0,I.jsx)($,{label:`Endpoint URL`,configKey:`llm.endpoint`,type:`text`,help:`The URL of your AI provider. Works with any OpenAI-compatible API (OpenAI, Gemini, Groq, Ollama, etc).`,...e}),(0,I.jsx)(tV,{help:`Which AI model to use for analysis. Discover available models or type a name manually.`,...e}),(0,I.jsx)($,{label:`API Key`,configKey:`llm.api_key`,type:`password`,help:`Your AI provider's API key. Stored securely and never logged.`,...e})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(WB,{children:`Alerting`}),(0,I.jsx)($,{label:`Alerting Enabled`,configKey:`alerting.enabled`,type:`toggle`,help:`Turn on notifications so pg_sage can alert you when it finds issues or takes actions.`,...e}),(0,I.jsx)($,{label:`Slack Webhook URL`,configKey:`alerting.slack_webhook_url`,type:`text`,help:`Paste your Slack incoming webhook URL to receive alerts in a Slack channel.`,...e}),(0,I.jsx)($,{label:`Check Interval (seconds)`,configKey:`alerting.check_interval_seconds`,help:`How often pg_sage checks for new alerts to send. Lower values mean faster notifications but more processing.`,...e})]})]})}function WB({children:e}){return(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:e})}function GB({label:e}){return(0,I.jsxs)(`div`,{className:`flex items-center gap-3 py-2`,children:[(0,I.jsx)(`div`,{className:`w-64 flex-shrink-0`,children:(0,I.jsx)(`span`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:e})}),(0,I.jsx)(`div`,{className:`text-xs`,"data-testid":`database-only-${e.toLowerCase().replace(/\s+/g,`-`)}`,style:{color:`var(--text-secondary)`},children:`Select a single database to configure this setting.`})]})}function KB({tabs:e,active:t,onSelect:n}){return(0,I.jsx)(`div`,{className:`flex gap-1 border-b pb-0 min-w-0 overflow-x-auto`,style:{borderColor:`var(--border)`},children:e.map(e=>(0,I.jsx)(`button`,{onClick:()=>n(e),"data-testid":`settings-tab-${e.toLowerCase().replace(/\s+&\s+/g,`-`).replace(/\s+/g,`-`)}`,className:`px-4 py-2 text-sm rounded-t whitespace-nowrap`,style:{color:t===e?`var(--accent)`:`var(--text-secondary)`,borderBottom:t===e?`2px solid var(--accent)`:`2px solid transparent`,background:t===e?`var(--bg-card)`:`transparent`},children:e},e))})}function qB({from:e,to:t,onConfirm:n,onCancel:r}){return(0,w.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]),(0,I.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,role:`dialog`,"aria-modal":`true`,"data-testid":`trust-level-confirm`,style:{background:`rgba(0,0,0,0.5)`},onClick:r,children:(0,I.jsxs)(`div`,{className:`rounded p-5 max-w-md w-full mx-4`,onClick:e=>e.stopPropagation(),style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,I.jsx)(Se,{size:20,style:{color:`var(--yellow)`}}),(0,I.jsx)(`h3`,{className:`text-sm font-semibold`,style:{color:`var(--text-primary)`},children:`Confirm Trust Level Change`})]}),(0,I.jsxs)(`p`,{className:`text-sm mb-3`,style:{color:`var(--text-secondary)`},children:[`Changing trust from `,(0,I.jsx)(`b`,{children:e||`unknown`}),` to `,(0,I.jsx)(`b`,{children:t}),`.`]}),(0,I.jsx)(`p`,{className:`text-xs mb-4`,style:{color:`var(--text-secondary)`},children:FB[t]||`Unknown trust level.`}),(0,I.jsxs)(`div`,{className:`flex gap-2 justify-end`,children:[(0,I.jsx)(`button`,{onClick:r,"data-testid":`trust-level-cancel`,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-card)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:`Cancel`}),(0,I.jsx)(`button`,{onClick:n,"data-testid":`trust-level-confirm-btn`,className:`px-3 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:`Confirm`})]})]})})}function JB({type:e,msg:t}){return(0,I.jsxs)(`div`,{className:`flex items-center gap-2 px-4 py-2 rounded text-sm`,style:{background:e===`success`?`#0f2640`:`#3b1111`,color:e===`success`?`var(--green)`:`var(--red)`},children:[(0,I.jsx)(e===`success`?N:Te,{size:16}),` `,t]})}function YB({source:e}){let t={default:`var(--text-secondary)`,yaml:`var(--blue)`,override:`var(--accent)`,db_override:`var(--green)`,modified:`var(--yellow)`};return(0,I.jsx)(`span`,{className:`text-[10px] ml-2 px-1.5 py-0.5 rounded`,style:{color:t[e]||`var(--text-secondary)`,border:`1px solid ${t[e]||`var(--border)`}`},children:e})}function $({label:e,configKey:t,type:n,getVal:r,setVal:i,getSource:a,resetField:o,options:s,help:c}){let l=r(t),u=a(t),d=u===`modified`||(u===`override`||u===`db_override`)&&t!==`execution_mode`;return(0,I.jsxs)(`div`,{className:`flex items-center gap-3 py-2`,children:[(0,I.jsxs)(`div`,{className:`w-64 flex-shrink-0`,children:[(0,I.jsxs)(`label`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:[(0,I.jsx)(OB,{configKey:t,children:(0,I.jsx)(`span`,{children:e})}),(0,I.jsx)(YB,{source:u})]}),c&&(0,I.jsx)(`div`,{className:`text-[11px] mt-0.5`,style:{color:`var(--text-secondary)`},children:c})]}),(0,I.jsx)(`div`,{className:`flex-1`,children:n===`select`?(0,I.jsx)(`select`,{value:l,"data-testid":`setting-${t}`,onChange:e=>i(t,e.target.value),className:`w-full px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-main)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:s.map(e=>(0,I.jsx)(`option`,{value:e.value,children:e.label},e.value))}):n===`toggle`?(0,I.jsx)(`button`,{"data-testid":`setting-${t}`,onClick:()=>i(t,String(l)===`true`?`false`:`true`),className:`px-3 py-1 rounded text-sm`,style:{background:String(l)===`true`?`var(--green)`:`var(--bg-main)`,color:String(l)===`true`?`#fff`:`var(--text-secondary)`,border:`1px solid var(--border)`},children:String(l)===`true`?`Enabled`:`Disabled`}):n===`password`?(0,I.jsx)(XB,{value:l,testId:`setting-${t}`,onChange:e=>i(t,e)}):(0,I.jsx)(`input`,{type:n===`float`?`number`:n||`number`,step:n===`float`?`0.01`:`1`,"data-testid":`setting-${t}`,value:l,onChange:e=>i(t,e.target.value),className:`w-full px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-main)`,color:`var(--text-primary)`,border:`1px solid var(--border)`}})}),d&&(0,I.jsx)(`button`,{onClick:()=>o(t),title:`Reset`,"aria-label":`Reset ${e}`,"data-testid":`reset-${t}`,className:`p-1 rounded`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(_e,{size:14})})]})}function XB({value:e,onChange:t,testId:n}){let[r,i]=(0,w.useState)(!1);return(0,I.jsxs)(`div`,{className:`flex gap-2`,children:[(0,I.jsx)(`input`,{type:r?`text`:`password`,value:e,"data-testid":n,onChange:e=>t(e.target.value),className:`flex-1 px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-main)`,color:`var(--text-primary)`,border:`1px solid var(--border)`}}),(0,I.jsx)(`button`,{onClick:()=>i(!r),className:`px-2 text-xs rounded`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:r?`Hide`:`Show`})]})}function ZB({mode:e,databases:t,database:n,stopping:r,setStopping:i,refetch:a}){let[o,s]=(0,w.useState)(0),c=(0,w.useRef)(null);(0,w.useEffect)(()=>()=>{c.current&&clearInterval(c.current)},[]);let l=async()=>{i(!0);let e=n&&n!==`all`?`?database=${n}`:``;try{await fetch(`/api/v1/emergency-stop${e}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}})}finally{i(!1),a()}},u=()=>{s(5),c.current&&clearInterval(c.current),c.current=setInterval(()=>{s(e=>e<=1?(clearInterval(c.current),c.current=null,0):e-1)},1e3)},d=()=>{o>0?(c.current&&clearInterval(c.current),c.current=null,s(0),l()):u()},f=()=>{c.current&&clearInterval(c.current),c.current=null,s(0)},p=async()=>{let e=n&&n!==`all`?`?database=${n}`:``;await fetch(`/api/v1/resume${e}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}}),a()};return(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium`,style:{color:`var(--text-secondary)`},children:`System Info`}),(0,I.jsx)(`div`,{className:`grid grid-cols-2 gap-3 text-sm`,children:n&&n!==`all`?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{style:{color:`var(--text-secondary)`},children:`Scope`}),(0,I.jsx)(`div`,{style:{color:`var(--text-primary)`},children:`Database override`}),(0,I.jsx)(`div`,{style:{color:`var(--text-secondary)`},children:`Database`}),(0,I.jsx)(`div`,{style:{color:`var(--text-primary)`},children:n})]}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{style:{color:`var(--text-secondary)`},children:`Mode`}),(0,I.jsx)(`div`,{style:{color:`var(--text-primary)`},children:e||`unknown`}),(0,I.jsx)(`div`,{style:{color:`var(--text-secondary)`},children:`Databases`}),(0,I.jsx)(`div`,{style:{color:`var(--text-primary)`},children:t??0})]})}),(0,I.jsx)(`h3`,{className:`text-sm font-medium mt-6`,style:{color:`var(--text-secondary)`},children:`Emergency Controls`}),(0,I.jsxs)(`div`,{className:`flex gap-3`,children:[(0,I.jsxs)(`button`,{onClick:d,disabled:r,"data-testid":`emergency-stop-button`,className:`flex items-center gap-2 px-4 py-2 rounded text-sm font-medium`,style:{background:o>0?`var(--red)`:`#3b1111`,color:o>0?`#fff`:`var(--red)`,border:`1px solid var(--red)`},children:[(0,I.jsx)(Se,{size:16}),r?`Stopping...`:o>0?`Confirm Emergency Stop (${o})`:`Emergency Stop`]}),o>0&&(0,I.jsx)(`button`,{onClick:f,"data-testid":`emergency-stop-cancel`,className:`flex items-center gap-2 px-4 py-2 rounded text-sm`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:`Cancel`}),(0,I.jsxs)(`button`,{onClick:p,"data-testid":`resume-button`,className:`flex items-center gap-2 px-4 py-2 rounded text-sm font-medium`,style:{background:`#0f2640`,color:`var(--green)`,border:`1px solid var(--green)`},children:[(0,I.jsx)(he,{size:16}),` Resume`]})]})]})}function QB(e){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Collector`}),(0,I.jsx)($,{label:`Interval (seconds)`,configKey:`collector.interval_seconds`,help:`How often to collect stats snapshots`,...e}),(0,I.jsx)($,{label:`Batch Size`,configKey:`collector.batch_size`,help:`Queries per collection batch`,...e}),(0,I.jsx)($,{label:`Max Queries`,configKey:`collector.max_queries`,help:`Maximum tracked queries`,...e})]})}function $B(e){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Analyzer`}),(0,I.jsx)($,{label:`Interval (seconds)`,configKey:`analyzer.interval_seconds`,...e}),(0,I.jsx)($,{label:`Slow Query Threshold (ms)`,configKey:`analyzer.slow_query_threshold_ms`,...e}),(0,I.jsx)($,{label:`Seq Scan Min Rows`,configKey:`analyzer.seq_scan_min_rows`,...e}),(0,I.jsx)($,{label:`Unused Index Window (days)`,configKey:`analyzer.unused_index_window_days`,...e}),(0,I.jsx)($,{label:`Index Bloat Threshold (%)`,configKey:`analyzer.index_bloat_threshold_pct`,...e}),(0,I.jsx)($,{label:`Table Bloat Dead Tuple (%)`,configKey:`analyzer.table_bloat_dead_tuple_pct`,...e}),(0,I.jsx)($,{label:`Regression Threshold (%)`,configKey:`analyzer.regression_threshold_pct`,...e}),(0,I.jsx)($,{label:`Cache Hit Ratio Warning`,configKey:`analyzer.cache_hit_ratio_warning`,type:`float`,help:`0.0 to 1.0`,...e})]})}function eV(e){let t=[{value:`observation`,label:`Observation - Monitor only, no actions`},{value:`advisory`,label:`Advisory - Safe actions only`},{value:`autonomous`,label:`Autonomous - Safe + moderate actions`}],n=[{value:`auto`,label:`Auto - Execute without approval`},{value:`approval`,label:`Approval - Require manual approval`},{value:`manual`,label:`Manual - All actions manual`}];return(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Trust`}),(0,I.jsx)($,{label:`Trust Level`,configKey:`trust.level`,type:`select`,options:t,...e}),e.isDatabaseScope?(0,I.jsx)($,{label:`Execution Mode`,configKey:`execution_mode`,type:`select`,options:n,...e}):(0,I.jsx)(GB,{label:`Execution Mode`}),(0,I.jsx)($,{label:`Tier 3: Safe`,configKey:`trust.tier3_safe`,type:`toggle`,...e}),(0,I.jsx)($,{label:`Tier 3: Moderate`,configKey:`trust.tier3_moderate`,type:`toggle`,...e}),(0,I.jsx)($,{label:`Tier 3: High Risk`,configKey:`trust.tier3_high_risk`,type:`toggle`,...e}),(0,I.jsx)($,{label:`Maintenance Window (cron)`,configKey:`trust.maintenance_window`,type:`text`,help:`Cron expression, e.g. 0 2 * * 0`,...e})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Safety`}),(0,I.jsx)($,{label:`CPU Ceiling (%)`,configKey:`safety.cpu_ceiling_pct`,...e}),(0,I.jsx)($,{label:`Query Timeout (ms)`,configKey:`safety.query_timeout_ms`,...e}),(0,I.jsx)($,{label:`DDL Timeout (seconds)`,configKey:`safety.ddl_timeout_seconds`,...e}),(0,I.jsx)($,{label:`Lock Timeout (ms)`,configKey:`safety.lock_timeout_ms`,...e})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Rollback`}),(0,I.jsx)($,{label:`Rollback Threshold (%)`,configKey:`trust.rollback_threshold_pct`,...e}),(0,I.jsx)($,{label:`Rollback Window (minutes)`,configKey:`trust.rollback_window_minutes`,...e}),(0,I.jsx)($,{label:`Rollback Cooldown (days)`,configKey:`trust.rollback_cooldown_days`,...e}),(0,I.jsx)($,{label:`Cascade Cooldown (cycles)`,configKey:`trust.cascade_cooldown_cycles`,...e})]})]})}function tV({getVal:e,setVal:t,getSource:n,resetField:r,help:i,configUrl:a}){let[o,s]=(0,w.useState)(null),[c,l]=(0,w.useState)(!1),[u,d]=(0,w.useState)(null),f=async()=>{l(!0),d(null);try{let t={},n=e(`llm.endpoint`),r=e(`llm.api_key`),i=e(`llm.enabled`);n&&(t[`llm.endpoint`]=n),r&&!nV(r)&&(t[`llm.api_key`]=r),i!==void 0&&(t[`llm.enabled`]=i);let o=await fetch(`/api/v1/llm/models`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({scope_url:a,config:t})});if(!o.ok){let e=await o.json().catch(()=>({}));throw Error(e.error||`HTTP ${o.status}`)}s((await o.json()).models||[])}catch(e){d(e.message)}finally{l(!1)}},p=e(`llm.model`),m=n(`llm.model`),h=m===`modified`||m===`db_override`;if(o&&o.length>0){let e=o.map(e=>({value:e.id,label:e.name||e.id}));return p&&!e.find(e=>e.value===p)&&e.unshift({value:p,label:`${p} (current)`}),(0,I.jsxs)(`div`,{className:`flex items-center gap-3 py-2`,children:[(0,I.jsxs)(`div`,{className:`w-64 flex-shrink-0`,children:[(0,I.jsxs)(`label`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:[`Model`,(0,I.jsx)(YB,{source:m})]}),i&&(0,I.jsx)(`div`,{className:`text-[11px] mt-0.5`,style:{color:`var(--text-secondary)`},children:i})]}),(0,I.jsxs)(`div`,{className:`flex-1 flex gap-2`,children:[(0,I.jsx)(`select`,{value:p,onChange:e=>t(`llm.model`,e.target.value),className:`flex-1 px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-main)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:e.map(e=>(0,I.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,I.jsx)(`button`,{onClick:()=>s(null),className:`px-2 text-xs rounded`,title:`Switch to manual input`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:`Manual`})]}),h&&(0,I.jsx)(`button`,{onClick:()=>r(`llm.model`),title:`Reset`,className:`p-1 rounded`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(_e,{size:14})})]})}return(0,I.jsxs)(`div`,{className:`flex items-center gap-3 py-2`,children:[(0,I.jsxs)(`div`,{className:`w-64 flex-shrink-0`,children:[(0,I.jsxs)(`label`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:[`Model`,(0,I.jsx)(YB,{source:m})]}),i&&(0,I.jsx)(`div`,{className:`text-[11px] mt-0.5`,style:{color:`var(--text-secondary)`},children:i})]}),(0,I.jsxs)(`div`,{className:`flex-1 flex gap-2`,children:[(0,I.jsx)(`input`,{type:`text`,value:p,onChange:e=>t(`llm.model`,e.target.value),className:`flex-1 px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-main)`,color:`var(--text-primary)`,border:`1px solid var(--border)`}}),(0,I.jsx)(`button`,{onClick:f,disabled:c,className:`px-3 py-1.5 text-xs rounded whitespace-nowrap`,style:{background:`var(--accent)`,color:`#fff`,opacity:c?.6:1},children:c?`Loading...`:`Discover`})]}),u&&(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--red)`},children:u}),h&&(0,I.jsx)(`button`,{onClick:()=>r(`llm.model`),title:`Reset`,className:`p-1 rounded`,style:{color:`var(--text-secondary)`},children:(0,I.jsx)(_e,{size:14})})]})}function nV(e){if(!e)return!1;let t=e.match(/^\*+/)?.[0]?.length||0;return t===0?!1:t===e.length||e.length-t<=4}function rV(e){return(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsx)(rt,{}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`LLM`}),(0,I.jsx)($,{label:`Enabled`,configKey:`llm.enabled`,type:`toggle`,...e}),(0,I.jsx)($,{label:`Endpoint URL`,configKey:`llm.endpoint`,type:`text`,...e}),(0,I.jsx)($,{label:`API Key`,configKey:`llm.api_key`,type:`password`,...e}),(0,I.jsx)(tV,{...e}),(0,I.jsx)($,{label:`Timeout (seconds)`,configKey:`llm.timeout_seconds`,...e}),(0,I.jsx)($,{label:`Token Budget (daily)`,configKey:`llm.token_budget_daily`,...e}),(0,I.jsx)($,{label:`Context Budget (tokens)`,configKey:`llm.context_budget_tokens`,...e})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Advisor`}),(0,I.jsx)($,{label:`Advisor Enabled`,configKey:`advisor.enabled`,type:`toggle`,help:`LLM-powered config and query rewrite advisor`,...e}),(0,I.jsx)($,{label:`Advisor Interval (seconds)`,configKey:`advisor.interval_seconds`,help:`How often the advisor runs (min 5s)`,...e})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Index Optimizer`}),(0,I.jsx)($,{label:`Optimizer Enabled`,configKey:`llm.optimizer.enabled`,type:`toggle`,help:`LLM-powered index recommendation engine`,...e}),(0,I.jsx)($,{label:`Min Query Calls`,configKey:`llm.optimizer.min_query_calls`,help:`Minimum query executions before optimizing`,...e}),(0,I.jsx)($,{label:`Max New Indexes Per Table`,configKey:`llm.optimizer.max_new_per_table`,help:`Cap on new indexes recommended per table`,...e})]})]})}function iV(e){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Alerting`}),(0,I.jsx)($,{label:`Enabled`,configKey:`alerting.enabled`,type:`toggle`,...e}),(0,I.jsx)($,{label:`Slack Webhook URL`,configKey:`alerting.slack_webhook_url`,type:`text`,...e}),(0,I.jsx)($,{label:`PagerDuty Routing Key`,configKey:`alerting.pagerduty_routing_key`,type:`password`,...e}),(0,I.jsx)($,{label:`Check Interval (seconds)`,configKey:`alerting.check_interval_seconds`,...e}),(0,I.jsx)($,{label:`Cooldown (minutes)`,configKey:`alerting.cooldown_minutes`,...e}),(0,I.jsx)($,{label:`Quiet Hours Start`,configKey:`alerting.quiet_hours_start`,type:`text`,help:`HH:MM format, e.g. 22:00`,...e}),(0,I.jsx)($,{label:`Quiet Hours End`,configKey:`alerting.quiet_hours_end`,type:`text`,help:`HH:MM format, e.g. 06:00`,...e})]})}function aV(e){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{className:`text-sm font-medium mb-3`,style:{color:`var(--text-secondary)`},children:`Retention`}),(0,I.jsx)($,{label:`Snapshots (days)`,configKey:`retention.snapshots_days`,...e}),(0,I.jsx)($,{label:`Findings (days)`,configKey:`retention.findings_days`,...e}),(0,I.jsx)($,{label:`Actions (days)`,configKey:`retention.actions_days`,...e}),(0,I.jsx)($,{label:`Explains (days)`,configKey:`retention.explains_days`,...e})]})}function oV(e){return(e||``).replace(/^forecast_/,``).replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function sV(e){return e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function cV({label:e,count:t,color:n}){return(0,I.jsxs)(`div`,{className:`flex flex-col items-center p-4 rounded`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`span`,{className:`text-2xl font-bold`,style:{color:n},children:t}),(0,I.jsx)(`span`,{className:`text-xs mt-1`,style:{color:`var(--text-secondary)`},children:e})]})}function lV({forecast:e}){let t=e.detail||{},n=Object.entries(t);return(0,I.jsxs)(`div`,{className:`p-4 rounded space-y-3`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(Qe,{severity:e.severity}),(0,I.jsx)(`span`,{className:`text-sm font-medium`,style:{color:`var(--text-primary)`},children:e.title})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-3 text-xs`,children:[(0,I.jsxs)(`span`,{style:{color:`var(--text-secondary)`},children:[e.occurrence_count,`x`]}),(0,I.jsx)(PF,{timestamp:e.last_seen})]})]}),(0,I.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,I.jsx)(Ce,{size:14,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:oV(e.category)}),e.object_identifier&&(0,I.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`var(--bg-hover)`,color:`var(--text-secondary)`},children:e.object_identifier})]}),n.length>0&&(0,I.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-3`,children:n.map(([e,t])=>(0,I.jsxs)(`div`,{className:`text-xs p-2 rounded`,style:{background:`var(--bg-primary)`},children:[(0,I.jsx)(`div`,{style:{color:`var(--text-secondary)`},children:sV(e)}),(0,I.jsx)(`div`,{className:`font-medium mt-0.5`,style:{color:`var(--text-primary)`},children:typeof t==`number`?Number.isInteger(t)?t:t.toFixed(2):String(t)})]},e))})]})}function uV({database:e}){let{data:t,loading:n,error:r,refetch:i}=Ae(`/api/v1/forecasts${e&&e!==`all`?`?database=${e}`:``}`);if(n)return(0,I.jsx)(yF,{});if(r)return(0,I.jsx)($e,{message:r,onRetry:i});let a=t?.forecasts||[];if(a.length===0)return(0,I.jsx)(IF,{message:`No workload forecasts yet. pg_sage builds predictions as it collects more data about your database patterns.`});let o={critical:0,warning:0,info:0};for(let e of a)o[e.severity]!==void 0&&o[e.severity]++;return(0,I.jsxs)(`div`,{className:`space-y-6`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-3 gap-4`,children:[(0,I.jsx)(cV,{label:`Critical`,count:o.critical,color:`#ef4444`}),(0,I.jsx)(cV,{label:`Warning`,count:o.warning,color:`#fbbf24`}),(0,I.jsx)(cV,{label:`Info`,count:o.info,color:`#4a9eff`})]}),(0,I.jsx)(`div`,{className:`space-y-3`,children:a.map((e,t)=>(0,I.jsx)(lV,{forecast:e},`${e.category}-${e.object_identifier}-${t}`))}),(0,I.jsxs)(`div`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:[a.length,` forecast`,a.length===1?``:`s`]})]})}var dV={disk_sort:`Disk Sort`,seq_scan:`Sequential Scan`,high_cost:`High Cost`,nested_loop:`Nested Loop`,hash_join_spill:`Hash Join Spill`,temp_file:`Temp File Usage`,missing_index:`Missing Index`,bloated_index:`Bloated Index`};function fV(e){return dV[e]||e}function pV(e,t){return e==null||t==null||e===0?null:((e-t)/e*100).toFixed(1)}function mV({label:e,value:t,color:n}){return(0,I.jsxs)(`div`,{className:`rounded p-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`text-xs mb-1`,style:{color:`var(--text-secondary)`},children:e}),(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:n||`var(--text-primary)`},children:t})]})}function hV({database:e}){let{data:t,loading:n,error:r,refetch:i}=Ae(`/api/v1/query-hints${e&&e!==`all`?`?database=${e}`:``}`);if(n)return(0,I.jsx)(yF,{});if(r)return(0,I.jsx)($e,{message:r,onRetry:i});let a=t?.hints||[],o=a.filter(e=>e.status===`active`),s=a.filter(e=>e.suggested_rewrite).length,c=o.map(e=>pV(e.before_cost,e.after_cost)).filter(e=>e!=null).map(e=>parseFloat(e)),l=c.length>0?(c.reduce((e,t)=>e+t,0)/c.length).toFixed(1):`0.0`,u=[{key:`queryid`,label:`Query ID`,render:e=>(0,I.jsx)(`span`,{className:`font-mono text-xs`,children:e.queryid})},{key:`symptom`,label:`Symptom`,render:e=>(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded text-xs`,style:{background:`var(--bg-hover)`,color:`var(--text-primary)`},children:fV(e.symptom)})},{key:`status`,label:`Status`,render:e=>(0,I.jsx)(`span`,{className:`text-xs`,style:{color:e.status===`active`?`var(--green)`:`var(--text-secondary)`},children:e.status})},{key:`cost`,label:`Cost Improvement`,render:e=>{let t=pV(e.before_cost,e.after_cost);return(0,I.jsxs)(`span`,{className:`text-xs`,children:[(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:e.before_cost?.toFixed(1)}),(0,I.jsx)(`span`,{style:{color:`var(--text-secondary)`},children:` → `}),(0,I.jsx)(`span`,{style:{color:`var(--green)`},children:e.after_cost?.toFixed(1)}),t&&(0,I.jsx)(`span`,{style:{color:`var(--green)`},children:` (-${t}%)`})]})}},{key:`created_at`,label:`Created`,render:e=>(0,I.jsx)(PF,{timestamp:e.created_at})}];return(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-3 gap-4`,children:[(0,I.jsx)(mV,{label:`Active Hints`,value:o.length,color:`var(--accent)`}),(0,I.jsx)(mV,{label:`Avg Cost Improvement`,value:`${l}%`,color:`var(--green)`}),(0,I.jsx)(mV,{label:`Rewrite Suggestions`,value:s,color:`var(--warning, var(--accent))`})]}),a.length===0?(0,I.jsx)(IF,{message:`No performance optimizations yet. pg_sage identifies slow queries and suggests tuning hints automatically.`}):(0,I.jsx)(MF,{"data-testid":`query-hints-table`,columns:u,rows:a,expandable:!0,renderExpanded:e=>(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Hint Text`}),(0,I.jsx)(AF,{sql:e.hint_text})]}),(0,I.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Before Cost`}),(0,I.jsx)(`div`,{className:`text-sm font-mono`,style:{color:`var(--text-primary)`},children:e.before_cost?.toFixed(2)})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`After Cost`}),(0,I.jsx)(`div`,{className:`text-sm font-mono`,style:{color:`var(--green)`},children:e.after_cost?.toFixed(2)})]})]}),e.suggested_rewrite&&(0,I.jsxs)(`div`,{className:`rounded p-3`,style:{background:`var(--bg-hover)`,border:`1px solid var(--accent)`},children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--accent)`},children:`Suggested Query Rewrite`}),(0,I.jsx)(AF,{sql:e.suggested_rewrite}),e.rewrite_rationale&&(0,I.jsx)(`div`,{className:`text-xs mt-2`,style:{color:`var(--text-secondary)`},children:e.rewrite_rationale})]})]})}),(0,I.jsxs)(`div`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:[a.length,` total hint`,a.length===1?``:`s`]})]})}var gV={sent:`var(--green)`,failed:`var(--red)`,skipped:`var(--yellow)`},_V={slack:{bg:`var(--channel-slack-bg, #1a2332)`,text:`var(--channel-slack-text, #4a9eff)`},pagerduty:{bg:`var(--channel-pagerduty-bg, #2d1a1a)`,text:`var(--channel-pagerduty-text, var(--red))`},webhook:{bg:`var(--channel-webhook-bg, #1a2e1a)`,text:`var(--channel-webhook-text, var(--green))`}};function vV({alerts:e}){let t={},n={};for(let r of e)t[r.channel]=(t[r.channel]||0)+1,n[r.severity]=(n[r.severity]||0)+1;return(0,I.jsxs)(`div`,{className:`flex gap-4 mb-6 flex-wrap`,children:[(0,I.jsxs)(`div`,{className:`rounded-lg px-5 py-3 flex items-center gap-3`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(j,{size:18,style:{color:`var(--accent)`}}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:`var(--text-primary)`},children:e.length}),(0,I.jsx)(`div`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:`Total Alerts`})]})]}),Object.entries(n).map(([e,t])=>(0,I.jsxs)(`div`,{className:`rounded-lg px-5 py-3`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:`var(--text-primary)`},children:t}),(0,I.jsx)(`div`,{className:`text-xs`,children:(0,I.jsx)(Qe,{severity:e})})]},e)),Object.entries(t).map(([e,t])=>{let n=_V[e]||_V.webhook;return(0,I.jsxs)(`div`,{className:`rounded-lg px-5 py-3`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`div`,{className:`text-2xl font-bold`,style:{color:`var(--text-primary)`},children:t}),(0,I.jsx)(`div`,{className:`text-xs`,children:(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded text-xs font-medium`,style:{background:n.bg,color:n.text},children:e})})]},e)})]})}function yV(e,t,n){if(!t&&!n)return e;let r=t?new Date(t+`T00:00:00`).getTime():null,i=n?new Date(n+`T23:59:59`).getTime():null;return e.filter(e=>{if(!e.sent_at)return!1;let t=new Date(e.sent_at).getTime();return!(r!==null&&ti)})}function bV({from:e,to:t,onFrom:n,onTo:r,onClear:i}){let a={background:`var(--bg-card)`,color:`var(--text-primary)`,border:`1px solid var(--border)`};return(0,I.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 flex-wrap`,children:[(0,I.jsx)(`label`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:`From`}),(0,I.jsx)(`input`,{type:`date`,value:e,"data-testid":`alert-log-date-from`,onChange:e=>n(e.target.value),className:`px-2 py-1 rounded text-sm`,style:a}),(0,I.jsx)(`label`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:`To`}),(0,I.jsx)(`input`,{type:`date`,value:t,"data-testid":`alert-log-date-to`,onChange:e=>r(e.target.value),className:`px-2 py-1 rounded text-sm`,style:a}),(e||t)&&(0,I.jsx)(`button`,{onClick:i,className:`px-2 py-1 rounded text-xs`,style:{color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:`Clear`})]})}function xV({database:e}){let{data:t,loading:n,error:r,refetch:i}=Ae(`/api/v1/alert-log${e&&e!==`all`?`?database=${e}`:``}`),[a,o]=(0,w.useState)(``),[s,c]=(0,w.useState)(``);if(n)return(0,I.jsx)(yF,{});if(r)return(0,I.jsx)($e,{message:r,onRetry:i});let l=t?.alerts||[],u=yV(l,a,s);return l.length===0?(0,I.jsx)(IF,{message:`No alerts sent yet. Configure notification channels in Notifications to receive alerts when pg_sage detects issues.`}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(bV,{from:a,to:s,onFrom:o,onTo:c,onClear:()=>{o(``),c(``)}}),(0,I.jsx)(vV,{alerts:u}),u.length===0?(0,I.jsx)(IF,{message:`No alerts match the selected date range.`}):(0,I.jsx)(MF,{columns:[{key:`sent_at`,label:`Sent At`,render:e=>(0,I.jsx)(PF,{timestamp:e.sent_at})},{key:`severity`,label:`Severity`,render:e=>(0,I.jsx)(Qe,{severity:e.severity})},{key:`title`,label:`Title`},{key:`category`,label:`Category`},{key:`channel`,label:`Channel`,render:e=>{let t=_V[e.channel]||_V.webhook;return(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded text-xs font-medium`,style:{background:t.bg,color:t.text},children:e.channel})}},{key:`status`,label:`Status`,render:e=>(0,I.jsx)(`span`,{style:{color:gV[e.status]||`var(--text-secondary)`},children:e.status})}],rows:u})]})}var SV={active:`No active incidents. All systems healthy.`,resolved:`No resolved incidents yet.`},CV={deterministic:`Metric`,log_deterministic:`Log`,self_action:`Self-Action`,manual_review_required:`Manual Review`,tier2_llm:`AI Correlation`,llm:`AI Correlation`,schema_advisor:`Schema Advisor`,schema_lint:`Schema Lint`,n_plus_one:`N+1 Query`},wV={safe:{background:`var(--green)`,label:`Safe`},low:{background:`var(--green)`,label:`Low`},moderate:{background:`var(--yellow, #eab308)`,label:`Moderate`},medium:{background:`var(--yellow, #eab308)`,label:`Medium`},high_risk:{background:`var(--red)`,label:`High Risk`},high:{background:`var(--red)`,label:`High`}};function TV(e){if(!e)return`-`;let t=Math.floor((Date.now()-new Date(e).getTime())/1e3);if(t<0)return`just now`;if(t<60)return`${t}s ago`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function EV(e,t){return e?e.length>t?e.slice(0,t)+`…`:e:`-`}function DV({database:e,user:t}){let[n,r]=(0,w.useState)(`active`),[i,a]=(0,w.useState)(``),{data:o,loading:s,error:c,refetch:l}=Ae(`/api/v1/incidents?status=${n}${e&&e!==`all`?`&database=${e}`:``}${i?`&severity=${i}`:``}`);if(s)return(0,I.jsx)(yF,{});if(c)return(0,I.jsx)($e,{message:c,onRetry:l});let u=o?.incidents||[],d=[{key:`severity`,label:`Severity`,render:e=>(0,I.jsx)(Qe,{severity:e.severity})},{key:`root_cause`,label:`Root Cause`,render:e=>EV(e.root_cause,80)},{key:`source`,label:`Source`,render:e=>CV[e.source]||e.source},{key:`database_name`,label:`Database`,render:e=>e.fleet_database_name||e.database_name||`-`},{key:`occurrence_count`,label:`Count`},{key:`detected_at`,label:`Detected`,render:e=>TV(e.detected_at)}];return(0,I.jsxs)(`div`,{className:`space-y-4`,children:[(0,I.jsxs)(`div`,{className:`flex gap-2`,children:[[`active`,`resolved`].map(e=>(0,I.jsx)(`button`,{onClick:()=>r(e),className:`px-3 py-1.5 rounded text-sm`,style:{background:n===e?`var(--accent)`:`var(--bg-card)`,color:n===e?`#fff`:`var(--text-secondary)`,border:`1px solid var(--border)`},children:e.charAt(0).toUpperCase()+e.slice(1)},e)),(0,I.jsxs)(`select`,{value:i,onChange:e=>a(e.target.value),"data-testid":`severity-filter`,className:`px-3 py-1.5 rounded text-sm ml-auto`,style:{background:`var(--bg-card)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`option`,{value:``,children:`All severities`}),(0,I.jsx)(`option`,{value:`critical`,children:`Critical`}),(0,I.jsx)(`option`,{value:`warning`,children:`Warning`}),(0,I.jsx)(`option`,{value:`info`,children:`Info`})]})]}),u.length===0?(0,I.jsx)(IF,{message:SV[n]}):(0,I.jsx)(MF,{"data-testid":`incidents-table`,columns:d,rows:u,expandable:!0,renderExpanded:r=>(0,I.jsx)(OV,{row:r,database:r.fleet_database_name||r.database_name||e,canResolve:n===`active`&&(t?.role===`admin`||t?.role===`operator`),onResolved:l})}),(0,I.jsxs)(`div`,{className:`text-xs`,"data-testid":`incidents-count`,style:{color:`var(--text-secondary)`},children:[o?.total||0,` total incidents`]})]})}function OV({row:e,database:t,canResolve:n,onResolved:r}){let[i,a]=(0,w.useState)(!1),[o,s]=(0,w.useState)(null);async function c(){a(!0),s(null);try{let n=t&&t!==`all`?`?database=${encodeURIComponent(t)}`:``;if(!(await fetch(`/api/v1/incidents/${e.id}/resolve${n}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:``})})).ok)throw Error(`Failed to resolve`);s({type:`success`,text:`Incident resolved`}),r&&r()}catch(e){s({type:`error`,text:e.message})}finally{a(!1)}}let l=e.causal_chain||e.chain||[],u=e.action_risk&&wV[e.action_risk],d=e.signal_ids||[],f=e.affected_objects||[];return(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:e.root_cause}),l.length>0&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Causal Chain`}),(0,I.jsx)(`ol`,{className:`space-y-1 pl-4 text-xs list-decimal`,style:{color:`var(--text-primary)`},children:l.sort((e,t)=>e.order-t.order).map((e,t)=>(0,I.jsxs)(`li`,{className:`pl-1`,children:[(0,I.jsx)(`span`,{className:`font-medium`,children:e.signal}),` — `,e.description,e.evidence&&(0,I.jsxs)(`span`,{className:`ml-1`,style:{color:`var(--text-secondary)`},children:[`(`,e.evidence,`)`]})]},t))})]}),e.recommended_sql&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Recommended SQL`}),(0,I.jsx)(AF,{sql:e.recommended_sql})]}),e.rollback_sql&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Rollback SQL`}),(0,I.jsx)(AF,{sql:e.rollback_sql})]}),(0,I.jsxs)(`div`,{className:`flex gap-2 flex-wrap items-center`,children:[u&&(0,I.jsx)(`span`,{className:`text-xs font-medium px-2 py-0.5 rounded`,style:{background:u.background,color:`#fff`},children:u.label}),e.confidence!=null&&(0,I.jsxs)(`span`,{className:`text-xs px-2 py-0.5 rounded`,style:{background:`var(--bg-primary)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:[`Confidence: `,Math.round(e.confidence*100),`%`]}),e.escalated_at&&(0,I.jsx)(`span`,{className:`text-xs font-medium px-2 py-0.5 rounded`,style:{background:`var(--red)`,color:`#fff`},children:`Escalated`})]}),d.length>0&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Signal IDs`}),(0,I.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:d.map((e,t)=>(0,I.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`var(--bg-primary)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:e},t))})]}),f.length>0&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Affected Objects`}),(0,I.jsx)(`ul`,{className:`text-xs pl-4 list-disc`,style:{color:`var(--text-primary)`},children:f.map((e,t)=>(0,I.jsx)(`li`,{children:e},t))})]}),o&&(0,I.jsx)(`div`,{className:`p-2 rounded text-sm`,style:{background:o.type===`success`?`var(--green)`:`var(--red)`,color:`#fff`,opacity:.9},children:o.text}),n&&(0,I.jsx)(`button`,{onClick:c,disabled:i,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--accent)`,color:`#fff`,opacity:i?.5:1},children:i?`Resolving...`:`Resolve Incident`})]})}var kV={google:`Google`,github:`GitHub`,oidc:`SSO`};function AV({onLogin:e}){let[t,n]=(0,w.useState)(``),[r,i]=(0,w.useState)(``),[a,o]=(0,w.useState)(null),[s,c]=(0,w.useState)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(!1);(0,w.useEffect)(()=>{fetch(`/api/v1/auth/oauth/config`).then(e=>e.ok?e.json():null).then(e=>u(e)).catch(()=>u(null))},[]);async function p(n){n.preventDefault(),o(null),c(!0);try{let n=await fetch(`/api/v1/auth/login`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({email:t,password:r})});if(!n.ok){let e=await n.json();throw Error(e.error||`Login failed`)}e(await n.json())}catch(e){o(e.message)}finally{c(!1)}}async function m(){o(null),f(!0);try{let e=await fetch(`/api/v1/auth/oauth/authorize`,{credentials:`include`});if(!e.ok){let t=await e.json();throw Error(t.error||`OAuth unavailable`)}let{url:t}=await e.json();window.location.href=t}catch(e){o(e.message),f(!1)}}let h=l?.provider?kV[l.provider]||l.provider:`SSO`;return(0,I.jsx)(`div`,{className:`flex items-center justify-center min-h-screen`,style:{background:`var(--bg-main)`},children:(0,I.jsxs)(`div`,{className:`w-full max-w-sm p-8 rounded-lg shadow-lg`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h1`,{className:`text-2xl font-bold mb-6 text-center`,style:{color:`var(--accent)`},children:`pg_sage`}),(0,I.jsxs)(`form`,{onSubmit:p,className:`flex flex-col gap-4`,children:[a&&(0,I.jsx)(`div`,{className:`text-sm p-3 rounded`,"data-testid":`login-error`,style:{background:`rgba(239,68,68,0.1)`,color:`#ef4444`,border:`1px solid rgba(239,68,68,0.3)`},children:a}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-sm mb-1`,style:{color:`var(--text-secondary)`},children:`Email`}),(0,I.jsx)(`input`,{type:`text`,"data-testid":`login-email`,value:t,onChange:e=>n(e.target.value),required:!0,className:`w-full px-3 py-2 rounded text-sm`,style:{background:`var(--bg-main)`,border:`1px solid var(--border)`,color:`var(--text-primary)`}})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-sm mb-1`,style:{color:`var(--text-secondary)`},children:`Password`}),(0,I.jsx)(`input`,{type:`password`,"data-testid":`login-password`,value:r,onChange:e=>i(e.target.value),required:!0,className:`w-full px-3 py-2 rounded text-sm`,style:{background:`var(--bg-main)`,border:`1px solid var(--border)`,color:`var(--text-primary)`}})]}),(0,I.jsx)(`button`,{type:`submit`,"data-testid":`login-submit`,disabled:s,className:`w-full py-2 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`,opacity:s?.6:1},children:s?`Signing in...`:`Sign In`})]}),l?.enabled&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-3 my-4`,children:[(0,I.jsx)(`div`,{className:`flex-1 h-px`,style:{background:`var(--border)`}}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:`or`}),(0,I.jsx)(`div`,{className:`flex-1 h-px`,style:{background:`var(--border)`}})]}),(0,I.jsx)(`button`,{onClick:m,"data-testid":`oauth-login`,disabled:d,className:`w-full py-2 rounded text-sm font-medium`,style:{background:`transparent`,color:`var(--text-primary)`,border:`1px solid var(--border)`,opacity:d?.6:1},children:d?`Redirecting...`:`Sign in with ${h}`})]})]})})}function jV({currentUser:e}){let[t,n]=(0,w.useState)([]),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(``),[s,c]=(0,w.useState)(``),[l,u]=(0,w.useState)(`viewer`),[d,f]=(0,w.useState)(!1),p=(0,w.useCallback)(async()=>{try{let e=await fetch(`/api/v1/users`,{credentials:`include`});if(!e.ok)throw Error(`Failed to load users`);n((await e.json()).users||[])}catch(e){i(e.message)}},[]);(0,w.useEffect)(()=>{p()},[p]);async function m(e){e.preventDefault(),f(!0),i(null);try{let e=await fetch(`/api/v1/users`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({email:a,password:s,role:l})});if(!e.ok){let t=await e.json();throw Error(t.error||`Failed to create user`)}o(``),c(``),u(`viewer`),p()}catch(e){i(e.message)}finally{f(!1)}}async function h(e,t){if(confirm(`Delete user ${t}?`))try{if(!(await fetch(`/api/v1/users/${e}`,{method:`DELETE`,credentials:`include`})).ok)throw Error(`Failed to delete user`);p()}catch(e){i(e.message)}}async function g(e,t){try{let n=await fetch(`/api/v1/users/${e}/role`,{method:`PUT`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({role:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||`Failed to update role`)}p()}catch(e){i(e.message)}}let _={background:`var(--bg-main)`,border:`1px solid var(--border)`,color:`var(--text-primary)`},v=t.filter(e=>e.role===`admin`).length;return(0,I.jsxs)(`div`,{children:[r&&(0,I.jsx)(`div`,{className:`text-sm p-3 rounded mb-4`,style:{background:`rgba(239,68,68,0.1)`,color:`#ef4444`,border:`1px solid rgba(239,68,68,0.3)`},children:r}),(0,I.jsxs)(`div`,{className:`rounded-lg p-4 mb-6`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold mb-3`,style:{color:`var(--text-primary)`},children:`Add User`}),(0,I.jsxs)(`form`,{onSubmit:m,className:`flex items-end gap-3 flex-wrap`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-xs mb-1`,style:{color:`var(--text-secondary)`},children:`Email`}),(0,I.jsx)(`input`,{type:`email`,value:a,required:!0,"data-testid":`add-user-email`,onChange:e=>o(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:_})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-xs mb-1`,style:{color:`var(--text-secondary)`},children:`Password`}),(0,I.jsx)(`input`,{type:`password`,value:s,required:!0,"data-testid":`add-user-password`,onChange:e=>c(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:_})]}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-xs mb-1`,style:{color:`var(--text-secondary)`},children:`Role`}),(0,I.jsxs)(`select`,{value:l,"data-testid":`add-user-role`,onChange:e=>u(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:_,children:[(0,I.jsx)(`option`,{value:`viewer`,children:`viewer`}),(0,I.jsx)(`option`,{value:`operator`,children:`operator`}),(0,I.jsx)(`option`,{value:`admin`,children:`admin`})]})]}),(0,I.jsx)(`button`,{type:`submit`,disabled:d,"data-testid":`add-user-submit`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:d?`Adding...`:`Add User`})]})]}),(0,I.jsx)(`div`,{className:`rounded-lg overflow-hidden`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:(0,I.jsxs)(`table`,{className:`w-full text-sm`,"data-testid":`users-table`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[`Email`,`Role`,`Created`,`Last Login`,``].map(e=>(0,I.jsx)(`th`,{className:`text-left px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:e},e))})}),(0,I.jsx)(`tbody`,{children:t.map(t=>{let n=e?.id===t.id,r=t.role===`admin`&&v<=1,i=n||r,a=n?`You cannot change your own admin role`:r?`At least one admin must remain`:void 0;return(0,I.jsxs)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-primary)`},children:t.email}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:(0,I.jsxs)(`select`,{value:t.role,onChange:e=>g(t.id,e.target.value),disabled:i,title:a,"data-testid":`user-role-select`,className:`px-2 py-1 rounded text-xs`,style:{..._,opacity:i?.6:1},children:[(0,I.jsx)(`option`,{value:`viewer`,children:`viewer`}),(0,I.jsx)(`option`,{value:`operator`,children:`operator`}),(0,I.jsx)(`option`,{value:`admin`,children:`admin`})]})}),(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-secondary)`},children:new Date(t.created_at).toLocaleDateString()}),(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-secondary)`},children:t.last_login?new Date(t.last_login).toLocaleString():`Never`}),(0,I.jsx)(`td`,{className:`px-4 py-2 text-right`,children:(0,I.jsx)(`button`,{onClick:()=>h(t.id,t.email),disabled:n||r,title:n?`You cannot delete your own account`:r?`At least one admin must remain`:void 0,"data-testid":`user-delete-button`,className:`px-2 py-1 rounded text-xs`,style:{color:`#ef4444`,opacity:n||r?.6:1},children:`Delete`})})]},t.id)})})]})})]})}var MV={background:`var(--bg-main)`,border:`1px solid var(--border)`,color:`var(--text-primary)`},NV={background:`var(--bg-card)`,border:`1px solid var(--border)`},PV=[`action_executed`,`action_failed`,`approval_needed`,`finding_critical`],FV=[`info`,`warning`,`critical`];function IV({label:e,children:t}){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-xs mb-1`,style:{color:`var(--text-secondary)`},children:e}),t]})}function LV({msg:e}){return(0,I.jsx)(`div`,{className:`text-sm p-3 rounded mb-4`,style:{background:`rgba(239,68,68,0.1)`,color:`#ef4444`,border:`1px solid rgba(239,68,68,0.3)`},children:e})}function RV({error:e,success:t}){return(0,I.jsxs)(I.Fragment,{children:[e&&(0,I.jsx)(LV,{msg:e}),t&&(0,I.jsx)(`div`,{className:`text-sm p-3 rounded mb-4`,style:{background:`rgba(34,197,94,0.1)`,color:`#22c55e`,border:`1px solid rgba(34,197,94,0.3)`},children:t})]})}function zV(){let[e,t]=(0,w.useState)([]),[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(``),[c,l]=(0,w.useState)(`slack`),[u,d]=(0,w.useState)({webhook_url:``}),[f,p]=(0,w.useState)(!1),m=(0,w.useCallback)(async()=>{try{let e=await fetch(`/api/v1/notifications/channels`,{credentials:`include`});if(!e.ok)throw Error(`Failed to load channels`);t((await e.json()).channels||[])}catch(e){r(e.message)}},[]);(0,w.useEffect)(()=>{m()},[m]);function h(e){if(l(e),e===`slack`){d({webhook_url:``});return}if(e===`pagerduty`){d({routing_key:``});return}d({smtp_host:``,smtp_port:`587`,smtp_user:``,smtp_pass:``,from:``,to:``})}async function g(e){e.preventDefault(),p(!0),r(null);try{let e=await fetch(`/api/v1/notifications/channels`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({name:o,type:c,config:u})});if(!e.ok){let t=await e.json();throw Error(t.error||`Failed to create`)}s(``),h(`slack`),m()}catch(e){r(e.message)}finally{p(!1)}}async function _(e){r(null),a(null);try{let t=await fetch(`/api/v1/notifications/channels/${e}/test`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}});if(!t.ok){let e=await t.json();throw Error(e.error||`Test failed`)}a(`Test notification sent`),setTimeout(()=>a(null),3e3)}catch(e){r(e.message)}}async function v(e){try{if(!(await fetch(`/api/v1/notifications/channels/${e.id}`,{method:`PUT`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({name:e.name,config:e.config,enabled:!e.enabled})})).ok)throw Error(`Update failed`);m()}catch(e){r(e.message)}}async function y(e){if(confirm(`Delete this channel?`))try{if(!(await fetch(`/api/v1/notifications/channels/${e}`,{method:`DELETE`,credentials:`include`})).ok)throw Error(`Delete failed`);m()}catch(e){r(e.message)}}return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(RV,{error:n,success:i}),(0,I.jsxs)(`div`,{className:`rounded-lg p-4 mb-6`,style:NV,children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold mb-3`,style:{color:`var(--text-primary)`},children:`Add Channel`}),(0,I.jsxs)(`form`,{onSubmit:g,className:`flex flex-col gap-3`,children:[(0,I.jsxs)(`div`,{className:`flex gap-3 flex-wrap items-end`,children:[(0,I.jsx)(IV,{label:`Name`,children:(0,I.jsx)(`input`,{value:o,required:!0,"data-testid":`add-channel-name`,onChange:e=>s(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV})}),(0,I.jsx)(IV,{label:`Type`,children:(0,I.jsxs)(`select`,{value:c,"data-testid":`add-channel-type`,onChange:e=>h(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV,children:[(0,I.jsx)(`option`,{value:`slack`,children:`Slack`}),(0,I.jsx)(`option`,{value:`email`,children:`Email`}),(0,I.jsx)(`option`,{value:`pagerduty`,children:`PagerDuty`})]})})]}),(0,I.jsx)(BV,{type:c,config:u,setConfig:d}),(0,I.jsx)(`div`,{children:(0,I.jsx)(`button`,{type:`submit`,disabled:f,"data-testid":`add-channel-submit`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:f?`Adding...`:`Add Channel`})})]})]}),(0,I.jsx)(VV,{channels:e,onTest:_,onToggle:v,onDelete:y})]})}function BV({type:e,config:t,setConfig:n}){function r(e,t){n(n=>({...n,[e]:t}))}return e===`slack`?(0,I.jsx)(`div`,{className:`flex gap-3 flex-wrap`,children:(0,I.jsx)(IV,{label:`Webhook URL`,children:(0,I.jsx)(`input`,{value:t.webhook_url||``,required:!0,"data-testid":`add-channel-webhook-url`,onChange:e=>r(`webhook_url`,e.target.value),className:`px-3 py-1.5 rounded text-sm w-80`,style:MV,placeholder:`https://hooks.slack.com/...`})})}):e===`pagerduty`?(0,I.jsx)(`div`,{className:`flex gap-3 flex-wrap`,children:(0,I.jsx)(IV,{label:`Routing Key`,children:(0,I.jsx)(`input`,{value:t.routing_key||``,required:!0,"data-testid":`add-channel-routing-key`,onChange:e=>r(`routing_key`,e.target.value),className:`px-3 py-1.5 rounded text-sm w-80`,style:MV,placeholder:`PagerDuty routing key`})})}):(0,I.jsxs)(`div`,{className:`flex gap-3 flex-wrap`,children:[(0,I.jsx)(IV,{label:`SMTP Host`,children:(0,I.jsx)(`input`,{value:t.smtp_host||``,required:!0,"data-testid":`add-channel-smtp-host`,onChange:e=>r(`smtp_host`,e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV})}),(0,I.jsx)(IV,{label:`Port`,children:(0,I.jsx)(`input`,{value:t.smtp_port||`587`,"data-testid":`add-channel-smtp-port`,onChange:e=>r(`smtp_port`,e.target.value),className:`px-3 py-1.5 rounded text-sm w-20`,style:MV})}),(0,I.jsx)(IV,{label:`User`,children:(0,I.jsx)(`input`,{value:t.smtp_user||``,"data-testid":`add-channel-smtp-user`,onChange:e=>r(`smtp_user`,e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV})}),(0,I.jsx)(IV,{label:`Password`,children:(0,I.jsx)(`input`,{type:`password`,value:t.smtp_pass||``,"data-testid":`add-channel-smtp-pass`,onChange:e=>r(`smtp_pass`,e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV})}),(0,I.jsx)(IV,{label:`From`,children:(0,I.jsx)(`input`,{value:t.from||``,required:!0,"data-testid":`add-channel-from`,onChange:e=>r(`from`,e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV})}),(0,I.jsx)(IV,{label:`To (comma-separated)`,children:(0,I.jsx)(`input`,{value:t.to||``,required:!0,"data-testid":`add-channel-to`,onChange:e=>r(`to`,e.target.value),className:`px-3 py-1.5 rounded text-sm w-64`,style:MV})})]})}function VV({channels:e,onTest:t,onToggle:n,onDelete:r}){return e.length?(0,I.jsx)(`div`,{className:`rounded-lg overflow-hidden`,style:NV,children:(0,I.jsxs)(`table`,{className:`w-full text-sm`,"data-testid":`channels-table`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[`Name`,`Type`,`Enabled`,``].map(e=>(0,I.jsx)(`th`,{className:`text-left px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:e},e))})}),(0,I.jsx)(`tbody`,{children:e.map(e=>(0,I.jsxs)(`tr`,{"data-testid":`channel-row`,style:{borderBottom:`1px solid var(--border)`},children:[(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-primary)`},children:e.name}),(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-secondary)`},children:e.type}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:(0,I.jsx)(`button`,{onClick:()=>n(e),"data-testid":`channel-toggle-button`,className:`text-xs px-2 py-1 rounded`,style:{color:e.enabled?`#22c55e`:`#ef4444`},children:e.enabled?`ON`:`OFF`})}),(0,I.jsxs)(`td`,{className:`px-4 py-2 text-right`,children:[(0,I.jsx)(`button`,{onClick:()=>t(e.id),"data-testid":`channel-test-button`,className:`px-2 py-1 rounded text-xs mr-2`,style:{color:`var(--accent)`},children:`Test`}),(0,I.jsx)(`button`,{onClick:()=>r(e.id),"data-testid":`channel-delete-button`,className:`px-2 py-1 rounded text-xs`,style:{color:`#ef4444`},children:`Delete`})]})]},e.id))})]})}):(0,I.jsx)(`div`,{className:`text-sm p-4`,style:{color:`var(--text-secondary)`},children:`No channels configured.`})}function HV(){let[e,t]=(0,w.useState)([]),[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(``),[c,l]=(0,w.useState)(PV[0]),[u,d]=(0,w.useState)(`warning`),[f,p]=(0,w.useState)(!1),m=(0,w.useCallback)(async()=>{try{let e=await fetch(`/api/v1/notifications/rules`,{credentials:`include`});if(!e.ok)throw Error(`Failed to load rules`);t((await e.json()).rules||[])}catch(e){a(e.message)}},[]),h=(0,w.useCallback)(async()=>{try{let e=await fetch(`/api/v1/notifications/channels`,{credentials:`include`});if(!e.ok)return;let t=(await e.json()).channels||[];r(t),t.length>0&&!o&&s(String(t[0].id))}catch{}},[o]);(0,w.useEffect)(()=>{m(),h()},[m,h]);async function g(e){e.preventDefault(),p(!0),a(null);try{let e=await fetch(`/api/v1/notifications/rules`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({channel_id:Number(o),event:c,min_severity:u})});if(!e.ok){let t=await e.json();throw Error(t.error||`Failed to create rule`)}m()}catch(e){a(e.message)}finally{p(!1)}}async function _(e){try{if(!(await fetch(`/api/v1/notifications/rules/${e.id}`,{method:`PUT`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({enabled:!e.enabled})})).ok)throw Error(`Update failed`);m()}catch(e){a(e.message)}}async function v(e){try{if(!(await fetch(`/api/v1/notifications/rules/${e}`,{method:`DELETE`,credentials:`include`})).ok)throw Error(`Delete failed`);m()}catch(e){a(e.message)}}let y=e=>{let t=n.find(t=>t.id===e);return t?t.name:`#${e}`};return(0,I.jsxs)(`div`,{children:[i&&(0,I.jsx)(LV,{msg:i}),(0,I.jsxs)(`div`,{className:`rounded-lg p-4 mb-6`,style:NV,children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold mb-3`,style:{color:`var(--text-primary)`},children:`Add Rule`}),(0,I.jsxs)(`form`,{onSubmit:g,className:`flex gap-3 flex-wrap items-end`,children:[(0,I.jsx)(IV,{label:`Channel`,children:(0,I.jsx)(`select`,{value:o,"data-testid":`add-rule-channel`,onChange:e=>s(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV,children:n.map(e=>(0,I.jsx)(`option`,{value:e.id,children:e.name},e.id))})}),(0,I.jsx)(IV,{label:`Event`,children:(0,I.jsx)(`select`,{value:c,"data-testid":`add-rule-event`,onChange:e=>l(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV,children:PV.map(e=>(0,I.jsx)(`option`,{value:e,children:e},e))})}),(0,I.jsx)(IV,{label:`Min Severity`,children:(0,I.jsx)(`select`,{value:u,"data-testid":`add-rule-severity`,onChange:e=>d(e.target.value),className:`px-3 py-1.5 rounded text-sm`,style:MV,children:FV.map(e=>(0,I.jsx)(`option`,{value:e,children:e},e))})}),(0,I.jsx)(`button`,{type:`submit`,disabled:f,"data-testid":`add-rule-submit`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:f?`Adding...`:`Add Rule`})]})]}),(0,I.jsx)(UV,{rules:e,channelName:y,onToggle:_,onDelete:v})]})}function UV({rules:e,channelName:t,onToggle:n,onDelete:r}){return e.length?(0,I.jsx)(`div`,{className:`rounded-lg overflow-hidden`,style:NV,children:(0,I.jsxs)(`table`,{className:`w-full text-sm`,"data-testid":`rules-table`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[`Channel`,`Event`,`Min Severity`,`Enabled`,``].map(e=>(0,I.jsx)(`th`,{className:`text-left px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:e},e))})}),(0,I.jsx)(`tbody`,{children:e.map(e=>(0,I.jsxs)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-primary)`},children:t(e.channel_id)}),(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-secondary)`},children:e.event}),(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-secondary)`},children:e.min_severity}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:(0,I.jsx)(`button`,{onClick:()=>n(e),className:`text-xs px-2 py-1 rounded`,style:{color:e.enabled?`#22c55e`:`#ef4444`},children:e.enabled?`ON`:`OFF`})}),(0,I.jsx)(`td`,{className:`px-4 py-2 text-right`,children:(0,I.jsx)(`button`,{onClick:()=>r(e.id),className:`px-2 py-1 rounded text-xs`,style:{color:`#ef4444`},children:`Delete`})})]},e.id))})]})}):(0,I.jsx)(`div`,{className:`text-sm p-4`,style:{color:`var(--text-secondary)`},children:`No rules configured.`})}function WV(){let[e,t]=(0,w.useState)([]),[n,r]=(0,w.useState)(null),i=(0,w.useCallback)(async()=>{try{let e=await fetch(`/api/v1/notifications/log?limit=100`,{credentials:`include`});if(!e.ok)throw Error(`Failed to load log`);t((await e.json()).log||[])}catch(e){r(e.message)}},[]);return(0,w.useEffect)(()=>{i();let e=setInterval(i,3e4);return()=>clearInterval(e)},[i]),(0,I.jsxs)(`div`,{children:[n&&(0,I.jsx)(LV,{msg:n}),e.length?(0,I.jsx)(`div`,{className:`rounded-lg overflow-hidden`,style:NV,children:(0,I.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[`Event`,`Subject`,`Status`,`Error`,`Sent`].map(e=>(0,I.jsx)(`th`,{className:`text-left px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:e},e))})}),(0,I.jsx)(`tbody`,{children:e.map(e=>(0,I.jsxs)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-primary)`},children:e.event}),(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-primary)`},children:e.subject}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:(0,I.jsx)(`span`,{style:{color:e.status===`sent`?`#22c55e`:`#ef4444`},children:e.status})}),(0,I.jsx)(`td`,{className:`px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:e.error||`-`}),(0,I.jsx)(`td`,{className:`px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:new Date(e.sent_at).toLocaleString()})]},e.id))})]})}):(0,I.jsx)(`div`,{className:`text-sm p-4`,style:{color:`var(--text-secondary)`},children:`No notifications sent yet.`})]})}var GV=[`Channels`,`Rules`,`Log`];function KV(){let[e,t]=(0,w.useState)(`Channels`);return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`flex gap-1 mb-4`,children:GV.map(n=>(0,I.jsx)(`button`,{onClick:()=>t(n),"data-testid":`notifications-tab-${n.toLowerCase()}`,className:`px-4 py-2 rounded-t text-sm font-medium`,style:{background:e===n?`var(--bg-card)`:`transparent`,color:e===n?`var(--accent)`:`var(--text-secondary)`,borderBottom:e===n?`2px solid var(--accent)`:`none`},children:n},n))}),e===`Channels`&&(0,I.jsx)(zV,{}),e===`Rules`&&(0,I.jsx)(HV,{}),e===`Log`&&(0,I.jsx)(WV,{})]})}var qV=[`disable`,`allow`,`prefer`,`require`,`verify-ca`,`verify-full`],JV=[`observation`,`advisory`,`autonomous`],YV=[`auto`,`approval`,`manual`],XV=new Set([`port`,`max_connections`]);function ZV({db:e,onClose:t,onError:n}){let r=!!e,[i,a]=(0,w.useState)({name:e?.name||``,host:e?.host||``,port:e?.port||5432,database_name:e?.database_name||``,username:e?.username||``,password:``,sslmode:e?.sslmode||`require`,max_connections:e?.max_connections||2,trust_level:e?.trust_level||`observation`,execution_mode:e?.execution_mode||`approval`}),[o,s]=(0,w.useState)(!1),[c,l]=(0,w.useState)(null),[u,d]=(0,w.useState)(!1);function f(e){return t=>a(n=>({...n,[e]:XV.has(e)?parseInt(t.target.value,10)||0:t.target.value}))}async function p(){d(!0),l(null);try{let t;t=e?.id?await fetch(`/api/v1/databases/managed/${e.id}/test`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)}):await fetch(`/api/v1/databases/managed/test-connection`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i)}),l(await t.json())}catch(e){l({status:`error`,error:e.message})}finally{d(!1)}}async function m(a){a.preventDefault(),s(!0);try{let n=r?`/api/v1/databases/managed/${e.id}`:`/api/v1/databases/managed`,a=await fetch(n,{method:r?`PUT`:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify(i)});if(!a.ok){let e=await a.json();throw Error(e.error||`Failed to save`)}t()}catch(e){n(e.message)}finally{s(!1)}}let h={background:`var(--bg-main)`,border:`1px solid var(--border)`,color:`var(--text-primary)`};return(0,I.jsxs)(`div`,{className:`rounded-lg p-4 mb-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold mb-3`,style:{color:`var(--text-primary)`},children:r?`Edit ${e.name}`:`Add Database`}),(0,I.jsxs)(`form`,{onSubmit:m,"data-testid":`db-form`,children:[(0,I.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 mb-3`,children:[(0,I.jsx)(QV,{label:`Name`,value:i.name,onChange:f(`name`),style:h,required:!0,"data-testid":`db-name`}),(0,I.jsx)(QV,{label:`Host`,value:i.host,onChange:f(`host`),style:h,required:!0,"data-testid":`db-host`}),(0,I.jsx)(QV,{label:`Port`,type:`number`,value:i.port,onChange:f(`port`),style:h,required:!0,"data-testid":`db-port`}),(0,I.jsx)(QV,{label:`Database`,value:i.database_name,onChange:f(`database_name`),style:h,required:!0,"data-testid":`db-database`}),(0,I.jsx)(QV,{label:`Username`,value:i.username,onChange:f(`username`),style:h,required:!0,"data-testid":`db-username`}),(0,I.jsx)(QV,{label:`Password`,type:`password`,value:i.password,onChange:f(`password`),style:h,placeholder:r?`(unchanged)`:``,required:!r,"data-testid":`db-password`}),(0,I.jsx)($V,{label:`SSL Mode`,value:i.sslmode,onChange:f(`sslmode`),options:qV,style:h,"data-testid":`db-sslmode`}),(0,I.jsx)(QV,{label:`Max Connections`,type:`number`,value:i.max_connections,onChange:f(`max_connections`),style:h,required:!0,"data-testid":`db-max-connections`}),(0,I.jsx)($V,{label:`Trust Level`,value:i.trust_level,onChange:f(`trust_level`),options:JV,style:h,"data-testid":`db-trust-level`}),(0,I.jsx)($V,{label:`Execution Mode`,value:i.execution_mode,onChange:f(`execution_mode`),options:YV,style:h,"data-testid":`db-execution-mode`})]}),c&&(0,I.jsx)(eH,{result:c}),(0,I.jsxs)(`div`,{className:`flex gap-2 mt-3`,children:[(0,I.jsx)(`button`,{type:`submit`,disabled:o,"data-testid":`db-save-button`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:o?`Saving...`:`Save`}),(0,I.jsx)(`button`,{type:`button`,onClick:p,disabled:u,"data-testid":`db-test-connection`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--bg-main)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:u?`Testing...`:`Test Connection`}),(0,I.jsx)(`button`,{type:`button`,onClick:t,"data-testid":`db-cancel-button`,className:`px-4 py-1.5 rounded text-sm`,style:{color:`var(--text-secondary)`},children:`Cancel`})]})]})]})}function QV({label:e,type:t=`text`,value:n,onChange:r,style:i,required:a,placeholder:o,"data-testid":s}){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-xs mb-1`,style:{color:`var(--text-secondary)`},children:e}),(0,I.jsx)(`input`,{type:t,value:n,onChange:r,required:a,placeholder:o,"data-testid":s,className:`w-full px-3 py-1.5 rounded text-sm`,style:i})]})}function $V({label:e,value:t,onChange:n,options:r,style:i,"data-testid":a}){return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`label`,{className:`block text-xs mb-1`,style:{color:`var(--text-secondary)`},children:e}),(0,I.jsx)(`select`,{value:t,onChange:n,"data-testid":a,className:`w-full px-3 py-1.5 rounded text-sm`,style:i,children:r.map(e=>(0,I.jsx)(`option`,{value:e,children:e},e))})]})}function eH({result:e}){let t=e.status===`ok`;return(0,I.jsx)(`div`,{className:`text-xs p-2 rounded`,style:{background:t?`rgba(16,185,129,0.1)`:`rgba(239,68,68,0.1)`,color:t?`#10b981`:`#ef4444`,border:`1px solid ${t?`rgba(16,185,129,0.3)`:`rgba(239,68,68,0.3)`}`},children:t?`Connected - ${e.pg_version||`OK`}`+(e.extensions?.length?` | Extensions: ${e.extensions.join(`, `)}`:``):`Error: ${e.error}`})}function tH({databases:e,onEdit:t,onDelete:n,onError:r}){let[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(null);async function c(e){a(e.id),s(null);try{let t=await fetch(`/api/v1/databases/managed/${e.id}/test`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}});if(!t.ok)throw Error(`Test request failed`);let n=await t.json();s({id:e.id,...n})}catch(e){r(e.message)}finally{a(null)}}return e.length===0?(0,I.jsx)(`div`,{className:`rounded-lg p-8 text-center text-sm`,style:{background:`var(--bg-card)`,color:`var(--text-secondary)`,border:`1px solid var(--border)`},children:`No databases configured yet. Click "Add Database" to get started.`}):(0,I.jsx)(`div`,{className:`rounded-lg overflow-hidden`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:(0,I.jsxs)(`table`,{className:`w-full text-sm`,"data-testid":`databases-table`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:[`Name`,`Host`,`Trust Level`,`Execution Mode`,`Status`,``].map(e=>(0,I.jsx)(`th`,{className:`text-left px-4 py-2 text-xs`,style:{color:`var(--text-secondary)`},children:e},e))})}),(0,I.jsx)(`tbody`,{children:e.map(e=>(0,I.jsx)(nH,{db:e,onEdit:t,onDelete:n,onTest:c,testing:i===e.id,testResult:o?.id===e.id?o:null},e.id))})]})})}function nH({db:e,onEdit:t,onDelete:n,onTest:r,testing:i,testResult:a}){let o=(e,t)=>(0,I.jsx)(`span`,{className:`px-2 py-0.5 rounded text-xs`,style:{background:`${t}20`,color:t,border:`1px solid ${t}40`},children:e}),s={observation:`#3b82f6`,advisory:`#f59e0b`,autonomous:`#10b981`},c={auto:`#10b981`,approval:`#f59e0b`,manual:`#6b7280`};return(0,I.jsxs)(`tr`,{"data-testid":`db-row`,style:{borderBottom:`1px solid var(--border)`},children:[(0,I.jsx)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-primary)`},children:e.name}),(0,I.jsxs)(`td`,{className:`px-4 py-2`,style:{color:`var(--text-secondary)`},children:[e.host,`:`,e.port,`/`,e.database_name]}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:o(e.trust_level,s[e.trust_level]||`#6b7280`)}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:o(e.execution_mode,c[e.execution_mode]||`#6b7280`)}),(0,I.jsx)(`td`,{className:`px-4 py-2`,children:a?a.status===`ok`?o(`connected`,`#10b981`):o(`error`,`#ef4444`):o(e.enabled?`enabled`:`disabled`,e.enabled?`#3b82f6`:`#6b7280`)}),(0,I.jsx)(`td`,{className:`px-4 py-2 text-right`,children:(0,I.jsxs)(`div`,{className:`flex gap-2 justify-end`,children:[(0,I.jsx)(`button`,{onClick:()=>r(e),disabled:i,"data-testid":`db-test-button`,className:`px-2 py-1 rounded text-xs`,style:{color:`var(--accent)`},children:i?`Testing...`:`Test`}),(0,I.jsx)(`button`,{onClick:()=>t(e),"data-testid":`db-edit-button`,className:`px-2 py-1 rounded text-xs`,style:{color:`var(--text-secondary)`},children:`Edit`}),(0,I.jsx)(`button`,{onClick:()=>n(e),"data-testid":`db-delete-button`,className:`px-2 py-1 rounded text-xs`,style:{color:`#ef4444`},children:`Delete`})]})})]})}function rH({onClose:e,onError:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(null),[c,l]=(0,w.useState)(!1),u=(0,w.useRef)(null);function d(e){let t=e.target.files[0];t&&(r(t),s(null),f(t))}function f(e){let n=new FileReader;n.onload=e=>{let n=e.target.result.trim().split(` `);if(n.length<2){t(`CSV must have a header and at least one row`);return}a({header:n[0].split(`,`).map(e=>e.trim()),rows:n.slice(1).map(e=>e.split(`,`).map(e=>e.trim())).slice(0,10)})},n.readAsText(e)}async function p(){if(n){l(!0);try{let e=new FormData;e.append(`file`,n);let t=await fetch(`/api/v1/databases/managed/import`,{method:`POST`,credentials:`include`,body:e});if(!t.ok){let e=await t.json();throw Error(e.error||`Import failed`)}s(await t.json())}catch(e){t(e.message)}finally{l(!1)}}}return(0,I.jsxs)(`div`,{className:`rounded-lg p-4 mb-4`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-sm font-semibold mb-3`,style:{color:`var(--text-primary)`},children:`Import Databases from CSV`}),(0,I.jsx)(`p`,{className:`text-xs mb-3`,style:{color:`var(--text-secondary)`},children:`CSV columns: name, host, port, database_name, username, password, sslmode`}),(0,I.jsx)(`input`,{ref:u,type:`file`,accept:`.csv`,onChange:d,className:`text-sm mb-3`}),i&&!o&&(0,I.jsx)(iH,{header:i.header,rows:i.rows}),o&&(0,I.jsx)(aH,{result:o}),(0,I.jsxs)(`div`,{className:`flex gap-2 mt-3`,children:[i&&!o&&(0,I.jsx)(`button`,{onClick:p,disabled:c,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:c?`Importing...`:`Import`}),(0,I.jsx)(`button`,{onClick:e,className:`px-4 py-1.5 rounded text-sm`,style:{color:`var(--text-secondary)`},children:o?`Done`:`Cancel`})]})]})}function iH({header:e,rows:t}){return(0,I.jsx)(`div`,{className:`overflow-x-auto rounded mb-2`,style:{border:`1px solid var(--border)`},children:(0,I.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,I.jsx)(`thead`,{children:(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:e.map(e=>(0,I.jsx)(`th`,{className:`text-left px-2 py-1`,style:{color:`var(--text-secondary)`},children:e},e))})}),(0,I.jsx)(`tbody`,{children:t.map((t,n)=>(0,I.jsx)(`tr`,{style:{borderBottom:`1px solid var(--border)`},children:t.map((t,n)=>(0,I.jsx)(`td`,{className:`px-2 py-1`,style:{color:`var(--text-primary)`,maxWidth:150,overflow:`hidden`,textOverflow:`ellipsis`},children:e[n]===`password`?`***`:t},n))},n))})]})})}function aH({result:e}){return(0,I.jsxs)(`div`,{className:`text-sm p-3 rounded mb-2`,style:{background:e.imported>0?`rgba(16,185,129,0.1)`:`rgba(239,68,68,0.1)`,border:`1px solid ${e.imported>0?`rgba(16,185,129,0.3)`:`rgba(239,68,68,0.3)`}`,color:`var(--text-primary)`},children:[(0,I.jsxs)(`div`,{children:[`Imported: `,e.imported]}),e.skipped>0&&(0,I.jsxs)(`div`,{children:[`Skipped: `,e.skipped]}),e.errors?.length>0&&(0,I.jsx)(`div`,{className:`mt-2`,children:e.errors.map((e,t)=>(0,I.jsxs)(`div`,{className:`text-xs`,style:{color:`#ef4444`},children:[`Row `,e.row,`: `,e.error]},t))})]})}function oH({db:e,onConfirm:t,onCancel:n}){return(0,I.jsx)(`div`,{className:`fixed inset-0 flex items-center justify-center z-50`,style:{background:`rgba(0,0,0,0.5)`},children:(0,I.jsxs)(`div`,{className:`rounded-lg p-6 max-w-md w-full`,"data-testid":`delete-confirm`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h3`,{className:`text-sm font-semibold mb-2`,style:{color:`var(--text-primary)`},children:`Remove Database`}),(0,I.jsxs)(`p`,{className:`text-sm mb-4`,style:{color:`var(--text-secondary)`},children:[`Remove database `,(0,I.jsx)(`strong`,{style:{color:`var(--text-primary)`},children:e.name}),`? This will stop monitoring.`]}),(0,I.jsxs)(`div`,{className:`flex gap-2 justify-end`,children:[(0,I.jsx)(`button`,{onClick:n,"data-testid":`delete-confirm-cancel`,className:`px-4 py-1.5 rounded text-sm`,style:{color:`var(--text-secondary)`},children:`Cancel`}),(0,I.jsx)(`button`,{onClick:t,"data-testid":`delete-confirm-yes`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`#ef4444`,color:`#fff`},children:`Delete`})]})]})})}function sH(){let[e,t]=(0,w.useState)([]),[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(!1),[o,s]=(0,w.useState)(null),[c,l]=(0,w.useState)(!1),[u,d]=(0,w.useState)(null),f=(0,w.useCallback)(async()=>{try{let e=await fetch(`/api/v1/databases/managed`,{credentials:`include`});if(!e.ok)throw Error(`Failed to load databases`);t((await e.json()).databases||[])}catch(e){r(e.message)}},[]);(0,w.useEffect)(()=>{f()},[f]);function p(e){s(e),a(!0)}function m(){a(!1),s(null),f()}function h(){l(!1),f()}return(0,I.jsxs)(`div`,{children:[n&&(0,I.jsxs)(`div`,{className:`text-sm p-3 rounded mb-4`,style:{background:`rgba(239,68,68,0.1)`,color:`#ef4444`,border:`1px solid rgba(239,68,68,0.3)`},children:[n,(0,I.jsx)(`button`,{className:`ml-2 underline`,onClick:()=>r(null),children:`dismiss`})]}),(0,I.jsxs)(`div`,{className:`flex gap-3 mb-4`,children:[(0,I.jsx)(`button`,{onClick:()=>{s(null),a(!0)},"data-testid":`add-database-button`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--accent)`,color:`#fff`},children:`Add Database`}),(0,I.jsx)(`button`,{onClick:()=>l(!0),"data-testid":`import-csv-button`,className:`px-4 py-1.5 rounded text-sm font-medium`,style:{background:`var(--bg-card)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:`Import CSV`})]}),i&&(0,I.jsx)(ZV,{db:o,onClose:m,onError:r}),c&&(0,I.jsx)(rH,{onClose:h,onError:r}),u&&(0,I.jsx)(oH,{db:u,onConfirm:async()=>{try{if(!(await fetch(`/api/v1/databases/managed/${u.id}`,{method:`DELETE`,credentials:`include`})).ok)throw Error(`Failed to delete`);d(null),f()}catch(e){r(e.message),d(null)}},onCancel:()=>d(null)}),(0,I.jsx)(tH,{databases:e,onEdit:p,onDelete:d,onError:r})]})}var cH=[`safety`,`indexing`,`performance`,`correctness`,`convention`,`maintenance`,`data_integrity`,`schema_design`],lH={critical:`var(--red)`,warning:`var(--yellow, #eab308)`,info:`var(--accent)`};function uH({stats:e,totalMatching:t}){let n={};for(let t of e)n[t.severity]=(n[t.severity]||0)+t.count;return(0,I.jsxs)(`div`,{"data-testid":`stats-summary`,className:`flex flex-wrap gap-4 p-4 rounded`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsxs)(`div`,{className:`flex flex-col`,children:[(0,I.jsx)(`span`,{className:`text-2xl font-bold`,style:{color:`var(--text-primary)`},children:t}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:`Matching findings`})]}),[`critical`,`warning`,`info`].map(e=>(0,I.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,I.jsx)(`span`,{className:`text-xl font-bold`,style:{color:lH[e]},children:n[e]||0}),(0,I.jsx)(Qe,{severity:e})]},e))]})}function dH({status:e,setStatus:t,severity:n,setSeverity:r,category:i,setCategory:a}){return(0,I.jsxs)(`div`,{className:`flex flex-wrap gap-2`,"data-testid":`filter-row`,children:[[`open`,`resolved`].map(n=>(0,I.jsx)(`button`,{"data-testid":`status-${n}`,onClick:()=>t(n),className:`px-3 py-1.5 rounded text-sm`,style:{background:e===n?`var(--accent)`:`var(--bg-card)`,color:e===n?`#fff`:`var(--text-secondary)`,border:`1px solid var(--border)`},children:n.charAt(0).toUpperCase()+n.slice(1)},n)),(0,I.jsxs)(`select`,{value:n,onChange:e=>r(e.target.value),"data-testid":`severity-filter`,className:`px-3 py-1.5 rounded text-sm ml-auto`,style:{background:`var(--bg-card)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`option`,{value:``,children:`All severities`}),(0,I.jsx)(`option`,{value:`critical`,children:`Critical`}),(0,I.jsx)(`option`,{value:`warning`,children:`Warning`}),(0,I.jsx)(`option`,{value:`info`,children:`Info`})]}),(0,I.jsxs)(`select`,{value:i,onChange:e=>a(e.target.value),"data-testid":`category-filter`,className:`px-3 py-1.5 rounded text-sm`,style:{background:`var(--bg-card)`,color:`var(--text-primary)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`option`,{value:``,children:`All categories`}),cH.map(e=>(0,I.jsx)(`option`,{value:e,children:e.replace(/_/g,` `).replace(/^./,e=>e.toUpperCase())},e))]})]})}function fH(e){return e?new Date(e).toLocaleString():`-`}function pH({row:e}){let t=(e.detail||{}).impact,n=e.recommendation,r=e.recommended_sql;return(0,I.jsxs)(`div`,{className:`space-y-3`,"data-testid":`finding-detail`,children:[t&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Impact`}),(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:t})]}),n&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Suggestion`}),(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-primary)`},children:n})]}),r&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`div`,{className:`text-xs font-medium mb-1`,style:{color:`var(--text-secondary)`},children:`Suggested SQL`}),(0,I.jsx)(AF,{sql:r})]}),(0,I.jsxs)(`div`,{className:`flex gap-6 text-xs`,style:{color:`var(--text-secondary)`},children:[(0,I.jsxs)(`span`,{children:[`First seen: `,fH(e.created_at)]}),(0,I.jsxs)(`span`,{children:[`Last seen: `,fH(e.last_seen)]})]})]})}function mH({database:e}){let[t,n]=(0,w.useState)(`open`),[r,i]=(0,w.useState)(``),[a,o]=(0,w.useState)(``),s=e&&e!==`all`?`&database=${e}`:``,c=r?`&severity=${r}`:``,l=!!(r||a),u=a?`&thematic_category=${a}`:``,d=`/api/v1/findings/stats?source=schema_lint&status=${t}${s}${c}${u}`,f=`/api/v1/findings?source=schema_lint&status=${t}${s}${c}${u}`,{data:p,loading:m}=Ae(d,6e4),{data:h,loading:g,error:_,refetch:v}=Ae(f),y=[{key:`severity`,label:`Severity`,render:e=>(0,I.jsx)(Qe,{severity:e.severity})},{key:`category`,label:`Category`,render:e=>e.detail?.thematic_category||e.category||`-`},{key:`rule_id`,label:`Rule ID`},{key:`table`,label:`Table`,render:e=>{let t=e.detail?.schema_name,n=e.detail?.table_name;return t&&n?`${t}.${n}`:n||`-`}},{key:`title`,label:`Description`,render:e=>e.title||`-`},{key:`database_name`,label:`Database`,render:e=>e.detail?.database_name||e.database_name||`-`}],b=h?.findings||[],x=p?.stats||[],S=p?.total_open??0;return(0,I.jsxs)(`div`,{className:`space-y-4`,"data-testid":`schema-health-page`,children:[!m&&(0,I.jsx)(uH,{stats:x,totalMatching:S}),(0,I.jsx)(dH,{status:t,setStatus:n,severity:r,setSeverity:i,category:a,setCategory:o}),g&&(0,I.jsx)(yF,{}),_&&(0,I.jsx)($e,{message:_,onRetry:v}),!g&&!_&&b.length===0&&(0,I.jsx)(IF,{message:l?`No schema findings match the selected filters.`:t===`open`?`No open schema findings. Your schema looks healthy!`:`No resolved schema findings yet.`}),!g&&!_&&b.length>0&&(0,I.jsx)(MF,{"data-testid":`schema-findings-table`,columns:y,rows:b,expandable:!0,renderExpanded:e=>(0,I.jsx)(pH,{row:e})}),(0,I.jsxs)(`div`,{className:`text-xs`,"data-testid":`schema-findings-count`,style:{color:`var(--text-secondary)`},children:[h?.total||0,` total schema findings`]})]})}var hH=[{id:`nav-dashboard`,label:`Go to Overview`,hint:`Agent state + fleet health`,hash:`#/`},{id:`nav-cases`,label:`Go to Cases`,hint:`Open DBA work queue`,hash:`#/cases`},{id:`nav-actions`,label:`Go to Actions`,hint:`Executed + pending timeline`,hash:`#/actions`},{id:`nav-databases`,label:`Go to Fleet`,hint:`Manage database connections`,hash:`#/manage-databases`,admin:!0},{id:`nav-settings`,label:`Go to Settings`,hint:`Configure pg_sage`,hash:`#/settings`,admin:!0}];function gH(e,t){if(!e)return 1;let n=e.toLowerCase(),r=t.toLowerCase();if(r.includes(n))return 2+(r.startsWith(n)?1:0);let i=0;for(let e=0;e{s(e),l(0),a(!0)};if((0,w.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`?(e.preventDefault(),i?a(!1):d()):e.key===`Escape`&&i?a(!1):e.key===`?`&&!i&&!vH(e.target)&&(e.preventDefault(),d(`?`))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]),(0,w.useEffect)(()=>{i&&requestAnimationFrame(()=>u.current?.focus())},[i]),!i)return null;let f=(e||[]).map(e=>({id:`db-${e.name}`,label:`Select database: ${e.name}`,hint:t===e.name?`current`:`switch`,run:()=>n?.(e.name)})),p={id:`db-all`,label:`Select all databases`,hint:t===`all`?`current`:`overview`,run:()=>n?.(`all`)},m=r?.role===`admin`,h=navigator.platform?.toLowerCase().includes(`mac`)?`⌘K`:`Ctrl+K`,g=hH.filter(e=>!e.admin||m).map(e=>({...e,run:()=>{window.location.hash=e.hash}})),_={id:`help`,label:`Keyboard shortcuts`,hint:`${h} command palette, ? help`,run:()=>{}},v=[...g,p,...f,_].map(e=>({c:e,s:gH(o,e.label+` `+e.hint)})).filter(e=>e.s>0).sort((e,t)=>t.s-e.s).map(e=>e.c),y=e=>{let t=v[e];t&&(t.run(),a(!1))},b=e=>{e.key===`ArrowDown`?(e.preventDefault(),l(e=>Math.min(e+1,v.length-1))):e.key===`ArrowUp`?(e.preventDefault(),l(e=>Math.max(e-1,0))):e.key===`Enter`&&(e.preventDefault(),y(c))};return(0,I.jsx)(`div`,{"data-testid":`command-palette`,role:`dialog`,"aria-modal":`true`,"aria-label":`Command palette`,onClick:()=>a(!1),style:{position:`fixed`,inset:0,zIndex:50,background:`rgba(0,0,0,0.5)`,display:`flex`,justifyContent:`center`,paddingTop:`12vh`},children:(0,I.jsxs)(`div`,{onClick:e=>e.stopPropagation(),className:`rounded`,style:{width:`100%`,maxWidth:560,background:`var(--bg-card)`,border:`1px solid var(--border)`,boxShadow:`0 10px 40px rgba(0,0,0,0.5)`,maxHeight:`70vh`,display:`flex`,flexDirection:`column`},children:[(0,I.jsxs)(`div`,{className:`flex items-center gap-2 p-3`,style:{borderBottom:`1px solid var(--border)`},children:[(0,I.jsx)(ye,{size:16,style:{color:`var(--text-secondary)`}}),(0,I.jsx)(`input`,{ref:u,"data-testid":`command-palette-input`,value:o,onChange:e=>{s(e.target.value),l(0)},onKeyDown:b,placeholder:`Type a command or search...`,className:`flex-1 bg-transparent outline-none text-sm`,style:{color:`var(--text-primary)`}}),(0,I.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded`,style:{background:`var(--bg-hover)`,color:`var(--text-secondary)`},children:`Esc`})]}),(0,I.jsxs)(`div`,{className:`overflow-auto`,style:{flex:1},children:[v.length===0&&(0,I.jsx)(`div`,{className:`p-4 text-sm text-center`,style:{color:`var(--text-secondary)`},children:`No matches`}),v.map((e,t)=>(0,I.jsxs)(`button`,{type:`button`,"data-testid":`command-${e.id}`,onMouseEnter:()=>l(t),onClick:()=>y(t),className:`w-full flex items-center justify-between px-3 py-2 text-sm text-left`,style:{background:t===c?`var(--bg-hover)`:`transparent`,color:`var(--text-primary)`},children:[(0,I.jsx)(`span`,{children:e.label}),(0,I.jsx)(`span`,{className:`text-xs`,style:{color:`var(--text-secondary)`},children:e.hint})]},e.id))]})]})})}function vH(e){if(!e)return!1;let t=(e.tagName||``).toLowerCase();return t===`input`||t===`textarea`||e.isContentEditable}function yH(){return(window.location.hash||`#/`).replace(`#`,``)||`/`}function bH(){return(0,I.jsxs)(`div`,{"data-testid":`access-denied`,className:`rounded p-5`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-lg font-semibold mb-2`,style:{color:`var(--text-primary)`},children:`Access denied`}),(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:`You do not have permission to open this admin page.`})]})}function xH(){return(0,I.jsxs)(`div`,{"data-testid":`not-found`,className:`rounded p-5`,style:{background:`var(--bg-card)`,border:`1px solid var(--border)`},children:[(0,I.jsx)(`h2`,{className:`text-lg font-semibold mb-2`,style:{color:`var(--text-primary)`},children:`Page not found`}),(0,I.jsx)(`p`,{className:`text-sm`,style:{color:`var(--text-secondary)`},children:`This pg_sage route does not exist.`}),(0,I.jsx)(`a`,{href:`#/`,className:`inline-block mt-4 text-sm underline`,style:{color:`var(--accent)`},children:`Go to Dashboard`})]})}function SH(){let[e,t]=(0,w.useState)(yH()),[n,r]=(0,w.useState)(localStorage.getItem(`pg_sage_db`)||`all`),[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(!1);(0,w.useEffect)(()=>{fetch(`/api/v1/auth/me`,{credentials:`include`}).then(e=>{if(e.ok)return e.json();throw Error(`not authenticated`)}).then(e=>a(e)).catch(()=>a(null)).finally(()=>s(!0))},[]);let{data:c}=Ae(i?`/api/v1/databases`:null,3e4);if((0,w.useEffect)(()=>{let e=()=>t(yH());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,w.useEffect)(()=>{localStorage.setItem(`pg_sage_db`,n)},[n]),!o)return null;if(!i)return(0,I.jsx)(AV,{onLogin:a});async function l(){await fetch(`/api/v1/auth/logout`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`}}),a(null)}let u=c?.databases||[],d=n===`all`?null:u.find(e=>e.name===n),f=i.role===`admin`,p={title:`Access denied`,node:(0,I.jsx)(bH,{})},m=(()=>{switch(e){case`/`:return{title:`Overview`,node:(0,I.jsx)(vF,{database:n,onSelectDB:r})};case`/manage-databases`:return f?{title:`Databases`,node:(0,I.jsx)(sH,{})}:p;case`/findings`:case`/cases`:return{title:`Cases`,node:(0,I.jsx)(wF,{database:n,user:i})};case`/actions`:return{title:`Actions`,node:(0,I.jsx)(XF,{database:n,user:i})};case`/database`:return{title:`Database`,node:(0,I.jsx)(rI,{database:n})};case`/forecasts`:return{title:`Forecasts`,node:(0,I.jsx)(uV,{database:n})};case`/query-hints`:return{title:`Performance`,node:(0,I.jsx)(hV,{database:n})};case`/schema-health`:return{title:`Schema Health`,node:(0,I.jsx)(mH,{database:n})};case`/alerts`:return{title:`Alerts`,node:(0,I.jsx)(xV,{database:n})};case`/incidents`:return{title:`Incidents`,node:(0,I.jsx)(DV,{database:n,user:i})};case`/settings`:return f?{title:`Settings`,node:(0,I.jsx)(zB,{database:n,databaseId:d?.id||d?.database_id})}:p;case`/notifications`:return f?{title:`Notifications`,node:(0,I.jsx)(KV,{})}:p;case`/users`:return f?{title:`Users`,node:(0,I.jsx)(jV,{currentUser:i})}:p;default:return{title:`Not found`,node:(0,I.jsx)(xH,{})}}})();return(0,I.jsx)(Ne,{children:(0,I.jsx)(UF,{children:(0,I.jsxs)(Re,{children:[(0,I.jsx)(Xe,{"data-testid":`app-loaded`,databases:u,selectedDB:n,onSelectDB:r,user:i,fleetData:c,onLogout:l,pageTitle:m.title,children:m.node}),(0,I.jsx)(_H,{databases:u,selectedDB:n,onSelectDB:r,user:i})]})})})}Oe.createRoot(document.getElementById(`root`)).render((0,I.jsx)(w.StrictMode,{children:(0,I.jsx)(SH,{})})); \ No newline at end of file diff --git a/sidecar/internal/api/dist/index.html b/sidecar/internal/api/dist/index.html index ca0610b..e23458b 100644 --- a/sidecar/internal/api/dist/index.html +++ b/sidecar/internal/api/dist/index.html @@ -1,13 +1,13 @@ - - - - - - pg_sage Dashboard - + + + + + + pg_sage Dashboard + - - -
- - + + +
+ +