ccdesk 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +84 -67
  3. package/dist/server/agent-edit.js +77 -0
  4. package/dist/server/backups.js +129 -52
  5. package/dist/server/cli.js +21 -8
  6. package/dist/server/mcp-edit.js +263 -0
  7. package/dist/server/mutations.js +8 -3
  8. package/dist/server/scan/compare.js +34 -0
  9. package/dist/server/scan/context.js +6 -5
  10. package/dist/server/scan/env.js +8 -3
  11. package/dist/server/scan/files.js +118 -30
  12. package/dist/server/scan/index.js +29 -15
  13. package/dist/server/scan/instructions.js +11 -7
  14. package/dist/server/scan/inventory.js +134 -42
  15. package/dist/server/scan/mcp.js +88 -30
  16. package/dist/server/scan/memory.js +8 -9
  17. package/dist/server/scan/path-test.js +32 -10
  18. package/dist/server/scan/permissions.js +22 -6
  19. package/dist/server/scan/plugins.js +18 -11
  20. package/dist/server/scan/projects.js +7 -6
  21. package/dist/server/scan/sandbox.js +161 -0
  22. package/dist/server/scan/settings.js +33 -20
  23. package/dist/server/scan/tools.js +7 -3
  24. package/dist/server/scan/usage.js +119 -46
  25. package/dist/server/schema.js +15 -0
  26. package/dist/server/secrets.js +63 -0
  27. package/dist/server/server.js +222 -128
  28. package/dist/server/settings-edit.js +90 -21
  29. package/dist/server/watch.js +52 -10
  30. package/dist/server/write.js +58 -20
  31. package/dist/shared/compare.js +1 -0
  32. package/dist/shared/hook-events.json +35 -0
  33. package/dist/shared/mcp-server.schema.json +25 -0
  34. package/dist/shared/memory.js +4 -0
  35. package/dist/shared/scopes.js +3 -1
  36. package/dist/shared/types.js +1 -1
  37. package/dist/ui/assets/hanken-grotesk-cyrillic-ext-wght-normal-D_UHSL_T.woff2 +0 -0
  38. package/dist/ui/assets/index-BQ3Lhx8z.js +60 -0
  39. package/dist/ui/assets/index-BRgGlpjd.css +1 -0
  40. package/dist/ui/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.woff2 +0 -0
  41. package/dist/ui/index.html +2 -2
  42. package/package.json +10 -4
  43. package/dist/ui/assets/index-BM4K7hSO.css +0 -1
  44. package/dist/ui/assets/index-CN3vkVjv.js +0 -45
@@ -1,45 +0,0 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ee(e,t){return D(e.type,t,e.props)}function te(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ne(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var re=/\/+/g;function O(e,t){return typeof e==`object`&&e&&e.key!=null?ne(``+e.key):t.toString(36)}function ie(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ae(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ae(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+O(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(re,`$&/`)+`/`),ae(o,r,i,``,function(e){return e})):o!=null&&(te(o)&&(o=ee(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(re,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+O(a,u),c+=ae(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+O(a,u++),c+=ae(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return ae(ie(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function oe(e,t,n){if(e==null)return e;var r=[],i=0;return ae(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function se(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var k=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function ce(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,k)}catch(e){k(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function le(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else ce(le.bind(null,e))}var ue={map:oe,forEach:function(e,t,n){oe(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return oe(e,function(){t++}),t},toArray:function(e){return oe(e,function(e){return e})||[]},only:function(e){if(!te(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=ue,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=le,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=te,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:se}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=ce,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.0`})),d=o(((e,t)=>{t.exports=u()})),f=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,ee());else{var t=n(l);t!==null&&re(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&re(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ee():S=!1}}}var ee;if(typeof y==`function`)ee=function(){y(D)};else if(typeof MessageChannel<`u`){var te=new MessageChannel,ne=te.port2;te.port1.onmessage=D,ee=function(){ne.postMessage(null)}}else ee=function(){_(D,0)};function re(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,re(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,ee()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),o=Symbol.for(`react.recoverable`),s=Symbol.for(`react.optimistic_key`);function c(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===s?s:``+r,children:e,containerInfo:t,implementation:n}}var l=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:o,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return c(e,t,null,r)},e.flushSync=function(e){var t=l.T,n=i.p;try{if(l.T=null,i.p=2,e)return e()}finally{l.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return l.H.useFormState(e,t,n)},e.useFormStatus=function(){return l.H.useHostTransitionStatus()},e.version=`19.3.0`})),h=o(((e,t)=>{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=m()})),g=o((e=>{var t=p(),n=d(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function f(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=f(e),t!==null)return t;e=e.sibling}return null}function m(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&m(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function g(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function _(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function v(e){var t=[null,null],n=g(e);return n===null||y(t,e,n.child,{foundSelf:!1}),t}function y(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&y(e,t,n.child,r))return!0;n=n.sibling}return!1}function b(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var x=null,S=null;function C(e,t,n){return e===n||e===t&&(x=e,!0)}function w(e,t,n){return e===n?(S=e,!1):e===t&&(S!==null&&(x=e),!0)}function T(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function E(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var D=Object.assign,ee=Symbol.for(`react.element`),te=Symbol.for(`react.transitional.element`),ne=Symbol.for(`react.portal`),re=Symbol.for(`react.fragment`),O=Symbol.for(`react.strict_mode`),ie=Symbol.for(`react.profiler`),ae=Symbol.for(`react.consumer`),oe=Symbol.for(`react.context`),se=Symbol.for(`react.forward_ref`),k=Symbol.for(`react.suspense`),ce=Symbol.for(`react.suspense_list`),le=Symbol.for(`react.memo`),ue=Symbol.for(`react.lazy`),de=Symbol.for(`react.activity`),fe=Symbol.for(`react.legacy_hidden`),pe=Symbol.for(`react.memo_cache_sentinel`),me=Symbol.for(`react.view_transition`),he=Symbol.for(`react.recoverable`),ge=Symbol.iterator;function A(e){return typeof e!=`object`||!e?null:(e=ge&&e[ge]||e[`@@iterator`],typeof e==`function`?e:null)}var _e=Symbol.for(`react.client.reference`);function ve(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===_e?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case re:return`Fragment`;case ie:return`Profiler`;case O:return`StrictMode`;case k:return`Suspense`;case ce:return`SuspenseList`;case de:return`Activity`;case me:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case ne:return`Portal`;case oe:return e.displayName||`Context`;case ae:return(e._context.displayName||`Context`)+`.Consumer`;case se:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case le:return t=e.displayName||null,t===null?ve(e.type)||`Memo`:t;case ue:t=e._payload,e=e._init;try{return ve(e(t))}catch{}}return null}var ye=Array.isArray,j=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,M=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,be={pending:!1,data:null,method:null,action:null},xe=[],N=-1;function Se(e){return{current:e}}function Ce(e){0>N||(e.current=xe[N],xe[N]=null,N--)}function we(e,t){N++,xe[N]=e.current,e.current=t}var Te=Se(null),Ee=Se(null),De=Se(null),Oe=Se(null);function ke(e,t){switch(we(De,t),we(Ee,e),we(Te,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Ce(Te),we(Te,e)}function Ae(){Ce(Te),Ce(Ee),Ce(De)}function je(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,we(Oe,e)),t=Te.current;var n=dp(t,e.type);t!==n&&(we(Ee,e),we(Te,n))}function Me(e){Ee.current===e&&(Ce(Te),Ce(Ee)),Oe.current===e&&(Ce(Oe),sh._currentValue=be)}var Ne,Pe;function Fe(e){if(Ne===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ne=t&&t[1]||``,Pe=-1<e.stack.indexOf(`
2
- at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
3
- `+Ne+e+Pe}var Ie=!1;function Le(e,t){if(!e||Ie)return``;Ie=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}n=!1;try{var i=Object.getOwnPropertyDescriptor(e.prototype,`props`);Object.defineProperty(e.prototype,"props",{configurable:!0,set:function(){throw Error()}}),n=!0,new e}finally{n&&(i===void 0?delete e.prototype.props:Object.defineProperty(e.prototype,"props",i))}}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
4
- `),l=s.split(`
5
- `);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=`
6
- `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ie=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Fe(n):``}function Re(e,t){switch(e.tag){case 26:case 27:case 5:return Fe(e.type);case 16:return Fe(`Lazy`);case 13:return e.child!==t&&t!==null?Fe(`Suspense Fallback`):Fe(`Suspense`);case 19:return Fe(`SuspenseList`);case 0:case 15:return Le(e.type,!1);case 11:return Le(e.type.render,!1);case 1:return Le(e.type,!0);case 31:return Fe(`Activity`);case 30:return Fe(`ViewTransition`);default:return``}}function ze(e){try{var t=``,n=null;do t+=Re(e,n),n=e,e=e.return;while(e);return t}catch(e){return`
7
- Error generating stack: `+e.message+`
8
- `+e.stack}}var Be=Object.prototype.hasOwnProperty,Ve=t.unstable_scheduleCallback,He=t.unstable_cancelCallback,Ue=t.unstable_shouldYield,We=t.unstable_requestPaint,Ge=t.unstable_now,Ke=t.unstable_getCurrentPriorityLevel,qe=t.unstable_ImmediatePriority,Je=t.unstable_UserBlockingPriority,Ye=t.unstable_NormalPriority,Xe=t.unstable_LowPriority,Ze=t.unstable_IdlePriority,Qe=t.log,$e=t.unstable_setDisableYieldValue,et=null,tt=null;function nt(e){if(typeof Qe==`function`&&$e(e),tt&&typeof tt.setStrictMode==`function`)try{tt.setStrictMode(et,e)}catch{}}var rt=Math.clz32?Math.clz32:ot,it=Math.log,at=Math.LN2;function ot(e){return e>>>=0,e===0?32:31-(it(e)/at|0)|0}var st=256,ct=262144,lt=4194304;function ut(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&-e;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 dt(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=ut(n))):i=ut(o):i=ut(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ut(n))):i=ut(o)):i=ut(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 ft(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function pt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0<n;){var r=31-rt(n),i=1<<r;t|=e[r],n&=~i}return t}function mt(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 ht(){var e=lt;return lt<<=1,!(lt&62914560)&&(lt=4194304),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function _t(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function vt(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<n;){var u=31-rt(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&P(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function P(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-rt(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function yt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-rt(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function bt(e,t){var n=t&-t;return n=n&42?1:F(n),(n&(e.suspendedLanes|t))===0?n:0}function F(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function I(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function xt(){var e=M.p;return e===0?(e=window.event,e===void 0?32:Ch(e.type)):e}function St(e,t){var n=M.p;try{return M.p=e,t()}finally{M.p=n}}var Ct=Math.random().toString(36).slice(2),wt=`__reactFiber$`+Ct,Tt=`__reactProps$`+Ct,Et=`__reactContainer$`+Ct,Dt=`__reactEvents$`+Ct,Ot=`__reactListeners$`+Ct,kt=`__reactHandles$`+Ct,At=`__reactResources$`+Ct,jt=`__reactMarker$`+Ct,Mt=`__reactLoad$`+Ct;function Nt(e){delete e[wt],delete e[Tt],delete e[Ot],delete e[kt]}function Pt(e){var t;if(t=e[wt])return t;for(var n=e.parentNode;n;){if(t=n[Et]||n[wt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=fm(e);e!==null;){if(n=e[wt])return n;e=fm(e)}return t}e=n,n=e.parentNode}return null}function Ft(e){if(e=e[wt]||e[Et]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function It(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function Lt(e){var t=e[At];return t||=e[At]={hoistableStyles:new Map,hoistableScripts:new Map},t}function Rt(e){e[jt]=!0}function zt(e){e[Mt]=void 0}var Bt=new Set,Vt={};function Ht(e,t){Ut(e,t),Ut(e+`Capture`,t)}function Ut(e,t){for(Vt[e]=t,e=0;e<t.length;e++)Bt.add(t[e])}var Wt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),Gt={},Kt={};function qt(e){return Be.call(Kt,e)?!0:Be.call(Gt,e)?!1:Wt.test(e)?Kt[e]=!0:(Gt[e]=!0,!1)}var L=!1;function Jt(){var e=L;return L=!1,e}function Yt(e,t,n){if(qt(t)){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,n)}}}function Xt(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,n)}}function Zt(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,r)}}function Qt(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function $t(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function en(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function tn(e){if(!e._valueTracker){var t=$t(e)?`checked`:`value`;e._valueTracker=en(e,t,``+e[t])}}function nn(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=$t(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}var rn=/[\n"\\]/g;function an(e){return e.replace(rn,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function on(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+Qt(t)):e.value!==``+Qt(t)&&(e.value=``+Qt(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):cn(e,Qt(n)):o===`number`&&e.value==t?cn(e,Qt(e.value)):cn(e,Qt(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+Qt(s):e.removeAttribute(`name`)}function sn(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){tn(e);return}n=n==null?``:``+Qt(n),t=t==null?n:``+Qt(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),tn(e)}function cn(e,t){e.defaultValue!==``+t&&(e.defaultValue=``+t)}function ln(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+Qt(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function un(e,t,n){t!=null&&(t=``+Qt(t),t!==e.value&&(e.value=t),n==null)?e.defaultValue!==t&&(e.defaultValue=t):e.defaultValue=n==null?``:``+Qt(n)}function dn(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(ye(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=Qt(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),tn(e)}function fn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var pn=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function mn(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||pn.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function hn(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``,L=!0);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&(mn(e,a,r),L=!0)}else for(var o in t)t.hasOwnProperty(o)&&mn(e,o,t[o])}function gn(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var _n=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`maskType`,`mask-type`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),vn=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function yn(e){return vn.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function bn(){}var xn=null;function Sn(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Cn=null,wn=null;function Tn(e){var t=Ft(e);if(t&&(e=t.stateNode)){var n=e[Tt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(on(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+an(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[Tt]||null;if(!a)throw Error(i(90));on(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&nn(r)}break a;case`textarea`:un(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&ln(e,!!n.multiple,t,!1)}}}var En=!1;function Dn(e,t,n){if(En)return e(t,n);En=!0;try{return e(t)}finally{if(En=!1,(Cn!==null||wn!==null)&&(zd(),Cn&&(t=Cn,e=wn,wn=Cn=null,Tn(t),e)))for(t=0;t<e.length;t++)Tn(e[t])}}function On(e,t){var n=e.stateNode;if(n===null)return null;var r=n[Tt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var kn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,An=!1;if(kn)try{var jn={};Object.defineProperty(jn,"passive",{get:function(){An=!0}}),window.addEventListener(`test`,jn,jn),window.removeEventListener(`test`,jn,jn)}catch{An=!1}var Mn=null,Nn=null,Pn=null;function Fn(){if(Pn)return Pn;var e,t=Nn,n=t.length,r,i=`value`in Mn?Mn.value:Mn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return Pn=i.slice(e,1<r?1-r:void 0)}function In(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Ln(){return!0}function Rn(){return!1}function zn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?Ln:Rn,this.isPropagationStopped=Rn,this}return D(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=Ln)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=Ln)},persist:function(){},isPersistent:Ln}),t}var Bn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Vn=zn(Bn),Hn=D({},Bn,{view:0,detail:0}),Un=zn(Hn),Wn,Gn,Kn,qn=D({},Hn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:z,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==Kn&&(Kn&&e.type===`mousemove`?(Wn=e.screenX-Kn.screenX,Gn=e.screenY-Kn.screenY):Gn=Wn=0,Kn=e),Wn)},movementY:function(e){return`movementY`in e?e.movementY:Gn}}),Jn=zn(qn),Yn=zn(D({},qn,{dataTransfer:0})),Xn=zn(D({},Hn,{relatedTarget:0})),Zn=zn(D({},Bn,{animationName:0,elapsedTime:0,pseudoElement:0})),Qn=zn(D({},Bn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),$n=zn(D({},Bn,{data:0})),er={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},tr={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},nr={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function R(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=nr[e])?!!t[e]:!1}function z(){return R}var B=zn(D({},Hn,{key:function(e){if(e.key){var t=er[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=In(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?tr[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:z,charCode:function(e){return e.type===`keypress`?In(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?In(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),rr=zn(D({},qn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),ir=zn(D({},Bn,{submitter:0})),ar=zn(D({},Hn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:z})),or=zn(D({},Bn,{propertyName:0,elapsedTime:0,pseudoElement:0})),V=zn(D({},qn,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),sr=zn(D({},Bn,{newState:0,oldState:0,source:0})),cr=[9,13,27,32],lr=kn&&`CompositionEvent`in window,ur=null;kn&&`documentMode`in document&&(ur=document.documentMode);var dr=kn&&`TextEvent`in window&&!ur,fr=kn&&(!lr||ur&&8<ur&&11>=ur),pr=` `,mr=!1;function hr(e,t){switch(e){case`keyup`:return cr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function gr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var _r=!1;function vr(e,t){switch(e){case`compositionend`:return gr(t);case`keypress`:return t.which===32?(mr=!0,pr):null;case`textInput`:return e=t.data,e===pr&&mr?null:e;default:return null}}function yr(e,t){if(_r)return e===`compositionend`||!lr&&hr(e,t)?(e=Fn(),Pn=Nn=Mn=null,_r=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return fr&&t.locale!==`ko`?null:t.data;default:return null}}var br={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!br[e.type]:t===`textarea`}function Sr(e,t,n,r){Cn?wn?wn.push(r):wn=[r]:Cn=r,t=Jf(t,`onChange`),0<t.length&&(n=new Vn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var Cr=null,wr=null;function Tr(e){Vf(e,0)}function Er(e){if(nn(It(e)))return e}function Dr(e,t){if(e===`change`)return t}var Or=!1;if(kn){var kr;if(kn){var Ar=`oninput`in document;if(!Ar){var jr=document.createElement(`div`);jr.setAttribute(`oninput`,`return;`),Ar=typeof jr.oninput==`function`}kr=Ar}else kr=!1;Or=kr&&(!document.documentMode||9<document.documentMode)}function Mr(){Cr&&(Cr.detachEvent(`onpropertychange`,Nr),wr=Cr=null)}function Nr(e){if(e.propertyName===`value`&&Er(wr)){var t=[];Sr(t,wr,e,Sn(e)),Dn(Tr,t)}}function Pr(e,t,n){e===`focusin`?(Mr(),Cr=t,wr=n,Cr.attachEvent(`onpropertychange`,Nr)):e===`focusout`&&Mr()}function Fr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return Er(wr)}function Ir(e,t){if(e===`click`)return Er(t)}function Lr(e,t){if(e===`input`||e===`change`)return Er(t)}function Rr(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var zr=typeof Object.is==`function`?Object.is:Rr;function Br(e,t){if(zr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!Be.call(t,i)||!zr(e[i],t[i]))return!1}return!0}function Vr(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}function Hr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Ur(e,t){var n=Hr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=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=Hr(n)}}function Wr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Wr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Gr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Vr(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=Vr(e.document)}return t}function Kr(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 qr=kn&&`documentMode`in document&&11>=document.documentMode,Jr=null,Yr=null,Xr=null,Zr=!1;function Qr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Zr||Jr==null||Jr!==Vr(r)||(r=Jr,`selectionStart`in r&&Kr(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}),Xr&&Br(Xr,r)||(Xr=r,r=Jf(Yr,`onSelect`),0<r.length&&(t=new Vn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=Jr)))}function $r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var ei={animationend:$r(`Animation`,`AnimationEnd`),animationiteration:$r(`Animation`,`AnimationIteration`),animationstart:$r(`Animation`,`AnimationStart`),transitionrun:$r(`Transition`,`TransitionRun`),transitionstart:$r(`Transition`,`TransitionStart`),transitioncancel:$r(`Transition`,`TransitionCancel`),transitionend:$r(`Transition`,`TransitionEnd`)},ti={},ni={};kn&&(ni=document.createElement(`div`).style,`AnimationEvent`in window||(delete ei.animationend.animation,delete ei.animationiteration.animation,delete ei.animationstart.animation),`TransitionEvent`in window||delete ei.transitionend.transition);function ri(e){if(ti[e])return ti[e];if(!ei[e])return e;var t=ei[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in ni)return ti[e]=t[n];return e}var ii=ri(`animationend`),ai=ri(`animationiteration`),oi=ri(`animationstart`),si=ri(`transitionrun`),ci=ri(`transitionstart`),li=ri(`transitioncancel`),ui=ri(`transitionend`),di=new Map,fi=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);fi.push(`scrollEnd`);function pi(e,t){di.set(e,t),Ht(t,[e])}var mi=0;function hi(e,t){if(e.name!=null&&e.name!==`auto`)return e.name;if(t.autoName!==null)return t.autoName;e=bd.identifierPrefix;var n=mi++;return e=`_`+e+`t_`+n.toString(32)+`_`,t.autoName=e}function gi(e){if(e==null||typeof e==`string`)return e;var t=null,n=Od;if(n!==null)for(var r=0;r<n.length;r++){var i=e[n[r]];if(i!=null){if(i===`none`)return`none`;t=t==null?i:t+(` `+i)}}return t??e.default}function _i(e,t){return e=gi(e),t=gi(t),t==null?e===`auto`?null:e:t===`auto`?null:t}var vi=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},yi=[],bi=0,xi=0;function Si(){for(var e=bi,t=xi=bi=0;t<e;){var n=yi[t];yi[t++]=null;var r=yi[t];yi[t++]=null;var i=yi[t];yi[t++]=null;var a=yi[t];if(yi[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&Ei(n,i,a)}}function Ci(e,t,n,r){yi[bi++]=e,yi[bi++]=t,yi[bi++]=n,yi[bi++]=r,xi|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function wi(e,t,n,r){return Ci(e,t,n,r),Di(e)}function Ti(e,t){return Ci(e,null,null,t),Di(e)}function Ei(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-rt(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function Di(e){if(50<kd)throw kd=0,Ad=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Oi={};function ki(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ai(e,t,n,r){return new ki(e,t,n,r)}function ji(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Mi(e,t){var n=e.alternate;return n===null?(n=Ai(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&1206910976,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Ni(e,t){e.flags&=1206910978;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Pi(e,t,n,r,a,o){var s=0;if(r=e,typeof r==`function`)ji(r)&&(s=1);else if(typeof r==`string`)s=qm(e,n,Te.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(r){case de:return e=Ai(31,n,t,a),e.elementType=de,e.lanes=o,e;case re:return Fi(n.children,a,o,t);case O:s=8,a|=24;break;case ie:return e=Ai(12,n,t,a|2),e.elementType=ie,e.lanes=o,e;case k:return e=Ai(13,n,t,a),e.elementType=k,e.lanes=o,e;case ce:return e=Ai(19,n,t,a),e.elementType=ce,e.lanes=o,e;case fe:case me:return e=a|32,e=Ai(30,n,t,e),e.elementType=me,e.lanes=o,e.stateNode={autoName:null,paired:null,clones:null,ref:null},e;default:if(typeof r==`object`&&r)switch(r.$$typeof){case oe:s=10;break a;case ae:s=9;break a;case se:s=11;break a;case le:s=14;break a;case ue:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=Ai(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function Fi(e,t,n,r){return e=Ai(7,e,r,t),e.lanes=n,e}function Ii(e,t,n){return e=Ai(6,e,null,t),e.lanes=n,e}function Li(e){var t=Ai(18,null,null,0);return t.stateNode=e,t}function Ri(e,t,n){return t=Ai(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var zi=new WeakMap;function Bi(e,t){if(typeof e==`object`&&e){var n=zi.get(e);return n===void 0?(t={value:e,source:t,stack:ze(t)},zi.set(e,t),t):n}return{value:e,source:t,stack:ze(t)}}var Vi=[],Hi=0,Ui=null,Wi=0,Gi=[],Ki=0,qi=null,Ji=1,Yi=``;function Xi(e,t){Vi[Hi++]=Wi,Vi[Hi++]=Ui,Ui=e,Wi=t}function Zi(e,t,n){Gi[Ki++]=Ji,Gi[Ki++]=Yi,Gi[Ki++]=qi,qi=e;var r=Ji;e=Yi;var i=32-rt(r)-1;r&=~(1<<i),n+=1;var a=32-rt(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,Ji=1<<32-rt(t)+i|n<<i|r,Yi=a+e}else Ji=1<<a|n<<i|r,Yi=e}function Qi(e){e.return!==null&&(Xi(e,1),Zi(e,1,0))}function $i(e){for(;e===Ui;)Ui=Vi[--Hi],Vi[Hi]=null,Wi=Vi[--Hi],Vi[Hi]=null;for(;e===qi;)qi=Gi[--Ki],Gi[Ki]=null,Yi=Gi[--Ki],Gi[Ki]=null,Ji=Gi[--Ki],Gi[Ki]=null}function ea(e,t){Gi[Ki++]=Ji,Gi[Ki++]=Yi,Gi[Ki++]=qi,Ji=t.id,Yi=t.overflow,qi=e}var ta=null,na=null,H=!1,ra=null,ia=!1,aa=Error(i(519));function oa(e){throw fa(Bi(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),aa}function sa(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[wt]=e,t[Tt]=r,n){case`dialog`:Q(`cancel`,t),Q(`close`,t);break;case`iframe`:case`object`:case`embed`:Q(`load`,t);break;case`video`:case`audio`:for(n=0;n<zf.length;n++)Q(zf[n],t);break;case`source`:Q(`error`,t);break;case`img`:case`image`:case`link`:Q(`error`,t),Q(`load`,t);break;case`details`:Q(`toggle`,t);break;case`input`:Q(`invalid`,t),sn(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:Q(`invalid`,t);break;case`textarea`:Q(`invalid`,t),dn(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||ep(t.textContent,n)?(r.popover!=null&&(Q(`beforetoggle`,t),Q(`toggle`,t)),r.onScroll!=null&&Q(`scroll`,t),r.onScrollEnd!=null&&Q(`scrollend`,t),r.onClick!=null&&(t.onclick=bn),t=!0):t=!1,t||oa(e,!0)}function ca(e){for(ta=e.return;ta;)switch(ta.tag){case 5:case 31:case 13:ia=!1;return;case 27:case 3:ia=!0;return;default:ta=ta.return}}function la(e){if(e!==ta)return!1;if(!H)return ca(e),H=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||pp(e.type,e.memoizedProps)),n=!n),n&&na&&oa(e),ca(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));na=dm(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));na=dm(e)}else t===27?(t=na,Sp(e.type)?(e=um,um=null,na=e):na=t):na=ta?lm(e.stateNode.nextSibling):null;return!0}function ua(){na=ta=null,H=!1}function da(){var e=ra;return e!==null&&(fd===null?fd=e:fd.push.apply(fd,e),ra=null),e}function fa(e){ra===null?ra=[e]:ra.push(e)}var pa=Se(null),ma=null,ha=null;function ga(e,t,n){we(pa,t._currentValue),t._currentValue=n}function _a(e){e._currentValue=pa.current,Ce(pa)}function va(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function ya(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),va(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),va(s,n,e),s=null}else a.tag===13&&a.memoizedState!==null&&a.memoizedState.dehydrated===null?(a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),va(a.return,n,e),s=a.child,s=s===null?null:s.sibling):s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function ba(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;zr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===Oe.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[sh]:e.push(sh))}a=a.return}return e!==null&&ya(t,e,n,r),t.flags|=262144,e!==null}function xa(e){for(e=e.firstContext;e!==null;){if(!zr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Sa(e){ma=e,ha=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Ca(e){return Ta(ma,e)}function wa(e,t){return ma===null&&Sa(e),Ta(e,t)}function Ta(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},ha===null){if(e===null)throw Error(i(308));ha=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else ha=ha.next=t;return n}var Ea=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},Da=t.unstable_scheduleCallback,Oa=t.unstable_NormalPriority,ka={$$typeof:oe,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Aa(){return{controller:new Ea,data:new Map,refCount:0}}function ja(e){e.refCount--,e.refCount===0&&Da(Oa,function(){e.controller.abort()})}function Ma(e,t){if(e.pendingLanes&4194048){var n=e.transitionTypes;for(n===null&&(n=e.transitionTypes=[]),e=0;e<t.length;e++){var r=t[e];n.indexOf(r)===-1&&n.push(r)}}}var Na=null;function Pa(e){var t=e.transitionTypes;return e.transitionTypes=null,t}var Fa=null,Ia=0,La=0,Ra=null;function za(e,t){if(Fa===null){var n=Fa=[];Ia=0,La=Pf(),Ra={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return Ia++,t.then(Ba,Ba),t}function Ba(){if(--Ia===0&&(Na=null,Fa!==null)){Ra!==null&&(Ra.status=`fulfilled`);var e=Fa;Fa=null,La=0,Ra=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function Va(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var Ha=j.S;j.S=function(e,t){if(hd=Ge(),typeof t==`object`&&t&&typeof t.then==`function`&&za(e,t),Na!==null)for(var n=bf;n!==null;)Ma(n,Na),n=n.next;if(n=e.types,n!==null){for(var r=bf;r!==null;)Ma(r,n),r=r.next;if(La!==0){r=Na,r===null&&(r=Na=[]);for(var i=0;i<n.length;i++){var a=n[i];r.indexOf(a)===-1&&r.push(a)}}}Ha!==null&&Ha(e,t)};var Ua=Se(null);function Wa(){var e=Ua.current;return e===null?$u.pooledCache:e}function Ga(e,t){t===null?we(Ua,Ua.current):we(Ua,t.pool)}function Ka(){var e=Wa();return e===null?null:{parent:ka._currentValue,pool:e}}var qa=Error(i(460)),Ja=Error(i(474)),Ya=Error(i(542)),Xa={then:function(){}};function Za(e){return e=e.status,e===`fulfilled`||e===`rejected`}function Qa(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(bn,bn),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,no(e),e===void 0&&!(`reason`in t)?Error(i(600)):e;default:if(typeof t.status==`string`)t.then(bn,bn);else{if(e=$u,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,no(e),e}throw eo=t,qa}}function $a(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(eo=e,qa):e}}var eo=null;function to(){if(eo===null)throw Error(i(459));var e=eo;return eo=null,e}function no(e){if(e===qa||e===Ya)throw Error(i(483))}var ro=null,io=0;function ao(e){var t=io;return io+=1,ro===null&&(ro=[]),Qa(ro,e,t)}function oo(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function so(e,t){throw t.$$typeof===ee?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function co(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=Mi(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=134217730,n):(r=r.index,r<n?(t.flags|=2,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=134217730),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=Ii(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===re?(e=d(e,t,n.props.children,r,n.key),oo(e,n),e):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===ue&&$a(i)===t.type)?(t=a(t,n.props),oo(t,n),t.return=e,t):(t=Pi(n.type,n.key,n.props,null,e.mode,r),oo(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=Ri(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=Fi(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=Ii(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case te:return n=Pi(t.type,t.key,t.props,null,e.mode,n),oo(n,t),n.return=e,n;case ne:return t=Ri(t,e.mode,n),t.return=e,t;case ue:return t=$a(t),f(e,t,n)}if(ye(t)||A(t))return t=Fi(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,ao(t),n);if(t.$$typeof===oe)return f(e,wa(e,t),n);so(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case te:return n.key===i?l(e,t,n,r):null;case ne:return n.key===i?u(e,t,n,r):null;case ue:return n=$a(n),p(e,t,n,r)}if(ye(n)||A(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,ao(n),r);if(n.$$typeof===oe)return p(e,t,wa(e,n),r);so(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case te:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case ne:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case ue:return r=$a(r),m(e,t,n,r,i)}if(ye(r)||A(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,ao(r),i);if(r.$$typeof===oe)return m(e,t,n,wa(t,r),i);so(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>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),H&&Xi(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return H&&Xi(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&(_=g.alternate,_!==null&&d.delete(_.key===null?h:_.key)),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),H&&Xi(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=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),H&&Xi(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 H&&Xi(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(_.key===null?g:_.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)}),H&&Xi(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===re&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case te:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===re){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),oo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ue&&$a(l)===r.type){n(e,r.sibling),c=a(r,o.props),oo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===re?(c=Fi(o.props.children,e.mode,c,o.key),oo(c,o),c.return=e,e=c):(c=Pi(o.type,o.key,o.props,null,e.mode,c),oo(c,o),c.return=e,e=c)}return s(e);case ne: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}n(e,r);break}t(e,r),r=r.sibling}c=Ri(o,e.mode,c),c.return=e,e=c}return s(e);case ue:return o=$a(o),_(e,r,o,c)}if(ye(o))return h(e,r,o,c);if(A(o)){if(l=A(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,ao(o),c);if(o.$$typeof===oe)return _(e,r,wa(e,o),c);so(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=Ii(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{io=0;var i=_(e,t,n,r);return ro=null,i}catch(t){if(t===qa||t===Ya)throw t;var a=Ai(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var lo=co(!0),uo=co(!1),fo=!1;function po(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function mo(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 ho(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function go(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,q&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Di(e),Ei(e,null,n),t}return Ci(e,r,t,n),Di(e)}function _o(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,yt(e,n)}}function vo(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}else e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var yo=!1;function bo(){if(yo){var e=Ra;if(e!==null)throw e}}function xo(e,t,n,r){yo=!1;var i=e.updateQueue;fo=!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?(Y&f)===f:(r&f)===f){f!==0&&f===La&&(yo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=D({},d,f);break a;case 2:fo=!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),od|=o,e.lanes=o,e.memoizedState=d}}function So(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Co(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)So(n[e],t)}var wo=Se(null),To=Se(0);function Eo(e,t){e=id,we(To,e),we(wo,t),id=e|t.baseLanes}function Do(){we(To,id),we(wo,wo.current)}function Oo(){id=To.current,Ce(wo),Ce(To)}var ko=Se(null),Ao=null;function jo(e){var t=e.alternate;we(Io,Io.current&1),we(ko,e),Ao===null&&(t===null||wo.current!==null||t.memoizedState!==null)&&(Ao=e)}function Mo(e){we(Io,Io.current),we(ko,e),Ao===null&&(Ao=e)}function No(e){e.tag===22?(we(Io,Io.current),we(ko,e),Ao===null&&(Ao=e)):Po()}function Po(){we(Io,Io.current),we(ko,ko.current)}function Fo(e){Ce(ko),Ao===e&&(Ao=null),Ce(Io)}var Io=Se(0);function Lo(e,t){we(ko,ko.current),we(Io,t)}function Ro(e){Ce(Io),Ce(ko),Ao===e&&(Ao=null)}function zo(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||om(n)||sm(n)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==`independent`){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=0,U=null,W=null,Vo=null,Ho=!1,Uo=!1,Wo=!1,Go=0,Ko=0,qo=null,Jo=0;function Yo(){throw Error(i(321))}function Xo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!zr(e[n],t[n]))return!1;return!0}function Zo(e,t,n,r,i,a){return Bo=a,U=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,j.H=e===null||e.memoizedState===null?mc:hc,Wo=!1,a=n(r,i),Wo=!1,Uo&&(a=$o(t,n,r,i)),Qo(e),a}function Qo(e){j.H=pc;var t=W!==null&&W.next!==null;if(Bo=0,Vo=W=U=null,Ho=!1,Ko=0,qo=null,t)throw Error(i(300));e===null||Mc||(e=e.dependencies,e!==null&&xa(e)&&(Mc=!0))}function $o(e,t,n,r){U=e;var a=0;do{if(Uo&&(qo=null),Ko=0,Uo=!1,25<=a)throw Error(i(301));if(a+=1,Vo=W=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}j.H=gc,o=t(n,r)}while(Uo);return o}function es(){var e=j.H,t=e.useState()[0];return t=typeof t.then==`function`?ss(t):t,e=e.useState()[0],(W===null?null:W.memoizedState)!==e&&(U.flags|=1024),t}function ts(){var e=Go!==0;return Go=0,e}function ns(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function rs(e){if(Ho){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}Ho=!1}Bo=0,Vo=W=U=null,Uo=!1,Ko=Go=0,qo=null}function is(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Vo===null?U.memoizedState=Vo=e:Vo=Vo.next=e,Vo}function as(){if(W===null){var e=U.alternate;e=e===null?null:e.memoizedState}else e=W.next;var t=Vo===null?U.memoizedState:Vo.next;if(t!==null)Vo=t,W=e;else{if(e===null)throw U.alternate===null?Error(i(467)):Error(i(310));W=e,e={memoizedState:W.memoizedState,baseState:W.baseState,baseQueue:W.baseQueue,queue:W.queue,next:null},Vo===null?U.memoizedState=Vo=e:Vo=Vo.next=e}return Vo}function os(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function ss(e){var t=Ko;return Ko+=1,qo===null&&(qo=[]),e=Qa(qo,e,t),t=U,(Vo===null?t.memoizedState:Vo.next)===null&&(t=t.alternate,j.H=t===null||t.memoizedState===null?mc:hc),e}function cs(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return ss(e);if(e.$$typeof===he)return;if(e.$$typeof===oe)return Ca(e)}throw Error(i(438,String(e)))}function ls(e){var t=null,n=U.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=U.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=os(),U.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=pe;return t.index++,n}function us(e,t){return typeof t==`function`?t(e):t}function ds(e){return fs(as(),W,e)}function fs(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(Bo&f)===f:(Y&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===La&&(d=!0);else if((Bo&p)===p){u=u.next,p===La&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,U.lanes|=p,od|=p;f=u.action,Wo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,U.lanes|=f,od|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!zr(o,e.memoizedState)&&(Mc=!0,d&&(n=Ra,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function ps(e){var t=as(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);zr(o,t.memoizedState)||(Mc=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function ms(e,t,n){var r=U,a=as(),o=H;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!zr((W||a).memoizedState,n);if(s&&(a.memoizedState=n,Mc=!0),a=a.queue,zs(_s.bind(null,r,a,e),[e]),e=a.getSnapshot!==t||s||Vo!==null&&!!(Vo.memoizedState.tag&1),Ps(e?9:8,{destroy:void 0},gs.bind(null,r,a,n,t),null),e){if(r.flags|=2048,$u===null)throw Error(i(349));o||Bo&127||hs(r,t,n)}return n}function hs(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=U.updateQueue,t===null?(t=os(),U.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function gs(e,t,n,r){t.value=n,t.getSnapshot=r,vs(t)&&ys(e)}function _s(e,t,n){return n(function(){vs(t)&&ys(e)})}function vs(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!zr(e,n)}catch{return!0}}function ys(e){var t=Ti(e,2);t!==null&&Pd(t,e,2)}function bs(e){var t=is();if(typeof e==`function`){var n=e;if(e=n(),Wo){nt(!0);try{n()}finally{nt(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:us,lastRenderedState:e},t}function xs(e,t,n,r){return e.baseState=n,fs(e,W,typeof r==`function`?r:us)}function Ss(e,t,n,r,a){if(uc(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};j.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Cs(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Cs(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=j.T,o={};o.types=a===null?null:a.types,j.T=o;try{var s=n(i,r),c=j.S;c!==null&&c(o,s),ws(e,t,s)}catch(n){Es(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),j.T=a}}else try{a=n(i,r),ws(e,t,a)}catch(n){Es(e,t,n)}}function ws(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){Ts(e,t,n)},function(n){return Es(e,t,n)}):Ts(e,t,n)}function Ts(e,t,n){t.status=`fulfilled`,t.value=n,Ds(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Cs(e,n)))}function Es(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,Ds(t),t=t.next;while(t!==r)}e.action=null}function Ds(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Os(e,t){return t}function ks(e,t){if(H){var n=$u.formState;if(n!==null){a:{var r=U;if(H){if(na){b:{for(var i=na,a=ia;i.nodeType!==8;)if(!a||(i=lm(i.nextSibling),i===null)){i=null;break b}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){na=lm(i.nextSibling),r=i.data===`F!`;break a}}oa(r)}r=!1}r&&(t=n[0])}}return n=is(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Os,lastRenderedState:t},n.queue=r,n=sc.bind(null,U,r),r.dispatch=n,r=bs(!1),a=lc.bind(null,U,!1,r.queue),r=is(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=Ss.bind(null,U,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function As(e){return js(as(),W,e)}function js(e,t,n){if(t=fs(e,t,Os)[0],e=ds(us)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=ss(t)}catch(e){throw e===qa?Ya:e}else r=t;t=as();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(U.flags|=2048,Ps(9,{destroy:void 0},Ms.bind(null,i,n),null)),[r,a,e]}function Ms(e,t){e.action=t}function Ns(e){var t=as(),n=W;if(n!==null)return js(t,n,e);as(),t=t.memoizedState,n=as();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function Ps(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=U.updateQueue,t===null&&(t=os(),U.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Fs(){return as().memoizedState}function Is(e,t,n,r){var i=is();U.flags|=e,i.memoizedState=Ps(1|t,{destroy:void 0},n,r===void 0?null:r)}function Ls(e,t,n,r){var i=as();r=r===void 0?null:r;var a=i.memoizedState.inst;W!==null&&r!==null&&Xo(r,W.memoizedState.deps)?i.memoizedState=Ps(t,a,n,r):(U.flags|=e,i.memoizedState=Ps(1|t,a,n,r))}function Rs(e,t){Is(8390656,8,e,t)}function zs(e,t){Ls(2048,8,e,t)}function Bs(e){U.flags|=4;var t=U.updateQueue;if(t===null)t=os(),U.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function Vs(e){var t=as().memoizedState;return Bs({ref:t,nextImpl:e}),function(){if(q&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function Hs(e,t){return Ls(4,2,e,t)}function Us(e,t){return Ls(4,4,e,t)}function Ws(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Gs(e,t,n){n=n==null?null:n.concat([e]),Ls(4,4,Ws.bind(null,t,e),n)}function Ks(){}function qs(e,t){var n=as();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&Xo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Js(e,t){var n=as();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&Xo(t,r[1]))return r[0];if(r=e(),Wo){nt(!0);try{e()}finally{nt(!1)}}return n.memoizedState=[r,t],r}function Ys(e,t,n){return n===void 0||Bo&1073741824&&!(Y&261930)?e.memoizedState=t:(e.memoizedState=n,e=Md(),U.lanes|=e,od|=e,n)}function Xs(e,t,n,r){return zr(n,t)?n:wo.current===null?!(Bo&106)||Bo&1073741824&&!(Y&261930)?(Mc=!0,e.memoizedState=n):(e=Md(),U.lanes|=e,od|=e,t):(e=Ys(e,n,r),zr(e,t)||(Mc=!0),e)}function Zs(e,t,n,r,i){var a=M.p;M.p=a!==0&&8>a?a:8;var o=j.T,s={};s.types=o===null?null:o.types,j.T=s,lc(e,!1,t,n);try{var c=i(),l=j.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?cc(e,t,Va(c,r),jd(e)):cc(e,t,r,jd(e))}catch(n){cc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{M.p=a,o!==null&&s.types!==null&&(o.types=s.types),j.T=o}}function Qs(){}function $s(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=ec(e).queue;Zs(e,a,t,be,n===null?Qs:function(){return tc(e),n(r)})}function ec(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:be,baseState:be,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:us,lastRenderedState:be},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:us,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function tc(e){var t=ec(e);t.next===null&&(t=e.alternate.memoizedState),cc(e,t.next.queue,{},jd())}function nc(){return Ca(sh)}function rc(){return as().memoizedState}function ic(){return as().memoizedState}function ac(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=ho(n);var r=go(t,e,n);r!==null&&(Pd(r,t,n),_o(r,t,n)),t={cache:Aa()},e.payload=t;return}t=t.return}}function oc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},uc(e)?dc(t,n):(n=wi(e,t,n,r),n!==null&&(Pd(n,e,r),fc(n,t,r)))}function sc(e,t,n){cc(e,t,n,jd())}function cc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(uc(e))dc(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,zr(s,o))return Ci(e,t,i,0),$u===null&&Si(),!1}catch{}if(n=wi(e,t,i,r),n!==null)return Pd(n,e,r),fc(n,t,r),!0}return!1}function lc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},uc(e)){if(t)throw Error(i(479))}else t=wi(e,n,r,2),t!==null&&Pd(t,e,2)}function uc(e){var t=e.alternate;return e===U||t!==null&&t===U}function dc(e,t){Uo=Ho=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function fc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,yt(e,n)}}var pc={readContext:Ca,use:cs,useCallback:Yo,useContext:Yo,useEffect:Yo,useImperativeHandle:Yo,useLayoutEffect:Yo,useInsertionEffect:Yo,useMemo:Yo,useReducer:Yo,useRef:Yo,useState:Yo,useDebugValue:Yo,useDeferredValue:Yo,useTransition:Yo,useSyncExternalStore:Yo,useId:Yo,useHostTransitionStatus:Yo,useFormState:Yo,useActionState:Yo,useOptimistic:Yo,useMemoCache:Yo,useCacheRefresh:Yo,useEffectEvent:Yo},mc={readContext:Ca,use:cs,useCallback:function(e,t){return is().memoizedState=[e,t===void 0?null:t],e},useContext:Ca,useEffect:Rs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Is(4194308,4,Ws.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Is(4194308,4,e,t)},useInsertionEffect:function(e,t){Is(4,2,e,t)},useMemo:function(e,t){var n=is();t=t===void 0?null:t;var r=e();if(Wo){nt(!0);try{e()}finally{nt(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=is();if(n!==void 0){var i=n(t);if(Wo){nt(!0);try{n(t)}finally{nt(!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=oc.bind(null,U,e),[r.memoizedState,e]},useRef:function(e){var t=is();return e={current:e},t.memoizedState=e},useState:function(e){e=bs(e);var t=e.queue,n=sc.bind(null,U,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ks,useDeferredValue:function(e,t){return Ys(is(),e,t)},useTransition:function(){var e=bs(!1);return e=Zs.bind(null,U,e.queue,!0,!1),is().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=U,a=is();if(H){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),$u===null)throw Error(i(349));Y&127||hs(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Rs(_s.bind(null,r,o,e),[e]),r.flags|=2048,Ps(9,{destroy:void 0},gs.bind(null,r,o,n,t),null),n},useId:function(){var e=is(),t=$u.identifierPrefix;if(H){var n=Yi,r=Ji;n=(r&~(1<<32-rt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Go++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=Jo++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:nc,useFormState:ks,useActionState:ks,useOptimistic:function(e){var t=is();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=lc.bind(null,U,!0,n),n.dispatch=t,[e,t]},useMemoCache:ls,useCacheRefresh:function(){return is().memoizedState=ac.bind(null,U)},useEffectEvent:function(e){var t=is(),n={impl:e};return t.memoizedState=n,function(){if(q&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},hc={readContext:Ca,use:cs,useCallback:qs,useContext:Ca,useEffect:zs,useImperativeHandle:Gs,useInsertionEffect:Hs,useLayoutEffect:Us,useMemo:Js,useReducer:ds,useRef:Fs,useState:function(){return ds(us)},useDebugValue:Ks,useDeferredValue:function(e,t){return Xs(as(),W.memoizedState,e,t)},useTransition:function(){var e=ds(us)[0],t=as().memoizedState;return[typeof e==`boolean`?e:ss(e),t]},useSyncExternalStore:ms,useId:rc,useHostTransitionStatus:nc,useFormState:As,useActionState:As,useOptimistic:function(e,t){return xs(as(),W,e,t)},useMemoCache:ls,useCacheRefresh:ic,useEffectEvent:Vs},gc={readContext:Ca,use:cs,useCallback:qs,useContext:Ca,useEffect:zs,useImperativeHandle:Gs,useInsertionEffect:Hs,useLayoutEffect:Us,useMemo:Js,useReducer:ps,useRef:Fs,useState:function(){return ps(us)},useDebugValue:Ks,useDeferredValue:function(e,t){var n=as();return W===null?Ys(n,e,t):Xs(n,W.memoizedState,e,t)},useTransition:function(){var e=ps(us)[0],t=as().memoizedState;return[typeof e==`boolean`?e:ss(e),t]},useSyncExternalStore:ms,useId:rc,useHostTransitionStatus:nc,useFormState:Ns,useActionState:Ns,useOptimistic:function(e,t){var n=as();return W===null?(n.baseState=e,[e,n.queue.dispatch]):xs(n,W,e,t)},useMemoCache:ls,useCacheRefresh:ic,useEffectEvent:Vs};function _c(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:D({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var vc={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=jd(),i=ho(r);i.payload=t,n!=null&&(i.callback=n),t=go(e,i,r),t!==null&&(Pd(t,e,r),_o(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=jd(),i=ho(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=go(e,i,r),t!==null&&(Pd(t,e,r),_o(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=jd(),r=ho(n);r.tag=2,t!=null&&(r.callback=t),t=go(e,r,n),t!==null&&(Pd(t,e,n),_o(t,e,n))}};function yc(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Br(n,r)||!Br(i,a):!0}function bc(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vc.enqueueReplaceState(t,t.state,null)}function xc(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=D({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function Sc(e){vi(e)}function Cc(e){console.error(e)}function wc(e){vi(e)}function Tc(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function Ec(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Dc(e,t,n){return n=ho(n),n.tag=3,n.payload={element:null},n.callback=function(){Tc(e,t)},n}function Oc(e){return e=ho(e),e.tag=3,e}function kc(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){Ec(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){Ec(t,n,r),typeof i!=`function`&&(vd===null?vd=new Set([this]):vd.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function Ac(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&ba(t,n,a,!0),n=ko.current,n!==null){switch(n.tag){case 31:case 13:case 19:return Ao===null?Kd():n.alternate===null&&ad===0&&(ad=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===Xa?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),mf(e,r,a)),!1;case 22:return n.flags|=65536,r===Xa?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),mf(e,r,a)),!1}throw Error(i(435,n.tag))}return mf(e,r,a),Kd(),!1}if(H)return t=ko.current,t===null?(r!==aa&&(t=Error(i(423),{cause:r}),fa(Bi(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=Bi(r,n),a=Dc(e.stateNode,r,a),vo(e,a),ad!==4&&(ad=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==aa&&(e=Error(i(422),{cause:r}),fa(Bi(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=Bi(o,n),dd===null?dd=[o]:dd.push(o),ad!==4&&(ad=2),t===null)return!0;r=Bi(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Dc(n.stateNode,r,e),vo(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(vd===null||!vd.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Oc(a),kc(a,e,n,r),vo(n,a),!1;break;case 22:if(n.memoizedState!==null)return n.flags|=65536,!1}n=n.return}while(n!==null);return!1}var jc=Error(i(461)),Mc=!1;function Nc(e,t,n,r){t.child=e===null?uo(t,null,n,r):lo(t,e.child,n,r)}function Pc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return Sa(t),r=Zo(e,t,n,o,a,i),s=ts(),e!==null&&!Mc?(ns(e,t,i),cl(e,t,i)):(H&&s&&Qi(t),t.flags|=1,Nc(e,t,r,i),t.child)}function Fc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!ji(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,Ic(e,t,a,r,i)):(e=Pi(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!ll(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?Br:n,n(o,r)&&e.ref===t.ref)return cl(e,t,i)}return t.flags|=1,e=Mi(a,r),e.ref=t.ref,e.return=t,t.child=e}function Ic(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Br(a,r)&&e.ref===t.ref){if(Mc=!1,t.pendingProps=r=a,ll(e,i))e.flags&131072&&(Mc=!0);else return t.lanes=e.lanes,cl(e,t,i)}}return Wc(e,t,n,r,i)}function Lc(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return zc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Ga(t,a===null?null:a.cachePool),a===null?Do():Eo(t,a),No(t);else return r=t.lanes=536870912,zc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&Ga(t,null),Do(),Po()):(Ga(t,a.cachePool),Eo(t,a),Po(),t.memoizedState=null);return Nc(e,t,i,n),t.child}function Rc(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function zc(e,t,n,r,i){var a=Wa();return a=a===null?null:{parent:ka._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&Ga(t,null),Do(),No(t),e!==null&&ba(e,t,r,!0),t.childLanes=i,null}function Bc(e,t){return t=$c({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Vc(e,t,n){return lo(t,e.child,null,n),e=Bc(t,t.pendingProps),e.flags|=2,Fo(t),t.memoizedState=null,e}function Hc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(H){if(r.mode===`hidden`)return e=Bc(t,r),t.lanes=536870912,e.memoizedState={baseLanes:0,cachePool:null},Rc(null,e);if(Mo(t),(e=na)?(e=am(e,ia),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:qi===null?null:{id:Ji,overflow:Yi},retryLane:536870912,hydrationErrors:null},n=Li(e),n.return=t,t.child=n,ta=t,na=null)):e=null,e===null)throw oa(t);return t.lanes=536870912,null}return Bc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(Mo(t),a){if(t.flags&256)t.flags&=-257,t=Vc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558))}else if(Mc||ba(e,t,n,!1),a=(n&e.childLanes)!==0,Mc||a){if(wo.current===null){if(r=$u,r!==null&&(s=bt(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,Ti(e,s),Pd(r,e,s),jc;Kd()}t=Vc(e,t,n)}else e=o.treeContext,na=lm(s.nextSibling),ta=t,H=!0,ra=null,ia=!1,e!==null&&ea(t,e),t=Bc(t,r),t.flags|=134221824;return t}return e=Mi(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function Uc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Wc(e,t,n,r,i){return Sa(t),n=Zo(e,t,n,r,void 0,i),r=ts(),e!==null&&!Mc?(ns(e,t,i),cl(e,t,i)):(H&&r&&Qi(t),t.flags|=1,Nc(e,t,n,i),t.child)}function Gc(e,t,n,r,i,a){return Sa(t),t.updateQueue=null,n=$o(t,r,n,i),Qo(e),r=ts(),e!==null&&!Mc?(ns(e,t,a),cl(e,t,a)):(H&&r&&Qi(t),t.flags|=1,Nc(e,t,n,a),t.child)}function Kc(e,t,n,r,i){if(Sa(t),t.stateNode===null){var a=Oi,o=n.contextType;typeof o==`object`&&o&&(a=Ca(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=vc,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},po(t),o=n.contextType,a.context=typeof o==`object`&&o?Ca(o):Oi,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(_c(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&vc.enqueueReplaceState(a,a.state,null),xo(t,r,a,i),bo(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=xc(n,s);a.props=c;var l=a.context,u=n.contextType;o=Oi,typeof u==`object`&&u&&(o=Ca(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&bc(t,a,r,o),fo=!1;var f=t.memoizedState;a.state=f,xo(t,r,a,i),bo(),l=t.memoizedState,s||f!==l||fo?(typeof d==`function`&&(_c(t,n,d,r),l=t.memoizedState),(c=fo||yc(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,mo(e,t),o=t.memoizedProps,u=xc(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=Oi,typeof l==`object`&&l&&(c=Ca(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&bc(t,a,r,c),fo=!1,f=t.memoizedState,a.state=f,xo(t,r,a,i),bo();var p=t.memoizedState;o!==d||f!==p||fo||e!==null&&e.dependencies!==null&&xa(e.dependencies)?(typeof s==`function`&&(_c(t,n,s,r),p=t.memoizedState),(u=fo||yc(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&xa(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,Uc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=lo(t,e.child,null,i),t.child=lo(t,null,n,i)):Nc(e,t,n,i),t.memoizedState=a.state,e=t.child):e=cl(e,t,i),e}function qc(e,t,n,r){return ua(),t.flags|=256,Nc(e,t,n,r),t.child}var Jc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Yc(e){return{baseLanes:e,cachePool:Ka()}}function Xc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=ld),e}function Zc(e,t,n){var r=t.pendingProps,i=!1,a=!!(t.flags&128),o;if((o=a)||(o=e!==null&&e.memoizedState===null?!1:!!(Io.current&2)),o&&(i=!0,t.flags&=-129),o=!!(t.flags&32),t.flags&=-33,e===null){if(H){if(i?jo(t):Po(),(e=na)?(e=am(e,ia),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:qi===null?null:{id:Ji,overflow:Yi},retryLane:536870912,hydrationErrors:null},n=Li(e),n.return=t,t.child=n,ta=t,na=null)):e=null,e===null)throw oa(t);return t.lanes=sm(e)?32:536870912,null}return a=r.children,r=r.fallback,i?(Po(),i=t.mode,a=$c({mode:`hidden`,children:a},i),r=Fi(r,i,n,null),a.return=t,r.return=t,a.sibling=r,t.child=a,r=t.child,r.memoizedState=Yc(n),r.childLanes=Xc(e,o,n),t.memoizedState=Jc,Rc(null,r)):(jo(t),Qc(t,a))}var s=e.memoizedState;if(s!==null){var c=s.dehydrated;if(c!==null)return tl(e,t,a,o,r,c,s,n)}return i?(Po(),i=r.fallback,a=t.mode,s=e.child,c=s.sibling,r=Mi(s,{mode:`hidden`,children:r.children}),r.subtreeFlags=s.subtreeFlags&1206910976,c===null?(i=Fi(i,a,n,null),i.flags|=2):i=Mi(c,i),i.return=t,r.return=t,r.sibling=i,t.child=r,Rc(null,r),r=t.child,i=e.child.memoizedState,i===null?i=Yc(n):(a=i.cachePool,a===null?a=Ka():(s=ka._currentValue,a=a.parent===s?a:{parent:s,pool:s}),i={baseLanes:i.baseLanes|n,cachePool:a}),r.memoizedState=i,r.childLanes=Xc(e,o,n),t.memoizedState=Jc,Rc(e.child,r)):(jo(t),n=e.child,e=n.sibling,n=Mi(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(o=t.deletions,o===null?(t.deletions=[e],t.flags|=16):o.push(e)),t.child=n,t.memoizedState=null,n)}function Qc(e,t){return t=$c({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function $c(e,t){return e=Ai(22,e,null,t),e.lanes=0,e}function el(e,t,n){return lo(t,e.child,null,n),e=Qc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function tl(e,t,n,r,a,o,s,c){if(n)return t.flags&256?(jo(t),t.flags&=-257,el(e,t,c)):t.memoizedState===null?(Po(),o=a.fallback,s=t.mode,a=$c({mode:`visible`,children:a.children},s),o=Fi(o,s,c,null),o.flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,lo(t,e.child,null,c),a=t.child,a.memoizedState=Yc(c),a.childLanes=Xc(e,r,c),t.memoizedState=Jc,Rc(null,a)):(Po(),t.child=e.child,t.flags|=128,null);if(jo(t),sm(o)){if(r=o.nextSibling&&o.nextSibling.dataset,r)var l=r.dgst;return r=l,r!==``&&(a=Error(i(419)),a.stack=``,a.digest=r,fa({value:a,source:null,stack:null})),el(e,t,c)}if(Mc||ba(e,t,c,!1),r=(c&e.childLanes)!==0,Mc||r){if(wo.current!==null)return el(e,t,c);if(r=$u,r!==null&&(a=bt(r,c),a!==0&&a!==s.retryLane))throw s.retryLane=a,Ti(e,a),Pd(r,e,a),jc;return om(o)||Kd(),el(e,t,c)}return om(o)?(t.flags|=192,t.child=e.child,null):(e=s.treeContext,na=lm(o.nextSibling),ta=t,H=!0,ra=null,ia=!1,e!==null&&ea(t,e),t=Qc(t,a.children),t.flags|=134221824,t)}function nl(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),va(e.return,t,n)}function rl(e){for(var t=null;e!==null;){var n=e.alternate;n!==null&&zo(n)===null&&(t=e),e=e.sibling}return t}function il(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function al(e){var t=e.child;for(e.child=null;t!==null;){var n=t.sibling;t.sibling=e.child,e.child=t,t=n}}function ol(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=Io.current;if(t.flags&128)return Lo(t,o),null;var s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,Lo(t,o),i===`backwards`&&e!==null?(al(e),Nc(e,t,r,n),al(e)):Nc(e,t,r,n),r=H?Wi:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&nl(e,n,t);else if(e.tag===19)nl(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`backwards`:n=rl(t.child),n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null,al(t)),il(t,!0,i,null,a,r);break;case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&zo(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}il(t,!0,n,null,a,r);break;case`together`:il(t,!1,null,null,void 0,r);break;case`independent`:t.memoizedState=null;break;default:n=rl(t.child),n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),il(t,!1,i,n,a,r)}return t.child}function sl(e,t,n){var r=t.pendingProps;return ga(t,t.type,r.value),Nc(e,t,r.children,n),t.child}function cl(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),od|=t.lanes,(n&t.childLanes)===0){if(e!==null){if(ba(e,t,n,!1),(n&t.childLanes)===0)return null}else return null}if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=Mi(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Mi(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function ll(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&xa(e)))}function ul(e,t,n){switch(t.tag){case 3:ke(t,t.stateNode.containerInfo),ga(t,ka,e.memoizedState.cache),ua();break;case 27:case 5:je(t);break;case 4:ke(t,t.stateNode.containerInfo);break;case 10:ga(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Mo(t),null;break;case 13:var r=t.memoizedState;if(r!==null){if(r.dehydrated!==null)return jo(t),t.flags|=128,null;r=ba(e,t,n,!1);var i=t.child.childLanes;return r||(n&i)!==0?Zc(e,t,n):(jo(t),e=cl(e,t,n),e===null?null:e.sibling)}jo(t);break;case 19:if(t.flags&128)return ol(e,t,n);if(i=!!(e.flags&128),r=(n&t.childLanes)!==0,r||=(ba(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return ol(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),Lo(t,Io.current),r)break;return null;case 22:return t.lanes=0,Lc(e,t,n,t.pendingProps);case 24:ga(t,ka,e.memoizedState.cache)}return cl(e,t,n)}function dl(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps)Mc=!0;else{if(!ll(e,n)&&!(t.flags&128))return Mc=!1,ul(e,t,n);Mc=!!(e.flags&131072)}}else Mc=!1,H&&t.flags&1048576&&Zi(t,Wi,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=$a(t.elementType),t.type=e,typeof e==`function`)ji(e)?(r=xc(e,r),t.tag=1,t=Kc(null,t,e,r,n)):(t.tag=0,t=Wc(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===se){t.tag=11,t=Pc(null,t,e,r,n);break a}if(a===le){t.tag=14,t=Fc(null,t,e,r,n);break a}if(a===oe){t.tag=10,t.type=e,t=sl(null,t,n);break a}}throw t=ve(e)||e,Error(i(306,t,``))}}return t;case 0:return Wc(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=xc(r,t.pendingProps),Kc(e,t,r,a,n);case 3:a:{if(ke(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,mo(e,t),xo(t,r,null,n);var s=t.memoizedState;if(r=s.cache,ga(t,ka,r),r!==o.cache&&ya(t,[ka],n,!0),bo(),r=s.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=qc(e,t,r,n);break a}if(r!==a){a=Bi(Error(i(424)),t),fa(a),t=qc(e,t,r,n);break a}switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(na=lm(e.firstChild),ta=t,H=!0,ra=null,ia=!0,n=uo(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|134221824,n=n.sibling}else{if(ua(),r===a){t=cl(e,t,n);break a}Nc(e,t,r,n)}t=t.child}return t;case 26:return Uc(e,t),e===null?(n=Nm(t.type,null,t.pendingProps,null))?t.memoizedState=n:H||(t.stateNode=fp(t.type,t.pendingProps,De.current,t)):t.memoizedState=Nm(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return je(t),e===null&&H&&(r=t.stateNode=hm(t.type,t.pendingProps,De.current),ta=t,ia=!0,a=na,Sp(t.type)?(um=a,na=lm(r.firstChild)):na=a),Nc(e,t,t.pendingProps.children,n),Uc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&H&&((a=r=na)&&(r=rm(r,t.type,t.pendingProps,ia),r===null?a=!1:(t.stateNode=r,ta=t,na=lm(r.firstChild),ia=!1,a=!0)),a||oa(t)),je(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,pp(a,o)?r=null:s!==null&&pp(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=Zo(e,t,es,null,null,n),sh._currentValue=a),Uc(e,t),Nc(e,t,r,n),t.child;case 6:return e===null&&H&&((e=n=na)&&(n=im(n,t.pendingProps,ia),n===null?e=!1:(t.stateNode=n,ta=t,na=null,e=!0)),e||oa(t)),null;case 13:return Zc(e,t,n);case 4:return ke(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=lo(t,null,r,n):Nc(e,t,r,n),t.child;case 11:return Pc(e,t,t.type,t.pendingProps,n);case 7:return r=t.pendingProps,Uc(e,t),Nc(e,t,r,n),t.child;case 8:return Nc(e,t,t.pendingProps.children,n),t.child;case 12:return Nc(e,t,t.pendingProps.children,n),t.child;case 10:return sl(e,t,n);case 9:return a=t.type._context,r=t.pendingProps.children,Sa(t),a=Ca(a),r=r(a),t.flags|=1,Nc(e,t,r,n),t.child;case 14:return Fc(e,t,t.type,t.pendingProps,n);case 15:return Ic(e,t,t.type,t.pendingProps,n);case 19:return ol(e,t,n);case 31:return Hc(e,t,n);case 22:return Lc(e,t,n,t.pendingProps);case 24:return Sa(t),r=Ca(ka),e===null?(a=Wa(),a===null&&(a=$u,o=Aa(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},po(t),ga(t,ka,a)):((e.lanes&n)!==0&&(mo(e,t),xo(t,null,null,n),bo()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,ga(t,ka,r),r!==a.cache&&ya(t,[ka],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),ga(t,ka,r))),Nc(e,t,t.pendingProps.children,n),t.child;case 30:return t.stateNode===null&&(t.stateNode={autoName:null,paired:null,clones:null,ref:null}),r=t.pendingProps,r.name!=null&&r.name!==`auto`?t.flags|=e===null?18882560:18874368:H&&Qi(t),e!==null&&e.memoizedProps.name!==r.name?t.flags|=4194816:Uc(e,t),Nc(e,t,r.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function fl(e){e.flags|=4}function pl(e,t,n,r,i){var a;if((a=!!(e.mode&32))&&(a=n===null?Jm(t,r):Jm(t,r)&&(r.src!==n.src||r.srcSet!==n.srcSet)),a){if(e.flags|=16777216,(i&335544128)===i){if(e.stateNode.complete)e.flags|=8192;else if(Ud())e.flags|=8192;else throw eo=Xa,Ja}}else e.flags&=-16777217}function ml(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Ym(t)){if(Ud())e.flags|=8192;else throw eo=Xa,Ja}}function hl(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:ht(),e.lanes|=t,ud|=t)}function gl(e,t){if(!H)switch(e.tailMode){case`visible`:break;case`collapsed`:for(var n=e.tail,r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null;break;default:for(t=e.tail,n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null}}function _l(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&1206910976,r|=i.flags&1206910976,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function vl(e,t,n){var r=t.pendingProps;switch($i(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return _l(t),null;case 1:return _l(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),_a(ka),Ae(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(la(t)?fl(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,da())),_l(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(fl(t),o===null?(_l(t),pl(t,a,null,r,n)):(_l(t),ml(t,o))):o?o===e.memoizedState?(_l(t),t.flags&=-16777217):(fl(t),_l(t),ml(t,o)):(e=e.memoizedProps,e!==r&&fl(t),_l(t),pl(t,a,e,r,n)),null;case 27:if(Me(t),n=De.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&fl(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return _l(t),t.subtreeFlags&=-33554433,null}e=Te.current,la(t)?sa(t,e):(e=hm(a,r,n),t.stateNode=e,fl(t))}return _l(t),t.subtreeFlags&=-33554433,null;case 5:if(Me(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&fl(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return _l(t),t.subtreeFlags&=-33554433,null}if(o=Te.current,la(t))sa(t,o);else{var s=lp(De.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/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[wt]=t,o[Tt]=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(np(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&&fl(t)}}return _l(t),t.subtreeFlags&=-33554433,pl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&fl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=De.current,la(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ta,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[wt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||oa(t,!0)}else e=lp(e).createTextNode(r),e[wt]=t,t.stateNode=e}return _l(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=la(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[wt]=t}else ua(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;_l(t),e=!1}else n=da(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Fo(t),t):(Fo(t),null);if(t.flags&128)throw Error(i(558))}return _l(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=la(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[wt]=t}else ua(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;_l(t),a=!1}else a=da(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Fo(t),t):(Fo(t),null)}return Fo(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),hl(t,t.updateQueue),_l(t),null);case 4:return Ae(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,_l(t),null;case 10:return _a(t.type),_l(t),null;case 19:if(Ro(t),r=t.memoizedState,r===null)return _l(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)gl(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=zo(e),o!==null){for(t.flags|=128,gl(r,!1),e=o.updateQueue,t.updateQueue=e,hl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ni(n,e),n=n.sibling;return Lo(t,Io.current&1|2),H&&Xi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ge()>gd&&(t.flags|=128,a=!0,gl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=zo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,hl(t,e),gl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!H)return _l(t),null}else 2*Ge()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,a=!0,gl(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)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ge(),e.sibling=null,o=Io.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||H?Lo(t,o):(n=o,we(ko,t),we(Io,n),Ao===null&&(Ao=t)),H&&Xi(t,r.treeForkCount),e}return _l(t),null;case 22:case 23:return Fo(t),Oo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(_l(t),t.subtreeFlags&6&&(t.flags|=8192)):_l(t),n=t.updateQueue,n!==null&&hl(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&&Ce(Ua),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),_a(ka),_l(t),null;case 25:return null;case 30:return t.flags|=33554432,_l(t),null}throw Error(i(156,t.tag))}function yl(e,t){switch($i(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return _a(ka),Ae(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Me(t),null;case 31:if(t.memoizedState!==null){if(Fo(t),t.alternate===null)throw Error(i(340));ua()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Fo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ua()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ro(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Ae(),null;case 10:return _a(t.type),null;case 22:case 23:return Fo(t),Oo(),e!==null&&Ce(Ua),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return _a(ka),null;case 25:return null;default:return null}}function bl(e,t){switch($i(t),t.tag){case 3:_a(ka),Ae();break;case 26:case 27:case 5:Me(t);break;case 4:Ae();break;case 31:t.memoizedState!==null&&Fo(t);break;case 13:Fo(t);break;case 19:Ro(t);break;case 10:_a(t.type);break;case 22:case 23:Fo(t),Oo(),e!==null&&Ce(Ua);break;case 24:_a(ka)}}function xl(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){Z(t,t.return,e)}}function Sl(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){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Cl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Co(t,n)}catch(t){Z(e,e.return,t)}}}function wl(e,t,n){n.props=xc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Tl(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:var i=e.stateNode,a=hi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);m(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function El(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(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){Z(e,t,n)}else n.current=null}}function Dl(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n<t.length;n++)em(e.stateNode,t[n])}function Ol(e){for(var t=e.return;t!==null&&(jl(t)&&em(e.stateNode,t.stateNode),!Al(t));)t=t.return}function kl(e){for(var t=e.return;t!==null&&(jl(t)&&tm(e.stateNode,t.stateNode),!Al(t));)t=t.return}function Al(e){return e.tag===5||e.tag===3||e.tag===27}function jl(e){return e&&e.tag===7&&e.stateNode!==null}function Ml(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){Z(e,e.return,t)}}function Nl(e,t,n){try{var r=e.stateNode;ip(r,e.type,n,t),r[Tt]=t}catch(t){Z(e,e.return,t)}}function Pl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Sp(e.type)||e.tag===4}function Fl(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Pl(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&&Sp(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 Il(e,t,n,r){var i=e.tag;if(i===5||i===6)i=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(i,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(i),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=bn)),Dl(e,r),L=!0;else if(i!==4&&(i===27&&(Dl(e,r),r=null,Sp(e.type)&&(n=e.stateNode,t=null)),e=e.child,e!==null))for(Il(e,t,n,r),e=e.sibling;e!==null;)Il(e,t,n,r),e=e.sibling}function Ll(e,t,n,r){var i=e.tag;if(i===5||i===6)i=e.stateNode,t?n.insertBefore(i,t):n.appendChild(i),Dl(e,r),L=!0;else if(i!==4&&(i===27&&(Dl(e,r),r=null,Sp(e.type)&&(n=e.stateNode)),e=e.child,e!==null))for(Ll(e,t,n,r),e=e.sibling;e!==null;)Ll(e,t,n,r),e=e.sibling}function Rl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);np(t,r,n),t[wt]=e,t[Tt]=n}catch(t){Z(e,e.return,t)}}var zl=!1,Bl=null;function Vl(e){(e.tag===30||e.subtreeFlags&33554432)&&(zl=!0)}var Hl=null;function Ul(){var e=Hl;return Hl=null,e}var Wl=0;function Gl(e,t,n,r,i){return Wl=0,Kl(e.child,t,n,r,i)}function Kl(e,t,n,r,i){for(var a=!1;e!==null;){if(e.tag===5){var o=e.stateNode;if(r!==null){var s=Op(o);r.push(s),s.view&&(a=!0)}else a||Op(o).view&&(a=!0);zl=!0,Tp(o,Wl===0?t:t+`_`+Wl,n),Wl++}else(e.tag!==22||e.memoizedState===null)&&(e.tag===30&&i||Kl(e.child,t,n,r,i)&&(a=!0));e=e.sibling}return a}function ql(e,t){for(;e!==null;)e.tag===5?Ep(e.stateNode,e.memoizedProps):(e.tag!==22||e.memoizedState===null)&&(e.tag===30&&t||ql(e.child,t)),e=e.sibling}function Jl(e){if(e.subtreeFlags&18874368)for(e=e.child;e!==null;){if((e.tag!==22||e.memoizedState===null)&&(Jl(e),e.tag===30&&e.flags&18874368&&e.stateNode.paired)){var t=e.memoizedProps;if(t.name==null||t.name===`auto`)throw Error(i(544));var n=t.name;t=_i(t.default,t.share),t!==`none`&&(Gl(e,n,t,null,!1)||ql(e.child,!1))}e=e.sibling}}function Yl(e,t){if(e.tag===30){var n=e.stateNode,r=e.memoizedProps,i=hi(r,n),a=_i(r.default,n.paired?r.share:r.enter);a===`none`?Jl(e):Gl(e,i,a,null,!1)?(Jl(e),n.paired||t||Nd(e,r.onEnter)):ql(e.child,!1)}else if(e.subtreeFlags&33554432)for(e=e.child;e!==null;)Yl(e,t),e=e.sibling;else Jl(e)}function Xl(e){if(Bl!==null&&Bl.size!==0){var t=Bl;if(e.subtreeFlags&18874368)for(e=e.child;e!==null;){if(e.tag!==22||e.memoizedState===null){if(e.tag===30&&e.flags&18874368){var n=e.memoizedProps,r=n.name;if(r!=null&&r!==`auto`){var i=t.get(r);if(i!==void 0){var a=_i(n.default,n.share);if(a!==`none`&&(Gl(e,r,a,null,!1)?(a=e.stateNode,i.paired=a,a.paired=i,Nd(e,n.onShare)):ql(e.child,!1)),t.delete(r),t.size===0)break}}}Xl(e)}e=e.sibling}}}function Zl(e){if(e.tag===30){var t=e.memoizedProps,n=hi(t,e.stateNode),r=Bl===null?void 0:Bl.get(n),i=_i(t.default,r===void 0?t.exit:t.share);i!==`none`&&(Gl(e,n,i,null,!1)?r===void 0?Nd(e,t.onExit):(i=e.stateNode,r.paired=i,i.paired=r,Bl.delete(n),Nd(e,t.onShare)):ql(e.child,!1)),Bl!==null&&Xl(e)}else if(e.subtreeFlags&33554432)for(e=e.child;e!==null;)Zl(e),e=e.sibling;else Bl!==null&&Xl(e)}function Ql(e){for(e=e.child;e!==null;){if(e.tag===30){var t=e.memoizedProps,n=hi(t,e.stateNode);t=_i(t.default,t.update),e.flags&=-5,t!==`none`&&Gl(e,n,t,e.memoizedState=[],!1)}else e.subtreeFlags&33554432&&Ql(e);e=e.sibling}}function $l(e){if(e.subtreeFlags&18874368)for(e=e.child;e!==null;){if(e.tag!==22||e.memoizedState===null){if(e.tag===30&&e.flags&18874368){var t=e.stateNode;t.paired!==null&&(t.paired=null,ql(e.child,!1))}$l(e)}e=e.sibling}}function eu(e){if(e.tag===30)e.stateNode.paired=null,ql(e.child,!1),$l(e);else if(e.subtreeFlags&33554432)for(e=e.child;e!==null;)eu(e),e=e.sibling;else $l(e)}function tu(e){for(e=e.child;e!==null;)e.tag===30?ql(e.child,!1):e.subtreeFlags&33554432&&tu(e),e=e.sibling}function nu(e,t,n,r,i,a,o){for(var s=!1;t!==null;){if(t.tag===5){var c=t.stateNode;if(a!==null&&Wl<a.length){var l=a[Wl],u=Op(c);(l.view||u.view)&&(s=!0);var d;if(d=!(e.flags&4)){if(u.clip)d=!0;else{d=l.rect;var f=u.rect;d=d.y!==f.y||d.x!==f.x||d.height!==f.height||d.width!==f.width}}d&&(e.flags|=4),u.abs?u=!l.abs:(l=l.rect,u=u.rect,u=l.height!==u.height||l.width!==u.width),u&&(e.flags|=32)}else e.flags|=32;e.flags&4&&Tp(c,Wl===0?n:n+`_`+Wl,i),s&&e.flags&4||(Hl===null&&(Hl=[]),Hl.push(c,Wl===0?r:r+`_`+Wl,t.memoizedProps)),Wl++}else(t.tag!==22||t.memoizedState===null)&&(t.tag===30&&o?e.flags|=t.flags&32:nu(e,t.child,n,r,i,a,o)&&(s=!0));t=t.sibling}return s}function ru(e,t){for(e=e.child;e!==null;){if(e.tag===30){var n=e.memoizedProps,r=e.stateNode,i=hi(n,r),a=_i(n.default,n.update);if(t){r=r.clones;var o=r===null?null:r.map(kp)}else o=e.memoizedState,e.memoizedState=null;r=e;var s=e.child;Wl=0,i=nu(r,s,i,i,a,o,!1),e.flags&4&&i&&(t||Nd(e,n.onUpdate))}else e.subtreeFlags&33554432&&ru(e,t);e=e.sibling}}var iu=!1,G=!1,au=!1,ou=!1,su=typeof WeakSet==`function`?WeakSet:Set,cu=null,lu=!1,uu=!1,du=!1,fu=!1;function pu(e,t,n){if(e=e.containerInfo,sp=gh,e=Gr(e),Kr(e)){if(`selectionStart`in e)var r={start:e.selectionStart,end:e.selectionEnd};else a:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var a=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{r.nodeType,o.nodeType}catch{r=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==r||a!==0&&f.nodeType!==3||(c=s+a),f!==o||i!==0&&f.nodeType!==3||(l=s+i),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===r&&++u===a&&(c=s),p===o&&++d===i&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}r=c===-1||l===-1?null:{start:c,end:l}}else r=null}r||={start:0,end:0}}else r=null;for(cp={focusedElem:e,selectionRange:r},gh=!1,n=(n&335544064)===n,cu=t,t=n?9270:1024;cu!==null;){if(e=cu,n&&(r=e.deletions,r!==null))for(a=0;a<r.length;a++)n&&Zl(r[a]);if(e.alternate===null&&e.flags&2)n&&Vl(e),mu(n);else{if(e.tag===22){if(r=e.alternate,e.memoizedState!==null){r!==null&&r.memoizedState===null&&n&&Zl(r),mu(n);continue}if(r!==null&&r.memoizedState!==null){n&&Vl(e),mu(n);continue}}r=e.child,(e.subtreeFlags&t)!==0&&r!==null?(r.return=e,cu=r):(n&&Ql(e),mu(n))}}Bl=null}function mu(e){for(;cu!==null;){var t=cu,n=e,r=t.alternate,a=t.flags;switch(t.tag){case 0:case 11:case 15:break;case 1:if(a&1024&&r!==null){n=void 0,a=r.memoizedProps,r=r.memoizedState;var o=t.stateNode;try{var s=xc(t.type,a);n=o.getSnapshotBeforeUpdate(s,r),o.__reactInternalSnapshotBeforeUpdate=n}catch(e){Z(t,t.return,e)}}break;case 3:if(a&1024){if(r=t.stateNode.containerInfo,n=r.nodeType,n===9)nm(r);else if(n===1)switch(r.nodeName){case`HEAD`:case`HTML`:case`BODY`:nm(r);break;default:r.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;case 30:n&&r!==null&&(n=hi(r.memoizedProps,r.stateNode),a=t.memoizedProps,a=_i(a.default,a.update),a!==`none`&&Gl(r,n,a,r.memoizedState=[],!0));break;default:if(a&1024)throw Error(i(163))}if(r=t.sibling,r!==null){r.return=t.return,cu=r;break}cu=t.return}}function hu(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Fu(e,n),r&4&&xl(5,n);break;case 1:if(Fu(e,n),r&4){if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Z(n,n.return,e)}else{var i=xc(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Z(n,n.return,e)}}}r&64&&Cl(n),r&512&&Tl(n,n.return);break;case 3:if(Fu(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Co(e,t)}catch(e){Z(n,n.return,e)}}break;case 27:t===null&&r&4&&Rl(n);case 26:case 5:Fu(e,n),t===null&&r&4&&Ml(n),r&512&&Tl(n,n.return);break;case 12:Fu(e,n);break;case 31:Fu(e,n),r&4&&wu(e,n);break;case 13:Fu(e,n),r&4&&Tu(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=_f.bind(null,n),cm(e,n))));break;case 22:if(r=n.memoizedState!==null||iu,!r){var a=t!==null&&t.memoizedState!==null||G;t=iu,i=G,iu=r,(G=a)&&!i?(r=2,n.subtreeFlags&8772&&(r|=1),Lu(e,n,r)):Fu(e,n),iu=t,G=i}break;case 30:Fu(e,n),r&512&&Tl(n,n.return);break;case 7:r&512&&Tl(n,n.return);default:Fu(e,n)}}function gu(e,t){for(e=e.child;e!==null;)_u(e,t),e=e.sibling}function _u(e,t){switch(e.tag){case 5:case 26:try{var n=e.stateNode;if(t){var r=n.style;typeof r.setProperty==`function`?r.setProperty(`display`,`none`,`important`):r.display=`none`}else{var i=e.stateNode,a=e.memoizedProps.style,o=a!=null&&a.hasOwnProperty(`display`)?a.display:null;i.style.display=o==null||typeof o==`boolean`?``:(``+o).trim()}}catch(t){Z(e,e.return,t)}vu(e,t);break;case 6:try{e.stateNode.nodeValue=t?``:e.memoizedProps,L=!0}catch(t){Z(e,e.return,t)}break;case 18:try{var s=e.stateNode;t?wp(s,!0):wp(e.stateNode,!1)}catch(t){Z(e,e.return,t)}break;case 22:case 23:e.memoizedState===null&&gu(e,t);break;default:gu(e,t)}}function vu(e,t){if(e.subtreeFlags&67108864)for(e=e.child;e!==null;){a:{var n=e,r=t;switch(n.tag){case 4:_u(n,r);break a;case 22:n.memoizedState===null&&vu(n,r);break a;default:vu(n,r)}}e=e.sibling}}function yu(e){var t=e.alternate;t!==null&&(e.alternate=null,yu(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&Nt(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var bu=null,xu=!1;function Su(e,t,n){for(n=n.child;n!==null;)Cu(e,t,n),n=n.sibling}function Cu(e,t,n){if(tt&&typeof tt.onCommitFiberUnmount==`function`)try{tt.onCommitFiberUnmount(et,n)}catch{}switch(n.tag){case 26:G||El(n,t),Su(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&!G&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:G||El(n,t),kl(n);var r=bu,i=xu;Sp(n.type)&&(bu=n.stateNode,xu=!1),Su(e,t,n),gm(n.stateNode,n.type,n.memoizedProps),bu=r,xu=i;break;case 5:G||El(n,t),kl(n);case 6:if(n.tag===6&&kl(n),r=bu,i=xu,bu=null,Su(e,t,n),bu=r,xu=i,bu!==null){if(xu)try{(bu.nodeType===9?bu.body:bu.nodeName===`HTML`?bu.ownerDocument.body:bu).removeChild(n.stateNode),L=!0}catch(e){Z(n,t,e)}else try{bu.removeChild(n.stateNode),L=!0}catch(e){Z(n,t,e)}}break;case 18:bu!==null&&(xu?(e=bu,Cp(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Hh(e)):Cp(bu,n.stateNode));break;case 4:r=bu,i=xu,bu=n.stateNode.containerInfo,xu=!0,Su(e,t,n),bu=r,xu=i;break;case 0:case 11:case 14:case 15:Sl(2,n,t),G||Sl(4,n,t),Su(e,t,n);break;case 1:G||(El(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&wl(n,t,r)),Su(e,t,n);break;case 21:Su(e,t,n);break;case 22:G=(r=G)||n.memoizedState!==null,Su(e,t,n),G=r;break;case 30:El(n,t),Su(e,t,n);break;case 7:G||El(n,t),Su(e,t,n);break;default:Su(e,t,n)}}function wu(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Hh(e)}catch(e){Z(t,t.return,e)}}}function Tu(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Hh(e)}catch(e){Z(t,t.return,e)}}function Eu(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new su),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new su),t;default:throw Error(i(435,e.tag))}}function Du(e,t){var n=Eu(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=vf.bind(null,e,t);t.then(r,r)}})}function Ou(e,t,n){var r=t.deletions;if(r!==null)for(var a=0;a<r.length;a++){var o=r[a],s=e,c=t,l=c;a:for(;l!==null;){switch(l.tag){case 27:if(Sp(l.type)){bu=l.stateNode,xu=!1;break a}break;case 5:bu=l.stateNode,xu=!1;break a;case 3:case 4:bu=l.stateNode.containerInfo,xu=!0;break a}l=l.return}if(bu===null)throw Error(i(160));Cu(s,c,o),bu=null,xu=!1,s=o.alternate,s!==null&&(s.return=null),o.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)Au(t,e,n),t=t.sibling}var ku=null;function Au(e,t,n){var r=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(a&4&&(r=e.updateQueue,r=r===null?null:r.events,r!==null))for(var o=0;o<r.length;o++){var s=r[o];s.ref.impl=s.nextImpl}Ou(t,e,n),ju(e),a&4&&(Sl(3,e,e.return),xl(3,e),Sl(5,e,e.return));break;case 1:Ou(t,e,n),ju(e),a&512&&(G||r===null||El(r,r.return)),a&64&&iu&&(e=e.updateQueue,e!==null&&(t=e.callbacks,t!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?t:n.concat(t))));break;case 26:if(o=ku,Ou(t,e,n),ju(e),a&512&&(G||r===null||El(r,r.return)),a&4){if(a=r===null?null:r.memoizedState,n=e.memoizedState,r===null){if(n===null){if(e.stateNode===null){if(iu)e.stateNode=fp(e.type,e.memoizedProps,t.containerInfo,e);else{a:{t=e.type,n=e.memoizedProps,a=o.ownerDocument||o;b:switch(t){case`title`:r=a.getElementsByTagName(`title`)[0],(!r||r[jt]||r[wt]||r.namespaceURI===`http://www.w3.org/2000/svg`||r.hasAttribute(`itemprop`))&&(r=a.createElement(t),a.head.insertBefore(r,a.querySelector(`head > title`))),np(r,t,n),r[wt]=e,Rt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;s<o.length;s++)if(r=o[s],r.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&r.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&r.getAttribute(`title`)===(n.title==null?null:n.title)&&r.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){o.splice(s,1);break b}}r=a.createElement(t),np(r,t,n),a.head.appendChild(r);break;case`meta`:if(o=Gm(`meta`,`content`,a).get(t+(n.content||``))){for(s=0;s<o.length;s++)if(r=o[s],r.getAttribute(`content`)===(n.content==null?null:``+n.content)&&r.getAttribute(`name`)===(n.name==null?null:n.name)&&r.getAttribute(`property`)===(n.property==null?null:n.property)&&r.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&r.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){o.splice(s,1);break b}}r=a.createElement(t),np(r,t,n),a.head.appendChild(r);break;default:throw Error(i(468,t))}r[wt]=e,Rt(r),t=r}e.stateNode=t}}else iu||Km(o,e.type,e.stateNode)}else e.stateNode=Bm(o,n,e.memoizedProps)}else a===n?n===null&&e.stateNode!==null&&Nl(e,e.memoizedProps,r.memoizedProps):(a===null?(t=r.stateNode,t===null||G||t.parentNode.removeChild(t)):a.count--,n===null?iu||Km(o,e.type,e.stateNode):Bm(o,n,e.memoizedProps))}break;case 27:Ou(t,e,n),ju(e),a&512&&(G||r===null||El(r,r.return)),r!==null&&a&4&&Nl(e,e.memoizedProps,r.memoizedProps);break;case 5:if(o=au,au=!1,Ou(t,e,n),au=o,ju(e),a&512&&(G||r===null||El(r,r.return)),e.flags&32){t=e.stateNode;try{fn(t,``),L=!0}catch(t){Z(e,e.return,t)}}a&4&&e.stateNode!=null&&(t=e.memoizedProps,Nl(e,t,r===null?t:r.memoizedProps)),a&1024&&(ou=!0);break;case 6:if(Ou(t,e,n),ju(e),a&4){if(e.stateNode===null)throw Error(i(162));t=e.memoizedProps,n=e.stateNode;try{n.nodeValue=t,L=!0}catch(t){Z(e,e.return,t)}}break;case 3:if(L=!1,Wm=null,o=ku,ku=bm(t.containerInfo),Ou(t,e,n),ku=o,ju(e),a&4&&r!==null&&r.memoizedState.isDehydrated)try{Hh(t.containerInfo)}catch(t){Z(e,e.return,t)}ou&&(ou=!1,Mu(e)),L=!1;break;case 4:a=au,au=iu,r=Jt(),o=ku,ku=bm(e.stateNode.containerInfo),Ou(t,e,n),ju(e),ku=o,L&&uu&&(du=!0),L=r,au=a;break;case 12:Ou(t,e,n),ju(e);break;case 31:Ou(t,e,n),ju(e),a&4&&(t=e.updateQueue,t!==null&&(e.updateQueue=null,Du(e,t)));break;case 13:Ou(t,e,n),ju(e),e.child.flags&8192&&e.memoizedState!==null!=(r!==null&&r.memoizedState!==null)&&(md=Ge()),a&4&&(t=e.updateQueue,t!==null&&(e.updateQueue=null,Du(e,t)));break;case 22:o=e.memoizedState!==null,s=r!==null&&r.memoizedState!==null;var c=iu,l=G,u=au;iu=c||o,au=u||o,G=l||s,Ou(t,e,n),G=l,au=u,iu=c,ju(e),a&8192&&(t=e.stateNode,t._visibility=o?t._visibility&-2:t._visibility|1,!o||r===null||s||iu||G||(t=s||G,n=iu,r=G,iu=o||iu,G=t,Iu(e,2),iu=n,G=r),!o&&au||gu(e,o)),a&4&&(t=e.updateQueue,t!==null&&(n=t.retryQueue,n!==null&&(t.retryQueue=null,Du(e,n))));break;case 19:Ou(t,e,n),ju(e),a&4&&(t=e.updateQueue,t!==null&&(e.updateQueue=null,Du(e,t)));break;case 30:a&512&&(G||r===null||El(r,r.return)),a=Jt(),o=uu,s=(n&335544064)===n,c=e.memoizedProps,uu=s&&_i(c.default,c.update)!==`none`,Ou(t,e,n),ju(e),s&&r!==null&&L&&(e.flags|=4),uu=o,L=a;break;case 21:break;case 7:a&512&&(G||r===null||El(r,r.return)),r&&r.stateNode!==null&&(r.stateNode._fragmentFiber=e);default:Ou(t,e,n),ju(e)}}function ju(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Pl(r)){n=r;break}r=r.return}r=null;for(var a=e.return;a!==null;){if(jl(a)){var o=a.stateNode;r===null?r=[o]:r.push(o)}if(Al(a))break;a=a.return}var s=r;if(n==null)throw Error(i(160));switch(n.tag){case 27:var c=n.stateNode;Ll(e,Fl(e),c,s);break;case 5:var l=n.stateNode;n.flags&32&&(fn(l,``),n.flags&=-33),Ll(e,Fl(e),l,s);break;case 3:case 4:var u=n.stateNode.containerInfo;Il(e,Fl(e),u,s);break;default:throw Error(i(161))}}catch(t){Z(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Mu(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Mu(t),t.tag===5&&t.flags&1024&&(t=t.stateNode,gh=!0,t.reset(),gh=!1),e=e.sibling}}function Nu(e,t){if(t.subtreeFlags&9270)for(t=t.child;t!==null;)Pu(t,e),t=t.sibling;else ru(t,!1)}function Pu(e,t){var n=e.alternate;if(n===null)Yl(e,!1);else switch(e.tag){case 3:if(fu=lu=!1,Ul(),Nu(t,e),!lu&&!du){if(e=Hl,e!==null)for(var r=0;r<e.length;r+=3){n=e[r];var i=e[r+1];Ep(n,e[r+2]),n=n.ownerDocument.documentElement,n!==null&&n.animate({opacity:[0,0],pointerEvents:[`none`,`none`]},{duration:0,fill:`forwards`,pseudoElement:`::view-transition-group(`+i+`)`})}e=t.containerInfo,e=e.nodeType===9?e.documentElement:e.ownerDocument.documentElement,e!==null&&e.style.viewTransitionName===``&&(e.style.viewTransitionName=`none`,e.animate({opacity:[0,0],pointerEvents:[`none`,`none`]},{duration:0,fill:`forwards`,pseudoElement:`::view-transition-group(root)`}),e.animate({width:[0,0],height:[0,0]},{duration:0,fill:`forwards`,pseudoElement:`::view-transition`})),fu=!0}Hl=null;break;case 5:Nu(t,e);break;case 4:r=lu,lu=!1,Nu(t,e),lu&&(du=!0),lu=r;break;case 22:e.memoizedState===null&&(n.memoizedState===null?Nu(t,e):Yl(e,!1));break;case 30:r=lu,i=Ul(),lu=!1,Nu(t,e),lu&&(e.flags|=4);var a=e.memoizedProps,o=e.stateNode;t=hi(a,o),o=hi(n.memoizedProps,o);var s=_i(a.default,a.update);s===`none`?t=!1:(a=n.memoizedState,n.memoizedState=null,n=e.child,Wl=0,t=nu(e,n,t,o,s,a,!0),Wl!==(a===null?0:a.length)&&(e.flags|=32)),e.flags&4&&t?(Nd(e,e.memoizedProps.onUpdate),Hl=i):i!==null&&(i.push.apply(i,Hl),Hl=i),lu=e.flags&32?!0:r;break;default:Nu(t,e)}}function Fu(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)hu(e,t.alternate,t),t=t.sibling}function Iu(e,t){for(e=e.child;e!==null;){var n=e,r=t;switch(n.tag){case 0:case 11:case 14:case 15:Sl(4,n,n.return),Iu(n,r);break;case 1:El(n,n.return);var i=n.stateNode;typeof i.componentWillUnmount==`function`&&wl(n,n.return,i),Iu(n,r);break;case 27:r&2&&gm(n.stateNode,n.type,n.memoizedProps);case 5:El(n,n.return),n.tag!==5&&n.tag!==27||kl(n),Iu(n,r);break;case 6:kl(n);break;case 26:El(n,n.return),i=n.stateNode,n.memoizedState!==null||i===null||G||i.parentNode.removeChild(i),Iu(n,r);break;case 22:n.memoizedState===null&&Iu(n,r);break;case 30:El(n,n.return),Iu(n,r);break;case 7:El(n,n.return);default:Iu(n,r)}e=e.sibling}}function Lu(e,t,n){for(n=t.subtreeFlags&8772?n:n&-2,t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags,s=!!(n&1);switch(a.tag){case 0:case 11:case 15:Lu(i,a,n),xl(4,a);break;case 1:if(Lu(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Z(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var c=r.stateNode;try{var l=i.shared.hiddenCallbacks;if(l!==null)for(i.shared.hiddenCallbacks=null,i=0;i<l.length;i++)So(l[i],c)}catch(e){Z(r,r.return,e)}}s&&o&64&&Cl(a),Tl(a,a.return);break;case 27:n&2&&Rl(a);case 5:a.tag!==5&&a.tag!==27||Ol(a),Lu(i,a,n),s&&r===null&&o&4&&Ml(a),Tl(a,a.return);break;case 6:Ol(a);break;case 26:c=a.stateNode,a.memoizedState!==null||c===null||iu||Km(bm(c.ownerDocument),a.type,c),Lu(i,a,n),s&&r===null&&o&4&&Ml(a),Tl(a,a.return);break;case 12:Lu(i,a,n);break;case 31:Lu(i,a,n),s&&o&4&&wu(i,a);break;case 13:Lu(i,a,n),s&&o&4&&Tu(i,a);break;case 22:a.memoizedState===null&&Lu(i,a,n),Tl(a,a.return);break;case 30:Lu(i,a,n),Tl(a,a.return);break;case 7:Tl(a,a.return);default:Lu(i,a,n)}t=t.sibling}}function Ru(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&ja(n))}function zu(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ja(e))}function Bu(e,t,n,r){var i=(n&335544064)===n;if(t.subtreeFlags&(i?10262:10256))for(t=t.child;t!==null;)Vu(e,t,n,r),t=t.sibling;else i&&tu(t)}function Vu(e,t,n,r){var i=(n&335544064)===n;i&&t.alternate===null&&t.return!==null&&t.return.alternate!==null&&eu(t);var a=t.flags;switch(t.tag){case 0:case 11:case 15:Bu(e,t,n,r),a&2048&&xl(9,t);break;case 1:Bu(e,t,n,r);break;case 3:Bu(e,t,n,r),i&&fu&&(e=e.containerInfo,e=e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,e.style.viewTransitionName===`root`&&(e.style.viewTransitionName=``),e=e.ownerDocument.documentElement,e!==null&&e.style.viewTransitionName===`none`&&(e.style.viewTransitionName=``)),a&2048&&(a=null,t.alternate!==null&&(a=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==a&&(t.refCount++,a!=null&&ja(a)));break;case 12:if(a&2048){Bu(e,t,n,r),a=t.stateNode;try{var o=t.memoizedProps,s=o.id,c=o.onPostCommit;typeof c==`function`&&c(s,t.alternate===null?`mount`:`update`,a.passiveEffectDuration,-0)}catch(e){Z(t,t.return,e)}}else Bu(e,t,n,r);break;case 31:Bu(e,t,n,r);break;case 13:Bu(e,t,n,r);break;case 23:break;case 22:o=t.stateNode,s=t.alternate,t.memoizedState===null?(i&&s!==null&&s.memoizedState!==null&&eu(t),o._visibility&2?Bu(e,t,n,r):(o._visibility|=2,Hu(e,t,n,r,!!(t.subtreeFlags&10256)||!1))):(i&&s!==null&&s.memoizedState===null&&eu(s),o._visibility&2?Bu(e,t,n,r):Uu(e,t)),a&2048&&Ru(s,t);break;case 24:Bu(e,t,n,r),a&2048&&zu(t.alternate,t);break;case 30:i&&(a=t.alternate,a!==null&&(ql(a.child,!0),ql(t.child,!0))),Bu(e,t,n,r);break;default:Bu(e,t,n,r)}}function Hu(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:Hu(a,o,s,c,i),xl(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,Hu(a,o,s,c,i)):u._visibility&2?Hu(a,o,s,c,i):Uu(a,o),i&&l&2048&&Ru(o.alternate,o);break;case 24:Hu(a,o,s,c,i),i&&l&2048&&zu(o.alternate,o);break;default:Hu(a,o,s,c,i)}t=t.sibling}}function Uu(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:Uu(n,r),i&2048&&Ru(r.alternate,r);break;case 24:Uu(n,r),i&2048&&zu(r.alternate,r);break;default:Uu(n,r)}t=t.sibling}}var Wu=8192;function Gu(e,t,n){if(e.subtreeFlags&Wu)for(e=e.child;e!==null;)K(e,t,n),e=e.sibling}function K(e,t,n){switch(e.tag){case 26:Gu(e,t,n),e.flags&Wu&&(e.memoizedState===null?(e=e.stateNode,(t&335544128)===t&&Zm(n,e)):Qm(n,ku,e.memoizedState,e.memoizedProps));break;case 5:Gu(e,t,n),e.flags&Wu&&(e=e.stateNode,(t&335544128)===t&&Zm(n,e));break;case 3:case 4:var r=ku;ku=bm(e.stateNode.containerInfo),Gu(e,t,n),ku=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Wu,Wu=16777216,Gu(e,t,n),Wu=r):Gu(e,t,n));break;case 30:if((e.flags&Wu)!==0&&(r=e.memoizedProps.name,r!=null&&r!==`auto`)){var i=e.stateNode;i.paired=null,Bl===null&&(Bl=new Map),Bl.set(r,i)}Gu(e,t,n);break;default:Gu(e,t,n)}}function Ku(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function qu(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];cu=r,Xu(r,e)}Ku(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Ju(e),e=e.sibling}function Ju(e){switch(e.tag){case 0:case 11:case 15:qu(e),e.flags&2048&&Sl(9,e,e.return);break;case 3:qu(e);break;case 12:qu(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Yu(e)):qu(e);break;default:qu(e)}}function Yu(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];cu=r,Xu(r,e)}Ku(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:Sl(8,t,t.return),Yu(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Yu(t));break;default:Yu(t)}e=e.sibling}}function Xu(e,t){for(;cu!==null;){var n=cu;switch(n.tag){case 0:case 11:case 15:Sl(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:ja(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,cu=r;else a:for(n=e;cu!==null;){r=cu;var i=r.sibling,a=r.return;if(yu(r),r===n){cu=null;break a}if(i!==null){i.return=a,cu=i;break a}cu=a}}}var Zu={getCacheForType:function(e){var t=Ca(ka),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Ca(ka).controller.signal}},Qu=typeof WeakMap==`function`?WeakMap:Map,q=0,$u=null,J=null,Y=0,X=0,ed=null,td=!1,nd=!1,rd=!1,id=0,ad=0,od=0,sd=0,cd=0,ld=0,ud=0,dd=null,fd=null,pd=!1,md=0,hd=0,gd=1/0,_d=null,vd=null,yd=0,bd=null,xd=null,Sd=0,Cd=0,wd=null,Td=null,Ed=null,Dd=null,Od=null,kd=0,Ad=null;function jd(){return q&2&&Y!==0?Y&-Y:j.T===null?xt():Pf()}function Md(){if(ld===0){if(!(Y&536870912)||H){var e=ct;ct<<=1,!(ct&3932160)&&(ct=262144),ld=e}else ld=536870912}return e=ko.current,e!==null&&(e.flags|=32),ld}function Nd(e,t){if(t!=null){var n=e.stateNode,r=n.ref;r===null&&(r=n.ref=Pp(hi(e.memoizedProps,n))),Dd===null&&(Dd=[]),Dd.push(t.bind(null,r))}}function Pd(e,t,n){(e===$u&&(X===2||X===9)||e.cancelPendingCommit!==null)&&(Vd(e,0),Rd(e,Y,ld,!1)),_t(e,n),(!(q&2)||e!==$u)&&(e===$u&&(!(q&2)&&(sd|=n),ad===4&&Rd(e,Y,ld,!1)),Ef(e))}function Fd(e,t,n){if(q&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||ft(e,t),a=r?Yd(e,t):qd(e,t,!0),o=r;do{if(a===0){nd&&!r&&Rd(e,t,0,!1);break}if(n=e.current.alternate,o&&!Ld(n))a=qd(e,t,!1),o=!1;else{if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=dd;var l=c.current.memoizedState.isDehydrated;if(l&&(Vd(c,s).flags|=256),s=qd(c,s,!1),s!==2&&s!==6){if(rd&&!l){c.errorRecoveryDisabledLanes|=o,sd|=o,a=4;break a}o=fd,fd=a,o!==null&&(fd===null?fd=o:fd.push.apply(fd,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){Vd(e,0),Rd(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t&&(t&62914560)!==t)break;case 6:Rd(r,t,ld,!td);break a;case 2:fd=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=md+300-Ge(),10<a)){if(Rd(r,t,ld,!td),dt(r,0,!0)!==0)break a;Sd=t,r.timeoutHandle=gp(Id.bind(null,r,n,fd,_d,pd,t,ld,sd,ud,td,o,`Throttled`,-0,0),a);break a}Id(r,n,fd,_d,pd,t,ld,sd,ud,td,o,null,-0,0)}break}}while(1);Ef(e)}function Id(e,t,n,r,i,a,o,s,c,l,u,d,f,p){e.timeoutHandle=-1;var m=t.subtreeFlags,h=(a&335544064)===a;d=null,(h||m&8192||(m&16785408)==16785408)&&(d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:bn},Bl=null,K(t,a,d),h&&(m=d,h=e.containerInfo,h=(h.nodeType===9?h:h.ownerDocument).__reactViewTransition,h!=null&&(m.count++,m.waitingForViewTransition=!0,m=nh.bind(m),h.finished.then(m,m))),m=(a&62914560)===a?md-Ge():(a&4194048)===a?hd-Ge():0,m=eh(d,m),m!==null)?(Sd=a,e.cancelPendingCommit=m(nf.bind(null,e,t,a,n,r,i,o,s,c,l,u,d,null,f,p)),Rd(e,a,o,!l)):nf(e,t,a,n,r,i,o,s,c,l,u,d)}function Ld(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!zr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Rd(e,t,n,r){t=pt(e,t),t&=~cd,t&=~sd,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-rt(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&P(e,n,t)}function zd(){return q&6?!0:(Df(0,!1),!1)}function Bd(){if(J!==null){if(X===0)var e=J.return;else e=J,ha=ma=null,rs(e),ro=null,io=0,e=J;for(;e!==null;)bl(e.alternate,e),e=e.return;J=null}}function Vd(e,t){var n=e.timeoutHandle;return n!==-1&&(e.timeoutHandle=-1,_p(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),Sd=0,Bd(),$u=e,J=n=Mi(e.current,null),Y=t,X=0,ed=null,td=!1,nd=ft(e,t),rd=!1,ud=ld=cd=sd=od=ad=0,fd=dd=null,pd=!1,id=pt(e,t),Si(),n}function Hd(e,t){U=null,j.H=pc,t===qa||t===Ya?(t=to(),X=3):t===Ja?(t=to(),X=4):X=t===jc?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,ed=t,J===null&&(ad=1,Tc(e,Bi(t,e.current)))}function Ud(){var e=ko.current;return e===null?!0:(Y&4194048)===Y?Ao===null:(Y&62914560)===Y||Y&536870912?e===Ao:!1}function Wd(){var e=j.H;return j.H=pc,e===null?pc:e}function Gd(){var e=j.A;return j.A=Zu,e}function Kd(){ad=4,td||(Y&4194048)!==Y&&ko.current!==null||(nd=!0),!(od&134217727)&&!(sd&134217727)||$u===null||Rd($u,Y,ld,!1)}function qd(e,t,n){var r=q;q|=2;var i=Wd(),a=Gd();($u!==e||Y!==t)&&(_d=null,Vd(e,t)),t=!1;var o=ad;a:do try{if(X!==0&&J!==null){var s=J,c=ed;switch(X){case 8:Bd(),o=6;break a;case 3:case 2:case 9:case 6:ko.current===null&&(t=!0);var l=X;if(X=0,ed=null,$d(e,s,c,l),n&&nd){o=0;break a}break;default:l=X,X=0,ed=null,$d(e,s,c,l)}}Jd(),o=ad;break}catch(t){Hd(e,t)}while(1);return t&&e.shellSuspendCounter++,ha=ma=null,q=r,j.H=i,j.A=a,J===null&&($u=null,Y=0,Si()),o}function Jd(){for(;J!==null;)Zd(J)}function Yd(e,t){var n=q;q|=2;var r=Wd(),a=Gd();$u!==e||Y!==t?(_d=null,gd=Ge()+500,Vd(e,t)):nd=ft(e,t);a:do try{if(X!==0&&J!==null){t=J;var o=ed;b:switch(X){case 1:X=0,ed=null,$d(e,t,o,1);break;case 2:case 9:if(Za(o)){X=0,ed=null,Qd(t);break}t=function(){X!==2&&X!==9||$u!==e||(X=7),Ef(e)},o.then(t,t);break a;case 3:X=7;break a;case 4:X=5;break a;case 7:Za(o)?(X=0,ed=null,Qd(t)):(X=0,ed=null,$d(e,t,o,7));break;case 5:var s=null;switch(J.tag){case 26:s=J.memoizedState;case 5:case 27:var c=J;if(s?Ym(s):c.stateNode.complete){X=0,ed=null;var l=c.sibling;if(l!==null)J=l;else{var u=c.return;u===null?J=null:(J=u,ef(u))}break b}}X=0,ed=null,$d(e,t,o,5);break;case 6:X=0,ed=null,$d(e,t,o,6);break;case 8:Bd(),ad=6;break a;default:throw Error(i(462))}}Xd();break}catch(t){Hd(e,t)}while(1);return ha=ma=null,j.H=r,j.A=a,q=n,J===null?($u=null,Y=0,Si(),ad):0}function Xd(){for(;J!==null&&!Ue();)Zd(J)}function Zd(e){var t=dl(e.alternate,e,id);e.memoizedProps=e.pendingProps,t===null?ef(e):J=t}function Qd(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Gc(n,t,t.pendingProps,t.type,void 0,Y);break;case 11:t=Gc(n,t,t.pendingProps,t.type.render,t.ref,Y);break;case 5:rs(t);var r=t;r===ta&&(H?(ca(r),r.tag===5&&r.stateNode!=null&&(na=r.stateNode)):(ca(r),H=!0));default:bl(n,t),t=J=Ni(t,id),t=dl(n,t,id)}e.memoizedProps=e.pendingProps,t===null?ef(e):J=t}function $d(e,t,n,r){ha=ma=null,rs(t),ro=null,io=0;var i=t.return;try{if(Ac(e,i,t,n,Y)){ad=1,Tc(e,Bi(n,e.current)),J=null;return}}catch(t){if(i!==null)throw J=i,t;ad=1,Tc(e,Bi(n,e.current)),J=null;return}t.flags&32768?(H||r===1?e=!0:nd||Y&536870912?e=!1:(td=e=!0,(r===2||r===9||r===3||r===6)&&(r=ko.current,r!==null&&r.tag===13&&(r.flags|=16384))),tf(t,e)):ef(t)}function ef(e){var t=e;do{if(t.flags&32768){tf(t,td);return}e=t.return;var n=vl(t.alternate,t,id);if(n!==null){J=n;return}if(t=t.sibling,t!==null){J=t;return}J=t=e}while(t!==null);ad===0&&(ad=5)}function tf(e,t){do{var n=yl(e.alternate,e);if(n!==null){n.flags&=32767,J=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){J=e;return}J=e=n}while(e!==null);ad=6,J=null}function nf(e,t,n,r,a,o,s,c,l,u,d,f){e.cancelPendingCommit=null;do df();while(yd!==0);if(q&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));e===$u&&(J=$u=null,Y=0),xd=t,bd=e,Sd=n,wd=a,Td=r,rf(e,t,n,s,c,l,f)}}function rf(e,t,n,r,i,a,o){var s=t.lanes|t.childLanes;if(Cd=s,s|=xi,vt(e,n,s,r,i,a),Dd=null,(n&335544064)===n?(Od=Pa(e),r=10262):(Od=null,r=10256),(t.subtreeFlags&r)!==0||(t.flags&r)!==0?(e.callbackNode=null,e.callbackPriority=0,yf(Ye,function(){return ff(),null})):(e.callbackNode=null,e.callbackPriority=0),zl=!1,r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=j.T,j.T=null,i=M.p,M.p=2,a=q,q|=4;try{pu(e,t,n)}finally{q=a,M.p=i,j.T=r}}yd=1,zl?Ed=Mp(o,e.containerInfo,Od,sf,cf,of,lf,ff,af,null,null):(sf(),cf(),lf())}function af(e){if(yd!==0){var t=bd.onRecoverableError;t(e,{componentStack:null})}}function of(){yd===3&&(yd=0,Pu(xd,bd),yd=4)}function sf(){if(yd===1){yd=0;var e=bd,t=xd,n=Sd,r=!!(t.flags&13878);if(t.subtreeFlags&13878||r){r=j.T,j.T=null;var i=M.p;M.p=2;var a=q;q|=4;try{uu=du=!1,Au(t,e,n),n=cp;var o=Gr(e.containerInfo),s=n.focusedElem,c=n.selectionRange;if(o!==s&&s&&s.ownerDocument&&Wr(s.ownerDocument.documentElement,s)){if(c!==null&&Kr(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=Ur(s,h),v=Ur(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;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}gh=!!sp,cp=sp=null}finally{q=a,M.p=i,j.T=r}}e.current=t,yd=2}}function cf(){if(yd===2){yd=0;var e=bd,t=xd,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=j.T,j.T=null;var r=M.p;M.p=2;var i=q;q|=4;try{hu(e,t.alternate,t)}finally{q=i,M.p=r,j.T=n}}yd=3}}function lf(){if(yd===4||yd===3){yd=0;var e=Ed;Ed=null,We();var t=bd,n=xd,r=Sd,i=Td,a=(r&335544064)===r?10262:10256;if((n.subtreeFlags&a)!==0||(n.flags&a)!==0?yd=5:(yd=0,xd=bd=null,uf(t,t.pendingLanes)),a=t.pendingLanes,a===0&&(vd=null),I(r),n=n.stateNode,tt&&typeof tt.onCommitFiberRoot==`function`)try{tt.onCommitFiberRoot(et,n,void 0,(n.current.flags&128)==128)}catch{}if(i!==null){n=j.T,a=M.p,M.p=2,j.T=null;try{for(var o=t.onRecoverableError,s=0;s<i.length;s++){var c=i[s];o(c.value,{componentStack:c.stack})}}finally{j.T=n,M.p=a}}if(i=Dd,o=Od,Od=null,i!==null&&(Dd=null,o===null&&(o=[]),e!==null))for(c=0;c<i.length;c++)n=(0,i[c])(o),n!==void 0&&e.finished.finally(n);Sd&3&&df(),Ef(t),a=t.pendingLanes,r&261930&&a&42?t===Ad?kd++:(kd=0,Ad=t):(kd=0,Ad=null),Df(0,!1)}}function uf(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,ja(t)))}function df(){return Ed!==null&&(Ed.skipTransition(),Ed=null),sf(),cf(),lf(),ff()}function ff(){if(yd!==5)return!1;var e=bd,t=Cd;Cd=0;var n=I(Sd),r=j.T,a=M.p;try{M.p=32>n?32:n,j.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,q&6)throw Error(i(331));var c=q;if(q|=4,Ju(o.current),Vu(o,o.current,s,n),q=c,Df(0,!1),tt&&typeof tt.onPostCommitFiberRoot==`function`)try{tt.onPostCommitFiberRoot(et,o)}catch{}return!0}finally{M.p=a,j.T=r,uf(e,t)}}function pf(e,t,n){t=Bi(n,t),t=Dc(e.stateNode,t,2),e=go(e,t,2),e!==null&&(_t(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Bi(n,e),n=Oc(2),r=go(t,n,2),r!==null&&(kc(n,r,t,e),_t(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Qu;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)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,$u===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>Ge()-md?q&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=ht()),e=Ti(e,t),e!==null&&(_t(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(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),gf(e,n)}function yf(e,t){return Ve(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;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-rt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=dt(r,r===$u?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||ft(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Ge(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-rt(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=mt(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=$u,n=Y,n=dt(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(X===2||X===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&He(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||ft(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&He(r),I(n)){case 2:case 8:n=Je;break;case 32:n=Ye;break;case 268435456:n=Ze;break;default:n=Ye}return r=jf.bind(null,e),n=Ve(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&He(r),e.callbackPriority=2,e.callbackNode=null,2}function jf(e,t){if(yd!==0&&yd!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(df()&&e.callbackNode!==n)return null;var r=Y;return r=dt(e,e===$u?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(Fd(e,r,t),Af(e,Ge()),e.callbackNode!=null&&e.callbackNode===n?jf.bind(null,e):null)}function Mf(e,t){if(df())return null;Fd(e,t,!0)}function Nf(){bp(function(){q&6?Ve(qe,Of):kf()})}function Pf(){if(Tf===0){var e=La;e===0&&(e=st,st<<=1,!(st&261888)&&(st=256)),Tf=e}return Tf}function Ff(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:yn(e)}function If(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=Ff((i[Tt]||null).action),o=r.submitter;o&&(t=(t=o[Tt]||null)?Ff(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new Vn(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(Tf!==0){var e=new FormData(i,o);$s(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=new FormData(i,o),$s(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var Lf=0;Lf<fi.length;Lf++){var Rf=fi[Lf];pi(Rf.toLowerCase(),`on`+(Rf[0].toUpperCase()+Rf.slice(1)))}pi(ii,`onAnimationEnd`),pi(ai,`onAnimationIteration`),pi(oi,`onAnimationStart`),pi(`dblclick`,`onDoubleClick`),pi(`focusin`,`onFocus`),pi(`focusout`,`onBlur`),pi(si,`onTransitionRun`),pi(ci,`onTransitionStart`),pi(li,`onTransitionCancel`),pi(ui,`onTransitionEnd`),Ut(`onMouseEnter`,[`mouseout`,`mouseover`]),Ut(`onMouseLeave`,[`mouseout`,`mouseover`]),Ut(`onPointerEnter`,[`pointerout`,`pointerover`]),Ut(`onPointerLeave`,[`pointerout`,`pointerover`]),Ht(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),Ht(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),Ht(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),Ht(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),Ht(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),Ht(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var zf=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),Bf=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(zf));function Vf(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){vi(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){vi(e)}i.currentTarget=null,a=c}}}}function Q(e,t){var n=t[Dt];n===void 0&&(n=t[Dt]=new Set);var r=e+`__bubble`;n.has(r)||(Gf(t,e,2,!1),n.add(r))}function Hf(e,t,n){var r=0;t&&(r|=4),Gf(n,e,r,t)}var Uf=`_reactListening`+Math.random().toString(36).slice(2);function Wf(e){if(!e[Uf]){e[Uf]=!0,Bt.forEach(function(t){t!==`selectionchange`&&(Bf.has(t)||Hf(t,!1,e),Hf(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Uf]||(t[Uf]=!0,Hf(`selectionchange`,!1,t))}}function Gf(e,t,n,r){switch(Ch(t)){case 2:var i=_h;break;case 8:i=vh;break;default:i=yh}n=i.bind(null,t,n,e),i=void 0,!An||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function Kf(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var s=r.tag;if(s===3||s===4){var c=r.stateNode.containerInfo;if(c===i)break;if(s===4)for(s=r.return;s!==null;){var l=s.tag;if((l===3||l===4)&&s.stateNode.containerInfo===i)return;s=s.return}for(;c!==null;){if(s=Pt(c),s===null)return;if(l=s.tag,l===5||l===6||l===26||l===27){r=a=s;continue a}c=c.parentNode}}r=r.return}Dn(function(){var r=a,i=Sn(n),s=[];a:{var c=di.get(e);if(c!==void 0){var l=Vn,u=e;switch(e){case`keypress`:if(In(n)===0)break a;case`keydown`:case`keyup`:l=B;break;case`focusin`:u=`focus`,l=Xn;break;case`focusout`:u=`blur`,l=Xn;break;case`beforeblur`:case`afterblur`:l=Xn;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=Jn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=Yn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=ar;break;case ii:case ai:case oi:l=Zn;break;case ui:l=or;break;case`scroll`:case`scrollend`:l=Un;break;case`wheel`:l=V;break;case`copy`:case`cut`:case`paste`:l=Qn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=rr;break;case`submit`:l=ir;break;case`toggle`:case`beforetoggle`:l=sr}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=On(m,p),g!=null&&d.push(qf(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),s.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(l=e===`mouseover`||e===`pointerover`,c=e===`mouseout`||e===`pointerout`,l&&n!==xn&&(u=n.relatedTarget||n.fromElement)&&(Pt(u)||u[Et]))break a;(c||l)&&(u=i.window===i?i:(l=i.ownerDocument)?l.defaultView||l.parentWindow:window,c?(l=n.relatedTarget||n.toElement,c=r,l=l?Pt(l):null,l!==null&&(f=o(l),d=l.tag,l!==f||d!==5&&d!==27&&d!==6)&&(l=null)):(c=null,l=r),c!==l&&(d=Jn,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=rr,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=c==null?u:It(c),h=l==null?u:It(l),u=new d(g,m+`leave`,c,n,i),u.target=f,u.relatedTarget=h,g=null,Pt(i)===r&&(d=new d(p,m+`enter`,l,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,d=c&&l?E(c,l,Yf):null,c!==null&&Xf(s,u,c,d,!1),l!==null&&f!==null&&Xf(s,f,l,d,!0)))}a:{if(c=r?It(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var _=Dr;else if(xr(c)){if(Or)_=Lr;else{_=Fr;var v=Pr}}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&gn(r.elementType)&&(_=Dr):_=Ir;if(_&&=_(e,r)){Sr(s,_,n,i);break a}v&&v(e,c,r)}switch(v=r?It(r):window,e){case`focusin`:(xr(v)||v.contentEditable===`true`)&&(Jr=v,Yr=r,Xr=null);break;case`focusout`:Xr=Yr=Jr=null;break;case`mousedown`:Zr=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Zr=!1,Qr(s,n,i);break;case`selectionchange`:if(qr)break;case`keydown`:case`keyup`:Qr(s,n,i)}var y;if(lr)b:{switch(e){case`compositionstart`:var b=`onCompositionStart`;break b;case`compositionend`:b=`onCompositionEnd`;break b;case`compositionupdate`:b=`onCompositionUpdate`;break b}b=void 0}else _r?hr(e,n)&&(b=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(b=`onCompositionStart`);b&&(fr&&n.locale!==`ko`&&(_r||b!==`onCompositionStart`?b===`onCompositionEnd`&&_r&&(y=Fn()):(Mn=i,Nn=`value`in Mn?Mn.value:Mn.textContent,_r=!0)),v=Jf(r,b),0<v.length&&(b=new $n(b,e,null,n,i),s.push({event:b,listeners:v}),y?b.data=y:(y=gr(n),y!==null&&(b.data=y)))),(y=dr?vr(e,n):yr(e,n))&&(b=Jf(r,`onBeforeInput`),0<b.length&&(v=new $n(`onBeforeInput`,`beforeinput`,null,n,i),s.push({event:v,listeners:b}),v.data=y)),If(s,e,r,n,i)}Vf(s,t)})}function qf(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Jf(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=On(e,n),i!=null&&r.unshift(qf(e,i,a)),i=On(e,t),i!=null&&r.push(qf(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Yf(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Xf(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=On(n,a),l!=null&&o.unshift(qf(n,l,c))):i||(l=On(n,a),l!=null&&o.push(qf(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var Zf=/\r\n?/g,Qf=/\u0000|\uFFFD/g;function $f(e){return(typeof e==`string`?e:``+e).replace(Zf,`
9
- `).replace(Qf,``)}function ep(e,t){return t=$f(t),$f(e)===t}function $(e,t,n,r,a,o){switch(n){case`children`:if(typeof r==`string`)t===`body`||t===`textarea`&&r===``||fn(e,r);else if(typeof r==`number`||typeof r==`bigint`)t!==`body`&&fn(e,``+r);else return;break;case`className`:Xt(e,`class`,r);break;case`tabIndex`:Xt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Xt(e,n,r);break;case`style`:hn(e,r,o);return;case`data`:if(t!==`object`){Xt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)||r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=yn(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}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,a.name,a,null),$(e,t,`formEncType`,a.formEncType,a,null),$(e,t,`formMethod`,a.formMethod,a,null),$(e,t,`formTarget`,a.formTarget,a,null)):($(e,t,`encType`,a.encType,a,null),$(e,t,`method`,a.method,a,null),$(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=yn(r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=bn);return;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;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));o?.__html!==n&&(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=yn(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`credentialless`: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`:Q(`beforetoggle`,e),Q(`toggle`,e),Yt(e,`popover`,r);break;case`xlinkActuate`:Zt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Zt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Zt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Zt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Zt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Zt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Zt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Zt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Zt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:Yt(e,`is`,r);break;case`innerText`:case`textContent`:return;default:if(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)n=_n.get(n)||n,Yt(e,n,r);else return}L=!0}function tp(e,t,n,r,a,o){switch(n){case`style`:hn(e,r,o);return;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));o?.__html!==n&&(e.innerHTML=n)}}break;case`children`:if(typeof r==`string`)fn(e,r);else if(typeof r==`number`||typeof r==`bigint`)fn(e,``+r);else return;break;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;case`onClick`:r!=null&&(e.onclick=bn);return;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:return;case`innerText`:case`textContent`:return;default:if(!Vt.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),o=n.slice(2,a?n.length-7:void 0),t=e[Tt]||null,t=t==null?null:t[n],typeof t==`function`&&e.removeEventListener(o,t,a),typeof r==`function`)){typeof t!=`function`&&t!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(o,r,a);break a}L=!0,n in e?e[n]=r:!0===r?e.setAttribute(n,``):Yt(e,n,r)}return}L=!0}function np(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Q(`error`,e),Q(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,o,s,n,null)}}a&&$(e,t,`srcSet`,n.srcSet,n,null),r&&$(e,t,`src`,n.src,n,null);return;case`input`:Q(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:$(e,t,r,d,n,null)}}sn(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Q(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:$(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&ln(e,!!r,n,!0):ln(e,!!r,t,!1);return;case`textarea`:for(s in Q(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:$(e,t,s,c,n,null)}dn(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:$(e,t,l,r,n,null)}return;case`dialog`:Q(`beforetoggle`,e),Q(`toggle`,e),Q(`cancel`,e),Q(`close`,e);break;case`iframe`:case`object`:Q(`load`,e);break;case`video`:case`audio`:for(r=0;r<zf.length;r++)Q(zf[r],e);break;case`image`:Q(`error`,e),Q(`load`,e);break;case`details`:Q(`toggle`,e);break;case`embed`:case`source`:case`link`:Q(`error`,e),Q(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,u,r,n,null)}return;default:if(gn(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&tp(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&$(e,t,c,r,n,null))}var rp={};function ip(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||$(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:m!==f&&(L=!0),o=m;break;case`name`:m!==f&&(L=!0),a=m;break;case`checked`:m!==f&&(L=!0),u=m;break;case`defaultChecked`:m!==f&&(L=!0),d=m;break;case`value`:m!==f&&(L=!0),s=m;break;case`defaultValue`:m!==f&&(L=!0),c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&$(e,t,p,m,r,f)}}on(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||$(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:o!==l&&(L=!0),p=o;break;case`defaultValue`:o!==l&&(L=!0),c=o;break;case`multiple`:o!==l&&(L=!0),s=o;default:o!==l&&$(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?ln(e,!!n,n?[]:``,!1):ln(e,!!n,t,!0)):ln(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:$(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:a!==o&&(L=!0),p=a;break;case`defaultValue`:a!==o&&(L=!0),m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&$(e,t,s,a,r,o)}un(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:$(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:p!==m&&(L=!0),e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:$(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&$(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:$(e,t,u,p,r,m)}return;default:if(gn(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&tp(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||tp(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&$(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||$(e,t,f,p,r,m)}function ap(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function op(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&ap(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var sp=null,cp=null;function lp(e){return e.nodeType===9?e:e.ownerDocument}function up(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function dp(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function fp(e,t,n,r){return n=lp(n).createElement(e),n[wt]=r,n[Tt]=t,np(n,e,t),Rt(n),n}function pp(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var mp=null;function hp(){var e=window.event;return e&&e.type===`popstate`?e!==mp&&(mp=e,!0):(mp=null,!1)}var gp=typeof setTimeout==`function`?setTimeout:void 0,_p=typeof clearTimeout==`function`?clearTimeout:void 0,vp=typeof Promise==`function`?Promise:void 0,yp=typeof requestAnimationFrame==`function`?requestAnimationFrame:gp,bp=typeof queueMicrotask==`function`?queueMicrotask:vp===void 0?gp:function(e){return vp.resolve(null).then(e).catch(xp)};function xp(e){setTimeout(function(){throw e})}function Sp(e){return e===`head`}function Cp(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Hh(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)_m(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,_m(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[jt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&_m(e.ownerDocument.body)}n=i}while(n);Hh(t)}function wp(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function Tp(e,t,n){if(t=CSS.escape(t)===t?t:`r-`+btoa(t).replace(/=/g,``),e.style.viewTransitionName=t,n!=null&&(e.style.viewTransitionClass=n),n=getComputedStyle(e),n.display===`inline`){if(t=e.getClientRects(),t.length===1)var r=1;else for(var i=r=0;i<t.length;i++){var a=t[i];0<a.width&&0<a.height&&r++}r===1&&(e=e.style,e.display=t.length===1?`inline-block`:`block`,e.marginTop=`-`+n.paddingTop,e.marginBottom=`-`+n.paddingBottom)}}function Ep(e,t){e=e.style,t=t.style;var n=t==null?null:t.hasOwnProperty(`viewTransitionName`)?t.viewTransitionName:t.hasOwnProperty(`view-transition-name`)?t[`view-transition-name`]:null;e.viewTransitionName=n==null||typeof n==`boolean`?``:(``+n).trim(),n=t==null?null:t.hasOwnProperty(`viewTransitionClass`)?t.viewTransitionClass:t.hasOwnProperty(`view-transition-class`)?t[`view-transition-class`]:null,e.viewTransitionClass=n==null||typeof n==`boolean`?``:(``+n).trim(),e.display===`inline-block`&&(t==null?e.display=e.margin=``:(n=t.display,e.display=n==null||typeof n==`boolean`?``:n,n=t.margin,n==null?(n=t.hasOwnProperty(`marginTop`)?t.marginTop:t[`margin-top`],e.marginTop=n==null||typeof n==`boolean`?``:n,t=t.hasOwnProperty(`marginBottom`)?t.marginBottom:t[`margin-bottom`],e.marginBottom=t==null||typeof t==`boolean`?``:t):e.margin=n))}function Dp(e,t,n){return n=n.ownerDocument.defaultView,{rect:e,abs:t.position===`absolute`||t.position===`fixed`,clip:t.clipPath!==`none`||t.overflow!==`visible`||t.filter!==`none`||t.mask!==`none`||t.mask!==`none`||t.borderRadius!==`0px`,view:0<=e.bottom&&0<=e.right&&e.top<=n.innerHeight&&e.left<=n.innerWidth}}function Op(e){return Dp(e.getBoundingClientRect(),getComputedStyle(e),e)}function kp(e){var t=e.getBoundingClientRect();t=new DOMRect(t.x+2e4,t.y+2e4,t.width,t.height);var n=getComputedStyle(e);return Dp(t,n,e)}function Ap(e){return e.documentElement.clientHeight}function jp(e){this.addEventListener(`load`,e),this.addEventListener(`error`,e)}function Mp(e,t,n,r,i,a,o,s,c){var l=t.nodeType===9?t:t.ownerDocument;try{var u=l.startViewTransition({update:function(){var t=l.defaultView,n=t.navigation&&t.navigation.transition,o=l.fonts.status;r();var s=[];if(o===`loaded`&&(Ap(l),l.fonts.status===`loading`&&s.push(l.fonts.ready)),o=s.length,e!==null)for(var c=e.suspenseyImages,u=0,d=0;d<c.length;d++){var f=c[d];if(!f.complete){var p=f.getBoundingClientRect();if(0<p.bottom&&0<p.right&&p.top<t.innerHeight&&p.left<t.innerWidth){if(u+=Xm(f),u>$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0<s.length)return t=Promise.race([Promise.all(s),new Promise(function(e){return setTimeout(e,500)})]).then(i,i),(n?Promise.allSettled([n.finished,t]):t).then(a,a);if(i(),n)return n.finished.then(a,a);a()},types:n});l.__reactViewTransition=u;var d=[];return u.ready.then(function(){for(var e=l.documentElement.getAnimations({subtree:!0}),t=0;t<e.length;t++){var n=e[t],r=n.effect,i=r.pseudoElement;if(i!=null&&i.startsWith(`::view-transition`)){d.push(n),n=r.getKeyframes();for(var a=i=void 0,s=!0,c=0;c<n.length;c++){var u=n[c],f=u.width;if(i===void 0)i=f;else if(i!==f){s=!1;break}if(f=u.height,a===void 0)a=f;else if(a!==f){s=!1;break}delete u.width,delete u.height,u.transform===`none`&&delete u.transform}s&&i!==void 0&&a!==void 0&&(r.setKeyframes(n),s=getComputedStyle(r.target,r.pseudoElement),s.width!==i||s.height!==a)&&(s=n[0],s.width=i,s.height=a,s=n[n.length-1],s.width=i,s.height=a,r.setKeyframes(n))}}o()},function(e){l.__reactViewTransition===u&&(l.__reactViewTransition=null);try{if(typeof e==`object`&&e)switch(e.name){case`InvalidStateError`:(e.message===`View transition was skipped because document visibility state is hidden.`||e.message===`Skipping view transition because document visibility state has become hidden.`||e.message===`Skipping view transition because viewport size changed.`||e.message===`Transition was aborted because of invalid state`)&&(e=null)}e!==null&&c(e)}finally{r(),i(),o()}}),u.finished.finally(function(){for(var e=0;e<d.length;e++)d[e].cancel();l.__reactViewTransition===u&&(l.__reactViewTransition=null),s()}),u}catch{return r(),i(),o(),null}}function Np(e,t){this._scope=document.documentElement,this._selector=`::view-transition-`+e+`(`+t+`)`}Np.prototype.animate=function(e,t){return t=typeof t==`number`?{duration:t}:D({},t),t.pseudoElement=this._selector,this._scope.animate(e,t)},Np.prototype.getAnimations=function(){for(var e=this._scope,t=this._selector,n=e.getAnimations({subtree:!0}),r=[],i=0;i<n.length;i++){var a=n[i].effect;a!==null&&a.target===e&&a.pseudoElement===t&&r.push(n[i])}return r},Np.prototype.getComputedStyle=function(){return getComputedStyle(this._scope,this._selector)};function Pp(e){return{name:e,group:new Np(`group`,e),imagePair:new Np(`image-pair`,e),old:new Np(`old`,e),new:new Np(`new`,e)}}function Fp(e){this._fragmentFiber=e,this._observers=this._eventListeners=null}Fp.prototype.addEventListener=function(e,t,n){var r=null,i=null;if(!(n!=null&&typeof n!=`boolean`&&(r=n.signal||null,r!==null&&r.aborted))){this._eventListeners===null&&(this._eventListeners=[]);var a=this._eventListeners;if(Bp(a,e,t,n)===-1){var o=this,s=t;n!=null&&typeof n!=`boolean`&&!0===n.once&&(s=function(r){o.removeEventListener(e,t,n),typeof t==`function`?t.call(this,r):t.handleEvent(r)}),r!==null&&(i=o.removeEventListener.bind(o,e,t,n),r.addEventListener(`abort`,i,{once:!0}),i=r.removeEventListener.bind(r,`abort`,i)),r=Rp(n),a.push({type:e,listener:t,optionsOrUseCapture:n,attachedListener:s,cleanup:i}),m(this._fragmentFiber.child,!1,Ip,e,s,r)}this._eventListeners=a}};function Ip(e,t,n,r){return b(e).addEventListener(t,n,r),!1}Fp.prototype.removeEventListener=function(e,t,n){var r=this._eventListeners;if(r!==null&&(t=Bp(r,e,t,n),t!==-1)){var i=r[t];n=i.attachedListener;var a=i.cleanup;i=Rp(i.optionsOrUseCapture),m(this._fragmentFiber.child,!1,Lp,e,n,i),r.splice(t,1),a!==null&&a()}};function Lp(e,t,n,r){return b(e).removeEventListener(t,n,r),!1}function Rp(e){return e!=null&&typeof e!=`boolean`&&(!0===e.once||e.signal instanceof AbortSignal)?{capture:e.capture,passive:e.passive}:e}function zp(e){return e==null?`c=0`:typeof e==`boolean`?`c=`+(e?`1`:`0`):`c=`+(e.capture?`1`:`0`)}function Bp(e,t,n,r){if(e.length===0)return-1;r=zp(r);for(var i=0;i<e.length;i++){var a=e[i];if(a.type===t&&a.listener===n&&zp(a.optionsOrUseCapture)===r)return i}return-1}Fp.prototype.dispatchEvent=function(e){var t=g(this._fragmentFiber);if(t===null)return!0;t=b(t);var n=this._eventListeners;if(n!==null&&0<n.length||!e.bubbles){var r=t.nodeType===9?t.createComment(``):document.createTextNode(``);if(n)for(var i=0;i<n.length;i++){var a=n[i];r.addEventListener(a.type,a.attachedListener,Rp(a.optionsOrUseCapture))}if(t.appendChild(r),e=r.dispatchEvent(e),n)for(i=0;i<n.length;i++)a=n[i],r.removeEventListener(a.type,a.attachedListener,Rp(a.optionsOrUseCapture));return t.removeChild(r),e}return t.dispatchEvent(e)},Fp.prototype.focus=function(e){m(this._fragmentFiber.child,!0,Vp,e,void 0,void 0)};function Vp(e,t){return e.tag!==6&&(e=b(e),pm(e,t))}Fp.prototype.focusLast=function(e){var t=[];m(this._fragmentFiber.child,!0,Hp,t,void 0,void 0);for(var n=t.length-1;0<=n&&!Vp(t[n],e);n--);};function Hp(e,t){return t.push(e),!1}Fp.prototype.blur=function(){var e=g(this._fragmentFiber);e!==null&&(e=b(e),e=lp(e).activeElement,e!==null&&m(this._fragmentFiber.child,!1,Up,e,void 0,void 0))};function Up(e,t){return e.tag!==6&&(e=b(e),e===t||e.contains(t)?(t.blur(),!0):!1)}Fp.prototype.observeUsing=function(e){this._observers===null&&(this._observers=new Set),this._observers.add(e),m(this._fragmentFiber.child,!1,Wp,e,void 0,void 0)};function Wp(e,t){return e.tag===6||(e=b(e),t.observe(e)),!1}Fp.prototype.unobserveUsing=function(e){var t=this._observers;if(t!==null&&t.has(e)){t.delete(e),m(this._fragmentFiber.child,!1,Gp,e,void 0,void 0);for(var n=t=0;n<Kp.length;n++){var r=Kp[n];r.fragmentInstance===this&&r.observer===e?e.unobserve(r.instance):Kp[t++]=r}Kp.length=t}};function Gp(e,t){return e.tag===6||(e=b(e),t.unobserve(e)),!1}var Kp=[],qp=!1;function Jp(e,t,n){Kp.push({fragmentInstance:e,observer:t,instance:n}),qp||(qp=!0,mm(function(){qp=!1;var e=Kp;Kp=[];for(var t=0;t<e.length;t++){var n=e[t];n.observer.unobserve(n.instance)}}))}Fp.prototype.getClientRects=function(){var e=[];return m(this._fragmentFiber.child,!1,Yp,e,void 0,void 0),e};function Yp(e,t){if(e.tag===6){e=e.stateNode;var n=e.ownerDocument.createRange();n.selectNodeContents(e),t.push.apply(t,n.getClientRects())}else e=b(e),t.push.apply(t,e.getClientRects());return!1}Fp.prototype.getRootNode=function(e){var t=g(this._fragmentFiber);return t===null?this:b(t).getRootNode(e)},Fp.prototype.compareDocumentPosition=function(e){var t=g(this._fragmentFiber);if(t===null)return Node.DOCUMENT_POSITION_DISCONNECTED;var n=[];m(this._fragmentFiber.child,!1,Hp,n,void 0,void 0);var r=b(t);if(n.length===0){if(n=r,_(this._fragmentFiber)){a:{for(t=this._fragmentFiber.return;t!==null;){if(t.tag===4){t=t.stateNode.containerInfo;break a}if(t.tag===3||t.tag===5||t.tag===27)break;t=t.return}t=null}t!=null&&(n=t)}t=this._fragmentFiber;var i=r=n.compareDocumentPosition(e);return n===e?i=Node.DOCUMENT_POSITION_CONTAINS:r&Node.DOCUMENT_POSITION_CONTAINED_BY&&(n=v(t)[1],n===null?i=Node.DOCUMENT_POSITION_PRECEDING:(e=b(n).compareDocumentPosition(e),i=e===0||e&Node.DOCUMENT_POSITION_FOLLOWING?Node.DOCUMENT_POSITION_FOLLOWING:Node.DOCUMENT_POSITION_PRECEDING)),i|=Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC}t=b(n[0]),i=b(n[n.length-1]);var a=_(this._fragmentFiber)?t.parentElement:r;if(a==null)return Node.DOCUMENT_POSITION_DISCONNECTED;r=a.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY,a=a.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_CONTAINED_BY;var o=t.compareDocumentPosition(e),s=i.compareDocumentPosition(e),c=o&Node.DOCUMENT_POSITION_CONTAINED_BY||s&Node.DOCUMENT_POSITION_CONTAINED_BY;return s=r&&a&&o&Node.DOCUMENT_POSITION_FOLLOWING&&s&Node.DOCUMENT_POSITION_PRECEDING,t=r&&t===e||a&&i===e||c||s?Node.DOCUMENT_POSITION_CONTAINED_BY:!r&&t===e||!a&&i===e?Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:o,t&Node.DOCUMENT_POSITION_DISCONNECTED||t&Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC||Xp(t,this._fragmentFiber,n[0],n[n.length-1],e)?t:Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC};function Xp(e,t,n,r,i){var a=Pt(i);if(e&Node.DOCUMENT_POSITION_CONTAINED_BY){if(n=!!a)a:{for(;a!==null;){if(a.tag===7&&(a===t||a.alternate===t)){n=!0;break a}a=a.return}n=!1}return n}if(e&Node.DOCUMENT_POSITION_CONTAINS){if(a===null)return a=i.ownerDocument,i===a||i===a.documentElement||i===a.body;a:{for(a=t,t=g(t);a!==null;){if(!(a.tag!==5&&a.tag!==3&&a.tag!==27||a!==t&&a.alternate!==t)){a=!0;break a}a=a.return}a=!1}return a}return e&Node.DOCUMENT_POSITION_PRECEDING?((t=!!a)&&!(t=a===n)&&(t=E(n,a,T),t===null?t=!1:(m(t,!0,C,a,n),a=x,x=null,t=a!==null)),t):e&Node.DOCUMENT_POSITION_FOLLOWING?((t=!!a)&&!(t=a===r)&&(t=E(r,a,T),t===null?t=!1:(m(t,!0,w,a,r),a=x,S=x=null,t=a!==null)),t):!1}function Zp(e,t){var n=e.ownerDocument.createRange();n.selectNodeContents(e),e=n.getBoundingClientRect(),window.scrollTo(window.scrollX+e.left,t?window.scrollY+e.top:window.scrollY+e.bottom-window.innerHeight)}Fp.prototype.scrollIntoView=function(e){if(typeof e==`object`)throw Error(i(566));var t=[];m(this._fragmentFiber.child,!1,Hp,t,void 0,void 0);var n=!1!==e;if(t.length===0){var r=v(this._fragmentFiber);if(r=n?r[1]||r[0]||g(this._fragmentFiber):r[0]||r[1],r===null)return;if(r.tag===6){e=b(r),Zp(e,n);return}if(r=b(r),r.nodeType!==9){if(r.nodeType===11){n=`host`in r?r.host:null,n!==null&&n.scrollIntoView(e);return}r.scrollIntoView(e)}}for(r=n?t.length-1:0;r!==(n?-1:t.length);){var a=t[r];a.tag===6?(a=b(a),Zp(a,n)):b(a).scrollIntoView(e),r+=n?-1:1}};function Qp(e,t){return e=b(e),$p(e,t),!1}function $p(e,t){e.reactFragments??=new Set,e.reactFragments.add(t)}function em(e,t){var n=t._eventListeners;if(n!==null)for(var r=0;r<n.length;r++){var i=n[r];e.addEventListener(i.type,i.attachedListener,Rp(i.optionsOrUseCapture))}e.nodeType!==3&&(n=t._observers,n!==null&&n.forEach(function(n){for(var r=0,i=0;i<Kp.length;i++){var a=Kp[i];(a.fragmentInstance!==t||a.observer!==n||a.instance!==e)&&(Kp[r++]=a)}Kp.length=r,n.observe(e)}),$p(e,t))}function tm(e,t){var n=t._eventListeners;if(n!==null)for(var r=0;r<n.length;r++){var i=n[r];e.removeEventListener(i.type,i.attachedListener,Rp(i.optionsOrUseCapture))}e.nodeType!==3&&(n=t._observers,n!==null&&n.forEach(function(n){typeof n.rootMargin==`string`?Jp(t,n,e):n.unobserve(e)}),e.reactFragments!=null&&e.reactFragments.delete(t))}function nm(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:nm(n),Nt(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function rm(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[jt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=lm(e.nextSibling),e===null)break}return null}function im(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=lm(e.nextSibling),e===null))return null;return e}function am(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=lm(e.nextSibling),e===null))return null;return e}function om(e){return e.data===`$?`||e.data===`$~`}function sm(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function cm(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function lm(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var um=null;function dm(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return lm(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function fm(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function pm(e,t){function n(){r=!0}if(e.ownerDocument.activeElement===e)return!0;var r=!1;try{e.ownerDocument.addEventListener(`focus`,n,!0),(e.focus||HTMLElement.prototype.focus).call(e,t)}finally{e.ownerDocument.removeEventListener(`focus`,n,!0)}return r}function mm(e){yp(function(){yp(function(t){return e(t)})})}function hm(e,t,n){switch(t=lp(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function gm(e,t,n){for(var r in n){var i=n[r];n.hasOwnProperty(r)&&i!=null&&$(e,t,r,null,rp,i)}n.dangerouslySetInnerHTML!=null&&(e.textContent=``),e.onclick===bn&&(e.onclick=null),Nt(e)}function _m(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Nt(e)}var vm=new Map,ym=new Set;function bm(e){if(typeof e.getRootNode==`function`){var t=e.getRootNode();if(t.nodeType===9||t.nodeType===11)return t}return e.nodeType===9?e:e.ownerDocument}var xm=M.d;M.d={f:Sm,r:Cm,D:Em,C:Dm,L:Om,m:km,X:jm,S:Am,M:Mm};function Sm(){var e=xm.f(),t=zd();return e||t}function Cm(e){var t=Ft(e);t!==null&&t.tag===5&&t.type===`form`?tc(t):xm.r(e)}var wm=typeof document>`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=an(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Rt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+an(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+an(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+an(n.imageSizes)+`"]`)):i+=`[href="`+an(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=D({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Mt]=!0,o.onload=o.onerror=function(){zt(o)}),Rt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+an(r)+`"][href="`+an(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=D({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Rt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Lt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=D({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Rt(c),np(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,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=D({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=D({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=De.current)?bm(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`?(n=Pm(n.href),t=Lt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,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=Pm(n.href);var o=Lt(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(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,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`?(n=Rm(n),t=Lt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+an(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return D({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Mt]){r.loading=1;return}}else t=e.createElement(`link`),t[Mt]=!0,t.onload=t.onerror=zt.bind(null,t),np(t,`link`,n),Rt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+an(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+an(n.href)+`"]`);if(r)return t.instance=r,Rt(r),r;var a=D({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Rt(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,Rt(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),Rt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,Rt(a),a):(r=n,(a=vm.get(o))&&(r=D({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Rt(a),np(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,Vm(r,n.precedence,e));return t.instance}function Vm(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<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Hm(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Um(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Wm=null;function Gm(e,t,n){if(Wm===null){var r=new Map,i=Wm=new Map;i.set(n,r)}else i=Wm,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[jt]||a[wt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Km(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function qm(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 Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(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=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Rt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Rt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(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=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&ah(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&$m===0&&($m=62500*op());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&ah(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=nh.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var sh={$$typeof:oe,Provider:null,Consumer:null,_currentValue:be,_currentValue2:be,_threadCount:0};function ch(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=gt(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.hiddenUpdates=gt(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.transitionTypes=null,this.incompleteTransitions=new Map}function lh(e,t,n,r,i,a,o,s,c,l,u,d){return e=new ch(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=Ai(3,null,null,t),e.current=a,a.stateNode=e,t=Aa(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},po(a),e}function uh(e){return e?(e=Oi,e):Oi}function dh(e,t,n,r,i,a){i=uh(i),r.context===null?r.context=i:r.pendingContext=i,r=ho(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=go(e,r,t),n!==null&&(Pd(n,e,t),_o(n,e,t))}function fh(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ph(e,t){fh(e,t),(e=e.alternate)&&fh(e,t)}function mh(e){if(e.tag===13||e.tag===31){var t=Ti(e,67108864);t!==null&&Pd(t,e,67108864),ph(e,67108864)}}function hh(e){if(e.tag===13||e.tag===31){var t=jd();t=F(t);var n=Ti(e,t);n!==null&&Pd(n,e,t),ph(e,t)}}var gh=!0;function _h(e,t,n,r){var i=j.T;j.T=null;var a=M.p;try{M.p=2,yh(e,t,n,r)}finally{M.p=a,j.T=i}}function vh(e,t,n,r){var i=j.T;j.T=null;var a=M.p;try{M.p=8,yh(e,t,n,r)}finally{M.p=a,j.T=i}}function yh(e,t,n,r){if(gh){var i=bh(r);if(i===null)Kf(e,t,r,xh,n),Mh(e,r);else if(Ph(i,e,t,n,r))r.stopPropagation();else if(Mh(e,r),t&4&&-1<jh.indexOf(e)){for(;i!==null;){var a=Ft(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=ut(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-rt(o);s.entanglements[1]|=c,o&=~c}Ef(a),!(q&6)&&(gd=Ge()+500,Df(0,!1))}}break;case 31:case 13:s=Ti(a,2),s!==null&&Pd(s,a,2),zd(),ph(a,2)}if(a=bh(r),a===null&&Kf(e,t,r,xh,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Kf(e,t,r,null,n)}}function bh(e){return e=Sn(e),Sh(e)}var xh=null;function Sh(e){if(xh=null,e=Pt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return xh=e,null}function Ch(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`fullscreenerror`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`resize`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Ke()){case qe:return 2;case Je:return 8;case Ye:case Xe:return 32;case Ze:return 268435456;default:return 32}default:return 32}}var wh=!1,Th=null,Eh=null,Dh=null,Oh=new Map,kh=new Map,Ah=[],jh=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Mh(e,t){switch(e){case`focusin`:case`focusout`:Th=null;break;case`dragenter`:case`dragleave`:Eh=null;break;case`mouseover`:case`mouseout`:Dh=null;break;case`pointerover`:case`pointerout`:Oh.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:kh.delete(t.pointerId)}}function Nh(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=Ft(t),t!==null&&mh(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Ph(e,t,n,r,i){switch(t){case`focusin`:return Th=Nh(Th,e,t,n,r,i),!0;case`dragenter`:return Eh=Nh(Eh,e,t,n,r,i),!0;case`mouseover`:return Dh=Nh(Dh,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return Oh.set(a,Nh(Oh.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,kh.set(a,Nh(kh.get(a)||null,e,t,n,r,i)),!0}return!1}function Fh(e){var t=Pt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,St(e.priority,function(){hh(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,St(e.priority,function(){hh(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ih(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=bh(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);xn=r,n.target.dispatchEvent(r),xn=null}else return t=Ft(n),t!==null&&mh(t),e.blockedOn=n,!1;t.shift()}return!0}function Lh(e,t,n){Ih(e)&&n.delete(t)}function Rh(){wh=!1,Th!==null&&Ih(Th)&&(Th=null),Eh!==null&&Ih(Eh)&&(Eh=null),Dh!==null&&Ih(Dh)&&(Dh=null),Oh.forEach(Lh),kh.forEach(Lh)}function zh(e,n){e.blockedOn===n&&(e.blockedOn=null,wh||(wh=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Rh)))}var Bh=null;function Vh(e){Bh!==e&&(Bh=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Bh===e&&(Bh=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(Sh(r||n)===null)continue;break}var a=Ft(n);a!==null&&(e.splice(t,3),t-=3,$s(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Hh(e){function t(t){return zh(t,e)}Th!==null&&zh(Th,e),Eh!==null&&zh(Eh,e),Dh!==null&&zh(Dh,e),Oh.forEach(t),kh.forEach(t);for(var n=0;n<Ah.length;n++){var r=Ah[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Ah.length&&(n=Ah[0],n.blockedOn===null);)Fh(n),n.blockedOn===null&&Ah.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[Tt]||null;if(typeof a==`function`)o||Vh(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[Tt]||null)s=o.formAction;else if(Sh(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Vh(n)}}}function Uh(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Wh(e){this._internalRoot=e}Gh.prototype.render=Wh.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;dh(n,jd(),e,t,null,null)},Gh.prototype.unmount=Wh.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;dh(e.current,2,null,e,null,null),zd(),t[Et]=null}};function Gh(e){this._internalRoot=e}Gh.prototype.unstable_scheduleHydration=function(e){if(e){var t=xt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ah.length&&t!==0&&t<Ah[n].priority;n++);Ah.splice(n,0,e),n===0&&Fh(e)}};var Kh=n.version;if(Kh!==`19.3.0`)throw Error(i(527,Kh,`19.3.0`));M.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=u(t),e=e===null?null:f(e),e=e===null?null:e.stateNode,e};var qh={bundleType:0,version:`19.3.0`,rendererPackageName:`react-dom`,currentDispatcherRef:j,reconcilerVersion:`19.3.0`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Jh=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Jh.isDisabled&&Jh.supportsFiber)try{et=Jh.inject(qh),tt=Jh}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=Sc,s=Cc,c=wc;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=lh(e,1,!1,null,null,n,r,null,o,s,c,Uh),e[Et]=t.current,Wf(e),new Wh(t)}})),_=o(((e,t)=>{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=d(),y=_(),b=`ccdesk-token`;function x(){let e=/token=([\w-]+)/.exec(location.hash);if(e?.[1]){try{sessionStorage.setItem(b,e[1])}catch{}return history.replaceState(null,``,location.pathname+location.search),e[1]}try{return sessionStorage.getItem(b)??``}catch{return``}}var S=x(),C=class extends Error{status;constructor(e,t){super(e),this.status=t}};async function w(e,t,n){let r=await fetch(e,{...n?{signal:n}:{},method:t?.method??`GET`,headers:{"x-ccdesk-token":S,...t?{"content-type":`application/json`}:{}},...t?{body:JSON.stringify(t.body)}:{}}),i=await r.json().catch(()=>null);if(!r.ok)throw new C(typeof i==`object`&&i&&`error`in i?String(i.error):r.statusText,r.status);return i}var T={overview:()=>w(`/api/overview`),directory:e=>w(`/api/directory?path=${encodeURIComponent(e)}`),usage:(e,t)=>w(`/api/usage`,{method:`POST`,body:{path:e,rules:t}}),previewMemory:(e,t)=>w(`/api/memory/preview`,{method:`POST`,body:{action:e,path:t}}),changeMemory:(e,t,n)=>w(`/api/memory/change`,{method:`POST`,body:{action:e,path:t,revision:n}}),open:e=>w(`/api/open`,{method:`POST`,body:{path:e}}),previewSettings:e=>w(`/api/settings/preview`,{method:`POST`,body:e}),saveSettings:(e,t)=>w(`/api/settings/save`,{method:`POST`,body:{...e,revision:t}}),previewPermission:e=>w(`/api/permissions/preview`,{method:`POST`,body:e}),savePermission:(e,t)=>w(`/api/permissions/save`,{method:`POST`,body:{...e,revision:t}}),watch:(e,t,n)=>w(`/api/watch?dir=${encodeURIComponent(e)}&since=${t}`,void 0,n),pathTest:(e,t)=>w(`/api/path-test?dir=${encodeURIComponent(e)}&file=${encodeURIComponent(t)}`),backups:e=>w(`/api/backups?limit=50${e?`&before=${encodeURIComponent(e)}`:``}`),previewRestore:e=>w(`/api/backups/preview`,{method:`POST`,body:{id:e}}),restore:(e,t)=>w(`/api/backups/restore`,{method:`POST`,body:{id:e,revision:t}})};function E(e){return e===``?[]:e.replace(/\n$/,``).split(`
10
- `)}var D=4e6;function ee(e,t){let n=E(e),r=E(t),i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i++;let a=0;for(;a<n.length-i&&a<r.length-i&&n[n.length-1-a]===r[r.length-1-a];)a++;let o=e=>({kind:`same`,text:e});return[...n.slice(0,i).map(o),...te(n.slice(i,n.length-a),r.slice(i,r.length-a)),...n.slice(n.length-a).map(o)]}function te(e,t){if((e.length+1)*(t.length+1)>D)return[...e.map(e=>({kind:`remove`,text:e})),...t.map(e=>({kind:`add`,text:e}))];let n=t.length+1,r=new Int32Array((e.length+1)*n),i=(e,t)=>r[e*n+t]??0;for(let a=e.length-1;a>=0;a--)for(let o=t.length-1;o>=0;o--)r[a*n+o]=e[a]===t[o]?i(a+1,o+1)+1:Math.max(i(a+1,o),i(a,o+1));let a=[],o=0,s=0;for(;o<e.length||s<t.length;)o<e.length&&s<t.length&&e[o]===t[s]?(a.push({kind:`same`,text:e[o]??``}),o++,s++):s<t.length&&(o===e.length||i(o,s+1)>i(o+1,s))?(a.push({kind:`add`,text:t[s]??``}),s++):(a.push({kind:`remove`,text:e[o]??``}),o++);return a}function ne(e,t=3){let n=e.map(e=>e.kind===`same`?1/0:0);for(let t=1;t<e.length;t++)n[t]=Math.min(n[t]??0,(n[t-1]??0)+1);for(let t=e.length-2;t>=0;t--)n[t]=Math.min(n[t]??0,(n[t+1]??0)+1);let r=[];return e.forEach((e,i)=>{if((n[i]??0)<=t){r.push(e);return}let a=r[r.length-1];a?.kind===`skip`?a.count++:r.push({kind:`skip`,count:1})}),r}var re=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})),O=o(((e,t)=>{t.exports=re()}))();function ie({before:e,after:t}){let n=ne(ee(e,t));return(0,O.jsx)(`pre`,{className:`diff`,children:n.map((e,t)=>e.kind===`skip`?(0,O.jsx)(`span`,{className:`diff-skip`,children:` … ${e.count} unchanged ${e.count===1?`line`:`lines`}\n`},t):(0,O.jsxs)(`span`,{className:`diff-${e.kind}`,children:[e.kind===`add`?`+ `:e.kind===`remove`?`- `:` `,e.text,`
11
- `]},t))})}var ae=``;function oe(e){ae=e}function se(e,t){return e.startsWith(`${t}/`)||e.startsWith(`${t}\\`)}function k(e){return ae&&(e===ae||se(e,ae))?`~${e.slice(ae.length)}`:e}function ce(e,t){return se(e,t)?e.slice(t.length+1):k(e)}function le(e){if(!e)return`never`;let t=(Date.now()-new Date(e).getTime())/1e3;return t<90?`just now`:t<3600?`${Math.round(t/60)}m ago`:t<86400?`${Math.round(t/3600)}h ago`:t<5184e3?`${Math.round(t/86400)}d ago`:new Date(e).toLocaleDateString()}function ue(e){return ae?e.replaceAll(`${ae}/`,`~/`).replaceAll(`${ae}\\`,`~\\`):e}var de=/^[A-Za-z_$][\w$@.-]*$/;function fe(e){return typeof e==`string`?e:pe(e)}function pe(e){if(Array.isArray(e))return`[${e.map(pe).join(`, `)}]`;if(e&&typeof e==`object`){let t=Object.entries(e).map(([e,t])=>`${de.test(e)?e:JSON.stringify(e)}: ${pe(t)}`);return t.length?`{ ${t.join(`, `)} }`:`{}`}return JSON.stringify(e)??String(e)}function me(e){return e!==void 0&&/^~[/\\]\.agents[/\\]/.test(k(e))}function he(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}var ge={search:`M7 12.5a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11Zm4-1.5 3.5 3.5`,trash:`M2.5 4h11M6 4V2.5h4V4m-6 0 .7 9.5h6.6L12 4M6.8 7v4m2.4-4v4`,undo:`M5 3 2 6l3 3M2.5 6H10a3.5 3.5 0 0 1 0 7H7`,copy:`M5.5 5.5h8v8h-8zM10.5 5.5v-3h-8v8h3`,link:`M6.5 9.5l3-3M7 4.5l1-1a2.5 2.5 0 0 1 3.5 3.5l-1 1M9 11.5l-1 1A2.5 2.5 0 0 1 4.5 9l1-1`,close:`M3.5 3.5l9 9m0-9-9 9`,plus:`M8 2.5v11M2.5 8h11`,folder:`M1.5 4.5v8h13v-7H8L6.5 3.5h-5z`,warn:`M8 2 1.5 13.5h13L8 2Zm0 4.5v3.5m0 1.5v.5`,command:`M5 5H3.5a1.5 1.5 0 1 1 1.5-1.5V5Zm0 0h6M5 5v6m6-6V3.5A1.5 1.5 0 1 1 12.5 5H11Zm0 0v6m0 0h1.5a1.5 1.5 0 1 1-1.5 1.5V11Zm0 0H5m0 0v1.5A1.5 1.5 0 1 1 3.5 11H5Z`,sun:`M8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm0-9.5V3m0 10v1.5M1.5 8H3m10 0h1.5M3.4 3.4l1 1m7.2 7.2 1 1m0-9.2-1 1m-7.2 7.2-1 1`,eye:`M1.5 8S4 3.5 8 3.5 14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8Zm6.5 2a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z`,code:`M5.5 4.5 2 8l3.5 3.5m5-7L14 8l-3.5 3.5`,open:`M9 2.5h4.5V7m0-4.5L7 9m4.5.5v4h-9v-9h4`,block:`M8 14.5a6.5 6.5 0 1 0 0-13 6.5 6.5 0 0 0 0 13ZM3.4 12.6l9.2-9.2`};function A({name:e}){return(0,O.jsx)(`svg`,{className:`icon`,viewBox:`0 0 16 16`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:(0,O.jsx)(`path`,{d:ge[e]})})}var _e={settings:`Settings changed`,"memory-index":`MEMORY.md changed`,"memory-delete":`Memory deleted`};function ve(e){let t=new Map,n=new Date().toDateString(),r=new Date(Date.now()-864e5).toDateString();for(let i of e){let e=new Date(i.createdAt),a=e.toDateString(),o=a===n?`Today`:a===r?`Yesterday`:e.toLocaleDateString(void 0,{dateStyle:`long`});t.set(o,[...t.get(o)??[],i])}return[...t]}function ye(e){return e instanceof Error?e.message:String(e)}function j({onRestored:e}){let[t,n]=(0,v.useState)(null),[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(null),[s,c]=(0,v.useState)(null),l=e=>o(ye(e)),u=(0,v.useCallback)(()=>{T.backups().then(e=>{n(e.changes),i(e.more)},e=>o(ye(e)))},[]);return(0,v.useEffect)(u,[u]),(0,O.jsxs)(`div`,{className:`page`,children:[(0,O.jsxs)(`header`,{className:`page-head`,children:[(0,O.jsx)(`h1`,{children:`Recent changes`}),(0,O.jsx)(`p`,{className:`lede`,children:`Every file ccdesk changed or deleted, newest first. Each change kept a copy of the file as it was; restoring one backs up the current file first.`})]}),a&&(0,O.jsx)(`p`,{className:`flag bad`,role:`alert`,children:a}),t?.length===0&&(0,O.jsx)(`p`,{className:`tt-empty`,children:`ccdesk has not changed anything yet.`}),ve(t??[]).map(([t,n])=>(0,O.jsxs)(`section`,{className:`change-day`,"aria-label":t,children:[(0,O.jsx)(`h2`,{children:t}),(0,O.jsx)(`ul`,{className:`plain changes`,children:n.map(t=>(0,O.jsxs)(`li`,{className:`change`,children:[(0,O.jsxs)(`div`,{className:`change-row`,children:[(0,O.jsxs)(`span`,{className:`change-what`,children:[_e[t.kind],t.incomplete&&(0,O.jsx)(`span`,{className:`flag warn`,title:`The change stopped halfway; review the restore to put the earlier text back`,children:`incomplete`})]}),(0,O.jsxs)(`span`,{className:`change-file`,children:[(0,O.jsx)(`span`,{className:`mono`,children:t.target.split(/[/\\]/).pop()}),(0,O.jsx)(`span`,{className:`mono wrap muted`,children:k(t.target.replace(/[/\\][^/\\]*$/,``))})]}),(0,O.jsx)(`span`,{className:`muted num`,title:new Date(t.createdAt).toLocaleString(),children:new Date(t.createdAt).toLocaleTimeString(void 0,{timeStyle:`short`})}),(0,O.jsxs)(`button`,{type:`button`,className:`head-action`,"aria-expanded":s===t.id,onClick:()=>c(s===t.id?null:t.id),children:[(0,O.jsx)(A,{name:`undo`}),` `,s===t.id?`Close`:`Review restore`]})]}),s===t.id&&t.created&&(0,O.jsx)(`p`,{className:`muted small review`,children:`ccdesk created this file, so there is no earlier version to put back.`}),s===t.id&&!t.created&&(0,O.jsx)(M,{id:t.id,onDone:t=>{c(null),u(),e(t)}})]},t.id))})]},t)),r&&(0,O.jsx)(`button`,{type:`button`,className:`show-more`,onClick:()=>{let e=t?.at(-1);e&&T.backups(e.id).then(e=>{n(t=>[...t??[],...e.changes]),i(e.more)},l)},children:`Show older changes`})]})}function M({id:e,onDone:t}){let[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(!1),c=(0,v.useCallback)(e=>a(e instanceof Error?e.message:String(e)),[]);if((0,v.useEffect)(()=>{T.previewRestore(e).then(r,c)},[e,c]),i)return(0,O.jsx)(`p`,{className:`flag bad`,role:`alert`,children:i});if(!n)return(0,O.jsx)(`p`,{className:`muted small`,children:`Reading the backup…`});let l=n.before===n.after&&!n.indexLines;return(0,O.jsx)(`section`,{className:`review`,"aria-label":`Review restore`,children:n.blocked?(0,O.jsx)(`p`,{className:`flag warn`,children:n.blocked}):l?(0,O.jsx)(`p`,{className:`muted small`,children:`The file already matches this backup.`}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`p`,{className:`muted small`,children:n.before===null?`The file does not exist now; restoring creates it.`:`Lines marked − are in the file now; lines marked + come back from the backup.`}),(0,O.jsx)(ie,{before:n.before??``,after:n.after}),n.indexLines&&(0,O.jsxs)(`p`,{className:`muted small`,children:[`MEMORY.md gets `,n.indexLines.length===1?`this line`:`these lines`,` back:`,` `,(0,O.jsx)(`span`,{className:`mono`,children:n.indexLines.join(` · `)})]}),(0,O.jsx)(`div`,{className:`editor-buttons`,children:(0,O.jsx)(`button`,{type:`button`,className:`primary`,disabled:o,onClick:()=>{s(!0),T.restore(e,n.revision).then(({target:e})=>t(`Restored ${k(e)}`),e=>{s(!1),c(e)})},children:o?`Restoring…`:`Restore this version`})})]})})}var be=[{line:`managed`,letter:`M`,name:`Managed`},{line:`user`,letter:`U`,name:`User`},{line:`project`,letter:`P`,name:`Project`},{line:`local`,letter:`L`,name:`Local`},{line:`memory`,letter:`A`,name:`Auto memory`},{line:`plugin`,letter:`X`,name:`Plugin`}];function xe(e){return be.find(t=>t.line===e)?.name??e}function N({line:e,hollow:t=!1}){let n=be.find(t=>t.line===e);return(0,O.jsx)(`span`,{className:`bullet bullet-${e}${t?` hollow`:``}`,title:n?.name,children:n?.letter})}function Se(e){return Math.round(e/4)}function Ce(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}var we=8e3;function Te(e){return[`instruction`,`import`,`memory-index`,`output-style`].includes(e.kind)}function Ee(e,t){return e.kind===`memory-index`?`MEMORY.md`:Te(e)?ce(e.path,t.path):e.path}function De(e,t){return e.kind===`memory-index`?`auto memory index, first ${e.lines} lines`:e.kind===`output-style`?`output style`:e.kind===`import`&&e.text!==null?`imported by ${ce(e.via??``,t.path)}`:e.text===null?`not counted`:``}function Oe({view:e}){let t=e.context,n=t.reduce((e,t)=>e+t.bytes,0),r=t.filter(e=>e.text!==null),i=e.instructions.filter(e=>e.status===`on-match`).length,a=0;return r.length===0?(0,O.jsxs)(`section`,{className:`context`,children:[(0,O.jsx)(`p`,{className:`tt-empty`,children:`Nothing is loaded at session start here: no instruction files and no auto memory.`}),(0,O.jsx)(Ae,{view:e})]}):(0,O.jsxs)(`section`,{className:`context`,"aria-label":`What Claude sees`,children:[(0,O.jsxs)(`p`,{className:`context-summary`,children:[`At session start your config adds about `,(0,O.jsxs)(`strong`,{children:[`≈`,Ce(Se(n))]}),` tokens from`,` `,(0,O.jsx)(`strong`,{children:r.length}),` `,r.length===1?`part`:`parts`,`. Sizes are estimates at four characters per token.`]}),i>0&&(0,O.jsxs)(`p`,{className:`muted small`,children:[i,` path `,i===1?`rule loads`:`rules load`,` later, when Claude touches matching files.`]}),Se(n)>we&&(0,O.jsxs)(`p`,{className:`flag warn context-large`,children:[(0,O.jsx)(A,{name:`warn`}),` That is a lot to load in every session. ccdesk suggests moving parts Claude needs only sometimes into path rules or skills.`]}),(0,O.jsx)(`div`,{className:`context-bar`,"aria-hidden":`true`,children:r.map(e=>(0,O.jsx)(`span`,{className:`bar-${e.scope}`,style:{flexGrow:Math.max(e.bytes,1)}},`${e.kind}:${e.via??``}:${e.path}`))}),(0,O.jsx)(`ol`,{className:`context-list`,children:t.map((t,n)=>(a+=t.bytes,(0,O.jsx)(`li`,{children:(0,O.jsxs)(`details`,{children:[(0,O.jsxs)(`summary`,{children:[(0,O.jsx)(`span`,{className:`num`,children:n+1}),(0,O.jsx)(N,{line:t.scope,hollow:t.text===null}),(0,O.jsxs)(`span`,{className:`context-name`,children:[(0,O.jsx)(`span`,{className:`mono`,title:k(t.path),children:Ee(t,e)}),De(t,e)&&(0,O.jsx)(`span`,{className:`muted small`,children:De(t,e)})]}),(0,O.jsx)(`span`,{className:`num`,children:t.text===null?``:`${t.lines} lines`}),(0,O.jsx)(`span`,{className:`num`,children:t.text===null?``:`≈${Ce(Se(t.bytes))}`}),(0,O.jsx)(`span`,{className:`num muted`,title:`Running total`,children:t.text===null?``:`≈${Ce(Se(a))}`})]}),t.text===null?(0,O.jsx)(`p`,{className:`muted small context-hidden`,children:t.note??`Not counted.`}):(0,O.jsxs)(O.Fragment,{children:[t.note&&(0,O.jsx)(`p`,{className:`muted small context-hidden`,children:t.note}),(0,O.jsx)(`pre`,{className:`raw`,children:t.text})]})]})},`${t.kind}:${t.via??``}:${t.path}`)))}),(0,O.jsx)(Ae,{view:e})]})}var ke={rule:`path rule`,skill:`skill`,nested:`folder instructions`};function Ae({view:e}){let[t,n]=(0,v.useState)(``),[r,i]=(0,v.useState)(null),[a,o]=(0,v.useState)(null),s=(0,v.useId)();return(0,O.jsxs)(`section`,{className:`path-tester`,"aria-labelledby":`${s}-h`,children:[(0,O.jsx)(`h3`,{id:`${s}-h`,className:`sub-title`,children:`When Claude touches a file`}),(0,O.jsxs)(`p`,{className:`muted small`,children:[`Path rules, skills with `,(0,O.jsx)(`span`,{className:`mono`,children:`paths`}),`, and instructions in the folders on the way load once Claude reads or edits a matching file.`]}),(0,O.jsxs)(`form`,{className:`path-form`,onSubmit:n=>{n.preventDefault(),t.trim()&&(o(null),T.pathTest(e.path,t.trim()).then(i,e=>{i(null),o(e instanceof Error?e.message:String(e))}))},children:[(0,O.jsx)(`input`,{"aria-label":`File path, relative to ${k(e.path)}`,className:`mono`,value:t,onChange:e=>n(e.target.value),placeholder:`src/api/users.ts`,spellCheck:!1}),(0,O.jsx)(`button`,{type:`submit`,children:`Check`})]}),a&&(0,O.jsx)(`p`,{className:`flag bad`,role:`alert`,children:a}),r&&(0,O.jsx)(`div`,{role:`status`,children:r.inside?r.matches.length===0?(0,O.jsxs)(`p`,{className:`muted small`,children:[`Nothing more loads for `,ce(r.file,e.path),r.exists?``:` (the file does not exist yet; paths are checked anyway)`,`.`]}):(0,O.jsx)(`ul`,{className:`plain path-matches`,children:r.matches.map(t=>(0,O.jsxs)(`li`,{children:[(0,O.jsx)(N,{line:t.scope}),(0,O.jsx)(`span`,{className:`muted`,children:ke[t.kind]}),(0,O.jsx)(`span`,{className:`mono wrap`,title:k(t.path),children:t.name??ce(t.path,e.path)}),t.glob&&(0,O.jsxs)(`span`,{className:`muted small mono`,children:[`matches `,t.glob]})]},`${t.kind}:${t.path}`))}):(0,O.jsxs)(`p`,{className:`muted small`,children:[k(r.file),` is outside `,k(e.path),`, so nothing here applies to it.`]})})]})}var je={$comment:`From the settings index at https://code.claude.com/docs/en/settings-reference.md`,limited:{allowAllClaudeAiMcps:[`managed`],allowClaudeInChromeWithManagedMcp:[`managed`],allowedChannelPlugins:[`managed`],allowedProviders:[`managed`],allowManagedHooksOnly:[`managed`],allowManagedMcpServersOnly:[`managed`],allowManagedPermissionRulesOnly:[`managed`],askUserQuestionTimeout:[`managed`,`user`],appendPlugins:[`managed`,`user`],autoConnectIde:[],autoContinueAtUsageLimit:[`managed`,`user`],autoInstallIdeExtension:[],autoMode:[`managed`,`user`],availableModelsMatch:[`managed`],bashEditDiffEnabled:[`managed`,`user`],blockedMarketplaces:[`managed`],browserExternalPageTools:[`managed`],channelsEnabled:[`managed`],claudeInChromeDefaultEnabled:[],claudeMd:[`managed`],copyFullResponse:[],copyOnSelect:[],defaultToAgentsView:[],deniedModels:[`managed`],desktopSessionCleanupPeriodDays:[`managed`,`user`],dialogExpiry:[`managed`,`user`],diffTool:[],disableBrowserExternalNavigation:[`managed`],disableCommandPluginSources:[`managed`],disableDesktopLocalSessions:[`managed`],disableMobileSimulatorTools:[`managed`],disableSideloadFlags:[`managed`],externalEditorContext:[],feedbackDrafts:[`managed`,`user`],footerLinksRegexes:[`managed`,`user`],forceLoginGatewayUrl:[`managed`,`user`],forceRemoteSettingsRefresh:[`managed`],gatewayInternalNetworks:[`managed`],leftArrowOpensAgents:[],managedMcpServers:[`managed`],managedSourcesBehavior:[`managed`],modelPicker:[`managed`,`user`],modelPricing:[`managed`],parentSettingsBehavior:[`managed`],permissionExplainerEnabled:[],pluginConfigs:[`managed`,`user`],pluginSuggestionMarketplaces:[`managed`],pluginTrustMessage:[`managed`],policyHelper:[`managed`],prependPlugins:[`managed`,`user`],processWrapper:[`managed`,`user`],prStatusFooterEnabled:[],requiredMaximumVersion:[`managed`],requiredMinimumVersion:[`managed`],skipAutoPermissionPrompt:[`managed`,`user`],skipDangerousModePermissionPrompt:[`managed`,`user`,`local`],spellcheck:[`managed`,`user`],sshConfigs:[`managed`,`user`],sshHostAllowlist:[`managed`],strictKnownMarketplaces:[`managed`],strictPluginOnlyCustomization:[`managed`],syncClaudeAiPlugins:[`managed`,`user`,`local`],syncClaudeAiSkills:[`managed`,`user`,`local`],teammateDefaultModel:[],useAutoModeDuringPlan:[`managed`,`user`,`local`],vimInsertModeRemaps:[`managed`,`user`],wslInheritsWindowsSettings:[`managed`]}},Me=[`user`,`project`,`local`,`managed`],Ne=[`managed`,`local`,`project`,`user`],Pe=[`user`,`project`,`local`],Fe=je.limited;function Ie(e){return Object.hasOwn(Fe,e)?Fe[e]:Me}var Le={$schema:`http://json-schema.org/draft-07/schema#`,$ref:`#/definitions/ClaudeCodeSettings`,definitions:JSON.parse('{"ClaudeCodeSettings":{"type":"object","properties":{"$schema":{"type":"string","description":"JSON Schema reference for Claude Code settings"},"apiKeyHelper":{"type":"string","description":"Path to a script that outputs authentication values"},"proxyAuthHelper":{"type":"string","description":"Shell command that outputs a Proxy-Authorization header value (EAP)"},"awsCredentialExport":{"type":"string","description":"Path to a script that exports AWS credentials"},"awsAuthRefresh":{"type":"string","description":"Path to a script that refreshes AWS authentication"},"gcpAuthRefresh":{"type":"string","description":"Command to refresh GCP authentication (e.g., gcloud auth application-default login)"},"processWrapper":{"type":"string","description":"Corporate launcher argv prefix for the background-agent supervisor, the sessions and workers it hosts, and the other covered background processes listed in the Claude Code corporate-launcher documentation. Equivalent to the CLAUDE_CODE_PROCESS_WRAPPER environment variable, which takes precedence when set. Honored from managed settings, a --settings/SDK-supplied settings file, and user settings, in that precedence order; project and local settings are ignored."},"policyHelper":{"type":"object","properties":{"path":{"type":"string","description":"Absolute path to the helper executable"},"timeoutMs":{"type":"number"},"refreshIntervalMs":{"anyOf":[{"type":"number","const":0},{"type":"number"}]}},"required":["path"],"additionalProperties":false,"description":"Executable that computes managed settings at startup. Honored only from admin-controlled policy sources."},"fileSuggestion":{"type":"object","properties":{"type":{"type":"string","const":"command"},"command":{"type":"string"}},"required":["type","command"],"additionalProperties":false,"description":"Custom file suggestion configuration for \\\\@ mentions"},"respectGitignore":{"type":"boolean","description":"Whether file picker should respect .gitignore files (default: true). Note: .ignore files are always respected."},"cleanupPeriodDays":{"type":"number","description":"Number of days to retain chat transcripts before automatic cleanup (default: 30). Minimum 1. Use a large value for long retention; use --no-session-persistence to disable transcript writes entirely."},"desktopSessionCleanupPeriodDays":{"type":"number","description":"Retention ceiling in days for session transcripts created or last written by a desktop-host surface (Claude Desktop, Cowork), which are otherwise exempt from the cleanupPeriodDays sweep. 0 (the default) means no ceiling: such transcripts are kept until deleted another way. Unlike cleanupPeriodDays, 0 is allowed because this setting never disables writes — it only bounds an exemption from deletion. The ceiling is a hard cap: it also bounds an active archive grace, so the grace window of a release marker never keeps files past the ceiling. Ignored when cleanupPeriodDays is managed by org policy. A ceiling at or below cleanupPeriodDays effectively disables the exemption: those transcripts age out on the regular cleanupPeriodDays schedule, so the effective retention is whichever of the two periods is longer."},"syncClaudeAiSkills":{"type":"boolean","description":"Set to false to turn off syncing of the skills you have enabled on claude.ai. In your user settings (or managed settings): nothing more is downloaded, previously synced skills (~/.claude/skills/synced) can no longer be run, are hidden from every session started afterwards, and are moved to ~/.claude/skills/.trash at the next launch (deleted after cleanupPeriodDays; re-downloaded, not restored, if you re-enable). In .claude/settings.local.json or --settings: downloads stop and synced skills are blocked and hidden for sessions in that workspace or invocation only (nothing is moved). Not read from project settings (.claude/settings.json). Only false is honored — the feature is enabled server-side for your account, so setting true does not turn it on early. While it is on, synced skills are available in every session, re-synced about every 10 minutes while a session is in use and a quarter as often otherwise, and removed when you disable them on claude.ai. Only applies when signed in with your Claude account."},"syncClaudeAiPlugins":{"type":"boolean","description":"Set to false to turn off syncing of the plugins you have enabled on claude.ai. In your user settings (or managed settings): nothing more is downloaded, previously synced plugins (~/.claude/plugins/synced) are hidden from every session started afterwards and moved to ~/.claude/plugins/.trash at the next launch (deleted after cleanupPeriodDays; re-downloaded, not restored, if you re-enable). In .claude/settings.local.json or --settings: downloads stop and synced plugins are hidden for sessions in that workspace or invocation only (nothing is moved). Not read from project settings (.claude/settings.json). Only false is honored — the feature is enabled server-side for your account, so setting true does not turn it on early. While it is on, synced plugins load in every session like plugins you installed yourself (a plugin you installed with the same name takes precedence), are re-synced at each launch, and are removed when you disable them on claude.ai. Only applies when signed in with your Claude account."},"skillListingMaxDescChars":{"type":"number","description":"Per-skill description character cap in the skill listing sent to Claude (default: 1536). Descriptions longer than this are truncated. Raise to opt in to higher per-turn context cost."},"skillListingBudgetFraction":{"type":"number","description":"Fraction of the context window (in characters) reserved for the skill listing sent to Claude (default: 0.01 = 1%). When the listing exceeds this, descriptions are shortened to fit. Raise to opt in to higher per-turn context cost."},"wslInheritsWindowsSettings":{"type":"boolean","description":"When set to true in either admin-only Windows source — the HKLM SOFTWARE/Policies/ClaudeCode registry key or C:/Program Files/ClaudeCode/managed-settings.json — WSL reads managed settings from the full Windows policy chain (HKLM, C:/Program Files/ClaudeCode via DrvFs, HKCU) in addition to /etc/claude-code. Windows sources take priority. The flag is also required in HKCU itself for HKCU policy to apply on WSL (double opt-in: admin enables the chain, user confirms HKCU). On native Windows the flag has no effect."},"env":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment variables to set for Claude Code sessions"},"attribution":{"anyOf":[{"type":"boolean"},{"type":"object","properties":{"commit":{"type":"string","description":"Attribution text for git commits, including any trailers. Empty string hides attribution."},"pr":{"type":"string","description":"Attribution text for pull request descriptions. Empty string hides attribution."},"sessionUrl":{"type":"boolean","description":"Whether to append the claude.ai session link to commits and PRs created from web or Remote Control sessions (default: true). Set to false to omit the Claude-Session trailer and PR-body link."}},"additionalProperties":{}}],"description":"Customize attribution text for commits and PRs. Each field defaults to the standard Claude Code attribution if not set. Set to false to hide all attribution, the same as { \\"commit\\": \\"\\", \\"pr\\": \\"\\", \\"sessionUrl\\": false }. Setting it to true is the same as leaving it out. Older Claude Code versions reject true or false here, so use the object form in settings files shared across versions."},"includeCoAuthoredBy":{"type":"boolean","description":"Deprecated: Use attribution instead. Whether to include Claude\'s co-authored by attribution in commits and PRs (defaults to true)"},"includeGitInstructions":{"type":"boolean","description":"Include built-in commit and PR workflow instructions in Claude\'s system prompt (default: true)"},"permissions":{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"},"description":"List of permission rules for allowed operations"},"deny":{"type":"array","items":{"type":"string"},"description":"List of permission rules for denied operations"},"ask":{"type":"array","items":{"type":"string"},"description":"List of permission rules that should always prompt for confirmation"},"defaultMode":{"type":"string","enum":["acceptEdits","auto","bypassPermissions","default","dontAsk","plan"],"description":"Default permission mode when Claude Code needs access (\'manual\' is accepted as an alias for \'default\')"},"disableBypassPermissionsMode":{"type":"string","const":"disable","description":"Disable the ability to bypass permission prompts"},"blockReadsOutsideWorkingDirectories":{"type":"boolean","description":"Refuse file-tool reads (Read, Grep, Glob, LSP) outside the working directories in every permission mode; true in any settings source wins. Also set when the user picks \\"block\\" on the one-time auto-mode prompt for a read outside the working directories."},"additionalDirectories":{"type":"array","items":{"type":"string"},"description":"Additional directories to include in the permission scope"}},"additionalProperties":{},"description":"Tool usage permissions configuration"},"model":{"type":"string","description":"Override the default model used by Claude Code"},"fallbackModel":{"type":"array","items":{"type":"string"},"description":"Fallback model(s) tried in order when the primary model is overloaded or unavailable. Each element accepts a model name or alias; \\"default\\" expands to the default model. CLI --fallback-model takes precedence."},"availableModels":{"type":"array","items":{"type":"string"},"description":"Allowlist of models that users can select. Accepts family aliases (\\"opus\\" allows any opus version), version prefixes (\\"opus-4-5\\" allows that version and any model ID that extends it, so \\"claude-opus-5\\" also allows \\"claude-opus-5-5\\"), and full model IDs. If undefined, all models are available. If empty array, only the default model is available. Typically set in managed settings by enterprise administrators."},"enforceAvailableModels":{"type":"boolean","description":"When true and availableModels is a non-empty array, the Default model selection is also constrained: if the default model for the user tier is not in availableModels, Default resolves to the first allowed availableModels entry instead. Has no effect when availableModels is unset or an empty array. Typically set in managed settings by enterprise administrators."},"availableModelsMatch":{"type":"string","enum":["prefix","exact"],"description":"How availableModels entries match model IDs. \\"prefix\\" (the default) lets an entry also allow any model ID that extends it, so \\"claude-opus-5\\" allows \\"claude-opus-5-5\\". \\"exact\\" keeps that matching but stops a model ID entry from allowing other versions: \\"claude-opus-5\\" allows Opus 5 and its dated and -fast IDs, but not Opus 5.5 or a later release until it is listed, and a -latest ID needs a -latest entry. Family aliases (\\"opus\\") still allow the whole family; aliases whose model depends on the release or settings (best, opusplan, default) are ignored. With \\"exact\\" and a list that names at least one model, the Default option also uses only a listed model; if none can be used, Claude Code will not start. Haiku background models, and hooks and other helper requests that pick their own model, are not restricted (deniedModels covers them; allowManagedHooksOnly limits hooks). Read from managed settings only."},"deniedModels":{"type":"array","items":{"type":"string"},"description":"Models users cannot select, even when availableModels allows them. A family alias (\\"opus\\") blocks that family. A model ID blocks that version in every spelling: dates, -fast and provider prefixes are ignored, so \\"claude-opus-5-5\\" blocks every Opus 5.5 ID but not Opus 5. An ID with no minor version (\\"claude-opus-5\\") also blocks later minor versions, as it allows them in availableModels. Aliases whose model depends on the release or settings (best, opusplan, default) are ignored. The Default option steps down past a blocked model; if the Default has no allowed model to step down to, Claude Code will not start. Read from managed settings only."},"modelOverrides":{"type":"object","additionalProperties":{"type":"string"},"description":"Override mapping from Anthropic model ID (e.g. \\"claude-opus-4-6\\") to provider-specific model ID (e.g. a Bedrock inference profile ARN). Typically set in managed settings by enterprise administrators."},"modelPicker":{"type":"object","properties":{"options":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","description":"Model to select, taken verbatim: an alias (\\"opus\\"), an Anthropic model ID, or a provider-format ID (Vertex, Bedrock, gateway). Same values --model accepts."},"label":{"type":"string","description":"Row title. Defaults to the model name."},"description":{"type":"string","description":"Row subtitle. Defaults to a generic description."},"behavesAs":{"type":"string","description":"For a model this version of Claude Code does not know: the ID of a model it does know (e.g. \\"claude-opus-4-8\\") whose client-side handling — prompt profile, capability and effort defaults — applies to it. Changes neither the row\'s label nor the model ID sent. Without it, a model-catalog row for a model this version does not know is not offered until Claude Code is updated."}},"required":["model"],"additionalProperties":false},"description":"Rows to show in the /model picker, in order."},"replaceBuiltInOptions":{"type":"boolean","description":"When true, the picker shows only the Default row and these options — the built-in lineup, gateway-discovered models and ANTHROPIC_CUSTOM_MODEL_OPTION are hidden. When false or unset, these options are added after the built-in lineup."}},"required":["options"],"additionalProperties":false,"description":"Curate the /model picker: an ordered list of models with your own labels, independent of the built-in lineup and of Claude Code releases. availableModels still applies to these rows. Honored from managed, --settings/SDK, and user settings only (not from a project checkout); the highest-precedence of those that defines modelPicker wins outright (no merging across sources). Typically set in managed settings by enterprise administrators."},"modelPricing":{"type":"object","properties":{"multiplier":{"type":"number"},"overrides":{"type":"object","additionalProperties":{"type":"object","properties":{"input":{"type":"number"},"output":{"type":"number"},"cacheRead":{"type":"number"},"cacheWrite":{"type":"number"}},"required":["input","output","cacheRead","cacheWrite"],"additionalProperties":false}}},"additionalProperties":false,"description":"Price usage at your organization\'s contracted rates instead of list price. Affects every spend figure Claude Code reports — /cost, the status line, the SDK total_cost_usd, --max-budget-usd, and the OpenTelemetry cost metric and events — which remain USD estimates, not an invoice (the per-Mtok price labels in /model stay at list). \\"overrides\\" maps a model ID to its USD-per-million-token rates (input, output, cacheRead, cacheWrite — all four required, each 0 to 10000; cacheWrite prices both 5-minute and 1-hour cache writes). A matching row is charged exactly as written; fast-mode and US-data-residency surcharges are not added on top. A key Claude Code itself uses for a built-in model — its ID such as \\"claude-sonnet-4-6\\", or its first-party, Bedrock (any or no region prefix), Vertex or Foundry ID — covers every dated and provider form of that model; any other key — a gateway model alias, or a spelling Claude Code does not itself use — matches that model ID only (case-insensitive), and such an exact match wins over a built-in row. On Bedrock an application inference profile is matched by its backing model. An invalid row or multiplier is reported and skipped; the rest still apply. \\"multiplier\\" in (0, 10] scales every computed cost, overridden or not (0.85 = 85% of the price, 1.2 = 120%). Only honored from managed settings (server-managed, MDM / OS policy, or managed-settings.json), or — when none of those sets it — when supplied by a host application that manages the model provider; ignored in user, project, local and --settings sources."},"enableAllProjectMcpServers":{"type":"boolean","description":"Whether to automatically approve all MCP servers in the project"},"enabledMcpjsonServers":{"type":"array","items":{"type":"string"},"description":"List of approved MCP servers from .mcp.json"},"disabledMcpjsonServers":{"type":"array","items":{"type":"string"},"description":"List of rejected MCP servers from .mcp.json"},"disableClaudeAiConnectors":{"type":"boolean","description":"When true in any settings source, claude.ai MCP cloud connectors are not auto-fetched or connected, and a claudeai-proxy server passed explicitly (e.g. via --mcp-config or the SDK mcpServers option) does not connect either. Any-source-true wins: a project can opt out, but a project-level false cannot override a user-level true."},"skillOverrides":{"type":"object","additionalProperties":{"type":"string","enum":["on","name-only","user-invocable-only","off"]},"description":"Per-skill listing overrides keyed by skill name. \\"name-only\\" lists the skill without its description; \\"user-invocable-only\\" hides it from the model but keeps /name; \\"off\\" hides it from both. Absent = on."},"disableBundledSkills":{"type":"boolean","description":"Disable the skills and workflows that ship with Claude Code: bundled skills and workflows are removed entirely; built-in slash commands stay typable but are hidden from the model. Plugins, .claude/skills/, and .claude/commands/ are unaffected. Equivalent to CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1."},"managedMcpServers":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}},"description":"MCP servers the organization provides to every user, keyed by server name, each with the .mcp.json entry shape; only \\"http\\" and \\"sse\\" servers are accepted (nothing that names a program to run, no ${VAR} references). Honored from managed settings only; users cannot remove them, deniedMcpServers still applies, and they need no allowedMcpServers entry. Not read in Claude Desktop\'s Code tab on a third-party deployment or in Cowork sessions, where Claude Desktop supplies and locks the session\'s MCP servers itself."},"allowedMcpServers":{"type":"array","items":{"type":"object","properties":{"serverName":{"type":"string","description":"Name of the MCP server that users are allowed to configure"},"serverCommand":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Command array [command, ...args] to match exactly for allowed stdio servers\\n\\n\\\\@minItems 1"},"serverUrl":{"type":"string","description":"URL pattern with wildcard support (e.g., \\"https://*.example.com/*\\") for allowed remote MCP servers"}},"additionalProperties":false},"description":"Enterprise allowlist of the MCP servers users may use. Governs servers users add (user, project and local config, --mcp-config, agent frontmatter, plugins, claude.ai connectors); servers the organization itself delivers (managedMcpServers, and managed-mcp.json entries that use no ${VAR} expansion) are allowed without being listed; a managed-mcp.json entry that uses ${VAR} expansion is still checked against this list. If undefined, all servers are allowed. If empty array, users can use no servers of their own. Denylist takes precedence - if a server is on both lists, it is denied."},"deniedMcpServers":{"type":"array","items":{"type":"object","properties":{"serverName":{"type":"string","description":"Name of the MCP server that is explicitly blocked"},"serverCommand":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Command array [command, ...args] to match exactly for blocked stdio servers\\n\\n\\\\@minItems 1"},"serverUrl":{"type":"string","description":"URL pattern with wildcard support (e.g., \\"https://*.example.com/*\\") for blocked remote MCP servers"}},"additionalProperties":false},"description":"Enterprise denylist of MCP servers that are explicitly blocked. If a server is on the denylist, it will be blocked across all scopes including enterprise. Denylist takes precedence over allowlist - if a server is on both lists, it is denied."},"hooks":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"string","description":"String pattern to match (e.g. tool names like \\"Write\\")"},"hooks":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"command","description":"Shell command hook type"},"command":{"type":"string","description":"Shell command to execute"},"args":{"type":"array","items":{"type":"string"},"description":"Argument list for exec form. When present, `command` is resolved as an executable and spawned directly with these arguments — no shell. Path placeholders like ${CLAUDE_PLUGIN_ROOT} are substituted per-element as plain strings, so paths with quotes, $, or backticks never reach a shell parser. When absent, `command` runs through a shell (bash on POSIX, PowerShell on Windows without Git Bash)."},"if":{"type":"string","description":"Permission rule syntax to filter when this hook runs (e.g., \\"Bash(git *)\\"). Only runs if the tool call matches the pattern. Avoids spawning hooks for non-matching commands."},"shell":{"type":"string","enum":["bash","powershell"],"description":"Shell interpreter. \'bash\' uses your $SHELL (bash/zsh/sh); \'powershell\' uses pwsh. Defaults to bash (powershell on Windows without Git Bash)."},"timeout":{"type":"number","description":"Timeout in seconds for this specific command"},"onFailure":{"type":"string","enum":["continue","block"],"description":"What a failure of this hook does: it could not start (a missing script or plugin directory), timed out, exited with a code other than 0 or 2, or printed JSON that is invalid or fails validation. \'continue\' (default): the failure is reported and the action goes ahead. \'block\': the failure counts as exit code 2, so the action the event guards (a tool call, a permission request, a prompt) is blocked. Ignored for async hooks and on Stop, SubagentStop, TaskCompleted and TeammateIdle."},"statusMessage":{"type":"string","description":"Custom status message to display in spinner while hook runs"},"once":{"type":"boolean","description":"If true, hook runs once and is removed after execution"},"async":{"type":"boolean","description":"If true, hook runs in background without blocking"},"asyncRewake":{"type":"boolean","description":"If true, hook runs in background and wakes the model on exit code 2 (blocking error). Implies async."}},"required":["type","command"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"prompt","description":"LLM prompt hook type"},"prompt":{"type":"string","description":"Prompt to evaluate with LLM. Use $ARGUMENTS placeholder for hook input JSON."},"if":{"type":"string","description":"Permission rule syntax to filter when this hook runs (e.g., \\"Bash(git *)\\"). Only runs if the tool call matches the pattern. Avoids spawning hooks for non-matching commands."},"timeout":{"type":"number","description":"Timeout in seconds for this specific prompt evaluation"},"model":{"type":"string","description":"Model to use for this prompt hook (e.g., \\"claude-sonnet-5\\"). If not specified, uses the default small fast model."},"continueOnBlock":{"type":"boolean","description":"Sets the continue value for the decision:\\"block\\" produced when ok is false. Default false (turn ends). Whether continue:true lets the turn proceed depends on the event\'s decision:\\"block\\" semantics. On PostToolUse, the reason is fed back to Claude and the turn continues."},"statusMessage":{"type":"string","description":"Custom status message to display in spinner while hook runs"},"once":{"type":"boolean","description":"If true, hook runs once and is removed after execution"}},"required":["type","prompt"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"agent","description":"Agentic verifier hook type"},"prompt":{"type":"string","description":"Prompt describing what to verify (e.g. \\"Verify that unit tests ran and passed.\\"). Use $ARGUMENTS placeholder for hook input JSON."},"if":{"type":"string","description":"Permission rule syntax to filter when this hook runs (e.g., \\"Bash(git *)\\"). Only runs if the tool call matches the pattern. Avoids spawning hooks for non-matching commands."},"timeout":{"type":"number","description":"Timeout in seconds for agent execution (default 60)"},"model":{"type":"string","description":"Model to use for this agent hook (e.g., \\"claude-sonnet-5\\"). If not specified, uses Haiku."},"statusMessage":{"type":"string","description":"Custom status message to display in spinner while hook runs"},"once":{"type":"boolean","description":"If true, hook runs once and is removed after execution"}},"required":["type","prompt"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"http","description":"HTTP hook type"},"url":{"type":"string","description":"URL to POST the hook input JSON to"},"if":{"type":"string","description":"Permission rule syntax to filter when this hook runs (e.g., \\"Bash(git *)\\"). Only runs if the tool call matches the pattern. Avoids spawning hooks for non-matching commands."},"timeout":{"type":"number","description":"Timeout in seconds for this specific request"},"onFailure":{"type":"string","enum":["continue","block"],"description":"What a failure of this hook does: it could not start (a missing script or plugin directory), timed out, exited with a code other than 0 or 2, or printed JSON that is invalid or fails validation. \'continue\' (default): the failure is reported and the action goes ahead. \'block\': the failure counts as exit code 2, so the action the event guards (a tool call, a permission request, a prompt) is blocked. Ignored for async hooks and on Stop, SubagentStop, TaskCompleted and TeammateIdle."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional headers to include in the request. Values may reference environment variables using $VAR_NAME or ${VAR_NAME} syntax (e.g., \\"Authorization\\": \\"Bearer $MY_TOKEN\\"). Only variables listed in allowedEnvVars will be interpolated."},"allowedEnvVars":{"type":"array","items":{"type":"string"},"description":"Explicit list of environment variable names that may be interpolated in header values. Only variables listed here will be resolved; all other $VAR references are left as empty strings. Required for env var interpolation to work."},"statusMessage":{"type":"string","description":"Custom status message to display in spinner while hook runs"},"once":{"type":"boolean","description":"If true, hook runs once and is removed after execution"}},"required":["type","url"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"mcp_tool","description":"MCP tool hook type"},"server":{"type":"string","description":"Name of an already-configured MCP server to invoke"},"tool":{"type":"string","description":"Name of the tool on that server to call"},"input":{"type":"object","additionalProperties":{},"description":"Arguments passed to the MCP tool. String values support ${path} interpolation from the hook input JSON (e.g. \\"${tool_input.file_path}\\")."},"if":{"type":"string","description":"Permission rule syntax to filter when this hook runs (e.g., \\"Bash(git *)\\"). Only runs if the tool call matches the pattern. Avoids spawning hooks for non-matching commands."},"timeout":{"type":"number","description":"Timeout in seconds for this specific tool call"},"statusMessage":{"type":"string","description":"Custom status message to display in spinner while hook runs"},"once":{"type":"boolean","description":"If true, hook runs once and is removed after execution"}},"required":["type","server","tool"],"additionalProperties":false}]},"description":"List of hooks to execute when the matcher matches"}},"required":["hooks"],"additionalProperties":false}},"description":"Custom commands to run before/after tool executions"},"worktree":{"type":"object","properties":{"symlinkDirectories":{"type":"array","items":{"type":"string"},"description":"Directories to symlink from main repository to worktrees to avoid disk bloat. Must be explicitly configured - no directories are symlinked by default. Common examples: \\"node_modules\\", \\".cache\\", \\".bin\\""},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include when creating worktrees, via git sparse-checkout (cone mode). Dramatically faster in large monorepos — only the listed paths are written to disk."},"baseRef":{"type":"string","enum":["fresh","head"],"description":"Which ref new worktrees branch from. \'fresh\' (default) branches from origin/<default-branch> for a clean tree. \'head\' branches from your current local HEAD so unpushed commits and feature-branch state are present. Applies to --worktree, EnterWorktree, and agent isolation."},"bgIsolation":{"type":"string","enum":["worktree","none"],"description":"Isolation mode for background sessions in this repo. \'worktree\' (default) blocks Edit/Write in the main checkout until EnterWorktree is called. \'none\' lets background jobs edit the working copy directly."},"location":{"type":"string","description":"Directory under which Claude Code Desktop creates the worktrees of SSH sessions that run on this machine (an absolute path or one starting with ~/), instead of <project>/.claude/worktrees. Read by the desktop app from the SSH host user settings; a location chosen in the desktop app\'s SSH connection settings takes precedence. The CLI (--worktree, EnterWorktree, agent isolation) does not read it yet."}},"additionalProperties":false,"description":"Git worktree configuration: the CLI --worktree flag, EnterWorktree and agent isolation, plus the location Claude Code Desktop uses for SSH-session worktrees on this machine."},"disableAllHooks":{"type":"boolean","description":"Disable all hooks and statusLine execution: the hooks defined in settings files and by installed plugins. Features built into Claude Code are not hooks in this sense and keep working; each has its own switch."},"disableAgentView":{"type":"boolean","description":"Disable agent view (`claude agents`, `--bg`, /background, the on-demand daemon). Typically set in managed settings. Equivalent to CLAUDE_CODE_DISABLE_AGENT_VIEW=1."},"disableRemoteControl":{"type":"boolean","description":"Disable Remote Control (claude.ai/code, `claude remote-control`, `--remote-control`/`--rc`, auto-start, and the in-session toggle). Typically set in managed settings."},"disableWorkflows":{"type":"boolean","description":"Disable the Workflows feature. Code Review on pull requests and /ultrareview run in Anthropic\'s cloud and are not stopped by this setting, except an /ultrareview that has to restart partway through. A machine that runs a review itself refuses it when that machine\'s own administrator set this, or CLAUDE_CODE_DISABLE_WORKFLOWS in an `env` block, in its managed settings (MDM, the managed-settings file or an administrator\'s policy helper). Set in the environment before Claude Code starts, CLAUDE_CODE_DISABLE_WORKFLOWS disables Workflows. Beyond the cases above it stops a review only when the review\'s own session starts with it set."},"disableArtifact":{"type":"boolean","description":"Deprecated: use enableArtifact: false. Still honored — true disables the Artifact tool; false is ignored."},"enableArtifact":{"type":"boolean","description":"Turn the Artifact tool on or off. Off in any of managed, --settings, or user settings wins; project and local settings can only turn it off. Unset defaults to on once the feature is available."},"enableWorkflows":{"type":"boolean","description":"Enable or disable the Workflows feature for this user. Unset = default by plan once the feature is available."},"workflowSizeGuideline":{"type":"string","enum":["unrestricted","small","medium","large"],"description":"Advisory size guideline for the dynamic workflows Claude writes: \\"small\\" aims for fewer than 5 agents, \\"medium\\" fewer than 10, \\"large\\" fewer than 50, and \\"unrestricted\\" sends no guideline. Unset defaults to \\"medium\\", or \\"small\\" on Pro plans. A value here — including from managed settings — takes precedence over the \\"Dynamic workflow size\\" choice in /config, and that /config row is hidden while a settings file provides the key. This is a guideline, not an enforced limit."},"workflowKeywordTriggerEnabled":{"type":"boolean","description":"Enable the \\"ultracode\\" keyword trigger: including the keyword in a prompt opts that turn into the Workflow tool. Set to false to disable the trigger. Default: true."},"disableSkillShellExecution":{"type":"boolean","description":"Disable inline shell execution in skills and custom slash commands from user, project, or plugin sources. Commands are replaced with a placeholder instead of being run."},"defaultShell":{"type":"string","enum":["bash","powershell"],"description":"Default shell for input-box ! commands. Defaults to \'bash\' on all platforms (no Windows auto-flip)."},"bashEditDiffEnabled":{"type":"boolean","description":"Whether the Bash tool shows a diff of the files a Bash command changed (PostToolUse Bash hooks get the changed-file list in tool_response). Set to false to turn that off. Default: on when the Bash tool handles file edits. Only user, flag or policy settings can turn it on outside auto and bypassPermissions modes."},"bashOutputMaxChars":{"type":"number","description":"How many characters of a successful Bash or PowerShell command\'s output Claude receives inline (default 30000; values clamp to 4000-128000). Output past this is saved to a file and Claude receives a short preview plus the path. When set, this also replaces BASH_MAX_OUTPUT_LENGTH, which on its own only sizes the read-back window."},"taskOutputMaxChars":{"type":"number","description":"Deprecated: no longer has any effect (the TaskOutput tool was removed). Read a background task\'s output file with the Read tool instead."},"respondToBashCommands":{"type":"boolean","description":"Whether Claude responds after an input-box ! bash command runs. Set to false to add the command output to context without a response. Default: true."},"allowManagedHooksOnly":{"type":"boolean","description":"When true (and set in managed settings), only hooks from managed settings and from plugins that managed settings enable run. User, project, and local hooks and the hooks of plugins the user installed are ignored. Features built into Claude Code are not hooks in this sense and keep working."},"allowedHttpHookUrls":{"type":"array","items":{"type":"string"},"description":"Allowlist of URL patterns that HTTP hooks may target. Supports * as a wildcard (e.g. \\"https://hooks.example.com/*\\"). When set, HTTP hooks with non-matching URLs are blocked. If undefined, all URLs are allowed. If empty array, no HTTP hooks are allowed. Arrays merge across settings sources (same semantics as allowedMcpServers)."},"httpHookAllowedEnvVars":{"type":"array","items":{"type":"string"},"description":"Allowlist of environment variable names HTTP hooks may interpolate into headers. When set, each hook\'s effective allowedEnvVars is the intersection with this list. If undefined, no restriction is applied. Arrays merge across settings sources (same semantics as allowedMcpServers)."},"allowManagedPermissionRulesOnly":{"type":"boolean","description":"When true (and set in managed settings), permission rules from user, project, local, and --settings files and allow rules from --allowedTools are ignored; only managed settings can add allow rules through settings. The allowed-tools frontmatter of skills and custom commands from user, project, and --add-dir sources, and of plugins no managed setting vouches for, is ignored too. Plugins keep theirs only on an admin-backed channel: host-delivered --plugin-dir plugins, the official marketplace registered from its unpinned anthropics source, claude.ai-synced plugins Anthropic attests, the saved login organization\'s claude.ai-hosted marketplaces, marketplaces whose registered source managed extraKnownMarketplaces declares or an exact or owner-pinned (owner/*) strictKnownMarketplaces entry names at the path it pins (an npm marketplace source only when the registration and the declared entry pin the same registry, and a settings marketplace source only when every nested npm plugin entry pins one on a bare package name — unpinned, the package resolves through the member\'s own npm config, and a non-bare spelling packs as an exotic spec the pin does not bind, so nothing an entry names is what was fetched), and npm-direct (package\\\\@npm) plugins whose recorded resolution a registry-pinned managed npm strictKnownMarketplaces entry names (host and path patterns and enabledPlugins ids do not vouch); managed and bundled skills keep theirs. --disallowedTools, skill disallowed-tools, and other deny and ask rules from the command line or the current session still apply."},"allowManagedMcpServersOnly":{"type":"boolean","description":"When true (and set in managed settings), allowedMcpServers is only read from managed settings. deniedMcpServers still merges from all sources, so users can deny servers for themselves. Users can still add their own MCP servers, but only the admin-defined allowlist applies."},"allowAllClaudeAiMcps":{"type":"boolean","description":"When true (and set in managed settings), claude.ai cloud MCP connectors load alongside managed-mcp.json instead of being suppressed by its exclusive-control lockdown. Default off preserves the lockdown. Read from managed settings only."},"allowClaudeInChromeWithManagedMcp":{"type":"boolean","description":"When true (and set in device managed settings: MDM, the managed-settings.json file, or a policy helper those configure), the built-in Claude in Chrome MCP server can run alongside managed-mcp.json instead of being blocked by its exclusive-control lockdown. deniedMcpServers and the organization\'s Claude in Chrome setting still block it. Default off preserves the lockdown."},"strictPluginOnlyCustomization":{"anyOf":[{"type":"boolean"},{"type":"array","items":{"type":"string","enum":["skills","agents","hooks","mcp"]}}],"description":"When set in managed settings, blocks non-plugin customization sources for the listed surfaces. Array form locks specific surfaces (e.g. [\\"skills\\", \\"hooks\\"]); `true` locks all four; `false` is an explicit no-op. Blocked: ~/.claude/{surface}/, .claude/{surface}/ (project), settings.json hooks, .mcp.json. NOT blocked: managed (policySettings) sources, plugin-provided customizations. Composes with strictKnownMarketplaces for end-to-end admin control — plugins gated by marketplace allowlist, everything else blocked here."},"statusLine":{"type":"object","properties":{"type":{"type":"string","const":"command"},"command":{"type":"string"},"padding":{"type":"number"},"refreshInterval":{"type":"number","description":"Re-run the status line command every N seconds in addition to event-driven updates"},"hideVimModeIndicator":{"type":"boolean","description":"Hide the built-in `-- INSERT --` / `-- VISUAL --` indicator below the prompt. Use this when your status line script renders `vim.mode` itself."}},"required":["type","command"],"additionalProperties":false,"description":"Custom status line display configuration"},"prUrlTemplate":{"type":"string","description":"URL template for PR links in the footer link badges and inline messages. The detected git PR is rendered as the first footer-link badge. Placeholders: {host} {owner} {repo} {number} {url}. Example: \\"https://reviews.example.com/{owner}/{repo}/pull/{number}\\""},"footerLinksRegexes":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"regex","description":"Config variant. This client understands \\"regex\\": matches turn output and builds a URL from named capture groups. Entries with other variants are preserved but skipped at runtime."},"pattern":{"type":"string","description":"Regex matched against turn output (tool results and assistant text)"},"url":{"type":"string","description":"Link target. {name} placeholders are filled from named regex capture groups, e.g. (?<id>...) -> {id}. Values are URL-encoded; the origin must be literal in the template. The scheme must be https, http, or a recognized editor or workspace deep-link scheme: vscode, vscode-insiders, cursor, windsurf, zed, jetbrains, idea, slack, linear, notion, figma."},"label":{"type":"string","description":"Badge text. {name} placeholders filled from named capture groups; defaults to the full match."}},"required":["type","pattern","url"],"additionalProperties":{}},{"type":"object","properties":{"type":{"type":"string","description":"Config variant discriminator for entries this client does not understand; the entry is preserved as-is and skipped at runtime."}},"required":["type"],"additionalProperties":{}}]},"description":"Extra clickable footer badges that appear when a regex matches turn output (tool results and assistant responses). Read from user, flag, and managed settings only; ignored in project .claude/settings.json and local .claude/settings.local.json. At most 5 badges render; the oldest is displaced by newer matches and /clear removes them. Use to surface IDs printed by project CLIs as session links."},"subagentStatusLine":{"type":"object","properties":{"type":{"type":"string","const":"command"},"command":{"type":"string"}},"required":["type","command"],"additionalProperties":false,"description":"Custom per-subagent status line shown in the agent panel; receives row context as JSON on stdin"},"enabledPlugins":{"type":"object","additionalProperties":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"boolean"},{"type":"object","additionalProperties":{}}]},"description":"Enabled plugins using plugin-id\\\\@marketplace-id format. Example: { \\"formatter\\\\@anthropic-tools\\": true }. Also supports extended format with version constraints. Settings precedence is user < project < local < flag < policy, so to disable a plugin that project settings enable, set it to false in .claude/settings.local.json — setting false in ~/.claude/settings.json is overridden by the project."},"prependPlugins":{"type":"array","items":{"type":"string"},"description":"Managed plugins (plugin\\\\@marketplace ids that managed enabledPlugins sets true) whose hooks run first, outermost, in the listed order: the first id listed sees every event before any other plugin and every result after it. Managed plugins not listed here or in appendPlugins follow the listed ones; user, project and marketplace plugins come after those; then appendPlugins; then the built-in plugins. The bundled cc-plugin-sec-default\\\\@builtin seats itself outermost (on a machine with managed settings and for Team and Enterprise organizations) unless this list is set, in which case list it where it should sit or leave it out. Name it there as sec-default\\\\@builtin, the id every release reads, for as long as any machine in the organization may run a release from before its rename; a release that knows the new id reads either. Any other id that is not an enabled managed plugin is skipped; an id listed in both keys is prepended. Only honored from managed settings (or, on a machine with none, from user settings for your own plugins); ignored in project, local and --settings sources."},"appendPlugins":{"type":"array","items":{"type":"string"},"description":"Managed plugins (plugin\\\\@marketplace ids that managed enabledPlugins sets true) whose hooks run last among plugins, innermost, in the listed order: the last id listed sits just above the built-in plugins and sees each event as every other plugin left it. Only honored from managed settings (or, on a machine with none, from user settings for your own plugins); ignored in project, local and --settings sources."},"extraKnownMarketplaces":{"type":"object","additionalProperties":{"type":"object","properties":{"source":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Direct URL to marketplace.json file"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., for authentication)"},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session\'s), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format. ONLY in the managed-settings policy lists (strictKnownMarketplaces / blockedMarketplaces) the owner-wildcard form \\"owner/*\\" matches every repository under exactly that owner. Everywhere else (marketplace add, extraKnownMarketplaces, known_marketplaces.json) the value must name a single repository — a wildcard is taken literally and fails to clone."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git"},"url":{"type":"string","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"npm package containing marketplace.json (e.g. \\"\\\\@acme/claude-marketplace\\"). In strictKnownMarketplaces / blockedMarketplaces an entry also governs plugins installed straight from the npm marketplace (`<package>\\\\@npm`): an exact package name matches that package, and \\"\\\\@acme/*\\" matches every package under the scope."},"version":{"type":"string","description":"Version or range to fetch (e.g. \\"1.4.0\\", \\"^1.4\\"); defaults to the latest dist-tag"},"registry":{"type":"string","description":"Registry URL. When adding a marketplace: a one-off registry override (otherwise your npm configuration decides). In a policy entry: the origin and path prefix the package\'s RESOLVED tarball URL must fall under (e.g. \\"https://npm.example.com/api/npm/internal/\\"); under allowManagedPermissionRulesOnly, an npm marketplace keeps plugin allowed-tools only when both the entry and the registration pin this same registry."}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"skills-dir"}},"required":["source"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"hostPattern"},"hostPattern":{"type":"string","description":"Regex pattern to match the host/domain extracted from any marketplace source type. For github sources, matches against github.com. For git sources (SSH or HTTPS), extracts the hostname from the URL. Use in strictKnownMarketplaces to allow all marketplaces from a specific host (e.g., \\"^github\\\\.mycompany\\\\.com$\\")."}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"pathPattern"},"pathPattern":{"type":"string","description":"Regex pattern matched against the .path field of file and directory sources. Use in strictKnownMarketplaces to allow filesystem-based marketplaces alongside hostPattern restrictions for network sources. Use \\".*\\" to allow all filesystem paths, or a narrower pattern (e.g., \\"^/opt/approved/\\") to restrict to specific directories."}},"required":["source","pathPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"settings"},"name":{"type":"string","description":"Marketplace name. Must match the extraKnownMarketplaces key (enforced); the synthetic manifest is written under this name. Same validation as PluginMarketplaceSchema plus reserved-name rejection — validateOfficialNameSource runs after the disk write, too late to clean up."},"plugins":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name as it appears in the target repository"},"source":{"anyOf":[{"type":"string"},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"Package name (or url, or local path, or anything else that can be passed to `npm` as a package)"},"version":{"type":"string","description":"Specific version or version range (e.g., ^1.0.0, ~2.1.0)"},"registry":{"type":"string","description":"Custom NPM registry URL (defaults to using system default, likely npmjs.org)"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Full git repository URL (https:// or git\\\\@)"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git-subdir"},"url":{"type":"string","description":"Git repository: GitHub owner/repo shorthand, https://, or git\\\\@ URL"},"path":{"type":"string","description":"Subdirectory within the repo containing the plugin (e.g., \\"tools/claude-plugin\\"). Checked out sparsely — over https or ssh as a partial clone (--filter=tree:0) — to minimize bandwidth for monorepos."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"archive"},"url":{"type":"string","description":"HTTPS URL of a zip archive containing the plugin. The plugin root (the directory holding .claude-plugin/) may be at the top of the archive or nested one directory deep — a single wrapping directory is stripped."},"sha256":{"type":"string","description":"SHA-256 digest of the archive. When set, every download is verified against it and the install is refused on mismatch. It also serves as the version identity when neither plugin.json nor the marketplace entry declares a `version`. Recommended. Note the update signal is the version string (plugin.json version, else the entry version, else this digest) — changing only the digest while a version is declared does not trigger an update."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"command"},"command":{"type":"string","description":"Shell command that prints the absolute path of the plugin directory on stdout (exactly one line) and exits 0. It must leave a complete plugin in that directory before exiting; the directory is copied into the plugin cache, so the printed path may change between runs (it is re-resolved on every install and update, and once per session in the background). Runs through the platform shell (sh on macOS/Linux, cmd.exe on Windows) from the user\'s home directory with Claude Code\'s subprocess environment."},"timeout":{"type":"number","description":"Seconds to wait for the command before giving up (default: 60)"},"mode":{"type":"string","enum":["copy","link"],"description":"copy (default): the printed directory is copied into the plugin cache and content-hashed, so it may be deleted afterwards. link: the cache entry links to the printed directory in place (no copy, no size limit; macOS/Linux) — for large exports; the directory must then stay valid while Claude Code runs, and a different printed path is what signals new content."}},"required":["source","command"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"unsupported"},"error":{"type":"string"}},"required":["source"],"additionalProperties":false}],"description":"Where to fetch the plugin from. Must be a remote source — relative paths have no marketplace repository to resolve against. Under allowManagedPermissionRulesOnly, a settings marketplace keeps its plugins\' allowed-tools only when every npm entry here pins a `registry` on a bare package name; unpinned, the package resolves through the member\'s own npm config, and a non-bare spelling (an `npm:` alias, a `name\\\\@range`, a URL or git spec) packs as an exotic spec the pin does not bind — either way the marketplace vouches no tool grants."},"description":{"type":"string"},"version":{"type":"string"},"strict":{"type":"boolean"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"HTTP headers sent when downloading this entry\'s `archive` source."},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers for downloading this entry\'s `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path."}},"required":["name","source"],"additionalProperties":false},"description":"Plugin entries declared inline in settings.json"},"owner":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the plugin author or organization"},"email":{"type":"string","description":"Contact email for support or feedback"},"url":{"type":"string","description":"Website, GitHub profile, or organization URL"}},"required":["name"],"additionalProperties":false}},"required":["source","name","plugins"],"additionalProperties":false}],"description":"Where to fetch the marketplace from"},"installLocation":{"type":"string","description":"Local cache path where marketplace manifest is stored (auto-generated if not provided)"},"autoUpdate":{"type":"boolean","description":"Whether to automatically update this marketplace and its installed plugins on startup"}},"required":["source"],"additionalProperties":false},"description":"Additional marketplaces to make available for this repository. Typically used in repository .claude/settings.json to ensure team members have required plugin sources."},"additionalMarketplaces":{"type":"object","additionalProperties":{"type":"object","properties":{"source":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Direct URL to marketplace.json file"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., for authentication)"},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session\'s), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format. ONLY in the managed-settings policy lists (strictKnownMarketplaces / blockedMarketplaces) the owner-wildcard form \\"owner/*\\" matches every repository under exactly that owner. Everywhere else (marketplace add, extraKnownMarketplaces, known_marketplaces.json) the value must name a single repository — a wildcard is taken literally and fails to clone."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git"},"url":{"type":"string","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"npm package containing marketplace.json (e.g. \\"\\\\@acme/claude-marketplace\\"). In strictKnownMarketplaces / blockedMarketplaces an entry also governs plugins installed straight from the npm marketplace (`<package>\\\\@npm`): an exact package name matches that package, and \\"\\\\@acme/*\\" matches every package under the scope."},"version":{"type":"string","description":"Version or range to fetch (e.g. \\"1.4.0\\", \\"^1.4\\"); defaults to the latest dist-tag"},"registry":{"type":"string","description":"Registry URL. When adding a marketplace: a one-off registry override (otherwise your npm configuration decides). In a policy entry: the origin and path prefix the package\'s RESOLVED tarball URL must fall under (e.g. \\"https://npm.example.com/api/npm/internal/\\"); under allowManagedPermissionRulesOnly, an npm marketplace keeps plugin allowed-tools only when both the entry and the registration pin this same registry."}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"skills-dir"}},"required":["source"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"hostPattern"},"hostPattern":{"type":"string","description":"Regex pattern to match the host/domain extracted from any marketplace source type. For github sources, matches against github.com. For git sources (SSH or HTTPS), extracts the hostname from the URL. Use in strictKnownMarketplaces to allow all marketplaces from a specific host (e.g., \\"^github\\\\.mycompany\\\\.com$\\")."}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"pathPattern"},"pathPattern":{"type":"string","description":"Regex pattern matched against the .path field of file and directory sources. Use in strictKnownMarketplaces to allow filesystem-based marketplaces alongside hostPattern restrictions for network sources. Use \\".*\\" to allow all filesystem paths, or a narrower pattern (e.g., \\"^/opt/approved/\\") to restrict to specific directories."}},"required":["source","pathPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"settings"},"name":{"type":"string","description":"Marketplace name. Must match the extraKnownMarketplaces key (enforced); the synthetic manifest is written under this name. Same validation as PluginMarketplaceSchema plus reserved-name rejection — validateOfficialNameSource runs after the disk write, too late to clean up."},"plugins":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name as it appears in the target repository"},"source":{"anyOf":[{"type":"string"},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"Package name (or url, or local path, or anything else that can be passed to `npm` as a package)"},"version":{"type":"string","description":"Specific version or version range (e.g., ^1.0.0, ~2.1.0)"},"registry":{"type":"string","description":"Custom NPM registry URL (defaults to using system default, likely npmjs.org)"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Full git repository URL (https:// or git\\\\@)"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git-subdir"},"url":{"type":"string","description":"Git repository: GitHub owner/repo shorthand, https://, or git\\\\@ URL"},"path":{"type":"string","description":"Subdirectory within the repo containing the plugin (e.g., \\"tools/claude-plugin\\"). Checked out sparsely — over https or ssh as a partial clone (--filter=tree:0) — to minimize bandwidth for monorepos."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"archive"},"url":{"type":"string","description":"HTTPS URL of a zip archive containing the plugin. The plugin root (the directory holding .claude-plugin/) may be at the top of the archive or nested one directory deep — a single wrapping directory is stripped."},"sha256":{"type":"string","description":"SHA-256 digest of the archive. When set, every download is verified against it and the install is refused on mismatch. It also serves as the version identity when neither plugin.json nor the marketplace entry declares a `version`. Recommended. Note the update signal is the version string (plugin.json version, else the entry version, else this digest) — changing only the digest while a version is declared does not trigger an update."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"command"},"command":{"type":"string","description":"Shell command that prints the absolute path of the plugin directory on stdout (exactly one line) and exits 0. It must leave a complete plugin in that directory before exiting; the directory is copied into the plugin cache, so the printed path may change between runs (it is re-resolved on every install and update, and once per session in the background). Runs through the platform shell (sh on macOS/Linux, cmd.exe on Windows) from the user\'s home directory with Claude Code\'s subprocess environment."},"timeout":{"type":"number","description":"Seconds to wait for the command before giving up (default: 60)"},"mode":{"type":"string","enum":["copy","link"],"description":"copy (default): the printed directory is copied into the plugin cache and content-hashed, so it may be deleted afterwards. link: the cache entry links to the printed directory in place (no copy, no size limit; macOS/Linux) — for large exports; the directory must then stay valid while Claude Code runs, and a different printed path is what signals new content."}},"required":["source","command"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"unsupported"},"error":{"type":"string"}},"required":["source"],"additionalProperties":false}],"description":"Where to fetch the plugin from. Must be a remote source — relative paths have no marketplace repository to resolve against. Under allowManagedPermissionRulesOnly, a settings marketplace keeps its plugins\' allowed-tools only when every npm entry here pins a `registry` on a bare package name; unpinned, the package resolves through the member\'s own npm config, and a non-bare spelling (an `npm:` alias, a `name\\\\@range`, a URL or git spec) packs as an exotic spec the pin does not bind — either way the marketplace vouches no tool grants."},"description":{"type":"string"},"version":{"type":"string"},"strict":{"type":"boolean"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"HTTP headers sent when downloading this entry\'s `archive` source."},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers for downloading this entry\'s `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path."}},"required":["name","source"],"additionalProperties":false},"description":"Plugin entries declared inline in settings.json"},"owner":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the plugin author or organization"},"email":{"type":"string","description":"Contact email for support or feedback"},"url":{"type":"string","description":"Website, GitHub profile, or organization URL"}},"required":["name"],"additionalProperties":false}},"required":["source","name","plugins"],"additionalProperties":false}],"description":"Where to fetch the marketplace from"},"installLocation":{"type":"string","description":"Local cache path where marketplace manifest is stored (auto-generated if not provided)"},"autoUpdate":{"type":"boolean","description":"Whether to automatically update this marketplace and its installed plugins on startup"}},"required":["source"],"additionalProperties":false},"description":"Alias for extraKnownMarketplaces: this key is read exactly as if it were spelled extraKnownMarketplaces. Do not set both in one file — if both appear, this key is ignored with a warning. Claude Code may rewrite this key as extraKnownMarketplaces when it updates the file. Clients older than this alias ignore it, so prefer extraKnownMarketplaces while older Claude Code versions still share the same settings."},"strictKnownMarketplaces":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Direct URL to marketplace.json file"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., for authentication)"},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session\'s), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format. ONLY in the managed-settings policy lists (strictKnownMarketplaces / blockedMarketplaces) the owner-wildcard form \\"owner/*\\" matches every repository under exactly that owner. Everywhere else (marketplace add, extraKnownMarketplaces, known_marketplaces.json) the value must name a single repository — a wildcard is taken literally and fails to clone."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git"},"url":{"type":"string","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"npm package containing marketplace.json (e.g. \\"\\\\@acme/claude-marketplace\\"). In strictKnownMarketplaces / blockedMarketplaces an entry also governs plugins installed straight from the npm marketplace (`<package>\\\\@npm`): an exact package name matches that package, and \\"\\\\@acme/*\\" matches every package under the scope."},"version":{"type":"string","description":"Version or range to fetch (e.g. \\"1.4.0\\", \\"^1.4\\"); defaults to the latest dist-tag"},"registry":{"type":"string","description":"Registry URL. When adding a marketplace: a one-off registry override (otherwise your npm configuration decides). In a policy entry: the origin and path prefix the package\'s RESOLVED tarball URL must fall under (e.g. \\"https://npm.example.com/api/npm/internal/\\"); under allowManagedPermissionRulesOnly, an npm marketplace keeps plugin allowed-tools only when both the entry and the registration pin this same registry."}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"skills-dir"}},"required":["source"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"hostPattern"},"hostPattern":{"type":"string","description":"Regex pattern to match the host/domain extracted from any marketplace source type. For github sources, matches against github.com. For git sources (SSH or HTTPS), extracts the hostname from the URL. Use in strictKnownMarketplaces to allow all marketplaces from a specific host (e.g., \\"^github\\\\.mycompany\\\\.com$\\")."}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"pathPattern"},"pathPattern":{"type":"string","description":"Regex pattern matched against the .path field of file and directory sources. Use in strictKnownMarketplaces to allow filesystem-based marketplaces alongside hostPattern restrictions for network sources. Use \\".*\\" to allow all filesystem paths, or a narrower pattern (e.g., \\"^/opt/approved/\\") to restrict to specific directories."}},"required":["source","pathPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"settings"},"name":{"type":"string","description":"Marketplace name. Must match the extraKnownMarketplaces key (enforced); the synthetic manifest is written under this name. Same validation as PluginMarketplaceSchema plus reserved-name rejection — validateOfficialNameSource runs after the disk write, too late to clean up."},"plugins":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name as it appears in the target repository"},"source":{"anyOf":[{"type":"string"},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"Package name (or url, or local path, or anything else that can be passed to `npm` as a package)"},"version":{"type":"string","description":"Specific version or version range (e.g., ^1.0.0, ~2.1.0)"},"registry":{"type":"string","description":"Custom NPM registry URL (defaults to using system default, likely npmjs.org)"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Full git repository URL (https:// or git\\\\@)"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git-subdir"},"url":{"type":"string","description":"Git repository: GitHub owner/repo shorthand, https://, or git\\\\@ URL"},"path":{"type":"string","description":"Subdirectory within the repo containing the plugin (e.g., \\"tools/claude-plugin\\"). Checked out sparsely — over https or ssh as a partial clone (--filter=tree:0) — to minimize bandwidth for monorepos."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"archive"},"url":{"type":"string","description":"HTTPS URL of a zip archive containing the plugin. The plugin root (the directory holding .claude-plugin/) may be at the top of the archive or nested one directory deep — a single wrapping directory is stripped."},"sha256":{"type":"string","description":"SHA-256 digest of the archive. When set, every download is verified against it and the install is refused on mismatch. It also serves as the version identity when neither plugin.json nor the marketplace entry declares a `version`. Recommended. Note the update signal is the version string (plugin.json version, else the entry version, else this digest) — changing only the digest while a version is declared does not trigger an update."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"command"},"command":{"type":"string","description":"Shell command that prints the absolute path of the plugin directory on stdout (exactly one line) and exits 0. It must leave a complete plugin in that directory before exiting; the directory is copied into the plugin cache, so the printed path may change between runs (it is re-resolved on every install and update, and once per session in the background). Runs through the platform shell (sh on macOS/Linux, cmd.exe on Windows) from the user\'s home directory with Claude Code\'s subprocess environment."},"timeout":{"type":"number","description":"Seconds to wait for the command before giving up (default: 60)"},"mode":{"type":"string","enum":["copy","link"],"description":"copy (default): the printed directory is copied into the plugin cache and content-hashed, so it may be deleted afterwards. link: the cache entry links to the printed directory in place (no copy, no size limit; macOS/Linux) — for large exports; the directory must then stay valid while Claude Code runs, and a different printed path is what signals new content."}},"required":["source","command"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"unsupported"},"error":{"type":"string"}},"required":["source"],"additionalProperties":false}],"description":"Where to fetch the plugin from. Must be a remote source — relative paths have no marketplace repository to resolve against. Under allowManagedPermissionRulesOnly, a settings marketplace keeps its plugins\' allowed-tools only when every npm entry here pins a `registry` on a bare package name; unpinned, the package resolves through the member\'s own npm config, and a non-bare spelling (an `npm:` alias, a `name\\\\@range`, a URL or git spec) packs as an exotic spec the pin does not bind — either way the marketplace vouches no tool grants."},"description":{"type":"string"},"version":{"type":"string"},"strict":{"type":"boolean"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"HTTP headers sent when downloading this entry\'s `archive` source."},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers for downloading this entry\'s `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path."}},"required":["name","source"],"additionalProperties":false},"description":"Plugin entries declared inline in settings.json"},"owner":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the plugin author or organization"},"email":{"type":"string","description":"Contact email for support or feedback"},"url":{"type":"string","description":"Website, GitHub profile, or organization URL"}},"required":["name"],"additionalProperties":false}},"required":["source","name","plugins"],"additionalProperties":false}]},"description":"Enterprise strict list of allowed marketplace sources. When set in managed settings, ONLY these sources can be added as marketplaces. Entries match exactly, except that a github entry may use the owner-wildcard form {\\"source\\":\\"github\\",\\"repo\\":\\"owner/*\\"} to allow every repository under that owner. The check happens BEFORE downloading, so blocked sources never touch the filesystem. Note: this is a policy gate only — it does NOT register marketplaces. To pre-register allowed marketplaces for users, also set extraKnownMarketplaces."},"allowedMarketplaces":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Direct URL to marketplace.json file"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., for authentication)"},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session\'s), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format. ONLY in the managed-settings policy lists (strictKnownMarketplaces / blockedMarketplaces) the owner-wildcard form \\"owner/*\\" matches every repository under exactly that owner. Everywhere else (marketplace add, extraKnownMarketplaces, known_marketplaces.json) the value must name a single repository — a wildcard is taken literally and fails to clone."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git"},"url":{"type":"string","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"npm package containing marketplace.json (e.g. \\"\\\\@acme/claude-marketplace\\"). In strictKnownMarketplaces / blockedMarketplaces an entry also governs plugins installed straight from the npm marketplace (`<package>\\\\@npm`): an exact package name matches that package, and \\"\\\\@acme/*\\" matches every package under the scope."},"version":{"type":"string","description":"Version or range to fetch (e.g. \\"1.4.0\\", \\"^1.4\\"); defaults to the latest dist-tag"},"registry":{"type":"string","description":"Registry URL. When adding a marketplace: a one-off registry override (otherwise your npm configuration decides). In a policy entry: the origin and path prefix the package\'s RESOLVED tarball URL must fall under (e.g. \\"https://npm.example.com/api/npm/internal/\\"); under allowManagedPermissionRulesOnly, an npm marketplace keeps plugin allowed-tools only when both the entry and the registration pin this same registry."}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"skills-dir"}},"required":["source"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"hostPattern"},"hostPattern":{"type":"string","description":"Regex pattern to match the host/domain extracted from any marketplace source type. For github sources, matches against github.com. For git sources (SSH or HTTPS), extracts the hostname from the URL. Use in strictKnownMarketplaces to allow all marketplaces from a specific host (e.g., \\"^github\\\\.mycompany\\\\.com$\\")."}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"pathPattern"},"pathPattern":{"type":"string","description":"Regex pattern matched against the .path field of file and directory sources. Use in strictKnownMarketplaces to allow filesystem-based marketplaces alongside hostPattern restrictions for network sources. Use \\".*\\" to allow all filesystem paths, or a narrower pattern (e.g., \\"^/opt/approved/\\") to restrict to specific directories."}},"required":["source","pathPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"settings"},"name":{"type":"string","description":"Marketplace name. Must match the extraKnownMarketplaces key (enforced); the synthetic manifest is written under this name. Same validation as PluginMarketplaceSchema plus reserved-name rejection — validateOfficialNameSource runs after the disk write, too late to clean up."},"plugins":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name as it appears in the target repository"},"source":{"anyOf":[{"type":"string"},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"Package name (or url, or local path, or anything else that can be passed to `npm` as a package)"},"version":{"type":"string","description":"Specific version or version range (e.g., ^1.0.0, ~2.1.0)"},"registry":{"type":"string","description":"Custom NPM registry URL (defaults to using system default, likely npmjs.org)"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Full git repository URL (https:// or git\\\\@)"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git-subdir"},"url":{"type":"string","description":"Git repository: GitHub owner/repo shorthand, https://, or git\\\\@ URL"},"path":{"type":"string","description":"Subdirectory within the repo containing the plugin (e.g., \\"tools/claude-plugin\\"). Checked out sparsely — over https or ssh as a partial clone (--filter=tree:0) — to minimize bandwidth for monorepos."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"archive"},"url":{"type":"string","description":"HTTPS URL of a zip archive containing the plugin. The plugin root (the directory holding .claude-plugin/) may be at the top of the archive or nested one directory deep — a single wrapping directory is stripped."},"sha256":{"type":"string","description":"SHA-256 digest of the archive. When set, every download is verified against it and the install is refused on mismatch. It also serves as the version identity when neither plugin.json nor the marketplace entry declares a `version`. Recommended. Note the update signal is the version string (plugin.json version, else the entry version, else this digest) — changing only the digest while a version is declared does not trigger an update."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"command"},"command":{"type":"string","description":"Shell command that prints the absolute path of the plugin directory on stdout (exactly one line) and exits 0. It must leave a complete plugin in that directory before exiting; the directory is copied into the plugin cache, so the printed path may change between runs (it is re-resolved on every install and update, and once per session in the background). Runs through the platform shell (sh on macOS/Linux, cmd.exe on Windows) from the user\'s home directory with Claude Code\'s subprocess environment."},"timeout":{"type":"number","description":"Seconds to wait for the command before giving up (default: 60)"},"mode":{"type":"string","enum":["copy","link"],"description":"copy (default): the printed directory is copied into the plugin cache and content-hashed, so it may be deleted afterwards. link: the cache entry links to the printed directory in place (no copy, no size limit; macOS/Linux) — for large exports; the directory must then stay valid while Claude Code runs, and a different printed path is what signals new content."}},"required":["source","command"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"unsupported"},"error":{"type":"string"}},"required":["source"],"additionalProperties":false}],"description":"Where to fetch the plugin from. Must be a remote source — relative paths have no marketplace repository to resolve against. Under allowManagedPermissionRulesOnly, a settings marketplace keeps its plugins\' allowed-tools only when every npm entry here pins a `registry` on a bare package name; unpinned, the package resolves through the member\'s own npm config, and a non-bare spelling (an `npm:` alias, a `name\\\\@range`, a URL or git spec) packs as an exotic spec the pin does not bind — either way the marketplace vouches no tool grants."},"description":{"type":"string"},"version":{"type":"string"},"strict":{"type":"boolean"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"HTTP headers sent when downloading this entry\'s `archive` source."},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers for downloading this entry\'s `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path."}},"required":["name","source"],"additionalProperties":false},"description":"Plugin entries declared inline in settings.json"},"owner":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the plugin author or organization"},"email":{"type":"string","description":"Contact email for support or feedback"},"url":{"type":"string","description":"Website, GitHub profile, or organization URL"}},"required":["name"],"additionalProperties":false}},"required":["source","name","plugins"],"additionalProperties":false}]},"description":"Alias for strictKnownMarketplaces (managed settings only): this key is read exactly as if it were spelled strictKnownMarketplaces. Do not set both in one file — if both appear, this key is ignored with a warning. Clients older than this alias ignore it, so keep using strictKnownMarketplaces when the allowlist must also bind older Claude Code versions."},"blockedMarketplaces":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Direct URL to marketplace.json file"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom HTTP headers (e.g., for authentication)"},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session\'s), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format. ONLY in the managed-settings policy lists (strictKnownMarketplaces / blockedMarketplaces) the owner-wildcard form \\"owner/*\\" matches every repository under exactly that owner. Everywhere else (marketplace add, extraKnownMarketplaces, known_marketplaces.json) the value must name a single repository — a wildcard is taken literally and fails to clone."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git"},"url":{"type":"string","description":"Full git repository URL"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"path":{"type":"string","description":"Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)"},"sparsePaths":{"type":"array","items":{"type":"string"},"description":"Directories to include via git sparse-checkout (cone mode). Use for monorepos where the marketplace lives in a subdirectory. Example: [\\".claude-plugin\\", \\"plugins\\"]. If omitted, the full repository is cloned."},"skipLfs":{"type":"boolean","description":"Has no effect; accepted so existing settings keep working. Claude Code\'s own git never downloads Git LFS content: LFS-tracked files in the marketplace repository are checked out as pointer files whether or not this is set, and adding or updating the marketplace says how many were. To fetch their content, run `git lfs pull` in the marketplace\'s checkout under ~/.claude/plugins/marketplaces/."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"npm package containing marketplace.json (e.g. \\"\\\\@acme/claude-marketplace\\"). In strictKnownMarketplaces / blockedMarketplaces an entry also governs plugins installed straight from the npm marketplace (`<package>\\\\@npm`): an exact package name matches that package, and \\"\\\\@acme/*\\" matches every package under the scope."},"version":{"type":"string","description":"Version or range to fetch (e.g. \\"1.4.0\\", \\"^1.4\\"); defaults to the latest dist-tag"},"registry":{"type":"string","description":"Registry URL. When adding a marketplace: a one-off registry override (otherwise your npm configuration decides). In a policy entry: the origin and path prefix the package\'s RESOLVED tarball URL must fall under (e.g. \\"https://npm.example.com/api/npm/internal/\\"); under allowManagedPermissionRulesOnly, an npm marketplace keeps plugin allowed-tools only when both the entry and the registration pin this same registry."}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"file"},"path":{"type":"string","description":"Local file path to marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"directory"},"path":{"type":"string","description":"Local directory containing .claude-plugin/marketplace.json"}},"required":["source","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"skills-dir"}},"required":["source"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"hostPattern"},"hostPattern":{"type":"string","description":"Regex pattern to match the host/domain extracted from any marketplace source type. For github sources, matches against github.com. For git sources (SSH or HTTPS), extracts the hostname from the URL. Use in strictKnownMarketplaces to allow all marketplaces from a specific host (e.g., \\"^github\\\\.mycompany\\\\.com$\\")."}},"required":["source","hostPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"pathPattern"},"pathPattern":{"type":"string","description":"Regex pattern matched against the .path field of file and directory sources. Use in strictKnownMarketplaces to allow filesystem-based marketplaces alongside hostPattern restrictions for network sources. Use \\".*\\" to allow all filesystem paths, or a narrower pattern (e.g., \\"^/opt/approved/\\") to restrict to specific directories."}},"required":["source","pathPattern"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"settings"},"name":{"type":"string","description":"Marketplace name. Must match the extraKnownMarketplaces key (enforced); the synthetic manifest is written under this name. Same validation as PluginMarketplaceSchema plus reserved-name rejection — validateOfficialNameSource runs after the disk write, too late to clean up."},"plugins":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Plugin name as it appears in the target repository"},"source":{"anyOf":[{"type":"string"},{"type":"object","properties":{"source":{"type":"string","const":"npm"},"package":{"type":"string","description":"Package name (or url, or local path, or anything else that can be passed to `npm` as a package)"},"version":{"type":"string","description":"Specific version or version range (e.g., ^1.0.0, ~2.1.0)"},"registry":{"type":"string","description":"Custom NPM registry URL (defaults to using system default, likely npmjs.org)"}},"required":["source","package"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"url"},"url":{"type":"string","description":"Full git repository URL (https:// or git\\\\@)"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"github"},"repo":{"type":"string","description":"GitHub repository in owner/repo format"},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","repo"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"git-subdir"},"url":{"type":"string","description":"Git repository: GitHub owner/repo shorthand, https://, or git\\\\@ URL"},"path":{"type":"string","description":"Subdirectory within the repo containing the plugin (e.g., \\"tools/claude-plugin\\"). Checked out sparsely — over https or ssh as a partial clone (--filter=tree:0) — to minimize bandwidth for monorepos."},"ref":{"type":"string","description":"Git branch or tag to use (e.g., \\"main\\", \\"v1.0.0\\"). Defaults to repository default branch."},"sha":{"type":"string","description":"Specific commit SHA to use"}},"required":["source","url","path"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"archive"},"url":{"type":"string","description":"HTTPS URL of a zip archive containing the plugin. The plugin root (the directory holding .claude-plugin/) may be at the top of the archive or nested one directory deep — a single wrapping directory is stripped."},"sha256":{"type":"string","description":"SHA-256 digest of the archive. When set, every download is verified against it and the install is refused on mismatch. It also serves as the version identity when neither plugin.json nor the marketplace entry declares a `version`. Recommended. Note the update signal is the version string (plugin.json version, else the entry version, else this digest) — changing only the digest while a version is declared does not trigger an update."}},"required":["source","url"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"command"},"command":{"type":"string","description":"Shell command that prints the absolute path of the plugin directory on stdout (exactly one line) and exits 0. It must leave a complete plugin in that directory before exiting; the directory is copied into the plugin cache, so the printed path may change between runs (it is re-resolved on every install and update, and once per session in the background). Runs through the platform shell (sh on macOS/Linux, cmd.exe on Windows) from the user\'s home directory with Claude Code\'s subprocess environment."},"timeout":{"type":"number","description":"Seconds to wait for the command before giving up (default: 60)"},"mode":{"type":"string","enum":["copy","link"],"description":"copy (default): the printed directory is copied into the plugin cache and content-hashed, so it may be deleted afterwards. link: the cache entry links to the printed directory in place (no copy, no size limit; macOS/Linux) — for large exports; the directory must then stay valid while Claude Code runs, and a different printed path is what signals new content."}},"required":["source","command"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","const":"unsupported"},"error":{"type":"string"}},"required":["source"],"additionalProperties":false}],"description":"Where to fetch the plugin from. Must be a remote source — relative paths have no marketplace repository to resolve against. Under allowManagedPermissionRulesOnly, a settings marketplace keeps its plugins\' allowed-tools only when every npm entry here pins a `registry` on a bare package name; unpinned, the package resolves through the member\'s own npm config, and a non-bare spelling (an `npm:` alias, a `name\\\\@range`, a URL or git spec) packs as an exotic spec the pin does not bind — either way the marketplace vouches no tool grants."},"description":{"type":"string"},"version":{"type":"string"},"strict":{"type":"boolean"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"HTTP headers sent when downloading this entry\'s `archive` source."},"headersHelper":{"type":"string","description":"Command that prints a JSON object of HTTP headers for downloading this entry\'s `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path."}},"required":["name","source"],"additionalProperties":false},"description":"Plugin entries declared inline in settings.json"},"owner":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the plugin author or organization"},"email":{"type":"string","description":"Contact email for support or feedback"},"url":{"type":"string","description":"Website, GitHub profile, or organization URL"}},"required":["name"],"additionalProperties":false}},"required":["source","name","plugins"],"additionalProperties":false}]},"description":"Enterprise blocklist of marketplace sources. When set in managed settings, these sources are blocked from being added as marketplaces. Entries match exactly, except that a github entry may use the owner-wildcard form {\\"source\\":\\"github\\",\\"repo\\":\\"owner/*\\"} to block every repository under that owner. The check happens BEFORE downloading, so blocked sources never touch the filesystem."},"disableCommandPluginSources":{"type":"boolean","description":"Controls the `command` plugin source, whose plugin directory is produced by running a marketplace-declared command on this machine. true: command-sourced plugins are never installed, updated, or re-resolved (the command never runs). false: explicitly allowed. Unset: follows allowManagedHooksOnly — an org that restricts hook execution to managed settings gets command sources disabled too. Only honored from managed settings."},"disableSideloadFlags":{"type":"boolean","description":"When true (and set in managed settings), rejects the --plugin-dir, --plugin-url, --agents, and non-sdk --mcp-config CLI flags at startup. Closes the CLI-flag bypass of strictKnownMarketplaces. Pair with allowedMcpServers for per-server MCP control; this setting does not gate other MCP entry points (SDK setMcpServers, claude mcp add, .mcp.json). Also blocks surfaces that spawn the CLI with these flags internally (see settings documentation). Only honored from managed settings; ignored in user/project/local settings."},"pluginSuggestionMarketplaces":{"type":"array","items":{"type":"string"},"description":"Marketplace names whose plugins may surface as contextual install suggestions (relevance-based tips). No marketplace-declared suggestions surface without this allowlist; the built-in first-party frontend-design tip is unaffected. Only honored when set in managed settings (policy scope); the key is ignored in user, project, and local settings. A name only takes effect when the marketplace is registered on the machine AND its registered source is also declared in managed settings, either as the extraKnownMarketplaces entry for that name or as an entry of strictKnownMarketplaces. A marketplace registered from a different source under an allowlisted name is ignored. The official marketplace is exempt from the source requirement: allowlisting its name alone suffices, since that name can only register from the official Anthropic source."},"forceLoginMethod":{"type":"string","enum":["claudeai","console","gateway"],"description":"Force a specific login method: \\"claudeai\\" for Claude Pro/Max, \\"console\\" for Console billing, \\"gateway\\" for the Cloud gateway OIDC device flow"},"forceLoginGatewayUrl":{"type":"string","description":"Cloud gateway URL to pre-fill during login, alongside forceLoginMethod: \\"gateway\\". Honored from admin-controlled managed settings (MDM / managed-settings.json / policy helper) and, on a machine with none of those, from your own user settings; ignored in project, local, flag, and remote-delivered settings."},"gatewayInternalNetworks":{"type":"array","items":{"type":"string"},"description":"IPv4 CIDR blocks (at most 4, each /8 to /32, not overlapping) your Cloud gateway sits in: the public block your organization numbers its internal network from, which lets /login reach a gateway there. A block must lie entirely outside private space, where /login accepts a gateway without this key. /login accepts a gateway inside a listed block over a direct connection only, and only when this machine\'s own address on that connection is inside the same block, so /login must happen from a machine whose own address is inside the block (not through a proxy, VPN pool, container or NAT segment outside it). A bar against copied settings files, not proof of location. Honored only from admin-controlled managed settings (MDM / managed-settings.json / policy helper); ignored in user, project, and remote-delivered settings."},"parentSettingsBehavior":{"type":"string","enum":["first-wins","merge"],"description":"Controls whether the SDK parent tier (Options.managedSettings / --managed-settings) layers under this admin tier. \\"first-wins\\" (the default, except in a gateway session Claude Desktop\'s Code tab launched, where \\"merge\\" is): parent is dropped — admin tiers are the only policy source. \\"merge\\": parent\'s restrictive-only-filtered settings union under the admin winner. Has no effect when no admin tier exists (parent applies as the sole policy tier, still filtered restrictive-only)."},"managedSourcesBehavior":{"type":"string","enum":["first-wins","merge"],"description":"Controls how the managed settings sources compose. \\"first-wins\\" (default): the highest-priority source present (server-managed > MDM (managed plist / HKLM) > managed-settings.json) is the managed tier alone. \\"merge\\": every present source deep-merges with fixed precedence server-managed > MDM > managed-settings.json — scalars take the highest source\'s value (a restrictive boolean or enum — the allowManaged*Only locks, the disable* switches, the sandbox lock family — takes the strictest value any source sets) and arrays union, except fallbackModel, the restriction allowlists allowedMcpServers, allowedProviders, availableModels, strictKnownMarketplaces and allowedChannelPlugins, and sandbox.credentials.awsPairs and sandbox.ripgrep (the highest source that sets one owns it whole), modelOverrides (the whole map of the highest source that sets it, dropped when that source sits below the one that sets availableModels), managedMcpServers (server names union; a name set by two sources takes the higher source\'s whole entry), and the keys taken from the highest source only: the auth pins forceLoginOrgUUID, forceLoginMethod, forceLoginGatewayUrl and gatewayInternalNetworks, the credential helpers apiKeyHelper, awsAuthRefresh, awsCredentialExport, gcpAuthRefresh, otelHeadersHelper and proxyAuthHelper, modelPicker, permissions.defaultMode, parentSettingsBehavior and the policyHelper configuration (env keeps its own per-key union). Honored only from the highest-priority source present; enable it only when every lower source is admin-controlled, since lower sources then contribute entries such as permissions.allow. HKCU and --managed-settings never take part in the merge."},"forceLoginOrgUUID":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Organization UUID to require for OAuth login. Accepts a single UUID string or an array of UUIDs (any one is permitted). When set in managed settings, login fails if the authenticated account does not belong to a listed organization."},"allowedProviders":{"type":"array","items":{"type":"string","enum":["anthropic","customEndpoint","bedrock","vertex","foundry","anthropicAws","mantle","gateway"]},"description":"Managed settings only (managed-settings.json, MDM, or server-managed). The API providers Claude Code may use on this machine: \\"anthropic\\" (the Anthropic API on Anthropic\'s own host, via a claude.ai or Console sign-in or an API key; pair it with forceLoginMethod / forceLoginOrgUUID to require a sign-in), \\"bedrock\\", \\"vertex\\", \\"foundry\\", \\"anthropicAws\\", \\"mantle\\" (each meaning that provider\'s own service: its regional, FIPS, private-endpoint and sovereign-cloud hosts), \\"customEndpoint\\" (the Anthropic API or a cloud provider\'s API sent to some other host — ANTHROPIC_BASE_URL, that provider\'s ANTHROPIC_*_BASE_URL, a Foundry resource name that is not a bare name, or for Bedrock the AWS SDK\'s AWS_ENDPOINT_URL[_BEDROCK[_RUNTIME]] — such as an LLM gateway; admitted only for the value pinned in the \\"env\\" block of the same managed source), or \\"gateway\\" (the Cloud gateway sign-in). A session on a provider that is not listed is refused at startup, at login, and when it next contacts the API, with a message naming what selected the provider and the entry that would allow it. Under a list, where first-party traffic goes (ANTHROPIC_BASE_URL, a gateway sign-in) is honored only when the same managed source pins it in \\"env\\" (or forceLoginGatewayUrl), and a claude ssh tunnel into the machine is refused. A cloud provider\'s credential and tenancy variables, and the network path and TLS trust (HTTPS_PROXY, NODE_EXTRA_CA_CERTS, CLAUDE_CODE_CERT_STORE), are not judged by this list; set those for the fleet in the managed \\"env\\" block, whose values replace the user\'s. To route Bedrock through a gateway for a fleet, pin ANTHROPIC_BEDROCK_BASE_URL there (it is what the clients use, ahead of an endpoint_url in ~/.aws/config, which this list does not judge); the AWS SDK\'s AWS_ENDPOINT_URL* pins only sanction where the SDK\'s own clients go and never stand in for the \\"bedrock\\" entry. Unset allows every provider; an empty array allows none. Only a list in managed-settings.json or MDM is enforcement on the machine: it cannot be widened or hidden by server-managed settings and reaches every session. A list set only in the admin console reaches only sessions that fetch your server-managed settings — not a session on a cloud provider, another organization or a non-Anthropic ANTHROPIC_BASE_URL, one authenticating only with apiKeyHelper or ANTHROPIC_AUTH_TOKEN, a Pro/Max login, --bare without an API key, or a first launch before the fetch lands — all conditions the user controls. Versions that predate this setting ignore it; pair it with a minimum-version policy on a mixed fleet. \'claude auth status\' reports the Anthropic API as apiProvider \\"firstParty\\"."},"forceRemoteSettingsRefresh":{"type":"boolean","description":"When set in managed settings, the CLI blocks startup until remote managed settings are freshly fetched, and exits if the fetch fails"},"otelHeadersHelper":{"type":"string","description":"Path to a script that outputs OpenTelemetry headers"},"outputStyle":{"type":"string","description":"Controls the output style for assistant responses"},"viewMode":{"type":"string","enum":["default","verbose","focus"],"description":"Default transcript view mode on startup"},"language":{"type":"string","description":"Preferred language for Claude responses and voice dictation (e.g., \\"japanese\\", \\"spanish\\")"},"skipWebFetchPreflight":{"type":"boolean","description":"Skip the WebFetch blocklist check for enterprise environments with restrictive security policies"},"sandbox":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Run Bash commands inside the sandbox. Default: false. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, and managed, --settings or user settings set true, false from project settings (.claude/settings.json and .claude/settings.local.json) is ignored (true there still applies)."},"failIfUnavailable":{"type":"boolean","description":"Exit with an error at startup if sandbox.enabled is true but the sandbox cannot start (missing dependencies or unsupported platform). When false (default), a warning is shown and commands run unsandboxed. Intended for managed-settings deployments that require sandboxing as a hard gate. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, and managed, --settings or user settings set true, false from project settings (.claude/settings.json and .claude/settings.local.json) is ignored (true there still applies)."},"autoAllowBashIfSandboxed":{"type":"boolean"},"allowUnsandboxedCommands":{"type":"boolean","description":"Allow commands to run outside the sandbox via the dangerouslyDisableSandbox parameter. When false, the dangerouslyDisableSandbox parameter is completely ignored and all commands must run sandboxed. Default: true. A false in managed, --settings or user settings holds whatever project settings (.claude/settings.json and .claude/settings.local.json) say (false there still applies)."},"network":{"type":"object","properties":{"allowedDomains":{"type":"array","items":{"type":"string"},"description":"Domains sandboxed commands may reach without a prompt (wildcards such as *.example.com supported). Merged with WebFetch(domain:…) allow rules and across settings sources. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored. With network.allowManagedDomainsOnly, only managed settings supply it."},"deniedDomains":{"type":"array","items":{"type":"string"},"description":"Domains that are always blocked, even if matched by allowedDomains. Supports the same wildcard syntax as allowedDomains. Merged from all settings sources regardless of allowManagedDomainsOnly."},"strictAllowlist":{"type":"boolean","description":"When true, the sandbox runtime deterministically denies hosts not in allowedDomains instead of prompting. Enforced for sandboxed commands only — in-process tools such as WebFetch are not gated by this setting. Only honored from user, managed/policy, or CLI (--settings) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored, and while it is on their allowedDomains and WebFetch(domain:…) allow rules are left out of the allowlist."},"allowManagedDomainsOnly":{"type":"boolean","description":"When true (and set in managed settings), only allowedDomains and WebFetch(domain:...) allow rules from managed settings are respected. User, project, local, and flag settings domains are ignored. Denied domains are still respected from all sources."},"allowUnixSockets":{"type":"array","items":{"type":"string"},"description":"macOS only: Unix socket paths to allow. Ignored on Linux (seccomp cannot filter by path). Merged across settings sources. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored."},"allowAllUnixSockets":{"type":"boolean","description":"If true, allow all Unix sockets (disables blocking on both platforms). When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, true from project settings (.claude/settings.json and .claude/settings.local.json) is ignored (false there still applies)."},"allowLocalBinding":{"type":"boolean","description":"macOS only: If true, sandboxed commands can bind to localhost ports. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, true from project settings (.claude/settings.json and .claude/settings.local.json) is ignored (false there still applies)."},"allowMachLookup":{"type":"array","items":{"type":"string"},"description":"macOS only: Additional XPC/Mach service names to allow looking up. Supports trailing-wildcard prefix matching (e.g., \\"com.apple.coresimulator.*\\"). Needed for tools that communicate via XPC such as the iOS Simulator or Playwright. Merged across settings sources. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored."},"httpProxyPort":{"type":"number","description":"Local TCP port of your own HTTP proxy for sandboxed traffic, used instead of the proxy Claude Code runs. When managed settings or a --settings file set allowUnsandboxedCommands: false, network.deniedDomains or a WebFetch(domain:…) deny rule, when managed settings set network.allowManagedDomainsOnly: true, or when managed, --settings or user settings set network.strictAllowlist: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored. With network.allowManagedDomainsOnly, only managed settings may set it."},"socksProxyPort":{"type":"number","description":"Local TCP port of your own SOCKS5 proxy for sandboxed traffic, used instead of the proxy Claude Code runs. When managed settings or a --settings file set allowUnsandboxedCommands: false, network.deniedDomains or a WebFetch(domain:…) deny rule, when managed settings set network.allowManagedDomainsOnly: true, or when managed, --settings or user settings set network.strictAllowlist: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored. With network.allowManagedDomainsOnly, only managed settings may set it."},"tlsTerminate":{"type":"object","properties":{"caCertPath":{"type":"string"},"caKeyPath":{"type":"string"}},"additionalProperties":false,"description":"[EXPERIMENTAL] Enable in-process TLS termination so the per-request filter can see HTTPS request bodies. Provide a CA cert+key, or omit both to have sandbox-runtime generate an ephemeral one for the session. On native Windows an ephemeral CA cannot pass the sandbox trust check, so omitting the paths uses a persistent CA managed by the sandbox runtime (set up and trusted via /sandbox install); configured paths are passed to the sandbox runtime verbatim, which rejects a bad or incomplete pair at sandbox initialization. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored."}},"additionalProperties":false},"filesystem":{"type":"object","properties":{"allowWrite":{"type":"array","items":{"type":"string"},"description":"Additional paths to allow writing within the sandbox. Merged with paths from Edit(...) allow permission rules. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored. When managed settings or a --settings file set filesystem.denyRead, a Read(…) deny rule or a credentials.files entry (deny or mask), a value from project settings (.claude/settings.json and .claude/settings.local.json) under or equal to a denied path, or spelled as a glob or a network path (UNC or automount), is ignored. A value inside a directory sandboxed commands can already write is re-checked before every command and dropped once it has been re-pointed into a denied read path."},"denyWrite":{"type":"array","items":{"type":"string"},"description":"Additional paths to deny writing within the sandbox. Merged with paths from Edit(...) deny permission rules."},"denyRead":{"type":"array","items":{"type":"string"},"description":"Additional paths to deny reading within the sandbox. Merged with paths from Read(...) deny permission rules."},"allowRead":{"type":"array","items":{"type":"string"},"description":"Paths to re-allow reading within denyRead regions. Takes precedence over denyRead for matching paths. When managed settings or a --settings file set allowUnsandboxedCommands: false, filesystem.denyRead, a Read(…) deny rule or a credentials.files entry (deny or mask), or managed settings set network.allowManagedDomainsOnly: true, a value from project settings (.claude/settings.json and .claude/settings.local.json) that would re-open a path managed, --settings or user settings deny reading is ignored, as is one spelled as a glob or a network path (UNC or automount); one carving out of the project\'s own denyRead still applies. A value inside a directory sandboxed commands can write is re-checked before every command and dropped once it has been re-pointed into a denied path."},"allowManagedReadPathsOnly":{"type":"boolean","description":"When true (set in managed settings), only allowRead paths from policySettings are used."},"disabled":{"type":"boolean","description":"macOS and Linux/WSL only: skip filesystem isolation entirely while keeping network and seccomp isolation. Ignored on native Windows, where the sandboxed process runs as a separate user with no inherent rights, so skipping the filesystem rules would withhold every access grant rather than loosen them — filesystem isolation stays on there. Sandboxed commands get unrestricted read/write access to the host filesystem; network egress is still confined to network.allowedDomains. Intended for deployments whose goal is egress control rather than filesystem containment. Does not change Bash prompting: sandbox.autoAllowBashIfSandboxed is independent and still defaults to true, so set it to false to keep prompting for sandboxed commands. Drops the read protection from filesystem.denyRead and credentials.files deny entries for sandboxed commands, since both are enforced by the filesystem layer this turns off; credentials.files mask entries (sentinel binds) and credentials.envVars deny/mask are unaffected. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored. If managed settings configure sandbox.filesystem at all, or list any sandbox.credentials.files deny entry, only managed settings can set this: an admin who deployed filesystem restrictions must not have them switched off by a user-writable file. (sandbox.credentials.envVars and credentials.files mask entries do not pin it — env scrubbing and sentinel binds are independent of the filesystem layer and survive this setting.) When unset, filesystem isolation stays on."}},"additionalProperties":false},"credentials":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path to a credential file or directory. Same resolution as sandbox.filesystem.* paths: absolute, ~ expanded, or relative to the settings file root (project root for project settings, ~/.claude for user settings)."},"mode":{"type":"string","enum":["deny","mask"],"description":"Access mode for this path. `deny` blocks reads inside the sandbox; `mask` shows sandboxed commands a sentinel-substituted copy (whole-file, or only the spans captured by `extract`) and the host proxy swaps sentinel→real on egress to `injectHosts`. On macOS and Windows `mask` currently degrades to `deny`."},"extract":{"type":"string","description":"Optional regex for structured masking when mode is `mask`. Applied globally to the file; capture group 1 of each match is a credential value, and only those captured spans are replaced with sentinels — the rest of the file is preserved so a tool that parses it (.netrc, JSON, YAML) still succeeds. Without `extract`, the entire file content is replaced with one sentinel (whole-file masking, suited to single-secret files). If the regex matches nothing, behavior is governed by `onExtractNoMatch` (default `warn`). Accepted but ignored for `deny`."},"onExtractNoMatch":{"type":"string","enum":["warn","deny","error"],"description":"What to do when `extract` matches nothing in the file — or, with `decode`, when no candidate survives verification. `warn` (default) emits a stderr warning and leaves the file readable as-is inside the sandbox (fail-open, for credentials that may be legitimately absent); `deny` degrades the entry to mode `deny` so the file is unreadable (fail-closed) — under `sandbox.filesystem.disabled` it is treated as `error`, since read-denies are dropped in that mode; `error` aborts at sandbox setup so nothing runs until the config is fixed. Only meaningful when mode is `mask` and `extract` or `decode` is set; accepted but ignored otherwise."},"decode":{"type":"string","const":"jwt","description":"Optional encoded-credential format for `mask` mode. `jwt`: candidates are located with a built-in JWT regex (or the explicit `extract` pattern, if set), verified to actually be JWTs before masking, and replaced with a structurally valid fake JWT so client-side token parsing inside the sandbox keeps working. If no candidate verifies, behavior is governed by `onExtractNoMatch` (default `warn`). Accepted but ignored for `deny`."},"maskClaims":{"type":"array","items":{"type":"string"},"description":"Names of top-level payload claims to mask inside each decoded value, instead of replacing the whole token. Each named claim present with a string value gets its own sentinel and the token is rebuilt around the modified payload; all other claims are preserved so a tool that decodes the token and reads a non-secret claim keeps working. Requires `decode`. If no named claim matches in any verified token, behavior is governed by `onExtractNoMatch` (default `warn`). Only meaningful when mode is `mask`; accepted but ignored for `deny`."},"maskDuplicates":{"type":"boolean","description":"If true, verbatim occurrences of each captured credential value outside the regex-matched spans are also replaced with the corresponding sentinel — for a secret repeated where the regex does not reach (e.g. pasted into a comment). Matches raw substrings, so short or common values may corrupt unrelated content; intended for long, high-entropy secrets. Defaults to false. Only meaningful when mode is `mask` and `extract` or `decode` is set; accepted but ignored otherwise."},"injectHosts":{"type":"array","items":{"type":"string"},"description":"Optional narrowing of where the proxy substitutes this credential. Only meaningful when mode is `mask`; accepted but ignored for `deny`. If unset, defaults to `network.allowedDomains` — the credential is injected at every reachable host. Each entry must be reachable via `network.allowedDomains` (sandbox-runtime validates this)."}},"required":["path","mode"],"additionalProperties":false},"description":"Credential files or directories to protect. `deny` blocks reads inside the sandbox; `mask` substitutes a sentinel inside the sandbox (whole-file, or per-`extract` capture) and injects the real value at the proxy. On macOS and Windows `mask` degrades to `deny`."},"envVars":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"mode":{"type":"string","enum":["deny","mask"],"description":"Access mode for this environment variable. `deny` unsets the variable for sandboxed commands; `mask` shows sandboxed commands a sentinel value and the host proxy swaps sentinel→real on egress to `injectHosts`."},"extract":{"type":"string","description":"Optional regex for structured masking when mode is `mask`. Applied globally to the value; capture group 1 of each match is a credential value, and only those captured spans are replaced with sentinels — the rest of the value is preserved so a tool that parses it (a `DATABASE_URL` connection string, a composite `KEY:SECRET` pair) still succeeds inside the sandbox. Without `extract`, the entire value is replaced with one sentinel (whole-value masking, suited to bare tokens). If the regex matches nothing, behavior is governed by `onExtractNoMatch` (default `warn`). Cannot be combined with `decode` (the decode path never consults it). Accepted but ignored for `deny`."},"onExtractNoMatch":{"type":"string","enum":["warn","deny","error"],"description":"What to do when `extract` matches nothing in the value. `warn` (default) emits a stderr warning and lets the variable pass through unmasked (fail-open, for credentials that may be legitimately absent); `deny` unsets the variable inside the sandbox (fail-closed); `error` aborts at sandbox setup so nothing runs until the config is fixed. Only meaningful when mode is `mask` and `extract` is set without `decode`. On a mask entry with `decode`, the runtime takes the decode path and never consults this field, so a fail-closed setting cannot be honored — `deny` and `error` are rejected there; only `warn` is accepted. In all other shapes the field is accepted but ignored."},"decode":{"type":"string","const":"jwt","description":"Optional encoded-credential format for `mask` mode. `jwt`: the variable\'s whole value is verified to actually be a JWT and replaced with a structurally valid fake JWT so client-side token parsing inside the sandbox keeps working; the proxy swaps the whole fake token on egress. If the value does not verify, the variable is left unmasked with a stderr warning (fail-open). Cannot be combined with `extract` — the decode path never consults it. Accepted but ignored for `deny`."},"maskClaims":{"type":"array","items":{"type":"string"},"description":"Names of top-level payload claims to mask inside the decoded value, instead of replacing the whole token. Each named claim present with a string value gets its own sentinel and the token is rebuilt around the modified payload; all other claims are preserved so claim-reading clients keep working. Requires `decode`. If no named claim matches, the variable is left unmasked with a stderr warning (fail-open). Only meaningful when mode is `mask`; accepted but ignored for `deny`."},"injectHosts":{"type":"array","items":{"type":"string"},"description":"Optional narrowing of where the proxy substitutes this credential. Only meaningful when mode is `mask`; accepted but ignored for `deny`. If unset, defaults to `network.allowedDomains` — the credential is injected at every reachable host. Each entry must be reachable via `network.allowedDomains` (sandbox-runtime validates this)."}},"required":["name","mode"],"additionalProperties":false},"description":"Environment variables to protect. `deny` unsets the variable for sandboxed commands; `mask` substitutes a sentinel inside the sandbox and injects the real value at the proxy."},"allowPlaintextInject":{"type":"boolean","description":"Allow sentinel→real substitution on the plain-HTTP proxy path. Defaults to false: without TLS termination the upstream identity is unverified and the credential travels in cleartext. Set only for trusted-network test fixtures. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored."},"awsPairs":{"type":"array","items":{"type":"object","properties":{"accessKeyIdVar":{"type":"string","description":"Name of the masked env var holding the AWS access key id."},"secretAccessKeyVar":{"type":"string","description":"Name of the masked env var holding the AWS secret access key."},"sessionTokenVar":{"type":"string","description":"Optional name of the masked env var holding the AWS session token (temporary credentials). When set, the proxy sends the real token as x-amz-security-token on re-signed requests and adds it to the signed header set if the client did not."}},"required":["accessKeyIdVar","secretAccessKeyVar"],"additionalProperties":false},"description":"Explicit groupings of masked env vars into AWS credential pairs for SigV4 re-signing, for non-standard variable names. The conventional AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN trio is paired automatically when masked. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored. A member is only usable when its env var is forwarded as a whole-value `mask` entry (an entry carrying `extract` or `decode` does not qualify — re-signing needs the whole real value). A pair whose key id or secret member is unusable never re-signs: it is dropped, unless it names a conventional AWS variable, in which case it is forwarded as an inert suppressor so implicit auto-pairing stays overridden. A pair whose ONLY unusable member is the session token still re-signs, without an x-amz-security-token (temporary-credential requests fail upstream until the entry is fixed)."},"sigv4":{"type":"object","properties":{"streaming":{"type":"string","enum":["deny","passthrough"],"description":"Policy for aws-chunked streaming uploads (x-amz-content-sha256: STREAMING-*): per-chunk signatures chain off the seed signature, so re-signing would require rewriting the body. `deny` (default) fails closed with a 403; `passthrough` forwards the request unre-signed (the upstream will reject its signature)."},"presigned":{"type":"string","enum":["deny","passthrough"],"description":"Policy for presigned URLs (X-Amz-Algorithm/X-Amz-Signature in the query, no Authorization header): the signature lives in the URL itself. `deny` (default) or `passthrough`."},"sigv4a":{"type":"string","enum":["deny","passthrough"],"description":"Policy for SigV4A (AWS4-ECDSA-P256-SHA256) asymmetric signatures: there is no shared-key HMAC to recompute. `deny` (default) or `passthrough`."}},"additionalProperties":false,"description":"Policies for AWS SigV4 request shapes the proxy cannot re-sign (streaming, presigned, sigv4a) when they reference a masked credential pair: `deny` (default) or `passthrough`. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored."}},"additionalProperties":false},"ignoreViolations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Sandbox violations to leave unreported: a map of command patterns (\\"*\\" for every command) to the filesystem paths whose violations are ignored. Merged across settings sources. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored."},"enableWeakerNestedSandbox":{"type":"boolean","description":"Linux only: Run without the fresh /proc mount, for hosts such as unprivileged Docker containers that cannot create one. **Reduces security** — the host /proc stays readable by sandboxed commands. Default: false. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, true from project settings (.claude/settings.json and .claude/settings.local.json) is ignored (false there still applies)."},"enableWeakerNetworkIsolation":{"type":"boolean","description":"macOS only: Allow access to com.apple.trustd.agent in the sandbox. Needed for Go-based CLI tools (gh, gcloud, terraform, etc.) to verify TLS certificates when using httpProxyPort with a MITM proxy and custom CA. **Reduces security** — opens a potential data exfiltration vector through the trustd service. Default: false. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, true from project settings (.claude/settings.json and .claude/settings.local.json) is ignored (false there still applies)."},"allowAppleEvents":{"type":"boolean","description":"macOS only: Allow sandboxed commands to send Apple Events (and look up the appleeventsd Mach service). Needed for `open`, `osascript`, and browser-based auth flows that open URLs. **Removes code-execution isolation** — sandboxed commands can launch other applications unsandboxed with no user prompt, and can script running apps (e.g. Terminal) subject to the user\'s per-app TCC automation consent. Only honored from user, managed/policy, or CLI (--settings) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored. Default: false"},"excludedCommands":{"type":"array","items":{"type":"string"},"description":"Command patterns (Bash permission-rule syntax) that always run outside the sandbox. A convenience, not a security boundary: excluded commands still go through the permission flow. Merged across settings sources. When managed settings or a --settings file set allowUnsandboxedCommands: false, or managed settings set network.allowManagedDomainsOnly: true, values from project settings (.claude/settings.json and .claude/settings.local.json) are ignored."},"ripgrep":{"type":"object","properties":{"command":{"type":"string"},"args":{"type":"array","items":{"type":"string"}}},"required":["command"],"additionalProperties":false,"description":"Custom ripgrep configuration for bundled ripgrep support. Only honored from user, managed/policy, or CLI (--settings) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored."},"bwrapPath":{"type":"string","description":"Linux/WSL only: Absolute path to the bwrap (bubblewrap) binary. Overrides auto-detection via PATH. Only honored from admin-controlled managed settings."},"socatPath":{"type":"string","description":"Linux/WSL only: Absolute path to the socat binary used for the sandbox network proxy. Overrides auto-detection via PATH. Only honored from admin-controlled managed settings."}},"additionalProperties":{}},"feedbackSurveyRate":{"type":"number","description":"Probability (0–1) that the session quality survey appears when eligible. 0.05 is a reasonable starting point."},"feedbackDrafts":{"type":"string","enum":["notify","quiet","off"],"description":"Model-drafted feedback (the SendFeedback tool). \\"notify\\" (default) shows a one-line notice when a draft is queued; \\"quiet\\" shows only the footer counter; \\"off\\" disables the tool entirely so drafts are never queued."},"spinnerTipsEnabled":{"type":"boolean","description":"Whether to show tips in the spinner"},"spinnerVerbs":{"type":"object","properties":{"mode":{"type":"string","enum":["append","replace"]},"verbs":{"type":"array","items":{"type":"string"}}},"required":["mode","verbs"],"additionalProperties":false,"description":"Customize spinner verbs. mode: \\"append\\" adds verbs to defaults, \\"replace\\" uses only your verbs."},"spinnerTipsOverride":{"type":"object","properties":{"excludeDefault":{"type":"boolean"},"tips":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":{}}]}},"tipsFile":{"type":"string","description":"Absolute or ~/ local path to a JSON file holding an array of tips (same shapes as `tips`); honored from user, --settings and on-disk managed settings only. Read once per CLI process (restart to pick up edits)."},"label":{"type":"string","description":"Prefix shown before your tips in the spinner (default \\"Tip\\")"}},"additionalProperties":{},"description":"Add your organization\'s own tips to the spinner tip rotation. tips: strings or {id, text, cooldownSessions?, priority?} objects; tipsFile: a JSON file of the same; label: prefix shown before your tips; excludeDefault: if true, only show your tips (default: false)."},"syntaxHighlightingDisabled":{"type":"boolean","description":"Whether to disable syntax highlighting in diffs"},"maxProseWidth":{"type":"number","description":"Maximum width, in terminal columns, of the prose in Claude\'s responses (paragraphs, headings, lists, blockquotes). In a wider terminal the prose wraps at this width while tables and code blocks keep the full width; only the display wraps, the response text itself gains no line breaks. Minimum 40. Unset (the default) uses the full terminal width."},"spellcheck":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Turn on spell checking of the prompt input (default: false)"},"checker":{"type":"string","description":"Which spell checker to run: \\"aspell\\", \\"hunspell\\", \\"ispell\\", or \\"auto\\" (default) for the first of those found on PATH"},"language":{"type":"string","description":"Dictionary to use, passed to the checker as-is (aspell --lang, hunspell -d, ispell -d), e.g. \\"en_GB\\"; names are checker-specific (letters, digits and _ - . , only). Default: the checker\'s own default"},"color":{"type":"string","description":"Color of misspelled words (they are also underlined): a terminal color name such as \\"red\\" or \\"magenta\\", \\"#rrggbb\\", \\"rgb(r,g,b)\\", \\"ansi256(n)\\" or \\"ansi:<name>\\". Default: the theme\'s error color"}},"additionalProperties":{},"description":"Underline misspelled words in the prompt input as you type, using an installed aspell, hunspell or ispell (off unless \\"enabled\\" is true; does nothing if none is installed). Read from user, flag and managed settings only (the whole block from the highest-precedence of those applies); ignored in project .claude/settings.json and .claude/settings.local.json."},"terminalTitleFromRename":{"type":"boolean","description":"Whether /rename updates the terminal tab title (defaults to true). Set to false to keep auto-generated topic titles."},"promptCacheTtl":{"type":"string","enum":["5m","1h"],"description":"Prompt cache TTL for the main conversation (interactive, -p and SDK turns, plus the helpers that run inline with it): \\"5m\\" or \\"1h\\". Unset = automatic: 1 hour on a Claude subscription within its usage limits, 5 minutes on an API key, Bedrock, Vertex or Foundry. 1-hour cache writes are billed at a higher rate; the cache stays warm across longer breaks. The CLAUDE_CODE_PROMPT_CACHE_TTL environment variable takes precedence."},"subagentPromptCacheTtl":{"type":"string","enum":["5m","1h"],"description":"Prompt cache TTL for everything outside the main conversation — subagents, workflows, background and helper requests: \\"5m\\" or \\"1h\\". Unset = automatic (5 minutes unless ENABLE_PROMPT_CACHING_1H=1). The CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL environment variable takes precedence."},"alwaysThinkingEnabled":{"type":"boolean","description":"When false, thinking is disabled. When absent or true, thinking is enabled automatically for supported models."},"effortLevel":{"type":"string","enum":["low","medium","high","xhigh"],"description":"Persisted effort level for supported models."},"maxEffortLevel":{"type":"string","enum":["low","medium","high","xhigh","max"],"description":"Maximum effort level. Anything above it (an /effort or /model pick, --effort, CLAUDE_CODE_EFFORT_LEVEL, a model default) is clamped to it, on every provider including Bedrock, Vertex and Foundry. Combines with an organization\'s per-model effort cap by taking the lower of the two; across settings files the lowest value wins, and modelSettings.<model>.maxEffortLevel replaces it per model. Enforced client-side: an effort supplied through CLAUDE_CODE_EXTRA_BODY is not clamped."},"modelSettings":{"type":"object","additionalProperties":{"type":"object","properties":{"effortLevel":{"type":"string","enum":["low","medium","high","xhigh"],"description":"Persisted effort level for this model."},"maxEffortLevel":{"type":"string","enum":["low","medium","high","xhigh","max"],"description":"Maximum effort level for this model. Within one settings file it replaces the top-level maxEffortLevel for the model (\\"max\\" exempts it); across settings files the lowest applicable value wins. Keyed like effortLevel: the canonical model name also matches its dated, [1m], Bedrock and Vertex spellings."},"autoCompactWindow":{"anyOf":[{"type":"string","const":"auto"},{"type":"number"}],"description":"Auto-compact window for this model, in tokens (100000 to 1000000), or \\"auto\\" for the window tuned for the model. Within one settings file it replaces the top-level autoCompactWindow for the model. /autocompact saves here. The canonical model name as key also matches its dated, [1m], Bedrock and Vertex spellings."}},"additionalProperties":{}},"description":"Per-model settings keyed by canonical model name."},"ultracode":{"type":"boolean","description":"Enable ultracode for the session: standing dynamic-workflow orchestration at any effort level. Session-scoped — typically provided via --settings or the apply_flag_settings control request; interactive toggles never persist it. Requires workflows to be enabled and a model that supports ultracode."},"autoCompactWindow":{"type":"number","description":"Auto-compact window size"},"advisorModel":{"type":"string","description":"Advisor model for the server-side advisor tool."},"fastMode":{"type":"boolean","description":"When true, fast mode is enabled. When absent or false, fast mode is off."},"fastModePerSessionOptIn":{"type":"boolean","description":"When true, fast mode does not persist across sessions. Each session starts with fast mode off."},"promptSuggestionEnabled":{"type":"boolean","description":"When false, prompt suggestions are disabled. When absent or true, prompt suggestions are enabled."},"emojiCompletionEnabled":{"type":"boolean","description":"When false, the :emoji: shortcode typeahead (the suggestion popup and the :name: inline replacement) is disabled. When absent or true, it is enabled."},"showClearContextOnPlanAccept":{"type":"boolean","description":"When true, the plan-approval dialog offers a \\"clear context\\" option. Defaults to false."},"askUserQuestionTimeout":{"type":"string","enum":["60s","5m","10m","never"],"description":"Idle time before Claude\'s questions auto-continue with any answers selected so far. Defaults to never — auto-continue only runs when explicitly set to 60s/5m/10m."},"dialogExpiry":{"type":"string","enum":["60s","5m","10m","never"],"description":"Max time a permission/user dialog forwarded to a remote client stays parked awaiting an answer, and how long a HELD cross-session message awaits approval, before either resolves to its safe no-action default (cancelled / dropped-with-denial). Defaults to 5m to match the long-standing remote-dialog deadline; \\"never\\" disables the deadline. Local-only permission prompts (no remote client) are unaffected. The CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS env var, when set, overrides this. Read from trusted sources only (never a checked-in repo settings file)."},"agent":{"type":"string","description":"Name of an agent (built-in or custom) to use for the main thread. Applies the agent\'s system prompt, tool restrictions, and model."},"companyAnnouncements":{"type":"array","items":{"type":"string"},"description":"Company announcements to display at startup (one will be randomly selected if multiple are provided)"},"pluginConfigs":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"mcpServers":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}},"description":"User configuration values for MCP servers keyed by server name"},"options":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"description":"Non-sensitive option values from plugin manifest userConfig, keyed by option name. Sensitive values go to secure storage instead."}},"additionalProperties":false},{"type":"object","additionalProperties":{}}]},"description":"Per-plugin configuration including MCP server user configs, keyed by plugin ID (plugin\\\\@marketplace format)"},"remote":{"type":"object","properties":{"defaultEnvironmentId":{"type":"string","description":"Default environment ID to use for cloud sessions"}},"additionalProperties":false,"description":"Cloud session configuration"},"autoUpdatesChannel":{"type":"string","enum":["latest","stable","rc"],"description":"Release channel for auto-updates (latest or stable)"},"minimumVersion":{"type":"string","description":"Minimum version to stay on - prevents downgrades when switching to stable channel"},"requiredMinimumVersion":{"type":"string","description":"Minimum Claude Code version required to start. If the running version is older, Claude Code exits at startup with instructions to update. Only enforced from managed (policy) settings."},"requiredMaximumVersion":{"type":"string","description":"Maximum Claude Code version allowed to start. If the running version is newer, Claude Code exits at startup with instructions to install an approved version. Only enforced from managed (policy) settings."},"plansDirectory":{"type":"string","description":"Custom directory for plan files, relative to project root. If not set, defaults to ~/.claude/plans/"},"tui":{"type":"string","enum":["default","fullscreen"],"description":"Terminal UI renderer. \\"fullscreen\\" uses the flicker-free alt-screen renderer with virtualized scrollback (equivalent to CLAUDE_CODE_NO_FLICKER=1). \\"default\\" uses the classic main-screen renderer."},"voice":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["hold","tap"],"description":"\'hold\' (default): hold to talk. \'tap\': tap to start, tap to stop+submit."},"autoSubmit":{"type":"boolean","description":"Submit the prompt when hold-to-talk is released (hold mode only)"}},"additionalProperties":false,"description":"Voice mode settings (hold-to-talk / tap-to-toggle dictation)"},"channelsEnabled":{"type":"boolean","description":"Managed-org opt-in for channel notifications (MCP servers with the claude/channel capability pushing inbound messages). claude.ai Teams/Enterprise: default off. Console: default on unless managed settings exist. Set true to allow; users then select servers via --channels."},"allowedChannelPlugins":{"type":"array","items":{"type":"object","properties":{"marketplace":{"type":"string"},"plugin":{"type":"string"}},"required":["marketplace","plugin"],"additionalProperties":false},"description":"Managed-org allowlist of channel plugins. When set, replaces the default Anthropic allowlist — admins decide which plugins may push inbound messages. Undefined falls back to the default. Requires channelsEnabled: true."},"prefersReducedMotion":{"type":"boolean","description":"Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)"},"timeFormat":{"type":"string","description":"Clock format for times shown in the UI: \\"auto\\" (default, follows the locale), \\"12-hour\\", \\"24-hour\\", \\"24-hour-utc\\" (\\"18:05Z\\"), or a strftime pattern such as \\"%H:%M\\" (any value containing \\"%\\"; other values read as \\"auto\\"). A pattern replaces the time everywhere; message timestamps show only the pattern, so include %Y-%m-%d for the date. /config offers the presets; a pattern is set here."},"timeZone":{"type":"string","description":"IANA time zone for times shown in the UI, e.g. \\"UTC\\" or \\"Europe/Dublin\\". Default: the system time zone. An unknown name falls back to the system time zone."},"autoMemoryEnabled":{"type":"boolean","description":"Enable auto-memory for this project. When false, Claude will not read from or write to the auto-memory directory."},"autoMemoryDirectory":{"type":"string","description":"Custom directory path for auto-memory storage. Supports ~/ prefix for home directory expansion. Ignored if set in projectSettings (checked-in .claude/settings.json) for security. When unset, defaults to ~/.claude/projects/<sanitized-cwd>/memory/."},"autoDreamEnabled":{"type":"boolean","description":"Enable background memory consolidation (auto-dream). When set, overrides the server-side default."},"showThinkingSummaries":{"type":"boolean","description":"Request API-side thinking summaries and show them in the conversation and in the transcript view (ctrl+o). Set explicitly to override the default for your install."},"skipDangerousModePermissionPrompt":{"type":"boolean","description":"Whether the user has accepted the bypass permissions mode dialog"},"disableAutoMode":{"type":"string","const":"disable","description":"Disable auto mode"},"sshConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for this SSH config. Used to match configs across settings sources."},"name":{"type":"string","description":"Display name for the SSH connection"},"sshHost":{"type":"string","description":"SSH host in format \\"user\\\\@hostname\\" or \\"hostname\\", or a host alias from ~/.ssh/config"},"sshPort":{"type":"number","description":"SSH port (default: 22)"},"sshIdentityFile":{"type":"string","description":"Path to SSH identity file (private key)"},"startDirectory":{"type":"string","description":"Default working directory on the remote host. Supports tilde expansion (e.g. ~/projects). If not specified, defaults to the remote user home directory. Can be overridden by the [dir] positional argument in `claude ssh <config> [dir]`."}},"required":["id","name","sshHost"],"additionalProperties":false},"description":"SSH connection configurations for remote environments. Typically set in managed settings by enterprise administrators to pre-configure SSH connections for team members."},"claudeMd":{"type":"string","description":"CLAUDE.md-style instructions injected as organization-managed memory. Only honored from managed/policy settings."},"claudeMdExcludes":{"type":"array","items":{"type":"string"},"description":"Glob patterns or absolute paths of CLAUDE.md files to exclude from loading. Patterns are matched against absolute file paths using picomatch. Only applies to User, Project, and Local memory types (Managed/policy files cannot be excluded). Examples: \\"/home/user/monorepo/CLAUDE.md\\", \\"** /code/CLAUDE.md\\", \\"** /some-dir/.claude/rules/**\\""},"pluginTrustMessage":{"type":"string","description":"Custom message to append to the plugin trust warning shown before installation. Only read from policy settings (managed-settings.json / MDM). Useful for enterprise administrators to add organization-specific context (e.g., \\"All plugins from our internal marketplace are vetted and approved.\\")."},"theme":{"type":"string","description":"Color theme for the UI"},"editorMode":{"type":"string","enum":["normal","vim"],"description":"Key binding mode for the prompt input"},"keybindingFlavor":{"type":"string","enum":["classic","readline"],"description":"Deprecated: no longer has any effect. The prompt\'s word-editing keys always follow Bash (readline) conventions."},"vimInsertModeRemaps":{"type":"object","additionalProperties":{},"description":"Vim INSERT-mode key-sequence remaps, e.g. {\\"jj\\": \\"<Esc>\\"}. Each key is exactly two printable characters typed in sequence; \\"<Esc>\\" (return to NORMAL mode) is the only supported target. Applies when editorMode is \\"vim\\"."},"verbose":{"type":"boolean","description":"Show full tool output instead of truncated summaries"},"preferredNotifChannel":{"type":"string","enum":["auto","iterm2","terminal_bell","iterm2_with_bell","kitty","ghostty","notifications_disabled"],"description":"Preferred OS notification channel"},"autoCompactEnabled":{"type":"boolean","description":"Automatically compact conversation when context fills"},"precomputeCompactionEnabled":{"type":"boolean","description":"Precompute the compaction summary in the background before it is needed. Only applies when auto-compact is on."},"idleCompaction":{"type":"boolean","description":"Set to false to stop Claude Code from compacting a long conversation while the session is idle. Setting it to true does not turn idle compaction on."},"switchModelsOnFlag":{"type":"boolean","description":"When safeguards flag a message, automatically switch to a different model to keep chatting. When off, your session will pause instead."},"autoContinueAtUsageLimit":{"type":"boolean","description":"When a claude.ai usage limit stops your session, wait for the limit to reset and continue the task automatically. When off, the limit dialog offers the wait as a choice instead."},"autoScrollEnabled":{"type":"boolean","description":"Auto-scroll the conversation view to bottom (fullscreen mode only)"},"wheelScrollAccelerationEnabled":{"type":"boolean","description":"Ramp mouse-wheel scroll speed during fast scrolls (fullscreen mode only)"},"fileCheckpointingEnabled":{"type":"boolean","description":"Snapshot files before edits so /rewind can restore them"},"showTurnDuration":{"type":"boolean","description":"Show \\"Cooked for Nm Ns\\" after each assistant turn"},"showMessageTimestamps":{"type":"boolean","description":"Stamp each message with its arrival time"},"terminalProgressBarEnabled":{"type":"boolean","description":"Emit OSC 9;4 progress sequences during long operations"},"todoFeatureEnabled":{"type":"boolean","description":"Enable the todo / task tracking panel"},"teammateMode":{"type":"string","enum":["auto","tmux","iterm2","in-process"],"description":"How spawned teammates execute (tmux, iterm2, in-process, auto)"},"remoteControlAtStartup":{"type":"boolean","description":"Start Remote Control bridge automatically each session"},"isolatePeerMachines":{"type":"boolean","description":"Require explicit approval before SendMessage can reach a peer session on another machine via Remote Control"},"daemonColdStart":{"type":"string","enum":["transient","ask"],"description":"When no background service is running: \'transient\' spawns one for this login session; \'ask\' offers to install it persistently"},"crossSessionInbound":{"type":"string","enum":["accept","hold","refuse"],"description":"Inbound cross-session peer messages (SendMessage from your other sessions): \'accept\' delivers them, \'hold\' parks them for your review without letting Claude act, \'refuse\' opts this session out. An explicit value always wins. Unset (mode parity): a message auto-delivers only when the sending session\'s permission-mode class matches yours (bypass↔bypass or prompting↔prompting); a mismatched sender\'s message is held for your approval; a sender that asserts no class is held only while this session bypasses permission prompts."},"autoUploadSessions":{"type":"boolean","description":"Mirror local sessions to claude.ai as view-only (no remote control)"},"inputNeededNotifEnabled":{"type":"boolean","description":"Push to mobile when a permission prompt or question is waiting"},"agentPushNotifEnabled":{"type":"boolean","description":"Allow Claude to push proactive mobile notifications"},"disableDeepLinkRegistration":{"type":"string","const":"disable","description":"Prevent claude-cli:// protocol handler registration with the OS"},"voiceEnabled":{"type":"boolean","description":"Enable voice mode (hold-to-talk dictation)"},"defaultView":{"type":"string","enum":["chat","transcript"],"description":"Default transcript view: chat (SendUserMessage checkpoints only) or transcript (full)"}},"description":"A uniquely named alias: `Settings` alone also matches Node\'s http2 type."}}'),$comment:`claude-agent-sdk 0.3.296`},Re=Le.definitions.ClaudeCodeSettings.properties,ze=Le.$comment,Be=Object.keys(Re).sort();function Ve(e){return Re[e]}function He(e){return e?e.enum?.every(e=>typeof e==`string`)?`enum`:e.type===`boolean`?`boolean`:e.type===`number`||e.type===`integer`?`number`:e.type===`string`?`string`:e.type===`array`&&e.items?.type===`string`&&!e.items.enum?`lines`:`json`:`json`}var Ue=Object.entries({$comment:`From https://code.claude.com/docs/en/settings-reference.md`,keys:JSON.parse('{"advisorModel":{"summary":"Pick which model answers when Claude asks the [advisor tool](https://code.claude.com/docs/en/advisor)","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#advisormodel","about":"Pick which model answers when Claude calls the server-side [advisor tool](https://code.claude.com/docs/en/advisor). Unset it to turn the advisor off. The advisor must be at least as capable as your main model. See [Choose an advisor model](https://code.claude.com/docs/en/advisor#choose-an-advisor-model) for the accepted pairings and what happens when you pick one that isn\'t accepted.\\n\\nYou don\'t usually edit this key by hand. Run `/advisor` to open a picker that shows the current choice, the models that can advise, and **No advisor**. Claude Code saves your pick to this key in `~/.claude/settings.json`. If you pick from a [Remote Control](https://code.claude.com/docs/en/remote-control) client or in a session attached to a remote worker, the pick applies to that session only and doesn\'t change this key.\\n\\nIf your account requires the [usage-credits consent](https://code.claude.com/docs/en/advisor#fable-advisor-and-usage-credits), accept it first by running `/model fable`. Until you do, picking Fable in `/advisor` saves nothing and Claude Code tells you to run `/model fable` first.","type":"string, one of the aliases `\\"fable\\"`, `\\"opus\\"`, or `\\"sonnet\\"`, which resolve to Claude Code\'s current default version of that model family, or a full model ID such as `\\"claude-opus-5-5\\"`","default":"unset, so the advisor is off"},"agent":{"summary":"Start every session as a named [subagent](https://code.claude.com/docs/en/sub-agents) with its prompt, tools, and model","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#agent","about":"Run the main thread as a named [subagent](https://code.claude.com/docs/en/sub-agents#invoke-subagents-explicitly), so Claude Code applies that subagent\'s system prompt, tool restrictions, and model to your session. The same key sets the default agent for sessions you dispatch from `claude agents`.","type":"string, the name of a built-in or custom agent","default":"unset, so the main thread runs as Claude Code\'s default agent"},"agentPushNotifEnabled":{"summary":"Let Claude send a [push notification to your phone](https://code.claude.com/docs/en/remote-control#mobile-push-notifications) when it decides to","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#agentpushnotifenabled","about":"Allow Claude to send a push notification to your phone when it decides one is worth sending, for example when a long task finishes. Claude Code syncs this choice to your account, and pushes arrive while [Remote Control](https://code.claude.com/docs/en/remote-control) is connected. Appears in `/config` as **Push when Claude decides**.","type":"Boolean\\n* `true`: Claude can send a push notification to your phone when it decides one is worth sending\\n* `false`: Claude doesn\'t send those notifications","default":"`false`"},"allowAllClaudeAiMcps":{"summary":"Load the [claude.ai connectors](https://code.claude.com/docs/en/mcp) Claude Code fetches itself alongside a deployed [`managed-mcp.json`](https://code.claude.com/docs/en/managed-mcp#exclusive-control-with-managed-mcp-json)","category":"MCP","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowallclaudeaimcps","about":"Load the [claude.ai connectors](https://code.claude.com/docs/en/mcp#use-mcp-servers-from-claude-ai) Claude Code fetches itself alongside a deployed `managed-mcp.json`. Without this key, `managed-mcp.json` takes exclusive control of MCP servers and suppresses those connectors.","type":"Boolean\\n* `true`: Claude Code loads the claude.ai connectors alongside a deployed `managed-mcp.json`\\n* `false`: a deployed `managed-mcp.json` takes exclusive control of MCP servers and suppresses the claude.ai connectors [Claude Code fetches itself](https://code.claude.com/docs/en/mcp#how-connectors-reach-claude-code)","default":"`false`, so a deployed `managed-mcp.json` suppresses the claude.ai connectors Claude Code fetches itself"},"allowClaudeInChromeWithManagedMcp":{"summary":"Let the built-in [Claude in Chrome](https://code.claude.com/docs/en/chrome) server run alongside a deployed [`managed-mcp.json`](https://code.claude.com/docs/en/managed-mcp#exclusive-control-with-managed-mcp-json)","category":"MCP","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowclaudeinchromewithmanagedmcp","about":"Let the built-in [Claude in Chrome](https://code.claude.com/docs/en/chrome) server run alongside a deployed `managed-mcp.json`. Without this key, a deployed `managed-mcp.json` blocks Claude in Chrome in terminal sessions. Requires Claude Code v2.1.282 or later.","type":"Boolean\\n* `true`: the built-in Claude in Chrome server can run alongside a deployed `managed-mcp.json`\\n* `false`: a deployed `managed-mcp.json` blocks Claude in Chrome in terminal sessions","default":"`false`, so a deployed `managed-mcp.json` blocks Claude in Chrome in terminal sessions"},"allowedChannelPlugins":{"summary":"Replace the default allowlist of [channel plugins](https://code.claude.com/docs/en/channels#restrict-which-channel-plugins-can-run) that can push messages","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowedchannelplugins","about":"Choose which [channel](https://code.claude.com/docs/en/channels) plugins can push messages into sessions in your organization. When you set it, Claude Code uses your list in place of the default Anthropic allowlist; each entry names a plugin and the marketplace it comes from.","type":"array of objects, each with `marketplace` and `plugin` strings. An entry can instead be a `\\"plugin@marketplace\\"` string such as `\\"telegram@claude-plugins-official\\"`, which Claude Code treats as the equivalent object. The string form requires Claude Code v2.1.267 or later; earlier versions reject the whole `allowedChannelPlugins` value when it contains one","default":"unset, so Claude Code uses the default Anthropic allowlist"},"allowedHttpHookUrls":{"summary":"Limit which URLs [HTTP hooks](https://code.claude.com/docs/en/hooks) can target","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#allowedhttphookurls","about":"Limit which URLs [HTTP hooks](https://code.claude.com/docs/en/hooks#http-hook-fields) can target. When you define this key, Claude Code runs an HTTP hook only if its URL matches one of the patterns and blocks the rest without running them; an empty array blocks every HTTP hook.","type":"array of URL patterns, with `*` as a wildcard","default":"unset, so any URL is allowed"},"allowedMcpServers":{"summary":"Allowlist which [MCP servers](https://code.claude.com/docs/en/mcp) users can add","category":"MCP","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#allowedmcpservers","about":"Allowlist the MCP servers people can add. Claude Code blocks any server that doesn\'t match an entry wherever it\'s defined, including plugin servers, servers a user passes with `--mcp-config`, and servers from claude.ai.\\n\\nBuilt-in servers such as Claude in Chrome, the `ide` server Claude Code connects to in a running [VS Code](https://code.claude.com/docs/en/vs-code#the-built-in-ide-mcp-server) or [JetBrains](https://code.claude.com/docs/en/jetbrains#the-built-in-ide-mcp-server) IDE, and servers the CLI itself configures are exempt from the allowlist, and the denylist still applies to them. On Claude Code v2.1.268 or later, a [Claude Tag](https://code.claude.com/docs/en/claude-tag) session\'s Slack tools are also exempt from the allowlist, and the denylist still applies to them. In-process `type: \\"sdk\\"` servers are exempt from both lists; the [app that started the session](https://code.claude.com/docs/en/mcp#how-connectors-reach-claude-code) registers them.\\n\\nServers your organization delivers are also exempt from the allowlist, and the denylist still applies to them. The exemption covers every [`managedMcpServers`](https://code.claude.com/docs/en/settings-reference#managedmcpservers) entry, and any [`managed-mcp.json`](https://code.claude.com/docs/en/managed-mcp#exclusive-control-with-managed-mcp-json) entry whose values use no `${VAR}` expansion. See [How a server is evaluated](https://code.claude.com/docs/en/managed-mcp#how-a-server-is-evaluated) for the full check order. Before v2.1.259, servers from `managed-mcp.json` had to match too.","type":"array of objects, each with exactly one key: `serverName`, a string limited to letters, numbers, hyphens, and underscores; `serverCommand`, an array of the command and its arguments matched exactly; or `serverUrl`, a URL pattern with `*` wildcards","default":"unset, so every server is allowed; an empty array blocks every server users add"},"allowedProviders":{"summary":"Limit which [API providers](https://code.claude.com/docs/en/third-party-integrations) a machine may use","category":"Authentication and providers","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowedproviders","about":"List the services a machine may reach Claude through, such as the Anthropic API, Amazon Bedrock, or an LLM gateway. A session on a provider that isn\'t listed is refused at startup, at login, and when it next contacts the API, so switching to an unlisted provider mid-session is refused too. The [refusal message](https://code.claude.com/docs/en/errors#managed-settings-dont-allow-this-api-provider) names what selected the provider and the steps to continue. Requires Claude Code v2.1.285 or later.","type":"array of strings, each one of:\\n* `\\"anthropic\\"`: the Anthropic API on Anthropic\'s own host, through a claude.ai or Console sign-in or an API key. Pair it with [`forceLoginMethod`](https://code.claude.com/docs/en/settings-reference#forceloginmethod) or [`forceLoginOrgUUID`](https://code.claude.com/docs/en/settings-reference#forceloginorguuid) to also restrict the sign-in\\n* `\\"bedrock\\"`: [Amazon Bedrock](https://code.claude.com/docs/en/amazon-bedrock)\\n* `\\"vertex\\"`: [Google Cloud\'s Agent Platform](https://code.claude.com/docs/en/google-vertex-ai), formerly Vertex AI\\n* `\\"foundry\\"`: [Microsoft Foundry](https://code.claude.com/docs/en/microsoft-foundry)\\n* `\\"anthropicAws\\"`: [Claude Platform on AWS](https://code.claude.com/docs/en/claude-platform-on-aws)\\n* `\\"mantle\\"`: the Amazon Bedrock [Mantle endpoint](https://code.claude.com/docs/en/amazon-bedrock#use-the-mantle-endpoint). A session that [runs Mantle alongside the Invoke API](https://code.claude.com/docs/en/amazon-bedrock#run-mantle-alongside-the-invoke-api) uses both providers, so list `\\"bedrock\\"` and `\\"mantle\\"` together for it\\n* `\\"customEndpoint\\"`: the Anthropic API or a cloud provider\'s API sent to another host, such as an [LLM gateway](https://code.claude.com/docs/en/llm-gateway) named by `ANTHROPIC_BASE_URL` or by a provider\'s endpoint variable such as `ANTHROPIC_BEDROCK_BASE_URL`. Claude Code admits it only for the exact value a managed [`env`](https://code.claude.com/docs/en/settings-reference#env) block pins\\n* `\\"gateway\\"`: a [Cloud gateway](https://code.claude.com/docs/en/claude-apps-gateway) sign-in","default":"unset, so any provider can be used"},"allowManagedHooksOnly":{"summary":"Run only the [hooks](https://code.claude.com/docs/en/hooks) your organization deploys","category":"Hooks and automation","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowmanagedhooksonly","about":"Restrict hook execution to hooks your organization deploys.","type":"Boolean\\n* `true`: only managed hooks run, plus Agent SDK hooks and hooks from plugins your managed settings force-enable. See [What runs under `allowManagedHooksOnly`](https://code.claude.com/docs/en/settings-reference#what-runs-under-allowmanagedhooksonly)\\n* `false`: hooks from every settings scope and plugin run","default":"unset, so hooks from every settings scope and plugin run"},"allowManagedMcpServersOnly":{"summary":"Make the managed [MCP](https://code.claude.com/docs/en/mcp) allowlist the only one that applies","category":"MCP","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowmanagedmcpserversonly","about":"Make the managed allowlist the only one that applies. Claude Code then reads [`allowedMcpServers`](https://code.claude.com/docs/en/settings-reference#allowedmcpservers) from managed settings alone and ignores allowlists in user, project, and local settings; [`deniedMcpServers`](https://code.claude.com/docs/en/settings-reference#deniedmcpservers) still merges from every settings scope, so users can still block servers for themselves. Administrators set it so a user\'s own settings can\'t broaden what the managed allowlist permits.","type":"Boolean\\n* `true`: Claude Code reads `allowedMcpServers` from managed settings alone and ignores allowlists in user, project, and local settings\\n* `false`: allowlists from every settings scope merge","default":"`false`, so allowlists from every settings scope merge"},"allowManagedPermissionRulesOnly":{"summary":"Make [managed settings](https://code.claude.com/docs/en/managed-settings) the only settings source of [permission rules](https://code.claude.com/docs/en/permissions#managed-settings)","category":"Permission settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#allowmanagedpermissionrulesonly","about":"Make managed settings the only settings source of permission rules. Claude Code then ignores `allow`, `ask`, and `deny` rules in user, project, local, and `--settings` files, ignores `--allowedTools`, hides the always-allow choices in permission prompts, and stops saving new rules.\\n\\nWhen [parent settings from an embedding host](https://code.claude.com/docs/en/managed-settings#let-an-embedding-host-add-policy) apply, Claude Code treats them as part of the managed tier. It drops their `allow` rules and `additionalDirectories`, and keeps their `deny` and `ask` rules except `Read` and `Edit` rules whose pattern starts with `!`. A host can\'t carve paths out of the managed rules with a `!` rule, whether or not you set this key.\\n\\n`--disallowedTools` rules and the current session\'s `deny` and `ask` rules still apply, including after Claude Code reloads settings mid-session. They only restrict, so they can\'t widen what the managed rules grant. Before v2.1.257, Claude Code dropped those command-line and session rules at the first settings reload.\\n\\nFor what a `!` pattern in a `--disallowedTools` or session rule can carve out, see [Read and Edit rules](https://code.claude.com/docs/en/permissions#read-and-edit).\\n\\nWhen you set this key, Claude Code v2.1.282 or later also ignores the [`allowed-tools`](https://code.claude.com/docs/en/skills#pre-approve-tools-for-a-skill) frontmatter in skills and `.claude/commands/` files from these sources:\\n\\n* A repository\'s `.claude/` directory\\n* Your `~/.claude/skills/` and `~/.claude/commands/` directories, including [skills synced from claude.ai](https://code.claude.com/docs/en/skills#where-synced-skills-load)\\n* An `--add-dir` directory\\n* [Plugins declared with a `.claude-plugin` manifest](https://code.claude.com/docs/en/plugins/loading#plugins-shared-through-a-repository) inside `~/.claude/skills/` or the project\'s `.claude/skills/`\\n\\nSkills from managed settings and bundled skills keep their `allowed-tools`. A skill\'s `disallowed-tools` still applies. For what a developer sees when Claude Code ignores the field, see [When only managed permission rules apply](https://code.claude.com/docs/en/skills#when-only-managed-permission-rules-apply).","type":"Boolean\\n* `true`: managed settings become the only settings source of permission rules\\n* `false`: Claude Code applies permission rules from user, project, local, and `--settings` files in addition to the managed ones","default":"unset, so Claude Code applies permission rules from user, project, and local settings and from `--settings`, in addition to the managed ones"},"alwaysThinkingEnabled":{"summary":"Turn [extended thinking](https://code.claude.com/docs/en/model-config#extended-thinking) off for every session","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#alwaysthinkingenabled","about":"Turn [extended thinking](https://code.claude.com/docs/en/model-config#extended-thinking) off for every session by setting this to `false`. Thinking is on by default, so `true` changes nothing. Most people set this through `/config` rather than by editing the file.\\n\\nOn models that always think, such as Opus 5.5, Sonnet 5.5, Haiku 5.5, and the Fable models, `false` has no effect. On [third-party providers](https://code.claude.com/docs/en/third-party-integrations) Claude Code omits the `thinking` parameter instead of turning thinking off, so adaptive-reasoning models may still think. With thinking turned off on the Anthropic API, Claude Code sends effort `high` instead of a higher level to models it knows [don\'t accept that combination](https://code.claude.com/docs/en/errors#effort-isnt-available-with-thinking-turned-off), such as Opus 5.","type":"Boolean\\n* `true`: no effect; thinking is already on\\n* `false`: Claude Code turns extended thinking off for every session","default":"unset, so thinking is on for models that support it"},"apiKeyHelper":{"summary":"Generate the [API credential](https://code.claude.com/docs/en/authentication#credential-management) with your own command","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#apikeyhelper","about":"Run your own command to produce the credential Claude Code sends with model requests. Claude Code runs the command through the system shell, `/bin/sh` on macOS and Linux and `cmd` on Windows, and sends its output as both the `X-Api-Key` and `Authorization: Bearer` headers. Use it for dynamic or rotating credentials, such as short-lived tokens fetched from a vault.","type":"string, a shell command line","default":"unset, so Claude Code doesn\'t run a helper"},"askUserQuestionTimeout":{"summary":"Let an unanswered question [auto-continue](https://code.claude.com/docs/en/tools-reference#question-auto-continue-timeout) after idle time","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#askuserquestiontimeout","about":"Let an unanswered [`AskUserQuestion`](https://code.claude.com/docs/en/tools-reference) dialog auto-continue after a period of idle time, submitting whatever options you had already selected. Set it when you step away and want Claude to continue without you. With the default, questions wait until you answer them. For when the timer pauses or never starts, see [Question auto-continue timeout](https://code.claude.com/docs/en/tools-reference#question-auto-continue-timeout).","type":"string, one of `\\"60s\\"`, `\\"5m\\"`, `\\"10m\\"`, or `\\"never\\"`","default":"`\\"never\\"`"},"appendPlugins":{"summary":"Run your organization\'s [mods](https://code.claude.com/docs/en/plugins/mods/admin) after every mod a user installs","category":"Plugins and skills","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#appendplugins","about":"List the managed plugins whose [mods](https://code.claude.com/docs/en/plugins/mods/overview) run after every mod a user installs, in the listed order. An id listed in both `prependPlugins` and `appendPlugins` is prepended. In managed settings, Claude Code skips an id whose plugin doesn\'t [count as your organization\'s](https://code.claude.com/docs/en/plugins/mods/admin#install-your-organizations-mods).","type":"array of `plugin-name@marketplace-name` strings","default":"unset"},"attribution":{"summary":"Customize the attribution Claude Code adds to commits and pull requests","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#attribution","about":"Customize the attribution Claude Code adds to git commits and pull requests. Commits get a [git trailer](https://git-scm.com/docs/git-interpret-trailers) such as `Co-Authored-By` by default; pull request descriptions get plain text. Set each part separately with the sub-keys below.","type":"object with `commit` and `pr` strings and a `sessionUrl` Boolean, or `false` to hide all attribution. The `false` value requires Claude Code v2.1.281 or later; earlier versions reject it and [skip the whole user, project, or local settings file](https://code.claude.com/docs/en/settings#fix-a-broken-settings-file) that holds it","default":"unset, so Claude Code uses the standard attribution shown under each sub-key"},"attribution.commit":{"summary":"Change or hide the trailer Claude Code adds to commits","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#attribution-commit","about":"Set the attribution text Claude Code adds to git commits, including any trailers. Set it to an empty string to hide commit attribution.","type":"string","default":"unset, so Claude Code adds `Co-Authored-By: <name> <noreply@anthropic.com>`. The name is the model in use when the commit is made, such as `Claude Sonnet 5`. When a [subagent](https://code.claude.com/docs/en/sub-agents) makes the commit, the trailer names the subagent\'s model.\\n* When Claude Code recognizes the model as a Claude model but can\'t confirm its exact version, it writes `Claude` alone.\\n* When it can\'t match the model ID to any Claude model, such as a third-party model served through a custom [`ANTHROPIC_BASE_URL`](https://code.claude.com/docs/en/env-vars), it writes `Claude Code`."},"attribution.pr":{"summary":"Change or hide the attribution line in pull request descriptions","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#attribution-pr","about":"Set the attribution text Claude Code adds to pull request descriptions. Set it to an empty string to hide pull request attribution.","type":"string","default":"unset, so Claude Code adds `🤖 Generated with [Claude Code](https://claude.com/claude-code)`"},"attribution.sessionUrl":{"summary":"Omit the claude.ai session link from [cloud](https://code.claude.com/docs/en/claude-code-on-the-web) and [Remote Control](https://code.claude.com/docs/en/remote-control) commits","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#attribution-sessionurl","about":"Choose whether Claude Code appends the claude.ai session link when it commits or opens a pull request from a [cloud](https://code.claude.com/docs/en/claude-code-on-the-web) or [Remote Control](https://code.claude.com/docs/en/remote-control) session. Claude Code adds the link as a `Claude-Session` trailer on commits and as a link in pull request descriptions. Set it to `false` to omit the link.","type":"Boolean\\n* `true`: Claude Code appends the claude.ai session link when it commits or opens a pull request from a cloud or Remote Control session\\n* `false`: Claude Code omits the link","default":"`true`"},"autoCompactEnabled":{"summary":"Turn [automatic compaction](https://code.claude.com/docs/en/context-window) off or on","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#autocompactenabled","about":"Have Claude Code [compact the conversation automatically](https://code.claude.com/docs/en/context-window#when-your-context-fills-up) when context approaches the limit. Appears in `/config` as **Auto-compact**, and toggling it there writes this key to your user settings.","type":"Boolean\\n* `true`: Claude Code compacts the conversation automatically when context approaches the limit\\n* `false`: Claude Code doesn\'t compact automatically","default":"`true`"},"autoCompactWindow":{"summary":"Set how full the context gets before Claude Code [compacts](https://code.claude.com/docs/en/context-window)","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#autocompactwindow","about":"Set how full the context window gets before Claude Code [compacts automatically](https://code.claude.com/docs/en/context-window#when-your-context-fills-up).","type":"number of tokens, from `100000` to `1000000`. Claude Code caps the value at your model\'s context window; the [models overview](https://platform.claude.com/docs/en/about-claude/models/overview) lists each model\'s window","default":"unset, so Claude Code picks a window tuned for your model"},"autoConnectIde":{"summary":"Connect to a running [VS Code](https://code.claude.com/docs/en/vs-code) or [JetBrains](https://code.claude.com/docs/en/jetbrains#from-external-terminals) IDE automatically from an external terminal","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#autoconnectide","about":"Connect to a running IDE automatically when you start Claude Code from an external terminal. Appears in `/config` as **Auto-connect to IDE (external terminal)** when you run Claude Code outside a VS Code or JetBrains terminal.","type":"Boolean\\n* `true`: Claude Code connects to a running IDE automatically when you start it from an external terminal\\n* `false`: Claude Code doesn\'t connect automatically from an external terminal; inside a VS Code or JetBrains terminal, or with `--ide`, it still connects","default":"`false`"},"autoContinueAtUsageLimit":{"summary":"Wait in the open session and [continue the task automatically](https://code.claude.com/docs/en/interactive-mode#wait-for-a-usage-limit-to-reset) after a claude.ai usage limit resets","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#autocontinueatusagelimit","about":"After a claude.ai usage limit stops your session, wait in the open session and continue the task automatically after the reset. See [Turn automatic continue off](https://code.claude.com/docs/en/interactive-mode#turn-automatic-continue-off). Requires Claude Code v2.1.234 or later.","type":"Boolean\\n* `true`: after a claude.ai usage limit stops your session, Claude Code waits in the open session and continues the task automatically after the reset\\n* `false`: Claude Code doesn\'t start the wait on its own. You can still [start a wait yourself](https://code.claude.com/docs/en/interactive-mode#start-a-wait-yourself) from the usage-limit options menu","default":"`true`"},"autoInstallIdeExtension":{"summary":"Turn off automatic install of the [IDE extension](https://code.claude.com/docs/en/vs-code#install-the-extension) from a VS Code terminal","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#autoinstallideextension","about":"Install the Claude Code IDE extension automatically when you run Claude Code from a VS Code terminal. Appears in `/config` as **Auto-install IDE extension** when you run Claude Code inside a VS Code or JetBrains terminal.","type":"Boolean\\n* `true`: Claude Code installs the IDE extension automatically when you run it from a VS Code terminal\\n* `false`: Claude Code doesn\'t install the extension automatically","default":"`true`"},"autoMemoryDirectory":{"summary":"Store [auto memory](https://code.claude.com/docs/en/memory#auto-memory) in a directory you choose","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#automemorydirectory","about":"Store [auto memory](https://code.claude.com/docs/en/memory#storage-location) in a directory of your choice instead of the per-project default.","type":"string, an absolute or `~/`-prefixed directory path","default":"unset, so Claude Code uses `~/.claude/projects/<project>/memory/`"},"autoMemoryEnabled":{"summary":"Turn [auto memory](https://code.claude.com/docs/en/memory#auto-memory) off or on","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#automemoryenabled","about":"Turn [auto memory](https://code.claude.com/docs/en/memory#enable-or-disable-auto-memory) on or off. When `false`, Claude doesn\'t read from or write to the auto memory directory. You can also toggle it with `/memory` during a session, which writes this key to your user settings.","type":"Boolean\\n* `true`: the same as unset; auto memory stays on unless something that outranks this key turns it off for the session, such as `--bare`, safe mode, or `CLAUDE_CODE_DISABLE_AUTO_MEMORY`\\n* `false`: Claude doesn\'t read from or write to the auto memory directory","default":"`true`"},"autoMode":{"summary":"Add your own allow and deny rules to the [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) classifier","category":"Permission settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#automode","about":"Add your own rules to what the [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) classifier blocks and allows. Use it to tell the classifier which repos, buckets, and domains your organization trusts, so it stops blocking routine internal operations. The classifier ships with [built-in allow and deny rules](https://code.claude.com/docs/en/auto-mode-config#inspect-the-defaults-and-your-effective-config). Include the literal string `\\"$defaults\\"` in an array to keep those built-in rules at that position and add yours around them; leave it out to replace them with yours.","type":"object with `environment`, `allow`, `soft_deny`, and `hard_deny` arrays of prose rules, plus the [`classifyAllShell`](https://code.claude.com/docs/en/settings-reference#automode-classifyallshell) Boolean","default":"unset, so the classifier uses only its [built-in rules](https://code.claude.com/docs/en/auto-mode-config#inspect-the-defaults-and-your-effective-config)"},"autoMode.classifyAllShell":{"summary":"Send every shell command through the [auto mode classifier](https://code.claude.com/docs/en/permission-modes#what-the-classifier-blocks-by-default), even ones a narrow allow rule matches","category":"Permission settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#automode-classifyallshell","about":"Send every Bash and PowerShell command through the auto mode classifier while auto mode is active. By default, auto mode suspends only allow rules that could run arbitrary code: tool-wide and wildcard rules such as `Bash(*)`, and interpreter or shell-wrapper prefixes such as `Bash(python *)`. A command that any other allow rule matches, such as `Bash(npm test)`, skips the classifier unless it carries [per-command allowed domains](https://code.claude.com/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode). When it skips, a destructive argument the rule\'s prefix didn\'t anticipate can get through unseen. Setting this key suspends every shell allow rule for the session so the classifier sees every command. Requires Claude Code v2.1.193 or later.","type":"Boolean\\n* `true`: while auto mode is active, Claude Code sends every Bash and PowerShell command through the classifier and suspends your shell allow rules; outside auto mode the rules still apply\\n* `false`: auto mode suspends only allow rules that could run arbitrary code, such as `Bash(*)` and `Bash(python *)`; a command that any other allow rule matches skips the classifier unless it carries [per-command allowed domains](https://code.claude.com/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode), and every other shell command goes through it","default":"`false`"},"autoScrollEnabled":{"summary":"[Follow new output](https://code.claude.com/docs/en/fullscreen#auto-follow) to the bottom in fullscreen rendering","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#autoscrollenabled","about":"Follow new output to the bottom of the conversation in [fullscreen rendering](https://code.claude.com/docs/en/fullscreen). Turn it off to stay where you scrolled while Claude keeps working; permission prompts still scroll into view.","type":"Boolean\\n* `true`: the conversation follows new output to the bottom\\n* `false`: you stay where you scrolled while Claude keeps working; permission prompts still appear below the transcript","default":"`true`"},"autoUpdatesChannel":{"summary":"Follow the stable [release channel](https://code.claude.com/docs/en/setup#configure-release-channel) instead of latest","category":"Updates and versioning","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#autoupdateschannel","about":"Choose which [release channel](https://code.claude.com/docs/en/setup#configure-release-channel) background auto-updates and `claude update` follow. Set `\\"stable\\"` for a version that is typically about one week old and skips releases with major regressions, or `\\"latest\\"` for the most recent release.","type":"string, one of:\\n* `\\"latest\\"`: updates follow the most recent release\\n* `\\"stable\\"`: updates follow a version that is typically about one week old and skips releases with major regressions","default":"unset, so Claude Code follows `\\"latest\\"`"},"availableModels":{"summary":"[Restrict which models](https://code.claude.com/docs/en/model-config#restrict-model-selection) people can pick","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#availablemodels","about":"Restrict which models people can select for the main session, [subagents](https://code.claude.com/docs/en/sub-agents), [skills](https://code.claude.com/docs/en/skills), and the [advisor](https://code.claude.com/docs/en/advisor). A managed list constrains `/model`, `--model`, and the `model` key in a developer\'s own files; a model outside it can\'t be selected. With the default prefix matching, this doesn\'t touch the Default option on its own; pair it with [`enforceAvailableModels`](https://code.claude.com/docs/en/settings-reference#enforceavailablemodels) for that.","type":"array of model aliases or IDs","default":"unset, so every model is available"},"availableModelsMatch":{"summary":"Make each `availableModels` model ID entry [permit only the version it names](https://code.claude.com/docs/en/model-config#block-specific-models-or-versions)","category":"Model and responses","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#availablemodelsmatch","about":"Choose how [`availableModels`](https://code.claude.com/docs/en/settings-reference#availablemodels) entries match model IDs. By default a model ID entry also permits later versions that extend it, so `\\"claude-opus-5\\"` permits Opus 5.5. With `\\"exact\\"`, each model ID entry permits only the version it names, so a newer version of that model stays blocked until you list it. Requires Claude Code v2.1.283 or later.","type":"string, one of:\\n* `\\"prefix\\"`: a model ID entry permits its version and any model ID that extends it with another segment\\n* `\\"exact\\"`: a model ID entry permits only the version it names, including that version\'s dated IDs, so `\\"claude-opus-5\\"` permits Opus 5 but not `claude-opus-5-5`. A family alias such as `\\"opus\\"` still permits the whole family, and `best`, `opusplan`, and `default` entries are ignored","default":"`\\"prefix\\"`"},"awaySummaryEnabled":{"summary":"Turn off the [session recap](https://code.claude.com/docs/en/interactive-mode#session-recap) shown when you come back to the terminal","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#awaysummaryenabled","about":"Show a one-line session recap when you return to the terminal after a few minutes away. Set it to `false`, or turn off **Session recap** in `/config`, to stop the recap.","type":"Boolean\\n* `true`: you see a one-line session recap when you return after a few minutes away\\n* `false`: Claude Code shows no recap","default":"unset, so the recap is on"},"awsAuthRefresh":{"summary":"Refresh expired [Bedrock credentials](https://code.claude.com/docs/en/amazon-bedrock#advanced-credential-configuration) in `.aws` with your own command","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#awsauthrefresh","about":"Run your own command, such as `aws sso login`, to refresh the credentials in your `.aws` directory when the ones Claude Code has for [Amazon Bedrock](https://code.claude.com/docs/en/amazon-bedrock) stop working. Claude Code checks the current credentials against STS first and runs the command only when that check fails, then reads the refreshed `.aws` directory.\\n\\nWhen the check fails at the same time in several Claude Code processes that use the same command and credentials, such as separate terminals or IDE windows, one process runs the command and the rest wait for that run instead of starting their own. A process that has waited 60 seconds with a request pending runs the command itself. To turn this off, set [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](https://code.claude.com/docs/en/env-vars) to `1`.","type":"string, a shell command line","default":"unset, so Claude Code doesn\'t refresh AWS credentials for you"},"awsCredentialExport":{"summary":"Supply [Bedrock credentials](https://code.claude.com/docs/en/amazon-bedrock#advanced-credential-configuration) as JSON from your own command","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#awscredentialexport","about":"Run your own command that prints AWS credentials as JSON, so Claude Code can call [Amazon Bedrock](https://code.claude.com/docs/en/amazon-bedrock) with credentials that don\'t live in your `.aws` directory. Claude Code accepts the `aws sts` output shape and the flat `aws configure export-credentials` shape, and scopes the credentials to its own Bedrock client, so the shell commands Claude runs still see your ambient credentials.","type":"string, a shell command line","default":"unset, so Claude Code uses the ambient AWS credential chain"},"axScreenReader":{"summary":"Render [screen-reader friendly output](https://code.claude.com/docs/en/accessibility)","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#axscreenreader","about":"Render screen-reader friendly output: flat text without decorative borders or animations. Screen-reader mode uses the classic renderer, so the `tui` setting has no effect while it is active; attached [background sessions](https://code.claude.com/docs/en/agent-view) still render fullscreen.","type":"Boolean\\n* `true`: Claude Code renders flat text without decorative borders or animations, using the classic renderer\\n* `false`: Claude Code renders normally","default":"unset, so screen-reader mode is off"},"bashEditDiffEnabled":{"summary":"Record the [files that changed while a Bash command ran](https://code.claude.com/docs/en/hooks#bash) in every permission mode","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#basheditdiffenabled","about":"Choose whether Claude Code records which files changed in a Git repository while a Bash command runs. When it records them, you see their diff in the terminal after the command, and your [PostToolUse Bash hooks](https://code.claude.com/docs/en/hooks#bash) receive the changed-file list.\\n\\nA listed file isn\'t always one the command changed. A change that another program or another Bash call made while the command ran can appear there too.\\n\\nSet the key to `true` to record them in every permission mode. Requires Claude Code v2.1.269 or later.","type":"Boolean","default":"unset, so Claude Code records changes in auto mode and `bypassPermissions` mode when it directs Claude to edit files through Bash"},"bashOutputMaxChars":{"summary":"Set how much of a successful command\'s [output](https://code.claude.com/docs/en/tools-reference#output-limits) Claude receives inline","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#bashoutputmaxchars","about":"Set how many characters of a successful Bash or PowerShell command\'s [output Claude receives inline](https://code.claude.com/docs/en/tools-reference#output-limits). When output passes the limit, Claude Code saves it to a file and Claude receives a short preview plus the file\'s path. Raise the limit when command output, such as a verbose build or a full test-suite log, routinely overflows the default and you want Claude to read it without opening the file. Requires Claude Code v2.1.261 or later.","type":"number of characters, a positive integer. Claude Code clamps the value into the range `4000` to `128000`","default":"unset, so Claude receives up to 30,000 characters inline"},"blockedMarketplaces":{"summary":"Block [plugin marketplace](https://code.claude.com/docs/en/plugins/overview) sources for your organization","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#blockedmarketplaces","about":"Block plugin marketplace sources for your organization. Claude Code checks the blocklist on marketplace add and on plugin install, update, refresh, and auto-update, so a marketplace someone added before you set the policy can\'t be used to fetch plugins either. Blocked sources are checked before download, so they never touch the filesystem.\\n\\nIf you set this key in the [claude.ai admin console](https://code.claude.com/docs/en/server-managed-settings), claude.ai also applies it when anyone in your organization adds a marketplace from a git repository on claude.ai, as [How restrictions work](https://code.claude.com/docs/en/plugins/org#restrict-what-users-can-install) describes.","type":"array of marketplace source objects, in the same forms as [`strictKnownMarketplaces`](https://code.claude.com/docs/en/settings-reference#allowed-source-types)","default":"unset, so no marketplace is blocked"},"browserExternalPageTools":{"summary":"Keep Claude\'s tools off external pages in the [desktop](https://code.claude.com/docs/en/desktop) Browser pane","category":"Tools","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#browserexternalpagetools","about":"Stop Claude from using its tools to read or act on external pages in the desktop app\'s [Browser pane](https://code.claude.com/docs/en/desktop#browse-external-sites). People in your organization can still open external sites themselves, and local dev server previews keep working with Claude\'s tools. The desktop app reads this key; the terminal CLI ignores it.","type":"string, `\\"disabled\\"`; the desktop app also accepts `\\"disable\\"`, in either case","default":"unset, so Claude\'s tools work on external pages"},"channelsEnabled":{"summary":"Allow [channels](https://code.claude.com/docs/en/channels#enable-channels-for-your-organization) for your organization","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#channelsenabled","about":"Allow [channels](https://code.claude.com/docs/en/channels) for your organization. On claude.ai Team and Enterprise plans, Claude Code blocks channels until you set this to `true`. For [Anthropic Console](https://code.claude.com/docs/en/authentication#claude-console-authentication) accounts that authenticate with an API key, channels are allowed by default. If your organization deploys managed settings, Claude Code blocks channels on those accounts too until you set this key to `true`.","type":"Boolean\\n* `true`: Claude Code allows channels for your organization\\n* `false`: the same as unset; whether channels are blocked depends on your plan, as the Default says","default":"unset; channels are blocked on Team and Enterprise plans and on Console accounts with managed settings, and allowed on Pro and Max plans and on Console accounts without managed settings"},"claudeInChromeDefaultEnabled":{"summary":"Turn on [Chrome integration](https://code.claude.com/docs/en/chrome) when a session starts, in the interactive CLI and the VS Code extension","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#claudeinchromedefaultenabled","about":"Start every interactive CLI session with [Chrome integration](https://code.claude.com/docs/en/chrome) on, without passing `--chrome` each time. If you run [`claude remote-control`](https://code.claude.com/docs/en/remote-control), a session it starts for one of your [project](https://code.claude.com/docs/en/claude-projects) threads follows this key too, except in `bypassPermissions` mode. With Claude Code v2.1.287 or later, this key also applies to sessions in the [VS Code extension](https://code.claude.com/docs/en/vs-code#automate-browser-tasks-with-chrome): see [Enable Chrome by default](https://code.claude.com/docs/en/chrome#enable-chrome-by-default).\\n\\nRunning `/chrome` and selecting **Enabled by default** sets this key for you. Appears in `/config` as **Claude in Chrome enabled by default**.","type":"Boolean\\n* `true`: Claude Code turns on Chrome integration when an interactive CLI session starts, as it does when you pass `--chrome`. In the VS Code extension, sessions connect to the browser as they start\\n* `false`: interactive CLI sessions start with Chrome integration off, and Claude Code stops [offering to set it up](https://code.claude.com/docs/en/chrome#install-the-extension-when-claude-asks). Pass `--chrome` to turn it on for one interactive session. In the VS Code extension, a session connects when you type `@browser`, as when the key is unset","default":"unset, so Chrome integration is off and Claude Code can still offer to set it up"},"claudeMd":{"summary":"Inject organization-wide [CLAUDE.md](https://code.claude.com/docs/en/memory#deploy-organization-wide-claude-md) instructions from managed settings","category":"Memory and context","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#claudemd","about":"Inject CLAUDE.md-style instructions as organization-managed memory without deploying a separate file. Claude Code loads the text as a managed memory entry ahead of user and project CLAUDE.md files.","type":"string, the text of a CLAUDE.md file; write it as you would the file, Markdown included, with line breaks as `\\\\n`","default":"unset"},"claudeMdExcludes":{"summary":"Skip specific [CLAUDE.md](https://code.claude.com/docs/en/memory#exclude-specific-claude-md-files) files when memory loads","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#claudemdexcludes","about":"Skip specific `CLAUDE.md` files when Claude Code loads [memory](https://code.claude.com/docs/en/memory#exclude-specific-claude-md-files). In a large monorepo, use it to skip CLAUDE.md files from other teams that aren\'t relevant to your work; [Exclude irrelevant CLAUDE.md files](https://code.claude.com/docs/en/large-codebases#exclude-irrelevant-claude-md-files) in the large-codebases guide walks through that case. Patterns match against absolute file paths.","type":"array of strings, each a glob pattern or absolute path","default":"unset, so Claude Code loads every CLAUDE.md it finds"},"cleanupPeriodDays":{"summary":"Choose how many days Claude Code keeps [transcripts](https://code.claude.com/docs/en/data-usage#data-retention) before deleting them","category":"Privacy and telemetry","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#cleanupperioddays","about":"Set how many days Claude Code keeps [session transcripts and other application data](https://code.claude.com/docs/en/claude-directory#cleaned-up-automatically) before deleting them. Claude Code runs the deletion as a background sweep after a session starts, as long as it can safely determine the retention period. The sweep deletes transcripts without showing a message, so a session you haven\'t used for longer than the retention period no longer appears in the [`/resume`](https://code.claude.com/docs/en/sessions#resume-a-session) picker.","type":"number of days, a whole number, minimum `1`","default":"`30`"},"companyAnnouncements":{"summary":"Show your organization\'s announcements at startup","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#companyannouncements","about":"Show your organization\'s announcements to users at startup. When you list more than one, Claude Code picks one at random for each session; on a person\'s very first launch it shows the first entry.","type":"array of strings","default":"unset, so no announcement shows"},"copyFullResponse":{"summary":"Make [`/copy`](https://code.claude.com/docs/en/commands) copy the full response without showing the picker","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#copyfullresponse","about":"Make [`/copy`](https://code.claude.com/docs/en/commands) copy the full response every time, without showing the picker. Selecting **Always copy full response** in that picker sets this key to `true`. Appears in `/config` as **Skip the /copy picker**.","type":"Boolean\\n* `true`: `/copy` copies the full response without showing the picker\\n* `false`: when the response contains code blocks or blockquotes, `/copy` shows a picker where you choose one block or the full response","default":"`false`"},"copyOnSelect":{"summary":"Turn off automatic copying of text you select with the mouse in [fullscreen rendering](https://code.claude.com/docs/en/fullscreen#use-the-mouse) and agent view","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#copyonselect","about":"Copy text to your clipboard automatically when you finish selecting it with the mouse in [fullscreen rendering](https://code.claude.com/docs/en/fullscreen#use-the-mouse) or [agent view](https://code.claude.com/docs/en/agent-view). Appears in `/config` as **Copy on select** while fullscreen rendering is on.","type":"Boolean\\n* `true`: Claude Code copies text to your clipboard when you finish selecting it\\n* `false`: selecting text leaves your clipboard unchanged, and you [copy the selection with a keyboard shortcut](https://code.claude.com/docs/en/fullscreen#use-the-mouse) instead","default":"`true`"},"crossSessionInbound":{"summary":"Choose whether Claude Code delivers [messages from your other sessions](https://code.claude.com/docs/en/cross-session-messaging#control-inbound-messages), shows a notice without delivering them, or refuses them","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#crosssessioninbound","about":"Choose what this session does with [messages arriving from your other Claude Code sessions](https://code.claude.com/docs/en/cross-session-messaging#control-inbound-messages). When no value applies, Claude Code decides per message from the two sessions\' permission-mode classes. Requires Claude Code v2.1.224 or later.","type":"string, one of:\\n* `\\"accept\\"`: Claude Code delivers the message to Claude\\n* `\\"hold\\"`: Claude Code shows a notice for the message without delivering it\\n* `\\"refuse\\"`: Claude Code drops the message","default":"unset, so Claude Code decides per message"},"defaultShell":{"summary":"Choose whether Bash or PowerShell runs the shell commands you type with the [`!` prefix](https://code.claude.com/docs/en/interactive-mode#shell-mode-with-prefix)","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#defaultshell","about":"Choose whether Bash or PowerShell runs the shell commands you type with the [`!` prefix](https://code.claude.com/docs/en/interactive-mode#shell-mode-with-prefix) in the input box, the ones Claude Code runs directly and adds to the session.\\n\\n`\\"powershell\\"` works only while the [PowerShell tool](https://code.claude.com/docs/en/tools-reference#powershell-tool) is on. The tool is on by default on Windows without Git Bash, and on Windows with Git Bash for claude.ai and Console accounts. In Amazon Bedrock, Google Cloud\'s Agent Platform, and Microsoft Foundry sessions, and on macOS, Linux, and WSL, set `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` to turn the tool on. Set that variable to `0` to turn the tool off.","type":"string, one of:\\n* `\\"bash\\"`: Claude Code runs your `!` commands in Bash\\n* `\\"powershell\\"`: Claude Code runs your `!` commands in PowerShell","default":"`\\"bash\\"`, or `\\"powershell\\"` on Windows when Bash isn\'t available"},"defaultToAgentsView":{"summary":"Open [agent view](https://code.claude.com/docs/en/agent-view) instead of a new conversation when you run `claude` with no arguments","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#defaulttoagentsview","about":"Open [agent view](https://code.claude.com/docs/en/agent-view) instead of a new conversation when you run `claude` with no arguments. Appears in `/config` as **Open agents view by default** unless agent view is [turned off](https://code.claude.com/docs/en/settings-reference#disableagentview).","type":"Boolean\\n* `true`: `claude` with no arguments opens agent view, unless agent view is [turned off](https://code.claude.com/docs/en/settings-reference#disableagentview)\\n* `false`: `claude` with no arguments starts a new conversation","default":"`false`"},"deniedMcpServers":{"summary":"Block specific [MCP servers](https://code.claude.com/docs/en/mcp) by URL, command, or name","category":"MCP","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#deniedmcpservers","about":"Block specific MCP servers. Claude Code refuses to load a matching server wherever it\'s defined, including plugin servers, servers passed with `--mcp-config`, servers from `managed-mcp.json`, servers from [`managedMcpServers`](https://code.claude.com/docs/en/settings-reference#managedmcpservers), and the claude.ai connectors [it fetches itself](https://code.claude.com/docs/en/mcp#how-connectors-reach-claude-code). In-process `type: \\"sdk\\"` servers are exempt; the app that started the session registers them.","type":"array of objects, each with exactly one key: `serverName`, a string, so a claude.ai connector\'s display name such as `\\"claude.ai Slack\\"` works; `serverCommand`, an array of the command and its arguments matched exactly; or `serverUrl`, a URL pattern with `*` wildcards","default":"unset, so no server is blocked; an empty array also blocks nothing"},"deniedModels":{"summary":"[Block specific models](https://code.claude.com/docs/en/model-config#block-specific-models-or-versions), even ones `availableModels` permits","category":"Model and responses","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#deniedmodels","about":"Block specific models, with or without an [`availableModels`](https://code.claude.com/docs/en/settings-reference#availablemodels) allowlist and even when that list permits them. Claude Code hides a blocked model from the `/model` picker, and the model can\'t be selected anywhere `availableModels` is enforced. A session on the Default option doesn\'t run a blocked model either, as [Block specific models or versions](https://code.claude.com/docs/en/model-config#block-specific-models-or-versions) describes. Requires Claude Code v2.1.283 or later.","type":"array of model aliases or IDs\\n* A family alias such as `\\"opus\\"` blocks every model in that family\\n* A model ID such as `\\"claude-opus-5-5\\"` blocks that version in every spelling, including dated and provider-specific IDs\\n* A model ID with no minor version, such as `\\"claude-opus-5\\"`, also blocks later minor versions such as Opus 5.5. Write `\\"claude-opus-5-0\\"` to block Opus 5 alone\\n* `best`, `opusplan`, and `default` entries are ignored","default":"unset, so no model is blocked"},"desktopSessionCleanupPeriodDays":{"summary":"Set an age limit in days for [Claude Desktop and Cowork transcripts](https://code.claude.com/docs/en/claude-directory#cleaned-up-automatically)","category":"Privacy and telemetry","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#desktopsessioncleanupperioddays","about":"Set an age limit in days for the transcripts of sessions you started or most recently continued in Claude Desktop or Cowork. Without this key, Claude Code [keeps those transcripts at any age](https://code.claude.com/docs/en/claude-directory#cleaned-up-automatically). Claude Code deletes each one once it\'s older than both this limit and [`cleanupPeriodDays`](https://code.claude.com/docs/en/settings-reference#cleanupperioddays), so with `cleanupPeriodDays` at its default of 30, a value of `7` still keeps them 30 days. [Cleaned up automatically](https://code.claude.com/docs/en/claude-directory#cleaned-up-automatically) lists the cases where `cleanupPeriodDays` applies instead and Claude Code ignores this key. Requires Claude Code v2.1.248 or later.","type":"number of days, a whole number, minimum `0`","default":"`0`, which sets no age limit"},"dialogExpiry":{"summary":"Set how long Claude Code waits for [Remote Control](https://code.claude.com/docs/en/remote-control) or an SDK host to answer a forwarded dialog before it cancels the dialog","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#dialogexpiry","about":"Set the deadline for dialogs Claude Code [forwards to a remote client](https://code.claude.com/docs/en/remote-control#limitations), such as a Remote Control or SDK host, and for the approval dialog for a [held cross-session message](https://code.claude.com/docs/en/cross-session-messaging#control-inbound-messages). On Claude Code v2.1.236 or later, the same deadline bounds the mid-session [Fable usage-credits consent prompt](https://code.claude.com/docs/en/model-config#fable-and-usage-credits) in a session that may have nobody at the terminal. When no answer arrives before the deadline, Claude Code cancels the dialog and continues with its no-action default. Requires Claude Code v2.1.224 or later.","type":"string, one of `\\"60s\\"`, `\\"5m\\"`, `\\"10m\\"`, or `\\"never\\"`, which disables the deadline","default":"`\\"5m\\"`"},"diffTool":{"summary":"Choose whether Claude\'s proposed file changes open in the [VS Code](https://code.claude.com/docs/en/vs-code) or [JetBrains](https://code.claude.com/docs/en/jetbrains#features) diff viewer or stay in the terminal","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#difftool","about":"Choose where Claude Code shows the diff of an `Edit` or `Write` change it proposes when a [VS Code](https://code.claude.com/docs/en/vs-code) or [JetBrains](https://code.claude.com/docs/en/jetbrains#features) IDE is connected: `\\"auto\\"` opens it in the IDE\'s diff viewer, `\\"terminal\\"` keeps it in the terminal. Appears in `/config` as **Diff tool** only while Claude Code is connected to a VS Code or JetBrains IDE.","type":"string, one of:\\n* `\\"auto\\"`: Claude Code opens the diff in the IDE\'s diff viewer when a VS Code or JetBrains IDE is connected\\n* `\\"terminal\\"`: Claude Code keeps the diff in the terminal","default":"`\\"auto\\"`"},"disableAgentView":{"summary":"Turn off background agents and [agent view](https://code.claude.com/docs/en/agent-view)","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableagentview","about":"Turn off [background agents and agent view](https://code.claude.com/docs/en/agent-view): `claude agents`, `--bg`, `/background`, and the on-demand supervisor. Set it in [managed settings](https://code.claude.com/docs/en/managed-settings) to enforce it for an organization.","type":"Boolean\\n* `true`: Claude Code turns off `claude agents`, `--bg`, `/background`, and the on-demand supervisor\\n* `false`: agent view is available","default":"unset, so agent view is available"},"disableAllHooks":{"summary":"Turn off [hooks](https://code.claude.com/docs/en/hooks), a custom [status line](https://code.claude.com/docs/en/statusline), and a custom [`@` file suggestion](https://code.claude.com/docs/en/interactive-mode#quick-commands) command at once","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableallhooks","about":"Turn off [hooks](https://code.claude.com/docs/en/hooks#disable-or-remove-hooks), any custom [status line](https://code.claude.com/docs/en/statusline), and any custom [file suggestion](https://code.claude.com/docs/en/settings-reference#filesuggestion) command. Use it to turn all of these off temporarily without deleting them from your settings.","type":"Boolean\\n* `true`: Claude Code turns off hooks, any custom status line, and any custom file suggestion command\\n* `false`: hooks, the status line, and the file suggestion command run","default":"unset, so hooks run"},"disableArtifact":{"summary":"Deprecated; use `enableArtifact` to turn the [Artifact tool](https://code.claude.com/docs/en/artifacts) off","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableartifact","about":"**Warning:** Deprecated, and replaced by [`enableArtifact`](https://code.claude.com/docs/en/settings-reference#enableartifact). Claude Code still honors `disableArtifact: true` as equivalent to `enableArtifact: false`, and ignores `disableArtifact: false`.\\n\\nUse [`enableArtifact`](https://code.claude.com/docs/en/settings-reference#enableartifact) instead to turn off the [Artifact](https://code.claude.com/docs/en/artifacts) tool, which publishes session output as a private web page on claude.ai. When you turn the **Artifacts** row off in `/config`, Claude Code writes `enableArtifact` to your user settings and clears this key.","type":"Boolean\\n* `true`: Claude Code turns the Artifact tool off for every session the file applies to, and no other file turns it back on\\n* `false`: ignored; to leave the tool on, remove the key","default":"unset, so the tool follows your account\'s [availability](https://code.claude.com/docs/en/artifacts#availability)"},"disableAutoMode":{"summary":"Remove [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) from the permission mode cycle","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableautomode","about":"Remove [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) from the `Shift+Tab` cycle. Any session that would otherwise [start in auto mode](https://code.claude.com/docs/en/permission-modes#which-mode-a-session-starts-in), whether from `--permission-mode auto`, a settings file, or the built-in default, starts in `default` instead. Administrators set it in managed settings to prevent developers in their organization from using auto mode.","type":"the string `\\"disable\\"`","default":"unset"},"disableBrowserExternalNavigation":{"summary":"Limit the [desktop](https://code.claude.com/docs/en/desktop) Browser pane to localhost for people and Claude","category":"Tools","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#disablebrowserexternalnavigation","about":"Turn off external browsing in the desktop app\'s [Browser pane](https://code.claude.com/docs/en/desktop#browse-external-sites) for people and Claude alike. Localhost dev server previews keep working. The desktop app reads this key; the terminal CLI ignores it.","type":"Boolean; only the JSON Boolean `true` takes effect\\n* `true`: the desktop app turns off external browsing in the Browser pane for people and Claude alike; localhost previews keep working\\n* `false`: external browsing stays on","default":"unset, so external browsing is on"},"disableBundledSkills":{"summary":"Turn off the [skills](https://code.claude.com/docs/en/skills#bundled-skills) and [workflows](https://code.claude.com/docs/en/workflows) included with Claude Code","category":"Plugins and skills","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disablebundledskills","about":"Turn off the [skills](https://code.claude.com/docs/en/skills) and workflows included with Claude Code. Claude Code removes bundled skills and workflows entirely, while built-in commands such as `/init` stay typable but are hidden from the model.","type":"Boolean\\n* `true`: Claude Code removes bundled skills and workflows and hides built-in commands such as `/init` from the model\\n* `false`: bundled skills load","default":"unset, so bundled skills load"},"disableClaudeAiConnectors":{"summary":"Turn off [claude.ai connectors](https://code.claude.com/docs/en/mcp#disable-claude-ai-connectors) so Claude Code doesn\'t fetch them","category":"MCP","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableclaudeaiconnectors","about":"Turn off the [claude.ai MCP connectors](https://code.claude.com/docs/en/mcp#use-mcp-servers-from-claude-ai) [Claude Code fetches itself](https://code.claude.com/docs/en/mcp#how-connectors-reach-claude-code), so it neither fetches nor connects them. A `true` in any settings file applies: a checked-in project `.claude/settings.json` can opt a repository out of those connectors, but a project-level `false` can\'t override a user- or managed-level `true`.","type":"Boolean\\n* `true`: Claude Code neither fetches nor connects those connectors\\n* `false`: the same as unset; Claude Code fetches your connectors unless another settings file or `ENABLE_CLAUDEAI_MCP_SERVERS` turns them off","default":"`false`, so Claude Code fetches your connectors"},"disableCommandPluginSources":{"summary":"Block [plugins](https://code.claude.com/docs/en/plugins/overview) that install by running a marketplace-declared command","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#disablecommandpluginsources","about":"Block the [`command` plugin source](https://code.claude.com/docs/en/plugins/marketplace-reference#command-plugin-source), which installs a plugin by running a marketplace-declared command on the user\'s machine. When you set it to `true`, Claude Code never runs the command, doesn\'t install or update command-sourced plugins, and stops loading the ones already installed. Set it to `false` to allow them explicitly. Whenever it blocks command sources, whether you set it to `true` or leave it unset under [`allowManagedHooksOnly`](https://code.claude.com/docs/en/settings-reference#allowmanagedhooksonly), it also blocks marketplace [`headersHelper` commands](https://code.claude.com/docs/en/plugins/host-marketplace#authenticate-archive-downloads), except for a marketplace that managed settings themselves declare. Requires Claude Code v2.1.229 or later, and the `headersHelper` block requires v2.1.238 or later.","type":"Boolean\\n* `true`: Claude Code never runs the marketplace-declared command, doesn\'t install or update command-sourced plugins, and stops loading the ones already installed\\n* `false`: Claude Code allows command-sourced plugins explicitly","default":"unset, so Claude Code follows [`allowManagedHooksOnly`](https://code.claude.com/docs/en/settings-reference#allowmanagedhooksonly): an organization that restricts hook execution to managed settings gets command sources disabled too"},"disableDeepLinkRegistration":{"summary":"Stop Claude Code from registering the [`claude-cli://` handler](https://code.claude.com/docs/en/deep-links)","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disabledeeplinkregistration","about":"Stop Claude Code from registering the `claude-cli://` protocol handler with the operating system, which it otherwise does after you send the first prompt of an interactive session. [Deep links](https://code.claude.com/docs/en/deep-links) let external tools open a Claude Code session with a pre-filled prompt. Set this in environments where protocol handler registration is restricted or managed separately.","type":"the string `\\"disable\\"`","default":"unset, so Claude Code registers the handler"},"disableDesktopLocalSessions":{"summary":"Turn off [Desktop Code sessions](https://code.claude.com/docs/en/desktop#local-sessions-on-managed-devices) that run on the device, leaving SSH to other hosts and cloud","category":"Remote, desktop, and notifications","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#disabledesktoplocalsessions","about":"Turn off Code sessions that run on the device in the [desktop app](https://code.claude.com/docs/en/desktop#local-sessions-on-managed-devices), for deployments where developers should work on remote machines over SSH. In the Code tab, the **Local** environment stays in the environment dropdown but is grayed out and can\'t be selected, with a tooltip saying your organization turned it off; on Windows the WSL entry is grayed out the same way, though whether WSL sessions run on a managed device at all is [governed separately](https://code.claude.com/docs/en/admin-setup#wsl-sessions-in-claude-code-desktop). New sessions default to the first [SSH connection](https://code.claude.com/docs/en/desktop#ssh-sessions) if one is configured, and the app refuses to start or resume a session on the device, including an SSH connection back to the same machine. SSH sessions to other hosts and cloud sessions are unaffected. The desktop app reads this key; the terminal CLI ignores it. Requires Claude Desktop v1.37937.0 or later.","type":"Boolean; only the JSON Boolean `true` takes effect\\n* `true`: the desktop app offers no on-device Code sessions; existing local sessions stay listed but can\'t continue\\n* `false`: local sessions stay available","default":"unset, so local sessions are available"},"disabledMcpjsonServers":{"summary":"Reject specific servers from a project\'s [`.mcp.json`](https://code.claude.com/docs/en/mcp#project-scope)","category":"MCP","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disabledmcpjsonservers","about":"Reject specific servers defined in a project\'s `.mcp.json` file so Claude Code never connects them or asks you to approve them. A rejection in any settings file applies, including a project `.claude/settings.json` checked into the repository.","type":"array of strings, the server names as they appear in `.mcp.json`","default":"unset"},"disableMobileSimulatorTools":{"summary":"Block Claude\'s tools in the [desktop](https://code.claude.com/docs/en/desktop) iOS Simulator pane","category":"Tools","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#disablemobilesimulatortools","about":"Block Claude\'s tools for the desktop app\'s [iOS Simulator pane](https://code.claude.com/docs/en/desktop-ios-simulator#turn-off-simulator-access). People keep manual use of the pane; only Claude\'s access is removed, and nobody can turn it back on from inside the app. The desktop app reads this key; the terminal CLI ignores it.","type":"Boolean; only the JSON Boolean `true` takes effect\\n* `true`: the desktop app blocks Claude\'s tools for the iOS Simulator pane\\n* `false`: Claude\'s simulator tools follow each person\'s settings toggle in the desktop app","default":"unset, so Claude\'s simulator tools follow each person\'s settings toggle in the desktop app"},"disableRemoteControl":{"summary":"Turn off [Remote Control](https://code.claude.com/docs/en/remote-control) everywhere it can start","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableremotecontrol","about":"Turn off [Remote Control](https://code.claude.com/docs/en/remote-control): Claude Code then refuses `claude remote-control`, the `--remote-control` flag, auto-start, and the in-session toggle, and reports that your organization\'s policy disabled it. Place it in [managed settings](https://code.claude.com/docs/en/managed-settings) for per-device MDM enforcement.","type":"Boolean\\n* `true`: Claude Code refuses `claude remote-control`, the `--remote-control` flag, auto-start, and the in-session toggle\\n* `false`: Remote Control stays available","default":"`false`"},"disableSideloadFlags":{"summary":"Reject the CLI flags that sideload [plugins](https://code.claude.com/docs/en/plugins/overview), [subagents](https://code.claude.com/docs/en/sub-agents), and [MCP servers](https://code.claude.com/docs/en/mcp)","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#disablesideloadflags","about":"Reject the `--plugin-dir`, `--plugin-url`, `--agents`, and `--mcp-config` CLI flags at startup, which users could otherwise pass to bypass [`strictKnownMarketplaces`](https://code.claude.com/docs/en/settings-reference#strictknownmarketplaces) for a single run. Claude Code exits with an error naming the rejected flags. In [cloud sessions](https://code.claude.com/docs/en/claude-code-on-the-web), Claude Code instead starts the session and drops every server-delivered `--mcp-config` entry except in-process `type: \\"sdk\\"` entries and a [Claude Tag](https://code.claude.com/docs/en/claude-tag) session\'s Slack tools. Requires Claude Code v2.1.193 or later.","type":"Boolean\\n* `true`: Claude Code rejects `--plugin-dir`, `--plugin-url`, `--agents`, and `--mcp-config` at startup and exits with an error naming them. In cloud sessions, it instead starts the session and drops every server-delivered `--mcp-config` entry except in-process `type: \\"sdk\\"` entries and a Claude Tag session\'s Slack tools\\n* `false`: Claude Code accepts those flags","default":"`false`"},"disableSkillShellExecution":{"summary":"Stop [skills](https://code.claude.com/docs/en/skills) and custom commands from running inline shell","category":"Plugins and skills","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableskillshellexecution","about":"Turn off inline shell execution for `` !`...` `` and ` ```! ` blocks in [skills](/en/skills) and custom commands from user, project, plugin, or additional-directory sources. Claude Code replaces each command with `[shell command execution disabled by policy]` instead of running it.","type":"Boolean\\n* `true`: Claude Code replaces each inline shell command with `[shell command execution disabled by policy]` instead of running it\\n* `false`: inline shell runs","default":"unset, so inline shell runs"},"disableWorkflows":{"summary":"Turn [dynamic workflows](https://code.claude.com/docs/en/workflows) off for everyone; use `enableWorkflows` for yourself","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#disableworkflows","about":"Turn off [dynamic workflows](https://code.claude.com/docs/en/workflows#turn-workflows-off) and the bundled workflow commands for everyone your settings reach, such as an organization through managed settings. To turn workflows on or off just for yourself, use [`enableWorkflows`](https://code.claude.com/docs/en/settings-reference#enableworkflows) instead, which the **Dynamic workflows** toggle in `/config` writes to your user settings.","type":"Boolean\\n* `true`: Claude Code turns off dynamic workflows and the bundled workflow commands for everyone your settings reach\\n* `false`: the same as unset; whether workflows are on then follows [`enableWorkflows`](https://code.claude.com/docs/en/settings-reference#enableworkflows) and your plan\'s default","default":"`false`"},"editorMode":{"summary":"Use [vim key bindings](https://code.claude.com/docs/en/interactive-mode#vim-editor-mode) in the input prompt","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#editormode","about":"Choose the key binding mode for the input prompt.","type":"string, one of:\\n* `\\"normal\\"`: standard key bindings in the prompt input\\n* `\\"vim\\"`: vim-style editing with NORMAL, INSERT, and VISUAL modes","default":"`\\"normal\\"`"},"effortLevel":{"summary":"Set a default [effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) for models without a saved level of their own","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#effortlevel","about":"Set a default [effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) for models you haven\'t saved a level for. Lower levels are faster and cheaper on straightforward tasks, and higher levels reason more deeply on complex problems.\\n\\nWhen you run `/effort low`, `medium`, `high`, or `xhigh` in an interactive session on your machine, Claude Code saves the level for the active model under [`modelSettings`](https://code.claude.com/docs/en/settings-reference#modelsettings) rather than writing this key. Before v2.1.251, `/effort` wrote this key.\\n\\nWithin the same settings file, Claude Code uses a model\'s saved level rather than this key. [`modelSettings`](https://code.claude.com/docs/en/settings-reference#modelsettings) states the cross-file precedence.\\n\\nIn a session attached to a remote worker, in a `-p` run, and in the Agent SDK, `/effort` applies to that session only. [Adjust effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) lists the interactive picks that also apply to that session only. The message that `/effort` prints says which happened.","type":"string, one of:\\n* `\\"low\\"`: the least reasoning, for short, scoped, latency-sensitive tasks that aren\'t intelligence-sensitive\\n* `\\"medium\\"`: reduces token usage for cost-sensitive work that can trade off some intelligence\\n* `\\"high\\"`: balances token usage and intelligence\\n* `\\"xhigh\\"`: deeper reasoning at higher token spend","default":"unset"},"emojiCompletionEnabled":{"summary":"Turn off [`:shortcode:` emoji suggestions and replacement](https://code.claude.com/docs/en/interactive-mode#emoji-shortcodes) in the prompt input","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#emojicompletionenabled","about":"Show emoji suggestions when you type `:` plus a shortcode in the prompt input, and replace a completed shortcode such as `:heart:` with its emoji. Set it to `false` to turn off both.","type":"Boolean\\n* `true`: Claude Code shows emoji suggestions after `:` and replaces a completed shortcode with its emoji\\n* `false`: Claude Code neither suggests emoji nor replaces shortcodes","default":"`true`"},"enableAllProjectMcpServers":{"summary":"Approve every server in project [`.mcp.json`](https://code.claude.com/docs/en/mcp#project-server-approvals-and-workspace-trust) files without a prompt","category":"MCP","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#enableallprojectmcpservers","about":"Approve every MCP server defined in project `.mcp.json` files without a prompt. Claude Code writes this key to `.claude/settings.local.json` when you choose to approve all servers in the approval dialog.","type":"Boolean\\n* `true`: Claude Code approves every MCP server defined in project `.mcp.json` files without a prompt\\n* `false`: Claude Code asks you to approve each server. In a trusted folder, a `false` in a higher-precedence file overrides a `true` in a lower one; in a folder you haven\'t trusted, a `true` in any honored file is enough","default":"unset, so Claude Code asks you to approve each server"},"enableArtifact":{"summary":"Turn the [Artifact tool](https://code.claude.com/docs/en/artifacts) off with a `false` in any file; no file can turn it back on","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#enableartifact","about":"Turn off the [Artifact](https://code.claude.com/docs/en/artifacts) tool, which publishes session output as a private web page on claude.ai. When you turn the **Artifacts** row off in `/config`, Claude Code writes this key to your user settings, so you don\'t usually edit it by hand.","type":"Boolean\\n* `false`: Claude Code turns the Artifact tool off for every session the file applies to\\n* `true`: the same as leaving the key unset, because it never overrides a `false` from another file, from [`CLAUDE_CODE_DISABLE_ARTIFACT`](https://code.claude.com/docs/en/env-vars), or from your organization\'s [admin setting](https://code.claude.com/docs/en/artifacts#manage-artifacts-for-your-organization)","default":"unset, so the tool follows your account\'s [availability](https://code.claude.com/docs/en/artifacts#availability)"},"enabledMcpjsonServers":{"summary":"Approve specific servers from a project\'s [`.mcp.json`](https://code.claude.com/docs/en/mcp#project-server-approvals-and-workspace-trust)","category":"MCP","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#enabledmcpjsonservers","about":"Approve specific servers defined in project `.mcp.json` files so Claude Code connects them without asking. Claude Code writes this key to `.claude/settings.local.json` when you approve a server in the approval dialog.","type":"array of strings, the server names as they appear in `.mcp.json`","default":"unset"},"enabledPlugins":{"summary":"Turn individual [plugins](https://code.claude.com/docs/en/plugins/overview) on or off per scope","category":"Plugins and skills","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#enabledplugins","about":"Turn individual [plugins](https://code.claude.com/docs/en/plugins/overview) on or off, keyed by `plugin-name@marketplace-name`. A plugin with no entry at any scope falls back to its [`defaultEnabled`](https://code.claude.com/docs/en/plugins/manifest-reference#fields) value. When you enable or disable a plugin with `/plugin` or `claude plugin enable`, Claude Code writes this key for you.","type":"object mapping `plugin-name@marketplace-name` to a Boolean","default":"unset, so each plugin follows its `defaultEnabled` value"},"enableWorkflows":{"summary":"Turn [dynamic workflows](https://code.claude.com/docs/en/workflows) on or off against your plan\'s default","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#enableworkflows","about":"Turn [dynamic workflows](https://code.claude.com/docs/en/workflows) on or off for yourself when your plan\'s default isn\'t what you want. Appears in `/config` as **Dynamic workflows**, which writes this key to your user settings and removes it again when you toggle back to your plan\'s default. To turn workflows off for everyone from managed settings, use [`disableWorkflows`](https://code.claude.com/docs/en/settings-reference#disableworkflows) instead.","type":"Boolean\\n* `true`: Claude Code turns dynamic workflows on for you\\n* `false`: Claude Code turns dynamic workflows off for you","default":"unset, so workflows are on unless you\'re on the Pro plan, where they\'re off"},"enforceAvailableModels":{"summary":"Keep the [`/model` Default choice](https://code.claude.com/docs/en/model-config#enforce-the-allowlist-for-the-default-model) inside your `availableModels` allowlist","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#enforceavailablemodels","about":"The `/model` picker has a **Default** option, and [`default` model setting](https://code.claude.com/docs/en/model-config#default-model-setting) describes the model it resolves to. An [`availableModels`](https://code.claude.com/docs/en/settings-reference#availablemodels) allowlist limits the models you can name, but with the default [prefix matching](https://code.claude.com/docs/en/settings-reference#availablemodelsmatch) it doesn\'t remap your account type\'s default, so **Default** can still resolve to a model outside the list. This key closes that gap. Requires Claude Code v2.1.175 or later.\\n\\nWhen your organization deploys any managed settings, Claude Code reads this key from the managed source alone and ignores it in your other files.\\n\\nFor how this key applies to the startup model checks, see [Amazon Bedrock](https://code.claude.com/docs/en/amazon-bedrock#when-your-organization-enforces-a-model-allowlist) and [Google Cloud\'s Agent Platform](https://code.claude.com/docs/en/google-vertex-ai#when-your-organization-enforces-a-model-allowlist).","type":"Boolean\\n* `true`: when **Default** would resolve to a model outside `availableModels`, Claude Code resolves it to the first available model in the list\\n* `false`: this key doesn\'t change how **Default** resolves","default":"`false`"},"env":{"summary":"Set [environment variables](https://code.claude.com/docs/en/env-vars#in-settings-files) for every session and its subprocesses","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#env","about":"Set environment variables for every session and for the subprocesses Claude Code starts from it. Most variables in the [environment variables reference](https://code.claude.com/docs/en/env-vars) can go here, which is how you apply one to every session or roll it out to your team. Project and local settings can\'t set [some of them](https://code.claude.com/docs/en/settings-reference#variables-claude-code-ignores-in-env).","type":"object mapping variable names to string values","default":"unset"},"externalEditorContext":{"summary":"Show Claude\'s last response as comments when you press [Ctrl+G](https://code.claude.com/docs/en/interactive-mode#general-controls) to edit","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#externaleditorcontext","about":"When you press `Ctrl+G`, Claude Code opens the prompt you\'re typing in your [external editor](https://code.claude.com/docs/en/interactive-mode#general-controls). With this key on, the editor buffer starts with Claude\'s previous response as `#` comment lines, so you can read it while you write, and Claude Code strips those lines when you save. Appears in `/config` as **Show last response in external editor**.","type":"Boolean\\n* `true`: the editor buffer starts with Claude\'s previous response as `#` comment lines, which Claude Code strips when you save\\n* `false`: the editor buffer opens with only your prompt","default":"`false`"},"extraKnownMarketplaces":{"summary":"Register [marketplaces](https://code.claude.com/docs/en/plugins/overview) for a repository or an organization","category":"Plugins and skills","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#extraknownmarketplaces","about":"Register additional plugin marketplaces by name, so that people who open the repository, or everyone your managed settings reach, get the marketplace without adding it themselves. Claude Code registers each marketplace it doesn\'t already know. Whether a plugin that [`enabledPlugins`](https://code.claude.com/docs/en/settings-reference#enabledplugins) names from it installs depends on the plugin\'s source and which file enables it; that entry has the rules.","type":"object mapping a marketplace name to an object with a `source` object and an optional `autoUpdate` Boolean","default":"unset"},"fallbackModel":{"summary":"Name [backup models](https://code.claude.com/docs/en/model-config#fallback-model-chains) for when the primary is overloaded","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#fallbackmodel","about":"Name backup models for Claude Code to try, in order, when your primary model is overloaded or unavailable. Claude Code switches to the next available model in the chain for the rest of the turn and shows a notice. Without a chain, Claude Code retries the same model and then surfaces the server\'s error, and you retry or switch models yourself.\\n\\nA switch means one turn with a cold [prompt cache](https://code.claude.com/docs/en/prompt-caching#switching-models) on the fallback model; your next message tries the primary model first again.","type":"array of model aliases or IDs; `\\"default\\"` expands to the default model","default":"unset, so a failed request isn\'t retried on another model"},"fastMode":{"summary":"Turn [fast mode](https://code.claude.com/docs/en/fast-mode) on for sessions where it\'s available","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#fastmode","about":"Turn [fast mode](https://code.claude.com/docs/en/fast-mode) on for sessions where it\'s available, for interactive work like rapid iteration or live debugging where you want speed at a higher cost per token. You don\'t usually edit this key by hand: running `/fast` writes `fastMode: true` to `~/.claude/settings.json`, and running it again to turn fast mode off removes the key. Fast mode runs only on Opus 5.5, Opus 5, and Opus 4.8: turning it on from another model switches you to Opus, and switching to an unsupported model turns it off. See [Switch models while fast mode is on](https://code.claude.com/docs/en/fast-mode#switch-models-while-fast-mode-is-on).","type":"Boolean\\n* `true`: Claude Code turns fast mode on for sessions where it\'s available\\n* `false`: fast mode stays off","default":"unset, so fast mode is off"},"fastModePerSessionOptIn":{"summary":"Require people to turn [fast mode](https://code.claude.com/docs/en/fast-mode) on each session","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#fastmodepersessionoptin","about":"Normally, running `/fast` saves [`fastMode`](https://code.claude.com/docs/en/settings-reference#fastmode) to a person\'s user settings, so fast mode is on at the start of every later session. Set this key to `true` to stop that: a saved `fastMode: true` no longer turns fast mode on at session start, and each person has to run `/fast` in each session they want it. Claude Code leaves the `fastMode` key in their file, so turning this key off restores the old behavior.\\n\\nOwners on Team or Enterprise plans can deploy it organization-wide through [server-managed settings](https://code.claude.com/docs/en/server-managed-settings). When managed settings set the key, `/fast on` is refused outside interactive terminal sessions and reports that your organization has disabled fast mode. That covers [non-interactive mode](https://code.claude.com/docs/en/headless), the [VS Code extension](https://code.claude.com/docs/en/vs-code), and [cloud sessions](https://code.claude.com/docs/en/claude-code-on-the-web).","type":"Boolean\\n* `true`: a saved `fastMode: true` no longer turns fast mode on at session start, so each person runs `/fast` in each session they want it; a `fastMode: true` passed with `--settings` still counts for that session unless managed settings set this key\\n* `false`: a saved `fastMode: true` turns fast mode on at the start of every later session","default":"`false`"},"feedbackDrafts":{"summary":"Control whether Claude queues [feedback drafts](https://code.claude.com/docs/en/tools-reference#sendfeedback-tool-behavior) for you to review","category":"Privacy and telemetry","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#feedbackdrafts","about":"Control [Claude-drafted feedback](https://code.claude.com/docs/en/tools-reference#sendfeedback-tool-behavior): whether Claude can queue feedback drafts for you to review, and whether Claude Code shows a card when Claude queues one.","type":"string, one of `\\"notify\\"`, `\\"quiet\\"`, or `\\"off\\"`\\n* `\\"notify\\"`: Claude Code shows a card above the prompt when Claude queues a draft, up to [three cards in a session](https://code.claude.com/docs/en/tools-reference#what-you-see-when-claude-drafts) by default\\n* `\\"quiet\\"`: Claude drafts without a card. You see the count of queued drafts in the prompt footer and review them in `/feedback`\\n* `\\"off\\"`: Claude Code removes the SendFeedback tool, so Claude can\'t queue drafts","default":"`\\"notify\\"`"},"feedbackSurveyRate":{"summary":"Change how often the [session quality survey](https://code.claude.com/docs/en/data-usage#session-quality-surveys) appears","category":"Privacy and telemetry","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#feedbacksurveyrate","about":"Set the probability that the [session quality survey](https://code.claude.com/docs/en/data-usage#session-quality-surveys) appears when a session is eligible for it. Set `0` to keep the survey from appearing.","type":"number between `0` and `1`","default":"unset, so Claude Code uses the rate Anthropic sets remotely, or its built-in rate of `0.005` on Amazon Bedrock, Google Cloud\'s Agent Platform, and Microsoft Foundry, which don\'t receive remote configuration"},"fileCheckpointingEnabled":{"summary":"Turn off or on the file snapshots that [`/rewind`](https://code.claude.com/docs/en/checkpointing) restores","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#filecheckpointingenabled","about":"Have Claude Code snapshot files before each edit so [`/rewind`](https://code.claude.com/docs/en/checkpointing) can restore them. Appears in `/config` as **Rewind code (checkpoints)**, and toggling it there writes this key to your user settings.","type":"Boolean\\n* `true`: Claude Code snapshots files before each edit so `/rewind` can restore them\\n* `false`: Claude Code doesn\'t snapshot files, so `/rewind` can\'t restore them","default":"`true`"},"fileSuggestion":{"summary":"Supply [`@` file autocomplete](https://code.claude.com/docs/en/interactive-mode#quick-commands) from your own command","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#filesuggestion","about":"Run your own command to supply `@` file path autocomplete instead of the built-in file suggestion. The built-in suggestion uses fast filesystem traversal; a large monorepo may do better with project-specific indexing such as a pre-built file index.","type":"object with `type`, always `\\"command\\"`, and `command`, the shell command to run","default":"unset, so Claude Code uses the built-in file suggestion"},"footerLinksRegexes":{"summary":"Make issue or review IDs in output into [clickable links](https://code.claude.com/docs/en/statusline#clickable-links) below the input box","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#footerlinksregexes","about":"Render extra clickable badges in the footer below the input box when a regex matches turn output: tool results, including file contents and fetched pages, and Claude\'s own responses. Use it to turn IDs printed by project CLIs, such as review tools and issue trackers, into session links.","type":"array of objects, each with `type` set to `\\"regex\\"`, a `pattern` regex, a `url` template, and an optional `label`; `{name}` placeholders in `url` and `label` are filled from named capture groups in `pattern`","default":"unset, so no badges render"},"forceLoginGatewayUrl":{"summary":"Set the [gateway URL](https://code.claude.com/docs/en/claude-apps-gateway#set-the-gateway-url) the login screen connects to","category":"Authentication and providers","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#forcelogingatewayurl","about":"Set the gateway URL the `/login` Cloud gateway screen connects to, so people reach your [cloud gateway](https://code.claude.com/docs/en/claude-apps-gateway) without typing its address. The screen has no URL field: with this key set, it shows your gateway URL and connects when the person presses Enter; without it, it tells them to contact their IT administrator.\\n\\nIn managed settings, either this key or `forceLoginMethod: \\"gateway\\"` makes the machine gateway-only, except for sessions that select a cloud provider with `CLAUDE_CODE_USE_*`. `/login` then opens on the Cloud gateway screen with no login-method picker. See [Administrator policy requires a Cloud gateway sign-in](https://code.claude.com/docs/en/errors#administrator-policy-requires-a-cloud-gateway-sign-in) for what happens to a leftover first-party login or API key. Set both keys so the screen connects instead of showing an error.","type":"string, a full URL including the scheme","default":"unset, so the Cloud gateway screen shows an error telling people to contact their IT administrator"},"forceLoginMethod":{"summary":"[Restrict login](https://code.claude.com/docs/en/authentication#restrict-login-to-your-organization) to claude.ai, Claude Console, or a [cloud gateway](https://code.claude.com/docs/en/claude-apps-gateway)","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#forceloginmethod","about":"Restrict which kind of account people can log in with. Set `\\"claudeai\\"` to allow only claude.ai accounts, `\\"console\\"` to allow only Claude Console accounts, or `\\"gateway\\"` to send people to a [cloud gateway](https://code.claude.com/docs/en/claude-apps-gateway) instead of a first-party login. Administrators set it in managed settings and pair it with [`forceLoginOrgUUID`](https://code.claude.com/docs/en/settings-reference#forceloginorguuid) to keep developers\' claude.ai logins inside one organization. If you set it to `\\"claudeai\\"` or `\\"console\\"` in any settings file, Claude Code also stops offering the [keyless Console sign-in](https://code.claude.com/docs/en/authentication#sign-in-without-an-api-key) in the sessions that file applies to.","type":"string, one of:\\n* `\\"claudeai\\"`: only claude.ai accounts can log in\\n* `\\"console\\"`: only Claude Console accounts can log in\\n* `\\"gateway\\"`: Claude Code sends people to a cloud gateway instead of a first-party login","default":"unset, so people pick a login method"},"forceLoginOrgUUID":{"summary":"[Pin claude.ai logins to your organization](https://code.claude.com/docs/en/authentication#restrict-login-to-your-organization); only a managed source enforces it","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#forceloginorguuid","about":"From a managed source, require claude.ai account logins to belong to one Anthropic organization, given as a single UUID, or to any of several organizations, given as an array. From any settings file, Claude Code also uses a single UUID to pre-select that organization during a claude.ai or Claude Console login, and pre-selects nothing for an array. If you set the key in any settings file, Claude Code also stops offering the [keyless Console sign-in](https://code.claude.com/docs/en/authentication#sign-in-without-an-api-key) in the sessions that file applies to and creates an API key instead.","type":"string, one UUID, or array of strings, several UUIDs","default":"unset, so any organization can log in"},"forceRemoteSettingsRefresh":{"summary":"Block startup until [server-managed settings](https://code.claude.com/docs/en/server-managed-settings) are freshly fetched","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#forceremotesettingsrefresh","about":"Block CLI startup until Claude Code has freshly fetched [server-managed settings](https://code.claude.com/docs/en/server-managed-settings). If the fetch fails, Claude Code exits instead of continuing with cached or no settings. Set it when your environment can\'t accept even a brief window in which a session runs without its managed policy.\\n\\nWhen the key is unset, Claude Code doesn\'t block startup on the fetch, though when the developer signs in at startup it waits up to five seconds for the fetch. A Cloud gateway session always waits, and exits if the gateway can\'t be reached.","type":"Boolean\\n* `true`: Claude Code blocks startup until it has freshly fetched server-managed settings, and exits if the fetch fails\\n* `false`: Claude Code doesn\'t block startup on the fetch, though at a sign-in startup it waits up to five seconds for the fetch","default":"`false`"},"gatewayInternalNetworks":{"summary":"Let `/login` reach a [cloud gateway](https://code.claude.com/docs/en/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) on public IPv4 space your organization uses internally","category":"Authentication and providers","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#gatewayinternalnetworks","about":"Declare the public IPv4 blocks that your organization numbers its internal network from, so `/login` accepts a [cloud gateway](https://code.claude.com/docs/en/claude-apps-gateway) there. Requires Claude Code v2.1.268 or later.\\n\\nWithout this key, `/login` connects to any gateway on a private address and nothing else. With it, `/login` also accepts a gateway inside a listed block, over a direct connection only. The machine\'s own address on that connection must also be inside the same block.","type":"array of strings, at most four IPv4 CIDR blocks, each `/8` to `/32`, not overlapping one another, and none overlapping private space.","default":"unset, so `/login` accepts only gateways on private addresses"},"gcpAuthRefresh":{"summary":"Refresh [Google Cloud credentials](https://code.claude.com/docs/en/google-vertex-ai#advanced-credential-configuration) with your own command","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#gcpauthrefresh","about":"Run your own command to refresh Google Cloud Application Default Credentials when Claude Code finds they\'ve expired or can\'t be loaded, so [Google Cloud\'s Agent Platform](https://code.claude.com/docs/en/google-vertex-ai) requests keep working without you re-authenticating by hand.\\n\\nWhen several Claude Code processes that use the same command and credentials, such as separate terminals or IDE windows, find them expired at the same time, one process runs the command and the rest wait for that run instead of starting their own. A process that has waited 60 seconds with a request pending runs the command itself. To turn this off, set [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](https://code.claude.com/docs/en/env-vars) to `1`.","type":"string, a shell command line","default":"unset, so Claude Code\'s credential error tells you to run `gcloud auth application-default login` yourself"},"hooks":{"summary":"Run your own commands as [hooks](https://code.claude.com/docs/en/hooks) at points in Claude Code\'s lifecycle","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#hooks","about":"Run your own commands, prompts, agents, HTTP requests, or MCP tools as [hooks](https://code.claude.com/docs/en/hooks) at points in Claude Code\'s lifecycle, such as before a tool call or when a session starts; the [hooks reference](https://code.claude.com/docs/en/hooks#hook-events) lists every event, its payload, and its exit codes. Each event maps to a list of matcher groups, and each group lists the handlers to run when the matcher applies.","type":"object keyed by [hook event](https://code.claude.com/docs/en/hooks#hook-events); each value is an array of `{ \\"matcher\\", \\"hooks\\" }` groups whose `hooks` entries have a `type` of `\\"command\\"`, `\\"prompt\\"`, `\\"agent\\"`, `\\"http\\"`, or `\\"mcp_tool\\"`","default":"unset, so no hooks run"},"httpHookAllowedEnvVars":{"summary":"Limit which env vars [HTTP hooks](https://code.claude.com/docs/en/hooks) can put in headers","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#httphookallowedenvvars","about":"An [HTTP hook](https://code.claude.com/docs/en/hooks#http-hook-fields) can put the value of an environment variable into a request header, for example an `Authorization: Bearer $HOOK_TOKEN` header, but only for variables the hook lists in its own `allowedEnvVars`. This key sets an outer limit on that list for every HTTP hook: a hook can use a variable only if both its own `allowedEnvVars` and this key name it. Use it to stop a hook from reading a secret it shouldn\'t, even when the hook\'s definition asks for it.","type":"array of environment variable names","default":"unset, so each hook\'s own `allowedEnvVars` list applies"},"includeCoAuthoredBy":{"summary":"Deprecated; use `attribution` to hide or change commit and PR attribution","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#includecoauthoredby","about":"**Warning:** Deprecated since v2.0.62, when [`attribution`](https://code.claude.com/docs/en/settings-reference#attribution) replaced it. Claude Code still reads it, but new configurations should set `attribution`.\\n\\nUse [`attribution`](https://code.claude.com/docs/en/settings-reference#attribution) instead, which replaces this key and lets you change or hide the commit trailer, the pull request text, and the session link separately. Claude Code still honors `includeCoAuthoredBy: false` from settings files that predate `attribution`, but ignores it once you set `attribution.commit` or `attribution.pr`.","type":"Boolean\\n* `true`: the same as unset; Claude Code adds the commit trailer and the pull request attribution text\\n* `false`: Claude Code omits both the commit trailer and the pull request attribution text, unless `attribution` sets `commit` or `pr`, in which case the [`attribution`](https://code.claude.com/docs/en/settings-reference#attribution) rules apply","default":"`true`"},"includeGitInstructions":{"summary":"Remove the built-in commit and PR instructions from Claude\'s context","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#includegitinstructions","about":"Claude Code gives Claude two git-related pieces of context: its built-in instructions for how to write commits and pull requests, in the Bash tool\'s description, and a git status snapshot of your repository. The snapshot holds the current branch, the main branch, `git status` output, and recent commits. Claude Code reads it when a conversation starts.\\n\\nSet this key to `false` to leave both out, for example when you use your own git workflow skills.","type":"Boolean\\n* `true`: Claude Code includes its built-in commit and pull request workflow instructions and the git status snapshot. Cloud sessions never include the snapshot\\n* `false`: Claude Code leaves both out","default":"`true`"},"inputNeededNotifEnabled":{"summary":"Get a [push notification](https://code.claude.com/docs/en/remote-control#mobile-push-notifications) when Claude is waiting on you","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#inputneedednotifenabled","about":"Get a push notification on your phone when a permission prompt or question is waiting for your input. Claude Code sends these only while [Remote Control](https://code.claude.com/docs/en/remote-control) is connected. Appears in `/config` as **Push when actions required**.","type":"Boolean\\n* `true`: you get a push notification on your phone when a permission prompt or question is waiting, while Remote Control is connected\\n* `false`: Claude Code sends no such notifications","default":"`false`"},"isolatePeerMachines":{"summary":"Ask you before Claude [messages one of your sessions on another machine](https://code.claude.com/docs/en/cross-session-messaging#require-approval-for-cross-machine-messages)","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#isolatepeermachines","about":"Require your explicit approval before Claude\'s `SendMessage` reaches one of your sessions beyond this machine; see [Require approval for cross-machine messages](https://code.claude.com/docs/en/cross-session-messaging#require-approval-for-cross-machine-messages). The approval prompt appears even in [`bypassPermissions` mode](https://code.claude.com/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode).","type":"Boolean\\n* `true`: Claude Code asks for your approval before Claude\'s `SendMessage` reaches one of your sessions beyond this machine\\n* `false`: cross-machine messages don\'t prompt","default":"unset, so cross-machine messages don\'t prompt"},"keybindingFlavor":{"summary":"Deprecated and has no effect; the word-editing shortcuts always [follow readline conventions](https://code.claude.com/docs/en/interactive-mode#make-ctrl-w-delete-back-to-whitespace)","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#keybindingflavor","about":"**Warning:** Deprecated since v2.1.261 and has no effect. The prompt\'s word-editing keys always [follow readline conventions](https://code.claude.com/docs/en/interactive-mode#make-ctrl-w-delete-back-to-whitespace), as in Bash. Claude Code still accepts `keybindingFlavor`, so a settings file that sets it stays valid.\\n\\nIn v2.1.238 through v2.1.260, setting it to `\\"readline\\"` made `Ctrl+W` delete back to the previous whitespace instead of only the previous word.","type":"string, `\\"classic\\"` or `\\"readline\\"`","default":"unset"},"language":{"summary":"Have Claude respond in a language other than English","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#language","about":"Have Claude respond in a language other than English by default. There is no fixed list for responses: Claude Code passes the value verbatim to Claude as an instruction to always respond in that language, so any language name Claude can read works. Claude Code doesn\'t check the value, so a misspelled name reaches Claude as written rather than producing an error. The same value sets the language for [voice dictation](https://code.claude.com/docs/en/voice-dictation#change-the-dictation-language), which does have a fixed list of [supported dictation languages](https://code.claude.com/docs/en/voice-dictation#change-the-dictation-language), and for auto-generated session titles.","type":"string, any language name, such as `\\"japanese\\"`, `\\"spanish\\"`, or `\\"french\\"`; Claude Code doesn\'t validate it","default":"unset; session titles then match the language of your conversation"},"leftArrowOpensAgents":{"summary":"Turn off the `←` shortcut that [backgrounds the session and opens agent view](https://code.claude.com/docs/en/agent-view#switch-sessions-without-leaving-the-terminal)","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#leftarrowopensagents","about":"Press `←` on an empty prompt to [background the session and open agent view](https://code.claude.com/docs/en/agent-view#switch-sessions-without-leaving-the-terminal). Set this key to `false` to turn the shortcut off. Appears in `/config` as **← opens agents** when agent view is available.","type":"Boolean\\n* `true`: pressing `←` on an empty prompt in a session you started in the terminal backgrounds it and opens agent view\\n* `false`: Claude Code turns the shortcut off; in a session you [attached to from agent view](https://code.claude.com/docs/en/agent-view#attach-to-a-session), `←` on an empty prompt still detaches","default":"`true`"},"managedMcpServers":{"summary":"Provide remote [MCP servers](https://code.claude.com/docs/en/managed-mcp#provide-servers-through-managed-settings) to every user alongside the ones they add","category":"MCP","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#managedmcpservers","about":"Provide remote MCP servers to every user from managed settings. Users keep the servers they add themselves and can\'t edit or remove the ones you provide. Requires Claude Code v2.1.259 or later.","type":"object keyed by server name. Each entry has the `.mcp.json` shape for an `http` or `sse` server: a required `https://` `url`, and optionally `headers`, `oauth`, and the other HTTP and SSE options. Claude Code drops entries that fail validation, and [What an entry can contain](https://code.claude.com/docs/en/managed-mcp#what-an-entry-can-contain) lists the conditions","default":"unset, so managed settings provide no servers"},"managedSourcesBehavior":{"summary":"Compose every [managed source](https://code.claude.com/docs/en/managed-settings#how-claude-code-combines-managed-sources) you deploy instead of using the highest-priority one alone","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#managedsourcesbehavior","about":"Choose whether Claude Code applies only the highest-priority [managed source](https://code.claude.com/docs/en/managed-settings#how-claude-code-combines-managed-sources) your organization delivers, or combines every admin source it delivers. By default Claude Code takes the highest-priority source that carries a [policy key](https://code.claude.com/docs/en/managed-settings#how-claude-code-combines-managed-sources) and ignores the rest. A policy key is any settings key other than this one and `wslInheritsWindowsSettings`. Under that default, once server-managed settings or an MDM policy deliver a policy key, a `managed-settings.json` file contributes only the [keys Claude Code reads from every admin source](https://code.claude.com/docs/en/managed-settings#keys-read-from-every-admin-source). With `\\"merge\\"`, every admin source you deliver contributes its keys to one combined policy. Requires Claude Code v2.1.242 or later.\\n\\nSet `\\"merge\\"` only where every source [ranked](https://code.claude.com/docs/en/managed-settings#how-claude-code-combines-managed-sources) below your highest one is under an administrator\'s control, because Claude Code then adds entries from a lower source, such as `permissions.allow` rules, to the policy.","type":"string, one of:\\n* `\\"first-wins\\"`: the highest-priority source that carries a policy key supplies the policy, and lower sources contribute only the [keys Claude Code reads from every admin source](https://code.claude.com/docs/en/managed-settings#keys-read-from-every-admin-source)\\n* `\\"merge\\"`: every admin source you deliver contributes its keys, combined by the rules below","default":"`\\"first-wins\\"`"},"maxEffortLevel":{"summary":"Cap the [effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) for every model or per model, on every provider","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#maxeffortlevel","about":"Cap the [effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) a session can use, leaving lower levels available. Any higher level runs at the cap instead, including one from `/effort`, the `/model` picker, `--effort`, [`CLAUDE_CODE_EFFORT_LEVEL`](https://code.claude.com/docs/en/env-vars), a skill\'s or subagent\'s `effort` frontmatter, or the model\'s own default. Claude Code applies the cap itself before each request, so it holds on every provider, including Amazon Bedrock, Google Cloud\'s Agent Platform, and Microsoft Foundry. Requires Claude Code v2.1.267 or later.","type":"string, one of `\\"low\\"`, `\\"medium\\"`, `\\"high\\"`, `\\"xhigh\\"`, or `\\"max\\"`. A `\\"max\\"` value sets no cap","default":"unset, so no cap applies"},"maxProseWidth":{"summary":"Cap how wide the prose in Claude\'s responses runs in a wide terminal","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#maxprosewidth","about":"Cap the width of the prose in Claude\'s responses so lines stay readable in a wide terminal. Paragraphs, headings, lists, and blockquotes wrap within this many columns, while tables and code blocks keep the full terminal width. Requires Claude Code v2.1.282 or later.","type":"number of terminal columns, a whole number, minimum `40`. Claude Code ignores any other value","default":"unset, so prose wraps at the terminal edge"},"minimumVersion":{"summary":"Keep [auto-updates](https://code.claude.com/docs/en/setup#pin-a-minimum-version) from installing anything below a version","category":"Updates and versioning","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#minimumversion","about":"Keep background auto-updates and `claude update` from installing any version below this one, so moving to the `\\"stable\\"` channel doesn\'t downgrade you from a newer `\\"latest\\"` build. Claude Code writes this key for you when you choose to stay on your current version while switching channels in `/config`, and clears it when you switch back to `\\"latest\\"`.","type":"string, a version number such as `\\"2.1.100\\"`; a value that isn\'t a valid version is ignored","default":"unset, so updates can install any version the channel offers"},"model":{"summary":"Change the [model](https://code.claude.com/docs/en/model-config#set-a-default-model-for-new-sessions) Claude Code starts with","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#model","about":"Set the model every new session uses, so you don\'t have to pick one with `/model` each time. Setting it here doesn\'t stop you from switching mid-session. If your admin set an [organization default model](https://code.claude.com/docs/en/model-config#organization-default-model) to override user selection, you get that model even when you set this key in user, project, or local settings.","type":"string, a model alias or full model ID","default":"unset, so Claude Code uses your account\'s default model"},"modelOverrides":{"summary":"[Map model IDs](https://code.claude.com/docs/en/model-config#override-model-ids-per-version) to your provider\'s IDs, such as Bedrock ARNs","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#modeloverrides","about":"Map Anthropic model IDs to provider-specific model IDs, such as Amazon Bedrock inference profile ARNs. Each model picker entry then uses its mapped value when calling the provider API. Administrators use this on [Amazon Bedrock, Google Cloud\'s Agent Platform, and Microsoft Foundry](https://code.claude.com/docs/en/model-config#override-model-ids-per-version) to route each model version to a specific inference profile, version name, or deployment for governance, cost allocation, or regional routing.","type":"object mapping model ID to provider model ID","default":"unset"},"modelPicker":{"summary":"Choose which models the [`/model` picker](https://code.claude.com/docs/en/model-config#available-models) lists, in your own order and with your own labels","category":"Model and responses","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#modelpicker","about":"List the models the `/model` picker offers, in the order you write them and under labels you choose, so the picker lists the models your organization runs, after the built-in lineup or instead of it. Each row\'s `model` is taken verbatim, so it accepts anything `--model` accepts: an alias such as `opus`, an Anthropic model ID, or a provider-format ID for Amazon Bedrock, Google Cloud\'s Agent Platform, Microsoft Foundry, or an LLM gateway. Requires Claude Code v2.1.242 or later.","type":"object with an `options` array of rows and an optional `replaceBuiltInOptions` Boolean","default":"unset, so the picker shows the built-in lineup"},"modelPricing":{"summary":"Report spend at your organization\'s contracted rates instead of list price","category":"Model and responses","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#modelpricing","about":"Report spend at the rates your organization pays instead of list price. Set it when your organization has contracted rates, so the dollar figures developers see match your bill. Claude Code applies the rates in `/usage`, the [status line](https://code.claude.com/docs/en/statusline), the Agent SDK\'s `total_cost_usd`, the [`--max-budget-usd`](https://code.claude.com/docs/en/cli-reference) limit, and the [OpenTelemetry](https://code.claude.com/docs/en/monitoring-usage) cost metric and events. You supply the rates: Claude Code doesn\'t read them from your contract or the Claude Console. Requires Claude Code v2.1.242 or later.","type":"object with an optional `multiplier` and an optional `overrides` map","default":"unset, so Claude Code reports list price unless a host application supplies a table"},"modelSettings":{"summary":"Keep a saved [effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) or [auto-compact window](https://code.claude.com/docs/en/model-config#set-the-auto-compact-window) per model, or cap one model\'s effort","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#modelsettings","about":"Save an [effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) for each model you use. Requires Claude Code v2.1.251 or later.\\n\\nIn an interactive session on your machine, when you save `low`, `medium`, `high`, or `xhigh` as your default with `/effort` or the `/model` picker\'s effort slider, Claude Code writes that level here under the model you\'re using, so you rarely edit this key yourself. When you pick one of those levels in the [VS Code extension\'s model picker](https://code.claude.com/docs/en/vs-code#use-the-prompt-box), Claude Code saves it here the same way. The [`effortLevel`](https://code.claude.com/docs/en/settings-reference#effortlevel) entry lists the sessions where `/effort` applies to that session only.\\n\\nEdit the key by hand to change or remove a level you saved.\\n\\nA model\'s `effortLevel` here takes precedence over the top-level [`effortLevel`](https://code.claude.com/docs/en/settings-reference#effortlevel) in the same settings file. Across files, Claude Code resolves each model separately: the highest-precedence [settings file](https://code.claude.com/docs/en/settings#settings-precedence) that sets either an `effortLevel` for that model or a top-level `effortLevel` that [applies to that model](https://code.claude.com/docs/en/settings-reference#effortlevel) decides, so an `effortLevel` in managed settings outranks a level you saved in user settings. [Adjust effort level](https://code.claude.com/docs/en/model-config#adjust-effort-level) lists what else can override a saved level, such as `--effort` at launch.\\n\\nTo cap one model\'s effort rather than set its level, add a [`maxEffortLevel`](https://code.claude.com/docs/en/settings-reference#maxeffortlevel) field to that model\'s entry. The field requires Claude Code v2.1.267 or later.","type":"object mapping a model name to an object with any of these fields:\\n* `effortLevel`: one of `\\"low\\"`, `\\"medium\\"`, `\\"high\\"`, or `\\"xhigh\\"`\\n* [`maxEffortLevel`](https://code.claude.com/docs/en/settings-reference#maxeffortlevel): the highest effort level the model may run at\\n* `autoCompactWindow`: a number of tokens from `100000` to `1000000`, or `\\"auto\\"` for the window tuned for the model. [`/autocompact`](https://code.claude.com/docs/en/model-config#set-the-auto-compact-window) saves here. For that model, the value takes precedence over a top-level [`autoCompactWindow`](https://code.claude.com/docs/en/settings-reference#autocompactwindow) in the same settings file. Requires Claude Code v2.1.288 or later","default":"unset"},"otelHeadersHelper":{"summary":"Generate rotating [OpenTelemetry](https://code.claude.com/docs/en/monitoring-usage#dynamic-headers) headers with your own command","category":"Authentication and providers","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#otelheadershelper","about":"Run your own command to generate the headers Claude Code sends with OpenTelemetry exports, for backends whose tokens rotate. Claude Code runs it at startup and periodically after that, and expects a JSON object of string header values on stdout.","type":"string, an executable path or a shell command line","default":"unset, so Claude Code adds no helper-generated headers"},"outputStyle":{"summary":"Change Claude\'s role, tone, and output format with an [output style](https://code.claude.com/docs/en/output-styles)","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#outputstyle","about":"Select an [output style](https://code.claude.com/docs/en/output-styles) by name. An output style is a saved set of instructions that changes Claude\'s role, tone, and output format, such as the built-in Explanatory and Learning styles or one you wrote yourself.\\n\\nIf you change this key during a session, Claude uses the new style starting with your next message. For what that message costs in prompt caching, see [Changing output style](https://code.claude.com/docs/en/prompt-caching#changing-output-style). Before v2.1.251, the edit applied only after you ran `/clear` or started a new session.","type":"string, the name of a [built-in](https://code.claude.com/docs/en/output-styles#built-in-output-styles) or [custom](https://code.claude.com/docs/en/output-styles#create-a-custom-output-style) output style","default":"unset, so Claude Code uses the default style"},"parentSettingsBehavior":{"summary":"Apply or drop restrictions an [SDK or IDE host](https://code.claude.com/docs/en/managed-settings#let-an-embedding-host-add-policy) passes when you deploy [managed settings](https://code.claude.com/docs/en/managed-settings)","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#parentsettingsbehavior","about":"Choose whether Claude Code applies managed settings supplied by an embedding host process, such as the Agent SDK or an IDE extension, when an admin-deployed managed tier is also present. With `\\"first-wins\\"`, Claude Code drops the host-supplied settings; with `\\"merge\\"`, it applies them under the admin tier through a restrictive-only filter. Set `\\"merge\\"` when a host needs to pass its own restrictions to the sessions it launches, for example Claude Desktop delivering a gateway\'s egress allowlist.","type":"string, one of:\\n* `\\"first-wins\\"`: Claude Code drops the host-supplied settings when an admin-deployed managed tier is present\\n* `\\"merge\\"`: Claude Code applies the host-supplied settings under the admin tier through a restrictive-only filter","default":"`\\"first-wins\\"`"},"permissionExplainerEnabled":{"summary":"Removed in v2.1.257, together with the `Ctrl+E` command explanation on shell permission prompts","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#permissionexplainerenabled","about":"**Warning:** Removed in v2.1.257, together with the `Ctrl+E` command explanation on Bash and PowerShell permission prompts. Setting it has no effect on current versions.\\n\\nThrough v2.1.256, you could press `Ctrl+E` on a Bash or PowerShell permission prompt to see a model-generated explanation of the command, and set this key to `false` to turn that shortcut off.","type":"Boolean","default":"`true`"},"permissions":{"summary":"Set allow, ask, and deny rules and the starting [permission mode](https://code.claude.com/docs/en/permission-modes)","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions","about":"Control which tools Claude can use without asking, which ones always prompt, and which ones are blocked, and set the [permission mode](https://code.claude.com/docs/en/permission-modes) a session starts in. Every `permissions.*` key below nests under this object.","type":"object with `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode`, and `disableAutoMode`","default":"unset"},"permissions.additionalDirectories":{"summary":"Give Claude file access to [directories outside the current one](https://code.claude.com/docs/en/permissions#working-directories)","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-additionaldirectories","about":"Give Claude file access to directories outside the one you started in, as additional [working directories](https://code.claude.com/docs/en/permissions#working-directories). Most `.claude/` configuration is [not discovered](https://code.claude.com/docs/en/permissions#additional-directories-grant-file-access-not-configuration) from these directories.","type":"array of directory paths","default":"unset"},"permissions.allow":{"summary":"Approve listed [tool uses](https://code.claude.com/docs/en/permissions#permission-rule-syntax) without a prompt","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-allow","about":"List the tool uses Claude Code approves without asking you. In an MCP rule, `*` can appear only in the tool name after the `mcp__<server>__` prefix, such as `mcp__github__get_*`; it can\'t appear in the server name.","type":"array of permission rule strings","default":"unset"},"permissions.ask":{"summary":"Always prompt before listed [tool uses](https://code.claude.com/docs/en/permissions#permission-rule-syntax)","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-ask","about":"List the tool uses that prompt you for confirmation even in a permission mode that would otherwise approve them, such as `acceptEdits` or `bypassPermissions`. In `dontAsk` mode Claude Code denies a matching tool use instead of prompting.","type":"array of permission rule strings","default":"unset"},"permissions.blockReadsOutsideWorkingDirectories":{"summary":"Make the file tools refuse reads outside the [working directories](https://code.claude.com/docs/en/permissions#working-directories) in every permission mode","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-blockreadsoutsideworkingdirectories","about":"Make Claude\'s file tools refuse reads outside your [working directories](https://code.claude.com/docs/en/permissions#working-directories) in every permission mode, including `bypassPermissions`. Claude Code denies `Read`, `Grep`, `Glob`, and `LSP` calls on those paths and tells Claude to ask you to add the directory with `/add-dir`. Files Claude Code itself needs stay readable, such as your skills, plugins, rules, agents, commands, and the `CLAUDE.md` memory file under `~/.claude/`. Requires Claude Code v2.1.257 or later.\\n\\nClaude Code doesn\'t refuse shell commands the same way:\\n\\n* [Actions no mode auto-approves](https://code.claude.com/docs/en/permission-modes#actions-no-mode-auto-approves) covers when a shell command that reads such a path prompts you\\n* [Sandboxed commands under the block](https://code.claude.com/docs/en/settings-reference#sandboxed-commands-under-the-block) covers what a sandboxed command can read\\n\\nA Bash command the shell parser can\'t trace, such as one that changes directory more than once or runs a subshell, prompts you even in auto mode and `bypassPermissions` mode. The prompt appears even when the command names no path outside the working directories. This prompt doesn\'t apply when the command runs in the [sandbox](https://code.claude.com/docs/en/sandboxing) and the sandbox enforces the block.\\n\\nClaude Code also writes `true` here when you choose to block such reads on [auto mode\'s prompt before the first read outside the working directories](https://code.claude.com/docs/en/permission-modes#first-read-outside-the-working-directories).","type":"Boolean\\n* `true`: Claude\'s file tools refuse reads outside the working directories\\n* `false`: the same as unset; the block still applies if another file sets `true`","default":"unset, so reads outside the working directories follow your [permission mode](https://code.claude.com/docs/en/permission-modes)"},"permissions.defaultMode":{"summary":"Set the [permission mode](https://code.claude.com/docs/en/permission-modes#which-mode-a-session-starts-in) new sessions start in","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-defaultmode","about":"Set the [permission mode](https://code.claude.com/docs/en/permission-modes) new sessions start in. When you leave it unset, sessions start in the [built-in default](https://code.claude.com/docs/en/permission-modes#which-mode-a-session-starts-in) for your surface.","type":"string, one of:\\n* `\\"default\\"`: Claude Code runs only reads without asking\\n* `\\"acceptEdits\\"`: Claude Code also runs file edits and common filesystem commands such as `mkdir` and `mv` without asking\\n* `\\"plan\\"`: Claude Code reads and plans but blocks edits until you approve a plan\\n* `\\"auto\\"`: Claude Code runs without routine prompts; before actions such as shell commands and network requests run, a background classifier checks that they align with your request\\n* `\\"dontAsk\\"`: Claude Code auto-denies every call that would otherwise prompt; file reads inside your working directories, other actions that need no approval, and pre-approved tools still run, apart from reads from [network paths](https://code.claude.com/docs/en/permissions#network-paths)\\n* `\\"bypassPermissions\\"`: Claude Code runs everything without asking\\n* `\\"manual\\"`: an alias for `\\"default\\"`","default":"unset"},"permissions.deny":{"summary":"Block listed [tool uses](https://code.claude.com/docs/en/permissions#permission-rule-syntax), including reads of files that hold secrets","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-deny","about":"List the tool uses Claude Code blocks. Use it for files that hold API keys, secrets, or environment values: Claude Code excludes matching files from file discovery and search results, denies reads of them, and blocks the [Edit and Write tools](https://code.claude.com/docs/en/permissions#read-and-edit) on the matching paths.\\n\\nRead and Edit deny rules apply to Claude\'s built-in file tools, to file commands Claude Code recognizes in Bash, such as `cat`, `head`, `tail`, `sed`, and `tee`, and to the targets of Bash [redirections](https://code.claude.com/docs/en/permissions#redirections) such as `> file` and `< file`; they don\'t apply to a command that reads files without naming them, such as `grep -r pattern .`, or to arbitrary subprocesses, so for OS-level enforcement [enable the sandbox](https://code.claude.com/docs/en/sandboxing).","type":"array of permission rule strings","default":"unset"},"permissions.disableBypassPermissionsMode":{"summary":"Prevent anyone from entering [bypassPermissions mode](https://code.claude.com/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode)","category":"Permission settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#permissions-disablebypasspermissionsmode","about":"Prevent anyone from entering `bypassPermissions` mode. Claude Code then rejects the `--dangerously-skip-permissions` flag, and ignores an [agent definition\'s](https://code.claude.com/docs/en/sub-agents#permission-modes) `permissionMode: bypassPermissions`, so the subagent runs with the parent session\'s permission mode.","type":"the string `\\"disable\\"`","default":"unset"},"plansDirectory":{"summary":"Choose where [plan mode](https://code.claude.com/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode) writes plan files","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#plansdirectory","about":"Choose where Claude Code stores the plan files it writes in [plan mode](https://code.claude.com/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode). Claude Code resolves the path relative to the project root.","type":"string, a path relative to the project root","default":"unset, so Claude Code uses `~/.claude/plans`"},"pluginConfigs":{"summary":"Store the answers you gave a [plugin](https://code.claude.com/docs/en/plugins/overview)\'s configuration dialog","category":"Plugins and skills","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#pluginconfigs","about":"Store the non-sensitive answers you give a plugin\'s [`userConfig`](https://code.claude.com/docs/en/plugins/manifest-reference#user-configuration) configuration dialog, keyed by plugin ID. Claude Code writes this key to your user settings when you fill in the dialog, so you don\'t need to edit it by hand. Claude Code stores sensitive options in the macOS Keychain instead, falling back to `~/.claude/.credentials.json` when the Keychain rejects the write; on platforms without a supported keychain, it stores them in `~/.claude/.credentials.json`.","type":"object mapping a plugin ID to an object with an `options` field, mapping each option name to a string, number, Boolean, or array of strings, and an optional `mcpServers` field holding per-server user configuration values in the same shape","default":"unset"},"pluginSuggestionMarketplaces":{"summary":"Choose which [marketplaces](https://code.claude.com/docs/en/plugins/org#restrict-what-users-can-install) can surface plugin install suggestions in `/plugin`","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#pluginsuggestionmarketplaces","about":"Name the marketplaces whose plugins can appear as contextual install suggestions, in spinner tips and pinned at the top of the `/plugin` **Discover** tab. The built-in first-party frontend-design tip is unaffected. Suggestions come from each plugin\'s `relevance` declaration in its marketplace entry.","type":"array of marketplace names","default":"unset, so no marketplace-declared suggestions surface"},"pluginTrustMessage":{"summary":"Add your own text to the [plugin](https://code.claude.com/docs/en/plugins/overview) trust warning","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#plugintrustmessage","about":"Add your organization\'s own text to the plugin trust warning Claude Code shows before installation, for example to confirm that plugins from your internal marketplace are vetted.","type":"string","default":"unset, so Claude Code shows the standard warning alone"},"policyHelper":{"summary":"Run an executable that computes [managed settings](https://code.claude.com/docs/en/managed-settings#compute-the-policy-with-a-helper-program) at startup","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#policyhelper","about":"Run an executable you deploy that computes managed settings at startup, so you can derive policy from device posture, identity, or a remote service instead of a static file. Claude Code runs the helper before it accepts the first prompt and treats the settings it emits as the managed settings for the session.","type":"object with `path`, `timeoutMs`, and `refreshIntervalMs`","default":"unset, so no helper runs"},"policyHelper.path":{"summary":"Name the [helper executable](https://code.claude.com/docs/en/managed-settings#compute-the-policy-with-a-helper-program) Claude Code runs","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#policyhelper-path","about":"Name the helper executable Claude Code runs. For what happens when the path breaks the rules below, see [Helper failures](https://code.claude.com/docs/en/settings-reference#helper-failures).","type":"string, an absolute path in normalized form, without `.` or `..` segments; on Windows, a drive-letter or UNC path that ends in `.exe`","default":"none; required when `policyHelper` is set"},"policyHelper.refreshIntervalMs":{"summary":"Re-run the [helper](https://code.claude.com/docs/en/managed-settings#compute-the-policy-with-a-helper-program) in the background on an interval","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#policyhelper-refreshintervalms","about":"Have Claude Code re-run the helper in the background on an interval so policy changes reach a running session. When a refresh succeeds, its output replaces the previous managed settings without a restart; when a refresh fails, Claude Code keeps the policy it already has.","type":"integer, milliseconds: `0` to disable refresh, otherwise at least `60000`","default":"unset, so Claude Code runs the helper once at startup"},"policyHelper.timeoutMs":{"summary":"Set how long Claude Code waits for the [helper](https://code.claude.com/docs/en/managed-settings#compute-the-policy-with-a-helper-program)","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#policyhelper-timeoutms","about":"Set how long Claude Code waits for the helper before treating the run as failed. A timed-out run fails the same way as a non-zero exit, so at startup Claude Code refuses to start.","type":"integer, milliseconds, minimum `1000`","default":"`10000`"},"preferredNotifChannel":{"summary":"Choose a [terminal bell or desktop notification](https://code.claude.com/docs/en/terminal-config#get-a-terminal-bell-or-notification) for task completion","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#preferrednotifchannel","about":"Choose how Claude Code notifies you when a task completes or a permission prompt is waiting. Appears in `/config` as **Local notifications**.","type":"string, one of:\\n* `\\"auto\\"`: Claude Code sends a desktop notification in iTerm2, Ghostty, and Kitty, rings the bell in Terminal.app only when its audible bell is off, and does nothing elsewhere\\n* `\\"terminal_bell\\"`: Claude Code rings the bell character in any terminal\\n* `\\"iterm2\\"`: Claude Code sends an iTerm2 desktop notification\\n* `\\"iterm2_with_bell\\"`: Claude Code sends an iTerm2 desktop notification and rings the bell\\n* `\\"kitty\\"`: Claude Code sends a Kitty desktop notification\\n* `\\"ghostty\\"`: Claude Code sends a Ghostty desktop notification\\n* `\\"notifications_disabled\\"`: Claude Code sends no notification","default":"`\\"auto\\"`"},"prefersReducedMotion":{"summary":"[Reduce or turn off](https://code.claude.com/docs/en/accessibility#accessibility-settings) spinner, shimmer, and flash animations","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#prefersreducedmotion","about":"Reduce or turn off interface animations such as the spinner, shimmer, and flash effects. Appears in `/config` as **Reduce motion**.","type":"Boolean\\n* `true`: Claude Code reduces or turns off interface animations such as the spinner, shimmer, and flash effects\\n* `false`: the same as unset; Claude Code shows its animations","default":"`false`"},"prependPlugins":{"summary":"Run your organization\'s [mods](https://code.claude.com/docs/en/plugins/mods/admin) before every mod a user installs","category":"Plugins and skills","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#prependplugins","about":"List the managed plugins whose [mods](https://code.claude.com/docs/en/plugins/mods/overview) run before every mod a user installs, in the listed order. When you set this key in managed settings, name `sec-default@builtin` in the list to keep the built-in guard. In managed settings, Claude Code skips an id whose plugin doesn\'t count as your organization\'s. See [Install your organization\'s mods and set the order](https://code.claude.com/docs/en/plugins/mods/admin#install-your-organizations-mods) for those conditions and for how the two ordering keys work together.","type":"array of `plugin-name@marketplace-name` strings","default":"unset"},"processWrapper":{"summary":"Run Claude Code\'s background processes through a [corporate launcher](https://code.claude.com/docs/en/corporate-launcher) on macOS and Linux","category":"Agents, sessions, and worktrees","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#processwrapper","about":"On macOS and Linux, place a corporate launcher command in front of the [background processes Claude Code starts](https://code.claude.com/docs/en/corporate-launcher#what-the-launcher-covers). Claude Code runs the launcher with its own command line appended, so the launcher must exec into Claude Code; see [Run Claude Code behind a corporate launcher](https://code.claude.com/docs/en/corporate-launcher) for the launcher contract. Requires Claude Code v2.1.210 or later.","type":"string, the launcher command as an argv prefix, such as an absolute path with optional arguments","default":"unset, so background processes start unwrapped"},"promptCacheTtl":{"summary":"Choose the [prompt cache lifetime](https://code.claude.com/docs/en/prompt-caching#cache-lifetime) for the main conversation","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#promptcachettl","about":"Choose how long the [prompt cache](https://code.claude.com/docs/en/prompt-caching) holds the main conversation. This key applies to your interactive, `-p`, and Agent SDK turns, together with the helpers Claude Code runs inline with them. The one-hour lifetime keeps the cache warm across longer breaks, and the API [bills each cache write at a higher rate](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing) than at the five-minute lifetime. Requires Claude Code v2.1.242 or later.","type":"string, one of:\\n* `\\"5m\\"`: the cache holds for five minutes\\n* `\\"1h\\"`: the cache holds for an hour","default":"unset, so each main-conversation request gets [its default lifetime](https://code.claude.com/docs/en/prompt-caching#which-ttl-each-request-gets)"},"promptSuggestionEnabled":{"summary":"Hide the grayed-out [prompt suggestions](https://code.claude.com/docs/en/interactive-mode#prompt-suggestions) in the input box","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#promptsuggestionenabled","about":"Show or hide [prompt suggestions](https://code.claude.com/docs/en/interactive-mode#prompt-suggestions), the grayed-out predictions that appear in your prompt input. Set it to `false`, or turn off **Prompt suggestions** in `/config`, to hide them.","type":"Boolean\\n* `true`: you see prompt suggestions in your prompt input\\n* `false`: Claude Code hides prompt suggestions","default":"`true`"},"prStatusFooterEnabled":{"summary":"Turn off the prompt footer\'s [PR review status](https://code.claude.com/docs/en/interactive-mode#pr-review-status) badge and the pull request check behind it","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#prstatusfooterenabled","about":"Show a badge in the prompt footer for the current branch\'s open pull request or merge request, with a colored underline that shows its [status](https://code.claude.com/docs/en/interactive-mode#pr-review-status). Appears in `/config` as **Show PR status footer**.","type":"Boolean\\n* `true`: the footer shows the badge under the conditions in [PR review status](https://code.claude.com/docs/en/interactive-mode#pr-review-status)\\n* `false`: Claude Code skips the footer\'s pull request and merge request check and doesn\'t show that badge. A session you [attached to from agent view](https://code.claude.com/docs/en/agent-view#attach-to-a-session) can still show a plain link to a pull request [linked to it](https://code.claude.com/docs/en/agent-view#pull-request-status)","default":"`true`"},"prUrlTemplate":{"summary":"Point PR links at an internal code-review tool instead of github.com","category":"Git and attribution","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#prurltemplate","about":"Point the PR links Claude Code renders, in the footer badge and in tool-result summaries, at an internal code-review tool instead of `github.com`. Claude Code substitutes `{host}`, `{owner}`, `{repo}`, `{number}`, and `{url}` from the PR URL. [GitLab merge request](https://code.claude.com/docs/en/interactive-mode#gitlab-merge-requests) links on both surfaces keep their GitLab URL.","type":"string, a URL template using any of the five placeholders","default":"unset"},"remote.defaultEnvironmentId":{"summary":"Pick the default [cloud environment](https://code.claude.com/docs/en/cloud-environments) for `claude --cloud`; a self-hosted `ccpool_` ID is read only from user and managed settings and `--settings`","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#remote-defaultenvironmentid","about":"Pick the default [cloud environment](https://code.claude.com/docs/en/cloud-environments) for cloud sessions you create from the CLI, such as with `claude --cloud`. Claude Code writes this key to your user settings when you pick an environment with [`/remote-env`](https://code.claude.com/docs/en/cloud-environments#select-an-environment-from-the-cli).","type":"string, an environment ID such as `env_...` or `ccpool_...`","default":"unset, so Claude Code uses the Anthropic-hosted environment when your list has one, and otherwise the first environment in your list that isn\'t a [Remote Control bridge environment](https://code.claude.com/docs/en/cloud-environments#the-default-environment), or the first environment when every one is a bridge environment"},"remoteControlAtStartup":{"summary":"Connect [Remote Control](https://code.claude.com/docs/en/remote-control#enable-remote-control-for-all-sessions) automatically when a session starts","category":"Remote, desktop, and notifications","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#remotecontrolatstartup","about":"Connect [Remote Control](https://code.claude.com/docs/en/remote-control) automatically when each interactive session starts, instead of waiting for `/remote-control`. Set it to `true` to turn auto-connect on, `false` to turn it off. Appears in `/config` as **Enable Remote Control for all sessions**.","type":"Boolean\\n* `true`: Claude Code connects Remote Control automatically when each interactive session starts\\n* `false`: Claude Code waits for `/remote-control`","default":"unset, so the [auto-connect default](https://code.claude.com/docs/en/remote-control#enable-remote-control-for-all-sessions) applies"},"requiredMaximumVersion":{"summary":"[Refuse to start](https://code.claude.com/docs/en/setup#pin-a-minimum-version) on a version newer than your organization allows","category":"Updates and versioning","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#requiredmaximumversion","about":"Set the newest Claude Code version your organization allows to start. When the running version is newer, Claude Code exits at startup and tells the user to install an approved version through your organization\'s approved method; `claude install <version>` may also work. Requires Claude Code v2.1.163 or later.","type":"string, a version number such as `\\"2.1.150\\"`; a value that isn\'t a valid version is ignored","default":"unset, so no ceiling applies"},"requiredMinimumVersion":{"summary":"[Refuse to start](https://code.claude.com/docs/en/setup#pin-a-minimum-version) on a version older than your organization requires","category":"Updates and versioning","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#requiredminimumversion","about":"Set the oldest Claude Code version your organization allows to start. When the running version is older, Claude Code exits at startup and tells the user to update through your organization\'s approved method. The check runs at startup only, so a session that\'s already running continues. Requires Claude Code v2.1.163 or later.","type":"string, a version number such as `\\"2.1.150\\"`; a value that isn\'t a valid version is ignored","default":"unset, so no floor applies"},"respectGitignore":{"summary":"Keep gitignored files out of the [`@` file picker](https://code.claude.com/docs/en/interactive-mode#quick-commands)","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#respectgitignore","about":"Control whether the `@` file picker leaves out files that match `.gitignore` patterns. Appears in `/config` as **Respect .gitignore in file picker**.","type":"Boolean\\n* `true`: the `@` file picker leaves out files that match `.gitignore` patterns\\n* `false`: the `@` file picker includes files that match `.gitignore` patterns","default":"`true`"},"respondToBashCommands":{"summary":"Stop Claude from responding after a [`!` shell command](https://code.claude.com/docs/en/interactive-mode#shell-mode-with-prefix) runs","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#respondtobashcommands","about":"Choose whether Claude responds after you run a shell command with the [`!` prefix](https://code.claude.com/docs/en/interactive-mode#shell-mode-with-prefix) in the input box. By default, Claude Code adds the command\'s output to the conversation and Claude replies to it. Set this key to `false` to add the output to context without a reply, so you can run several commands and ask about them together.","type":"Boolean\\n* `true`: Claude Code adds the command\'s output to the conversation and Claude replies to it\\n* `false`: Claude Code adds the output to context without a reply","default":"`true`"},"sandbox":{"summary":"[Isolate Bash commands](https://code.claude.com/docs/en/sandboxing) from your filesystem and network on macOS, Linux, and WSL2","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox","about":"Isolate the Bash commands Claude runs from your filesystem and network with [sandboxing](https://code.claude.com/docs/en/sandboxing). Turn the sandbox on with `enabled`, then narrow or widen what sandboxed commands can touch with the `filesystem`, `network`, and `credentials` sub-objects. The sandbox runs on macOS, Linux, and WSL2.","type":"object with `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations`, and `ripgrep`, plus the `filesystem`, `network`, and `credentials` objects","default":"unset, so Claude Code runs commands without a sandbox"},"sandbox.allowAppleEvents":{"summary":"Let [sandboxed](https://code.claude.com/docs/en/sandboxing) commands send Apple Events on macOS","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-allowappleevents","about":"Let sandboxed commands on macOS send Apple Events, which `open`, `osascript`, and tools that open URLs in a browser need; without it they fail with error `-600`. This removes code-execution isolation: sandboxed commands can launch other applications unsandboxed with no user prompt, and can send AppleScript commands to running applications such as Terminal, subject to the per-app macOS automation-consent prompt (TCC).","type":"Boolean\\n* `true`: sandboxed commands on macOS can send Apple Events\\n* `false`: sandboxed commands on macOS can\'t send Apple Events, so `open` and `osascript` fail with error `-600`","default":"`false`"},"sandbox.allowUnsandboxedCommands":{"summary":"Let Claude retry a blocked command outside the [sandbox](https://code.claude.com/docs/en/sandboxing#the-unsandboxed-retry-escape-hatch), or forbid it","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-allowunsandboxedcommands","about":"Let Claude retry a command outside the sandbox with the `dangerouslyDisableSandbox` parameter after the sandbox blocks it. When it\'s `false`, Claude Code ignores that parameter. While the sandbox is running, commands Claude runs are then sandboxed unless they match an [`excludedCommands`](https://code.claude.com/docs/en/settings-reference#sandbox-excludedcommands) entry. The `/sandbox` **Overrides** tab shows that state as **Strict sandbox mode**. A `false` in managed settings turns on strict sandbox mode for the developers it covers.","type":"Boolean\\n* `true`: Claude can retry a command outside the sandbox with the `dangerouslyDisableSandbox` parameter after the sandbox blocks it\\n* `false`: Claude Code ignores that parameter, so while the sandbox is running, commands Claude runs are sandboxed unless they match an `excludedCommands` entry","default":"`true`"},"sandbox.autoAllowBashIfSandboxed":{"summary":"Run [sandboxed](https://code.claude.com/docs/en/sandboxing#auto-allow-mode) commands without a permission prompt","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-autoallowbashifsandboxed","about":"Let Claude Code run sandboxed Bash commands without a permission prompt. Commands that can\'t run in the sandbox still go through the regular permission flow, and `deny` rules and content-scoped `ask` rules such as `Bash(git push *)` still apply; a bare `Bash` ask rule is skipped for sandboxed commands. Set it to `false` to send sandboxed commands through the regular permission flow too, which the `/sandbox` **Mode** tab calls regular permissions mode.","type":"Boolean\\n* `true`: Claude Code runs sandboxed Bash commands without a permission prompt, subject to `deny` rules and content-scoped `ask` rules; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` turns auto-allow off\\n* `false`: sandboxed commands go through the regular permission flow, so your allow rules and permission mode decide. The `/sandbox` **Mode** tab calls this regular permissions mode","default":"`true`"},"sandbox.bwrapPath":{"summary":"Point the [sandbox](https://code.claude.com/docs/en/sandboxing) at a bubblewrap binary outside `PATH`","category":"Sandbox settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-bwrappath","about":"Point the sandbox at a bubblewrap binary installed outside `PATH`, such as a vendored copy on an air-gapped host. Claude Code uses the path both for the startup dependency check and when it wraps each sandboxed command.","type":"string, an absolute path; Claude Code drops a relative path and falls back to `PATH` lookup","default":"unset, so Claude Code finds `bwrap` on `PATH`"},"sandbox.credentials":{"summary":"Hide or mask credential files and variables inside the [sandbox](https://code.claude.com/docs/en/sandboxing#protect-credentials)","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-credentials","about":"Declare the credential files and environment variables to [protect from sandboxed commands](https://code.claude.com/docs/en/sandboxing#protect-credentials). Each entry names a file `path` or a variable `name` and a `mode`: `deny` hides the credential inside the sandbox, and `mask` shows sandboxed commands a placeholder while the [sandbox proxy](https://code.claude.com/docs/en/sandboxing#mask-credentials) substitutes the real value on outbound requests. Claude Code protects only the entries you list; there is no built-in credential deny list.","type":"object with `files`, `envVars`, `allowPlaintextInject`, `awsPairs`, and `sigv4`","default":"unset, so no credentials are protected"},"sandbox.credentials.allowPlaintextInject":{"summary":"Let [masked credentials](https://code.claude.com/docs/en/sandboxing#mask-credentials) reach plain HTTP services on trusted test networks","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-credentials-allowplaintextinject","about":"Allow `mask` substitution on plain HTTP requests as well as TLS-terminated HTTPS. On plain HTTP the upstream identity is unverified and the credential travels in cleartext, so leave this off outside trusted test networks.","type":"Boolean\\n* `true`: Claude Code allows `mask` substitution on plain HTTP requests as well as TLS-terminated HTTPS\\n* `false`: Claude Code allows `mask` substitution only on TLS-terminated HTTPS","default":"`false`"},"sandbox.credentials.awsPairs":{"summary":"Link custom-named AWS key variables into one credential for [re-signing](https://code.claude.com/docs/en/sandboxing#re-sign-aws-requests)","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-credentials-awspairs","about":"Group masked environment variables that form one AWS credential for [SigV4 re-signing](https://code.claude.com/docs/en/sandboxing#re-sign-aws-requests) when your credential lives in variables with non-standard names. Claude Code links the conventional `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and `AWS_SESSION_TOKEN` trio automatically when you mask their whole values, so you need this key only for other names. Requires Claude Code v2.1.224 or later.","type":"array of objects, each with `accessKeyIdVar`, `secretAccessKeyVar`, and optionally `sessionTokenVar`, naming `sandbox.credentials.envVars` entries","default":"unset, so only the conventional trio is paired"},"sandbox.credentials.envVars":{"summary":"Unset or mask an environment variable inside the [sandbox](https://code.claude.com/docs/en/sandboxing#mask-environment-variables)","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-credentials-envvars","about":"Protect environment variables from sandboxed commands. With `\\"mode\\": \\"deny\\"`, Claude Code removes the variable from the environment of sandboxed commands. With `\\"mode\\": \\"mask\\"`, sandboxed commands see a per-session sentinel value, and the sandbox proxy substitutes the real value on outbound requests to that entry\'s `injectHosts`, so tools such as `gh` and `npm` keep authenticating without ever holding the real credential.","type":"array of objects, each with `name` and a `mode` of `\\"deny\\"` or `\\"mask\\"`, plus the optional [mask fields for environment variables](https://code.claude.com/docs/en/settings-reference#mask-fields-for-environment-variables)","default":"unset, so no environment variables are protected"},"sandbox.credentials.files":{"summary":"Block or mask reads of a credential file inside the [sandbox](https://code.claude.com/docs/en/sandboxing#mask-credential-files)","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-credentials-files","about":"Protect credential files or directories from sandboxed commands. With `\\"mode\\": \\"deny\\"`, Claude Code blocks reads of the path inside the sandbox, the same read block as [`sandbox.filesystem.denyRead`](https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-denyread). With `\\"mode\\": \\"mask\\"`, sandboxed commands on Linux and WSL2 read a sentinel copy of the file, and the sandbox proxy substitutes the real value on outbound requests to that entry\'s `injectHosts`; on macOS the file is unreadable inside the sandbox instead. `\\"mode\\": \\"mask\\"` requires Claude Code v2.1.221 or later.","type":"array of objects, each with `path` and a `mode` of `\\"deny\\"` or `\\"mask\\"`, plus the optional [mask fields for files](https://code.claude.com/docs/en/settings-reference#mask-fields-for-files)","default":"unset, so no credential files are protected"},"sandbox.credentials.sigv4":{"summary":"Choose whether streaming, presigned, or [SigV4A AWS requests](https://code.claude.com/docs/en/sandboxing#re-sign-aws-requests) fail or pass through","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-credentials-sigv4","about":"Choose what the sandbox proxy does with AWS request forms it [can\'t re-sign](https://code.claude.com/docs/en/sandboxing#re-sign-aws-requests): `streaming` for aws-chunked streaming uploads, `presigned` for presigned URLs, and `sigv4a` for SigV4A asymmetric signatures. This applies only to requests signed with a masked pair\'s placeholder access key ID. Requires Claude Code v2.1.224 or later.","type":"object with `streaming`, `presigned`, and `sigv4a`, each one of:\\n* `\\"deny\\"`: the proxy fails the request\\n* `\\"passthrough\\"`: the proxy forwards the request signed with the masked placeholder, so the tool receives AWS\'s own rejection","default":"unset, so every form is `\\"deny\\"`"},"sandbox.enabled":{"summary":"Turn on [Bash sandboxing](https://code.claude.com/docs/en/sandboxing#get-started) on macOS, Linux, and WSL2","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-enabled","about":"Turn on [sandboxing](https://code.claude.com/docs/en/sandboxing) for Bash commands. When you pick a mode in the `/sandbox` panel, Claude Code writes this key to `.claude/settings.local.json` for the current project; set it in `~/.claude/settings.json` to sandbox every project.","type":"Boolean\\n* `true`: Claude Code sandboxes Bash commands\\n* `false`: Bash commands run unsandboxed","default":"`false`"},"sandbox.enableWeakerNestedSandbox":{"summary":"Run the Linux [sandbox](https://code.claude.com/docs/en/sandboxing) inside an unprivileged container","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-enableweakernestedsandbox","about":"Run the Linux sandbox inside an unprivileged Docker container, where bubblewrap can\'t mount a fresh `/proc`. Instead the inner sandbox bind-mounts the container\'s existing `/proc`, which exposes process information that a fresh mount would hide. This reduces security; use it only when the outer container already provides the isolation you need.","type":"Boolean\\n* `true`: the inner sandbox bind-mounts the container\'s existing `/proc` instead of mounting a fresh one\\n* `false`: the sandbox mounts a fresh `/proc`, which doesn\'t work in an unprivileged Docker container","default":"`false`"},"sandbox.enableWeakerNetworkIsolation":{"summary":"Let `gh`, `gcloud`, and `terraform` verify TLS behind a MITM proxy inside the [sandbox](https://code.claude.com/docs/en/sandboxing#go-based-clis-fail-tls-verification-on-macos) on macOS","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-enableweakernetworkisolation","about":"Let sandboxed commands on macOS reach the system TLS trust service, `com.apple.trustd.agent`. Go-based tools such as `gh`, `gcloud`, and `terraform` need it to verify TLS certificates when you use [`network.httpProxyPort`](https://code.claude.com/docs/en/settings-reference#sandbox-network-httpproxyport) with a MITM proxy and a custom CA. This reduces security by opening a potential data exfiltration path through the trust service.","type":"Boolean\\n* `true`: sandboxed commands on macOS can reach `com.apple.trustd.agent`\\n* `false`: sandboxed commands on macOS can\'t reach the system TLS trust service","default":"`false`"},"sandbox.excludedCommands":{"summary":"Name commands Claude Code can run outside the [sandbox](https://code.claude.com/docs/en/sandboxing)","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-excludedcommands","about":"Name commands that Claude Code runs outside the sandbox, such as tools that don\'t work under it. Each entry uses the same syntax as the content of a `Bash(...)` [permission rule](https://code.claude.com/docs/en/permissions#permission-rule-syntax): an exact command, a prefix such as `docker *`, or a wildcard pattern. A pattern with no wildcard is an exact match, so `docker` matches only `docker` with no arguments.\\n\\nYour entries take a Bash call out of the sandbox only when they cover every command in it, and some call shapes stay sandboxed even then. A `docker *` entry alone doesn\'t take `npm ci && docker build .` out of the sandbox.","type":"array of command patterns","default":"unset, so no command is excluded"},"sandbox.failIfUnavailable":{"summary":"Refuse to start when the [sandbox](https://code.claude.com/docs/en/sandboxing) can\'t, instead of running unsandboxed","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-failifunavailable","about":"Make Claude Code exit with an error at startup when `sandbox.enabled` is `true` but the sandbox can\'t start, because a dependency is missing or the platform is unsupported. Without this key, Claude Code runs commands unsandboxed. Managed deployments that require sandboxing as a security gate can use this setting.\\n\\nOn a platform the sandbox doesn\'t support, Claude Code doesn\'t start with this key on. See [Enforce sandboxing with managed settings](https://code.claude.com/docs/en/sandboxing#enforce-sandboxing-with-managed-settings).","type":"Boolean\\n* `true`: Claude Code exits with an error at startup when `sandbox.enabled` is `true` but the sandbox can\'t start\\n* `false`: Claude Code runs commands unsandboxed when the sandbox can\'t start","default":"`false`"},"sandbox.filesystem":{"summary":"Control which paths [sandboxed](https://code.claude.com/docs/en/sandboxing#filesystem-isolation) commands can read and write","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem","about":"Control which paths sandboxed commands can read and write. By default they can write to the working directory, the per-user temp directory, and directories you add with `--add-dir`, `/add-dir`, or `permissions.additionalDirectories`, and can read the rest of the filesystem, including credential files. Widen or narrow that with the four path lists, or switch the filesystem layer off with `disabled`. See [Filesystem isolation](https://code.claude.com/docs/en/sandboxing#filesystem-isolation) for the default boundaries.","type":"object with `allowWrite`, `denyWrite`, `denyRead`, and `allowRead` arrays, plus the `allowManagedReadPathsOnly` and `disabled` Booleans","default":"unset, so the default read and write boundaries apply"},"sandbox.filesystem.allowManagedReadPathsOnly":{"summary":"Stop developers from re-opening [read paths your organization blocked](https://code.claude.com/docs/en/sandboxing#keep-developers-from-widening-the-policy)","category":"Sandbox settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly","about":"Honor only the [`allowRead`](https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-allowread) entries that come from managed settings, so developers can\'t re-open read access to paths your organization blocked. Claude Code still merges `denyRead` entries from every settings scope the session loads.","type":"Boolean\\n* `true`: Claude Code honors only the `allowRead` entries from managed settings\\n* `false`: `allowRead` entries from other settings files can merge in","default":"`false`"},"sandbox.filesystem.allowRead":{"summary":"Re-open reading inside a region [`denyRead`](https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-denyread) blocks","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-allowread","about":"Re-open reading for specific paths inside a region that [`denyRead`](https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-denyread) blocks, to build workspace-only read access. An exact or wildcard `denyRead` entry stays blocked inside a broader `allowRead`, as the [overlap table](https://code.claude.com/docs/en/sandboxing#configure-sandboxing) shows. When a wildcard `denyRead` entry such as `~/**/.env` matches a directory, Claude Code blocks reads of its contents as well. Before v2.1.236 on macOS, Claude Code re-opened the paths a wildcard `denyRead` entry matched wherever a broader `allowRead` entry covered them, and left a matched directory\'s contents readable.","type":"array of path strings, using the [sandbox path prefixes](https://code.claude.com/docs/en/settings-reference#sandbox-path-prefixes)","default":"unset"},"sandbox.filesystem.allowWrite":{"summary":"Add paths [sandboxed](https://code.claude.com/docs/en/sandboxing) commands can write to","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-allowwrite","about":"Add paths where sandboxed commands can write, beyond the working directory, the per-user temp directory, and the directories you\'ve added with `--add-dir`, `/add-dir`, or `permissions.additionalDirectories`. Use it when a subprocess such as `kubectl` or a build tool needs to write outside the project.","type":"array of path strings, using the [sandbox path prefixes](https://code.claude.com/docs/en/settings-reference#sandbox-path-prefixes)","default":"unset, so sandboxed commands can write to the working directory, the per-user temp directory, directories you\'ve added with `--add-dir` or `/add-dir`, and directories in [`permissions.additionalDirectories`](https://code.claude.com/docs/en/settings-reference#permissions-additionaldirectories)"},"sandbox.filesystem.denyRead":{"summary":"Block [sandboxed](https://code.claude.com/docs/en/sandboxing) commands from reading specific paths","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-denyread","about":"Block sandboxed commands from reading specific paths, such as credential files that the default read policy would otherwise expose. To protect a credential file and keep it usable through the sandbox proxy, see [`sandbox.credentials`](https://code.claude.com/docs/en/settings-reference#sandbox-credentials) instead.","type":"array of path strings, using the [sandbox path prefixes](https://code.claude.com/docs/en/settings-reference#sandbox-path-prefixes)","default":"unset, so sandboxed commands keep the [default read access](https://code.claude.com/docs/en/sandboxing#filesystem-isolation), which includes credential files such as `~/.aws/credentials`"},"sandbox.filesystem.denyWrite":{"summary":"Block [sandboxed](https://code.claude.com/docs/en/sandboxing) commands from writing to specific paths","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-denywrite","about":"Block sandboxed commands from writing to specific paths, including paths inside a directory that is otherwise writable.","type":"array of path strings, using the [sandbox path prefixes](https://code.claude.com/docs/en/settings-reference#sandbox-path-prefixes)","default":"unset"},"sandbox.filesystem.disabled":{"summary":"[Turn off filesystem isolation](https://code.claude.com/docs/en/sandboxing#disable-filesystem-isolation) while keeping network isolation","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-filesystem-disabled","about":"Skip filesystem isolation while keeping network isolation. Sandboxed commands get unrestricted read and write access to the host filesystem, and their network egress stays confined to [`network.allowedDomains`](https://code.claude.com/docs/en/settings-reference#sandbox-network-alloweddomains). Use it when you sandbox to control where commands connect rather than what they write. Requires Claude Code v2.1.216 or later.","type":"Boolean\\n* `true`: Claude Code skips filesystem isolation and keeps network isolation\\n* `false`: filesystem isolation stays on","default":"`false`, so filesystem isolation stays on"},"sandbox.ignoreViolations":{"summary":"Silence violation reports for paths a command is expected to probe","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-ignoreviolations","about":"Silence sandbox violation reports for paths you expect a command to probe and be refused, such as a tool that checks `/etc/hosts` on startup, so those denials don\'t show up as violations or in what Claude sees. The sandbox still blocks the access; only the report is suppressed. Keys are substrings to match against the command, with `*` matching every command, and values are substrings of the violation to ignore for that command, such as a filesystem path.","type":"object mapping a command substring to an array of violation substrings, usually paths","default":"unset, so every violation is reported"},"sandbox.network":{"summary":"Control which hosts, ports, and sockets [sandboxed](https://code.claude.com/docs/en/sandboxing#network-isolation) commands reach","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network","about":"Control which hosts, ports, and sockets sandboxed commands can reach. The sandbox routes outbound traffic through a proxy that enforces these lists; see [Network isolation](https://code.claude.com/docs/en/sandboxing#network-isolation) for how the proxy decides and when it prompts.","type":"object with the sub-keys below","default":"unset, so no domains are pre-allowed and your permission mode decides [what happens to each new host](https://code.claude.com/docs/en/sandboxing#hosts-outside-your-allowed-domains)"},"sandbox.network.allowAllUnixSockets":{"summary":"Let [sandboxed](https://code.claude.com/docs/en/sandboxing) commands connect to every Unix socket","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-allowallunixsockets","about":"Let sandboxed commands connect to every Unix socket. On Linux and WSL2, the sandbox\'s [seccomp filter](https://code.claude.com/docs/en/sandboxing#set-up-linux-and-wsl2) blocks `socket(AF_UNIX, ...)` calls, so this is the only way to permit Unix sockets there. When the filter is missing, which `/sandbox` reports on its Dependencies tab, the sandbox doesn\'t block Unix-socket calls. See [Set up Linux and WSL2](https://code.claude.com/docs/en/sandboxing#set-up-linux-and-wsl2) for where the filter comes from.","type":"Boolean\\n* `true`: sandboxed commands can connect to every Unix socket\\n* `false`: the sandbox blocks Unix-socket connections: on macOS except the paths in `allowUnixSockets`, and on Linux and WSL2 through the seccomp filter when it\'s present","default":"`false`"},"sandbox.network.allowedDomains":{"summary":"Pre-allow domains so [sandboxed](https://code.claude.com/docs/en/sandboxing) commands don\'t prompt for them","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-alloweddomains","about":"Pre-allow domains for outbound traffic from sandboxed commands, so the sandbox doesn\'t prompt for them. Wildcards such as `*.example.com` match subdomains, and an optional `:port` suffix limits an entry to one port; an entry without a port matches every port.","type":"array of strings, each a domain, wildcard pattern, or IP literal, with an optional `:port` suffix","default":"unset, so your permission mode decides [what happens to each new host](https://code.claude.com/docs/en/sandboxing#hosts-outside-your-allowed-domains)"},"sandbox.network.allowLocalBinding":{"summary":"Let [sandboxed](https://code.claude.com/docs/en/sandboxing) commands listen on network ports and connect to localhost on macOS","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-allowlocalbinding","about":"Let sandboxed commands on macOS listen on network ports, for example to start a dev server, and connect to any port on localhost. A command that listens on a non-loopback address accepts connections from other machines. The key has no effect on Linux and WSL2, where each sandboxed command has its own loopback interface. To reach a server on the host from Linux or WSL2, see [A command fails to reach a server on localhost](https://code.claude.com/docs/en/sandboxing#a-command-fails-to-reach-a-server-on-localhost).","type":"Boolean\\n* `true`: sandboxed commands on macOS can listen on any local address and connect to any port on localhost\\n* `false`: sandboxed commands on macOS can\'t listen on a port or connect directly to servers on localhost","default":"`false`"},"sandbox.network.allowMachLookup":{"summary":"Let macOS [sandboxed](https://code.claude.com/docs/en/sandboxing) tools like the iOS Simulator or Playwright reach their XPC services","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-allowmachlookup","about":"List additional XPC and Mach service names the macOS sandbox may look up. Tools that communicate over XPC, such as the iOS Simulator or Playwright, need their services listed here.","type":"array of strings, each a service name; a single trailing `*` matches a prefix, and `\\"*\\"` alone matches every service","default":"unset"},"sandbox.network.allowManagedDomainsOnly":{"summary":"Lock the network allowlist to [managed settings](https://code.claude.com/docs/en/sandboxing#keep-developers-from-widening-the-policy)","category":"Sandbox settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-allowmanageddomainsonly","about":"Lock the network allowlist to what managed settings define. Claude Code then honors only `allowedDomains` and `WebFetch(domain:...)` allow rules from managed settings, ignores domains from user, project, local, and `--settings` settings, and blocks a non-allowed domain automatically instead of prompting.","type":"Boolean\\n* `true`: Claude Code honors only `allowedDomains` and `WebFetch(domain:...)` allow rules from managed settings and blocks a non-allowed domain instead of prompting\\n* `false`: domains from other settings files can merge into the allowlist","default":"`false`"},"sandbox.network.allowUnixSockets":{"summary":"List Unix socket paths [sandboxed](https://code.claude.com/docs/en/sandboxing) commands can use on macOS","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-allowunixsockets","about":"List the Unix socket paths sandboxed commands can connect to on macOS. Claude Code ignores this list on Linux and WSL2, where the seccomp filter can\'t inspect socket paths; use [`allowAllUnixSockets`](https://code.claude.com/docs/en/settings-reference#sandbox-network-allowallunixsockets) there instead.","type":"array of strings, each a socket path","default":"unset, so the macOS sandbox blocks every Unix socket"},"sandbox.network.deniedDomains":{"summary":"Block domains for [sandboxed](https://code.claude.com/docs/en/sandboxing) commands, even inside an allowed wildcard","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-denieddomains","about":"Block domains for outbound traffic from sandboxed commands, using the same wildcard, port, and IPv6 syntax as [`allowedDomains`](https://code.claude.com/docs/en/settings-reference#sandbox-network-alloweddomains). A denied domain stays blocked even when an `allowedDomains` entry matches it too.","type":"array of strings, each a domain, wildcard pattern, or IP literal, with an optional `:port` suffix","default":"unset"},"sandbox.network.httpProxyPort":{"summary":"Route [sandbox](https://code.claude.com/docs/en/sandboxing#custom-proxy-configuration) HTTP traffic through your own proxy","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-httpproxyport","about":"Point the sandbox at your own HTTP proxy instead of the one Claude Code runs. Organizations do this to inspect HTTPS traffic, apply their own filtering rules, or log requests. Your proxy takes over filtering, and Claude Code stops applying its domain lists and network prompts to traffic sent there. When unset, Claude Code starts its own proxy for HTTP traffic.","type":"number, a local TCP port","default":"unset, so Claude Code runs its own proxy"},"sandbox.network.socksProxyPort":{"summary":"Route [sandbox](https://code.claude.com/docs/en/sandboxing#custom-proxy-configuration) SOCKS traffic through your own proxy","category":"Sandbox settings","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-socksproxyport","about":"Point the sandbox at your own SOCKS5 proxy instead of the one Claude Code runs. Your proxy takes over filtering, and Claude Code stops applying its domain lists and network prompts to traffic sent there. When unset, Claude Code starts its own proxy for SOCKS traffic.","type":"number, a local TCP port","default":"unset, so Claude Code runs its own proxy"},"sandbox.network.strictAllowlist":{"summary":"Deny hosts outside the [allowlist](https://code.claude.com/docs/en/sandboxing#network-isolation) instead of prompting","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-strictallowlist","about":"Deny sandboxed commands access to hosts outside the allowlist instead of prompting for approval. The allowlist is [`allowedDomains`](https://code.claude.com/docs/en/settings-reference#sandbox-network-alloweddomains) plus domains from `WebFetch(domain:...)` allow rules, or only the managed settings entries when [`allowManagedDomainsOnly`](https://code.claude.com/docs/en/settings-reference#sandbox-network-allowmanageddomainsonly) is set. [Locks that apply without an admin-required sandbox](https://code.claude.com/docs/en/sandboxing#locks-that-apply-without-an-admin-required-sandbox) covers a repository\'s entries. Requires Claude Code v2.1.219 or later.","type":"Boolean\\n* `true`: Claude Code denies sandboxed commands access to hosts outside the allowlist\\n* `false`: unless another trusted settings file sets `true`, Claude Code decides a host outside the allowlist by permission mode instead of denying it outright: in auto mode it checks the host against the command\'s [per-command allowed domains](https://code.claude.com/docs/en/sandboxing#per-command-allowed-domains-in-auto-mode), in `dontAsk` mode it denies, in `bypassPermissions` mode and in interactive terminal plan-mode sessions where bypass is available it allows, and otherwise it asks you","default":"`false`"},"sandbox.network.tlsTerminate":{"summary":"Have the [sandbox](https://code.claude.com/docs/en/sandboxing#network-isolation) proxy terminate TLS so it can read HTTPS requests","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-network-tlsterminate","about":"Make the sandbox proxy terminate TLS so it can read the contents of HTTPS requests. This is experimental, and `mask` [credential substitution](https://code.claude.com/docs/en/sandboxing#mask-credentials) requires it. Set `{}` to generate an ephemeral certificate authority for the session, or set `caCertPath` and `caKeyPath` to use your own.","type":"object with optional `caCertPath` and `caKeyPath` strings, each a file path","default":"unset, so the proxy doesn\'t terminate or inspect TLS"},"sandbox.ripgrep":{"summary":"Use your own ripgrep binary inside the [sandbox](https://code.claude.com/docs/en/sandboxing)","category":"Sandbox settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-ripgrep","about":"Point the sandbox at a ripgrep binary of your own instead of the one Claude Code uses, for example when your platform needs a differently built `rg`.","type":"object with `command`, the path to the ripgrep binary, and optional `args`, an array of arguments to prepend","default":"unset, so the sandbox uses the same ripgrep binary as Claude Code. That is the bundled binary unless you set [`USE_BUILTIN_RIPGREP`](https://code.claude.com/docs/en/env-vars) to `0`"},"sandbox.socatPath":{"summary":"Point the [sandbox](https://code.claude.com/docs/en/sandboxing) proxy at a `socat` binary outside `PATH`","category":"Sandbox settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#sandbox-socatpath","about":"Point the sandbox network proxy at a `socat` binary installed outside `PATH`.","type":"string, an absolute path; Claude Code drops a relative path and falls back to `PATH` lookup","default":"unset, so Claude Code finds `socat` on `PATH`"},"showClearContextOnPlanAccept":{"summary":"Show a \\"clear context\\" option on the [plan accept screen](https://code.claude.com/docs/en/permission-modes#review-and-approve-a-plan)","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#showclearcontextonplanaccept","about":"When Claude finishes a plan in [plan mode](https://code.claude.com/docs/en/permission-modes#review-and-approve-a-plan), it shows an approval menu. Planning can use a lot of context, so this key adds a first option to that menu, **Yes, clear context and …**, that approves the plan, clears the conversation context, and starts implementing from the plan alone. The rest of the label names the permission mode the session continues in, and shows how much of your context the planning used.","type":"Boolean\\n* `true`: the plan approval menu gets a first option, **Yes, clear context and …**, that approves the plan and clears the conversation context\\n* `false`: the plan approval menu shows no clear-context option","default":"`false`"},"showThinkingSummaries":{"summary":"See summaries of Claude\'s [thinking](https://code.claude.com/docs/en/model-config#extended-thinking) instead of a collapsed stub","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#showthinkingsummaries","about":"See summaries of Claude\'s [extended thinking](https://code.claude.com/docs/en/model-config#extended-thinking) in interactive sessions. Set it if you want the full summaries when you expand thinking with `Ctrl+O`. When unset or `false`, the Anthropic API redacts thinking blocks and Claude Code shows a collapsed stub; third-party providers don\'t redact.","type":"Boolean\\n* `true`: you see full thinking summaries when you expand thinking with `Ctrl+O`\\n* `false`: the Anthropic API redacts thinking blocks and Claude Code shows a collapsed stub","default":"`false`"},"showTurnDuration":{"summary":"Hide the \\"Cooked for\\" duration after each response","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#showturnduration","about":"Show or hide the turn duration message after each response, such as \\"Cooked for 1m 6s · done 6:05 PM\\". The clock after \\"done\\" shows when the turn finished; [`timeFormat`](https://code.claude.com/docs/en/settings-reference#timeformat) and [`timeZone`](https://code.claude.com/docs/en/settings-reference#timezone) control its format and zone. Appears in `/config` as **Show turn duration**.","type":"Boolean\\n* `true`: you see the turn duration message after each response\\n* `false`: Claude Code hides the turn duration message","default":"`true`"},"skillListingBudgetFraction":{"summary":"Reserve more or less context for the [skill listing](https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short)","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#skilllistingbudgetfraction","about":"Each turn, Claude sees a [listing of your skills](https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short) with their descriptions, and Claude Code caps that listing at a share of the context window. When the listing is over the cap, Claude Code keeps every skill\'s name but drops the descriptions of the least-used skills, so Claude can still invoke those skills but is less likely to choose one on its own. Raise this key to keep more descriptions visible at the cost of more context per turn.","type":"number, a fraction greater than `0` and at most `1`","default":"`0.01`, which reserves 1% of the context window"},"skillListingMaxDescChars":{"summary":"Cap each skill\'s description length in the [skill listing](https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short)","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#skilllistingmaxdescchars","about":"Each turn, Claude sees a [listing of your skills](https://code.claude.com/docs/en/skills#skill-descriptions-are-cut-short) that shows each skill\'s `description` and `when_to_use` text. This key caps how many characters of that text Claude Code shows per skill; longer text is cut at the cap.","type":"number of characters, a positive integer","default":"`1536`"},"skillOverrides":{"summary":"[Hide or collapse a skill](https://code.claude.com/docs/en/skills#override-skill-visibility-from-settings) without editing its SKILL.md","category":"Plugins and skills","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#skilloverrides","about":"Hide or collapse a [skill](https://code.claude.com/docs/en/skills#override-skill-visibility-from-settings) without editing its `SKILL.md`. Claude Code applies the value under each skill\'s name to the skill list Claude sees and to your `/` autocomplete.","type":"object mapping skill name to one of:\\n* `\\"on\\"`: Claude sees the skill and you can type `/name`\\n* `\\"name-only\\"`: Claude sees the skill by name without its description\\n* `\\"user-invocable-only\\"`: Claude doesn\'t see the skill, but you can still type `/name`\\n* `\\"off\\"`: Claude doesn\'t see the skill and `/name` is hidden from autocomplete","default":"unset, so every skill is `\\"on\\"`"},"skipAutoPermissionPrompt":{"summary":"Skip the one-time notice Claude Code shows when you first enter [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) yourself rather than through the built-in default","category":"Permission settings","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#skipautopermissionprompt","about":"Skip the one-time notice describing [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) that Claude Code shows when you first enter auto mode yourself, for example through your own settings or the mode selector, rather than when the built-in default starts a session in it. Claude Code shows that notice once and then records that it was shown, so this key only matters where the notice hasn\'t appeared yet.","type":"Boolean\\n* `true`: Claude Code skips the notice\\n* `false`: the same as unset; the notice appears once unless another of these files sets `true`","default":"unset, so the notice appears once"},"skipDangerousModePermissionPrompt":{"summary":"Skip the confirmation dialog before [bypassPermissions mode](https://code.claude.com/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode)","category":"Permission settings","scopes":["managed","user","local"],"docs":"https://code.claude.com/docs/en/settings-reference#skipdangerousmodepermissionprompt","about":"Skip the confirmation dialog Claude Code shows before a session enters `bypassPermissions` mode, whether from `--dangerously-skip-permissions` or from `defaultMode: \\"bypassPermissions\\"`. Claude Code writes `true` here in your user settings when you accept that dialog once.","type":"Boolean\\n* `true`: Claude Code skips the confirmation dialog before a session enters `bypassPermissions` mode\\n* `false`: the same as unset; the dialog appears unless another of these files sets `true`","default":"unset, so the dialog appears"},"skipWebFetchPreflight":{"summary":"Skip the [WebFetch hostname check](https://code.claude.com/docs/en/tools-reference#webfetch-tool-behavior) when Anthropic is unreachable","category":"Privacy and telemetry","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#skipwebfetchpreflight","about":"Skip the [WebFetch domain safety check](https://code.claude.com/docs/en/data-usage#webfetch-domain-safety-check), which sends each requested hostname to `api.anthropic.com` before fetching. Set `true` in environments that block traffic to Anthropic, such as Amazon Bedrock, Google Cloud\'s Agent Platform, or Microsoft Foundry deployments with restrictive egress.","type":"Boolean\\n* `true`: Claude Code skips the WebFetch domain safety check\\n* `false`: the check runs before the first fetch to each hostname in a session, and again for a hostname whose earlier check was blocked or failed","default":"unset, so the check runs before the first fetch to each hostname in a session"},"spellcheck":{"summary":"Underline misspelled words in the prompt input with a [spell checker](https://code.claude.com/docs/en/interactive-mode#check-spelling-as-you-type) you install","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#spellcheck","about":"Underline misspelled words in the prompt input as you type, using a spell checker you install. Claude Code checks only the text in the input box. [Check spelling as you type](https://code.claude.com/docs/en/interactive-mode#check-spelling-as-you-type) covers installing aspell, hunspell, or ispell and what the checker covers. Requires Claude Code v2.1.235 or later.","type":"object with `enabled` (Boolean), `checker` (`\\"aspell\\"`, `\\"hunspell\\"`, `\\"ispell\\"`, or `\\"auto\\"`), `language` (string, passed to the checker as its dictionary name), and `color` (string, a terminal color name, `#rrggbb`, `rgb(r,g,b)`, `ansi256(n)`, or `ansi:<name>`)","default":"unset, so spell checking is off; `checker` defaults to `\\"auto\\"`, the first of the three found on `PATH`; `language` defaults to the checker\'s own dictionary; `color` defaults to the theme\'s error color"},"spinnerTipsEnabled":{"summary":"Hide tips in the spinner while Claude works","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#spinnertipsenabled","about":"While Claude works, the spinner line rotates through short tips about Claude Code features, such as \\"Use Plan Mode to prepare for a complex request before making changes. Press Shift+Tab twice to enable.\\" Set this key to `false` to hide them. Appears in `/config` as **Show tips**.","type":"Boolean\\n* `true`: you see tips in the spinner while Claude is working\\n* `false`: Claude Code hides spinner tips","default":"`true`"},"spinnerTipsOverride":{"summary":"Add your own tips to the spinner rotation, or replace the built-in tips","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#spinnertipsoverride","about":"Add your own tips to the [spinner tips](https://code.claude.com/docs/en/settings-reference#spinnertipsenabled) that Claude Code shows while Claude works, or replace the built-in tips with yours. Claude Code puts your tips in the same rotation as the built-in ones.\\n\\nIf you set [`spinnerTipsEnabled`](https://code.claude.com/docs/en/settings-reference#spinnertipsenabled) to `false`, Claude Code hides all tips, yours included.","type":"object with `tips`, `tipsFile`, `label`, and `excludeDefault` fields, each optional","default":"unset, so Claude Code shows only the built-in tips"},"spinnerVerbs":{"summary":"Add or replace the verbs shown while a turn runs","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#spinnerverbs","about":"While a turn is in progress, the spinner shows a rotating verb such as \\"Accomplishing\\", \\"Architecting\\", or \\"Baking\\". Use this key to add your own verbs to that rotation or replace the built-in list with yours.","type":"object with a `verbs` array of strings and `mode`, one of:\\n* `\\"append\\"`: Claude Code adds your verbs to the built-in set\\n* `\\"replace\\"`: Claude Code shows only your verbs","default":"unset, so Claude Code uses the built-in verbs"},"sshConfigs":{"summary":"Add [SSH connections](https://code.claude.com/docs/en/desktop#pre-configure-ssh-connections-for-your-team) to the Desktop environment dropdown","category":"Remote, desktop, and notifications","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#sshconfigs","about":"Add SSH connections to the [Desktop](https://code.claude.com/docs/en/desktop#pre-configure-ssh-connections-for-your-team) environment dropdown. Administrators use it to distribute shared connections to a team. Connections you define in managed settings show as managed. Users can select them and [set their own **Worktree folder**](https://code.claude.com/docs/en/desktop#choose-where-ssh-session-worktrees-go) for them, but can\'t edit anything else or delete them in the app.","type":"array of objects, each with required `id`, `name`, and `sshHost` and optional `sshPort` and `sshIdentityFile`","default":"unset"},"sshHostAllowlist":{"summary":"Limit which hosts [Desktop SSH sessions](https://code.claude.com/docs/en/desktop#restrict-which-ssh-hosts-users-can-connect-to) can reach","category":"Remote, desktop, and notifications","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#sshhostallowlist","about":"Limit the hosts a [Desktop SSH session](https://code.claude.com/docs/en/desktop#restrict-which-ssh-hosts-users-can-connect-to) can connect to. Only the Desktop app reads this key; the CLI doesn\'t. Patterns are case-insensitive: `*` matches any host, `*.example.com` matches `example.com` and every subdomain, and anything else is an exact match against the hostname after `~/.ssh/config` resolution. An empty array turns SSH sessions off.","type":"array of hostname patterns","default":"unset, so any host is allowed"},"statusLine":{"summary":"Run your own command to render a [status line](https://code.claude.com/docs/en/statusline) below the prompt","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#statusline","about":"Run your own command to render a [status line](https://code.claude.com/docs/en/statusline) below the prompt with context such as the model, cost, or git branch. Optional fields adjust spacing, add periodic re-runs, and hide the built-in vim mode indicator when your script renders `vim.mode` itself.","type":"object with `type` set to `\\"command\\"` and a `command` string, plus optional `padding` as a number of characters, `refreshInterval` as a number of seconds, minimum `1`, and `hideVimModeIndicator` as a Boolean","default":"unset, so no status line"},"strictKnownMarketplaces":{"summary":"Allowlist the [marketplace](https://code.claude.com/docs/en/plugins/overview) sources users can add and install from","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#strictknownmarketplaces","about":"Restrict which plugin marketplace sources people in your organization can add and install plugins from. Claude Code enforces the allowlist on marketplace add and on plugin install, update, refresh, and auto-update, before any network or filesystem operation, so a marketplace someone added before you set the policy can\'t be used to fetch plugins once its source no longer matches. Blocked users see an error naming the managed policy.\\n\\nIf you set this key in the [claude.ai admin console](https://code.claude.com/docs/en/server-managed-settings), claude.ai also applies it when anyone in your organization adds a marketplace from a git repository on claude.ai, as [How restrictions work](https://code.claude.com/docs/en/plugins/org#restrict-what-users-can-install) describes.","type":"array of marketplace source objects; see [Allowed source types](https://code.claude.com/docs/en/settings-reference#allowed-source-types)","default":"unset, so users can add any marketplace. An empty array is a complete lockdown that blocks every marketplace source, including the official Anthropic marketplace"},"strictPluginOnlyCustomization":{"summary":"Block [skills](https://code.claude.com/docs/en/skills), [agents](https://code.claude.com/docs/en/sub-agents), [hooks](https://code.claude.com/docs/en/hooks), and [MCP servers](https://code.claude.com/docs/en/mcp) from user and project sources","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization","about":"Block skills, agents, hooks, and MCP servers from user and project sources, so they can come only from plugins or managed settings. Combine it with [`strictKnownMarketplaces`](https://code.claude.com/docs/en/settings-reference#strictknownmarketplaces) to control the full customization supply chain: the marketplace allowlist controls which plugins users can install.","type":"`true` to lock all four kinds of customization, or an array naming the kinds to lock, from `\\"skills\\"`, `\\"agents\\"`, `\\"hooks\\"`, and `\\"mcp\\"`","default":"unset, so nothing is locked"},"strictPluginOnlyCustomization.agents":{"summary":"Lock [agents](https://code.claude.com/docs/en/sub-agents) to plugin and managed sources","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization-agents","about":"Lock the `agents` surface. Claude Code stops loading agents from `~/.claude/agents/`, `.claude/agents/`, and `--add-dir` directories. It keeps loading plugin agents, built-in agents, and agents in the managed policy directory.","type":"the string `\\"agents\\"` in the [`strictPluginOnlyCustomization`](https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization) array","default":"not locked"},"strictPluginOnlyCustomization.hooks":{"summary":"Lock [hooks](https://code.claude.com/docs/en/hooks) to plugin and managed sources","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization-hooks","about":"Lock the `hooks` surface. Claude Code stops running hooks from user, project, and local `settings.json`, and keeps running plugin hooks and hooks in managed settings.","type":"the string `\\"hooks\\"` in the [`strictPluginOnlyCustomization`](https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization) array","default":"not locked"},"strictPluginOnlyCustomization.mcp":{"summary":"Lock [MCP servers](https://code.claude.com/docs/en/mcp) to plugin and managed sources","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization-mcp","about":"Lock the `mcp` surface. Claude Code stops loading MCP servers from `~/.claude.json` and `.mcp.json`, and keeps loading plugin MCP servers, [`managed-mcp.json`](https://code.claude.com/docs/en/managed-mcp) servers, and servers from [`managedMcpServers`](https://code.claude.com/docs/en/settings-reference#managedmcpservers).","type":"the string `\\"mcp\\"` in the [`strictPluginOnlyCustomization`](https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization) array","default":"not locked"},"strictPluginOnlyCustomization.skills":{"summary":"Lock [skills](https://code.claude.com/docs/en/skills) to plugin and managed sources","category":"Plugins and skills","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization-skills","about":"Lock the `skills` surface. Claude Code stops loading skills from `~/.claude/skills/` and `.claude/skills/`, custom commands from `~/.claude/commands/` and `.claude/commands/`, skills and commands under `--add-dir` directories, and skills synced from your claude.ai account. It keeps loading plugin skills, bundled skills, and skills in the managed policy directory.","type":"the string `\\"skills\\"` in the [`strictPluginOnlyCustomization`](https://code.claude.com/docs/en/settings-reference#strictpluginonlycustomization) array","default":"not locked"},"subagentPromptCacheTtl":{"summary":"Choose the [prompt cache lifetime](https://code.claude.com/docs/en/prompt-caching#cache-lifetime) for subagents and other requests outside the main conversation","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#subagentpromptcachettl","about":"Choose how long the [prompt cache](https://code.claude.com/docs/en/prompt-caching) holds the requests Claude Code makes outside the main conversation. This key applies to [subagents](https://code.claude.com/docs/en/sub-agents), [workflows](https://code.claude.com/docs/en/workflows), and Claude Code\'s own background and helper requests, such as compaction and session titles. The one-hour lifetime keeps the cache warm across longer breaks, and the API [bills each cache write at a higher rate](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing) than at the five-minute lifetime. Requires Claude Code v2.1.242 or later.","type":"string, one of:\\n* `\\"5m\\"`: the cache holds for five minutes\\n* `\\"1h\\"`: the cache holds for an hour","default":"unset, so each of these requests gets [its default lifetime](https://code.claude.com/docs/en/prompt-caching#which-ttl-each-request-gets)"},"subagentStatusLine":{"summary":"Rewrite rows in the [subagent](https://code.claude.com/docs/en/sub-agents) task display with your own command","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#subagentstatusline","about":"When Claude runs [subagents](https://code.claude.com/docs/en/sub-agents), Claude Code lists them in a task display below the prompt, one row per subagent showing `name · description · token count`. This key lets you run your own command to rewrite those rows, for example to show each subagent\'s context usage as a percentage. On each refresh, Claude Code sends the visible rows as one JSON object on stdin, with a `tasks` array carrying each subagent\'s `id`, `name`, `status`, `model`, `tokenCount`, and more, and replaces the row for each `id` you write back as a `{\\"id\\", \\"content\\"}` line. Rows you don\'t write back keep the default rendering.","type":"object with `type` set to `\\"command\\"` and a `command` string","default":"unset, so Claude Code renders the default rows"},"switchModelsOnFlag":{"summary":"Switch models automatically or pause when a [safety classifier](https://code.claude.com/docs/en/model-config#ask-before-switching) flags a request","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#switchmodelsonflag","about":"Choose what happens when a [safety classifier flags a request](https://code.claude.com/docs/en/model-config#automatic-model-fallback): switch to the fallback model and continue, or pause so you can choose between switching and editing the prompt.","type":"Boolean\\n* `true`: Claude Code switches to the fallback model and continues\\n* `false`: in an interactive session Claude Code pauses so you can choose between switching and editing the prompt; where no dialog can show, such as a `-p` run, the flagged request ends as an error","default":"unset. Claude Code switches automatically, though it may [ask first](https://code.claude.com/docs/en/model-config#ask-before-switching) in an interactive session"},"syncClaudeAiPlugins":{"summary":"Stop loading the [plugins enabled on your claude.ai account](https://code.claude.com/docs/en/plugins/loading#synced-plugins) and stop downloading new ones","category":"Plugins and skills","scopes":["managed","user","local"],"docs":"https://code.claude.com/docs/en/settings-reference#syncclaudeaiplugins","about":"Turn off the download of the [plugins enabled for your claude.ai account](https://code.claude.com/docs/en/plugins/loading#synced-plugins). Claude Code downloads them into `~/.claude/plugins/synced/` at the start of terminal sessions where you sign in with your claude.ai account and in Cowork sessions, and loads each one as `<name>@synced`. Set `false` to stop that download and stop loading the plugins it already synced. Claude Code honors only `false`: `true` is the same as unset and doesn\'t turn syncing on where it\'s otherwise off. Requires Claude Code v2.1.273 or later.","type":"Boolean\\n* `false`: Claude Code stops downloading synced plugins and stops loading the ones already in `~/.claude/plugins/synced/`. In user or managed settings, it also moves them to `~/.claude/plugins/.trash/`\\n* `true`: the same as unset","default":"unset, so sessions signed in with your claude.ai account sync your plugins"},"syncClaudeAiSkills":{"summary":"Stop loading the [skills enabled on your claude.ai account](https://code.claude.com/docs/en/skills#how-synced-skills-behave) and stop downloading new ones","category":"Plugins and skills","scopes":["managed","user","local"],"docs":"https://code.claude.com/docs/en/settings-reference#syncclaudeaiskills","about":"Turn off the download of the [skills enabled for your claude.ai account](https://code.claude.com/docs/en/skills#how-synced-skills-behave). Claude Code downloads them into `~/.claude/skills/synced/` in [terminal sessions where you sign in with your claude.ai account](https://code.claude.com/docs/en/skills#where-synced-skills-load), interactive or non-interactive, and in Cowork and cloud sessions. Set `false` to stop that download and stop loading the skills it already synced. Claude Code honors only `false`: `true` is the same as unset and doesn\'t turn syncing on where it\'s otherwise off.","type":"Boolean\\n* `false`: Claude Code stops downloading synced skills and stops loading the ones already in `~/.claude/skills/synced/`. In user or managed settings, it also moves them to `~/.claude/skills/.trash/`\\n* `true`: the same as unset","default":"unset, so sessions signed in with your claude.ai account sync your skills"},"syntaxHighlightingDisabled":{"summary":"Turn off syntax highlighting in diffs and code blocks","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#syntaxhighlightingdisabled","about":"Claude Code colors code by language in the diffs, code blocks, and file previews it shows in the terminal, with its built-in highlighter; no plugin or language server is involved. Set this key to `true` to show them as plain text instead, for example if the colors clash with your terminal theme or slow a screen reader.","type":"Boolean\\n* `true`: Claude Code turns off syntax highlighting in diffs, code blocks, and file previews\\n* `false`: Claude Code highlights syntax","default":"`false`"},"taskOutputMaxChars":{"summary":"Removed in v2.1.277, together with the `TaskOutput` tool it sized","category":"Memory and context","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#taskoutputmaxchars","about":"**Warning:** Removed in v2.1.277, together with the `TaskOutput` tool it sized. Setting it has no effect on current versions. Claude reads a background task\'s [output file](https://code.claude.com/docs/en/tools-reference#background-commands) with `Read` instead.\\n\\nThrough v2.1.276, you set this key to the number of characters of a [background task\'s](https://code.claude.com/docs/en/tools-reference#background-commands) output that Claude received inline when it read the task with the `TaskOutput` tool."},"teammateDefaultModel":{"summary":"Removed in v2.1.234; see [Specify teammates and models](https://code.claude.com/docs/en/agent-teams#specify-teammates-and-models) for how Claude Code picks a teammate\'s model","category":"Global config settings","scopes":[],"docs":"https://code.claude.com/docs/en/settings-reference#teammatedefaultmodel","about":"**Warning:** Removed in v2.1.234, together with its `/config` row **Default teammate model**. Setting it has no effect on current versions.\\n\\nThrough v2.1.233, you set this key to the model for [agent team](https://code.claude.com/docs/en/agent-teams#specify-teammates-and-models) teammates your prompt didn\'t name a model for: an alias such as `\\"sonnet\\"`, or `null` to follow the lead\'s model. For the model Claude Code picks for such teammates now, see [specify teammates and models](https://code.claude.com/docs/en/agent-teams#specify-teammates-and-models).","type":"string, a model alias or full model ID, or `null`","default":"unset"},"teammateMode":{"summary":"Choose how [agent team teammates display](https://code.claude.com/docs/en/agent-teams#choose-a-display-mode)","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#teammatemode","about":"Choose where Claude Code shows [agent team](https://code.claude.com/docs/en/agent-teams) teammates: inside your main terminal pane, or in split panes when your terminal supports them. See [Choose a display mode](https://code.claude.com/docs/en/agent-teams#choose-a-display-mode).","type":"string, one of:\\n* `\\"in-process\\"`: teammates run inside your main terminal pane\\n* `\\"auto\\"`: split panes when you\'re running inside tmux, or inside iTerm2 with `it2` on your `PATH` or tmux installed; in-process otherwise\\n* `\\"tmux\\"`: split panes using tmux or iTerm2, detected from your terminal\\n* `\\"iterm2\\"`: iTerm2 native split panes through the `it2` CLI","default":"`\\"in-process\\"`"},"terminalProgressBarEnabled":{"summary":"Hide the terminal progress bar in terminals that support it","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#terminalprogressbarenabled","about":"Some terminals can show a progress indicator on the tab or in the taskbar for the program running in them. While Claude is working, Claude Code reports an in-progress state to the terminal, so you can see from another tab or window whether the session is still busy. The indicator stays visible after the turn ends while [background subagents](https://code.claude.com/docs/en/sub-agents#run-subagents-in-foreground-or-background) or [dynamic workflows](https://code.claude.com/docs/en/workflows) are still running, and clears once the session is idle.\\n\\nClaude Code reports it only in terminals that support the indicator: ConEmu, Ghostty 1.2.0 or later, and iTerm2 3.6.6 or later. Set this key to `false` to stop Claude Code from reporting it. Appears in `/config` as **Terminal progress bar**.","type":"Boolean\\n* `true`: you see the terminal progress bar in terminals that support it\\n* `false`: Claude Code hides the terminal progress bar","default":"`true`"},"terminalTitleFromRename":{"summary":"Stop [`/rename`](https://code.claude.com/docs/en/sessions#name-your-sessions) and `--name` from changing the terminal tab title","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#terminaltitlefromrename","about":"Claude Code sets your terminal tab\'s title. By default it uses a title it generates from the conversation, and once you give the session a [name](https://code.claude.com/docs/en/sessions#name-your-sessions) with `/rename` or `--name`, the tab shows that name instead. Set this key to `false` to keep the generated title on the tab even after you name the session. The name itself still applies, so `/resume <name>` and the session picker find it.","type":"Boolean\\n* `true`: the terminal tab title shows the session name you set\\n* `false`: the tab keeps the title Claude Code generates from your conversation","default":"`true`"},"theme":{"summary":"Pick the interface [color theme](https://code.claude.com/docs/en/terminal-config#match-the-color-theme), built-in or custom","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#theme","about":"Pick the color theme for the interface. Appears in `/config` as **Theme**.","type":"string, one of:\\n* `\\"auto\\"`: matches your terminal\'s light or dark background\\n* `\\"dark\\"`: the dark theme\\n* `\\"light\\"`: the light theme\\n* `\\"dark-daltonized\\"`: the dark theme with colorblind-friendly colors\\n* `\\"light-daltonized\\"`: the light theme with colorblind-friendly colors\\n* `\\"dark-ansi\\"`: the dark theme using only your terminal\'s ANSI color palette\\n* `\\"light-ansi\\"`: the light theme using only your terminal\'s ANSI color palette\\n* `\\"custom:<slug>\\"` or `\\"custom:<plugin-name>:<slug>\\"`: a custom theme from `~/.claude/themes/` or a plugin","default":"`\\"dark\\"`"},"timeFormat":{"summary":"Show the times in the interface on a 12-hour or 24-hour clock, in UTC, or with a strftime pattern","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#timeformat","about":"Choose how Claude Code writes the times it shows in the interface, such as the `done 6:05 PM` at the end of each turn duration message and the timestamps in the [transcript viewer](https://code.claude.com/docs/en/interactive-mode#transcript-viewer). To pick a preset, run `/config` and set **Time format**. Requires Claude Code v2.1.257 or later.","type":"string, one of:\\n* `\\"auto\\"`: the same as unset; each time keeps its built-in format, which follows your locale on the turn duration message\\n* `\\"12-hour\\"`: a 12-hour clock\\n* `\\"24-hour\\"`: a 24-hour clock\\n* `\\"24-hour-utc\\"`: a 24-hour clock in UTC with `Z` after the minutes, such as `18:05Z`; Claude Code ignores [`timeZone`](https://code.claude.com/docs/en/settings-reference#timezone) for this preset\\n* A strftime pattern such as `\\"%H:%M\\"`: Claude Code writes each time with the pattern. Any value that contains a `%` is a pattern, and any other value outside the presets counts as `\\"auto\\"`","default":"`\\"auto\\"`"},"timeZone":{"summary":"Show the times in the interface in a time zone other than your system\'s","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#timezone","about":"Show the times in the interface in a time zone other than your system\'s. Set it to an [IANA time zone name](https://www.iana.org/time-zones), such as `\\"UTC\\"` or `\\"Europe/Dublin\\"`. The times that [`timeFormat`](https://code.claude.com/docs/en/settings-reference#timeformat) controls then show in this zone. If `timeFormat` is `\\"24-hour-utc\\"`, times stay in UTC and Claude Code ignores this key. `/config` has no row for this key, so set it in a settings file. Requires Claude Code v2.1.257 or later.","type":"string, an IANA time zone name. When Claude Code doesn\'t recognize the name, it uses your system time zone","default":"unset, so times show in your system time zone"},"tui":{"summary":"Choose the [fullscreen](https://code.claude.com/docs/en/fullscreen) or classic terminal renderer","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#tui","about":"Choose the terminal UI renderer. Use `\\"fullscreen\\"` for the flicker-free [alt-screen renderer](https://code.claude.com/docs/en/fullscreen) with virtualized scrollback, or `\\"default\\"` for the classic main-screen renderer. Running `/tui fullscreen` or `/tui default` writes this key for you.","type":"string, one of:\\n* `\\"default\\"`: the classic main-screen renderer\\n* `\\"fullscreen\\"`: the flicker-free alt-screen renderer with virtualized scrollback","default":"unset, so Claude Code [picks the renderer for you](https://code.claude.com/docs/en/fullscreen#fullscreen-by-default)"},"ultracode":{"summary":"Have Claude plan a [workflow](https://code.claude.com/docs/en/workflows#let-claude-decide-with-ultracode) for each substantive task without being asked","category":"Model and responses","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#ultracode","about":"Start sessions with [ultracode](https://code.claude.com/docs/en/workflows#let-claude-decide-with-ultracode) on. With it on, Claude plans a workflow for each substantive task instead of waiting for you to ask. Claude plans workflows only when [dynamic workflows](https://code.claude.com/docs/en/workflows) are enabled for you and your model supports `xhigh` effort. The key doesn\'t change the session\'s effort level: ultracode runs at whichever level the session uses. Claude Code reads this key but never writes it: `/effort ultracode` turns ultracode on for the current session only.","type":"Boolean\\n* `true`: sessions start with ultracode on when dynamic workflows are enabled for you and your model supports `xhigh`\\n* `false`: sessions start with ultracode off","default":"unset, so ultracode is off"},"useAutoModeDuringPlan":{"summary":"Let the [auto mode](https://code.claude.com/docs/en/permission-modes#eliminate-prompts-with-auto-mode) classifier review shell commands in [plan mode](https://code.claude.com/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode); set `false` to get prompts instead","category":"Permission settings","scopes":["managed","user","local"],"docs":"https://code.claude.com/docs/en/settings-reference#useautomodeduringplan","about":"Choose whether Claude Code uses the auto mode classifier to review shell commands in plan mode. With the default `true`, the classifier reviews each command during planning when auto mode is available and you see no prompt, except for [critical-path removals](https://code.claude.com/docs/en/permission-modes#critical-paths). Set `false` to get a permission prompt for every command outside the built-in read-only set. Appears in `/config` as **Use auto mode during plan**.","type":"Boolean\\n* `true`: the same as unset; when auto mode is available, the classifier reviews each shell command during planning instead of prompting you for it, except [critical-path removals](https://code.claude.com/docs/en/permission-modes#critical-paths). A `false` in any of these files still turns it off\\n* `false`: you get a permission prompt for every command outside the built-in read-only set","default":"`true`"},"verbose":{"summary":"Show [full tool output](https://code.claude.com/docs/en/cli-reference#cli-flags) instead of truncated summaries; `viewMode` takes precedence when both are set","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#verbose","about":"By default, the transcript collapses each tool call to a short summary, such as the command Claude ran and a line count of its output, and you press `Ctrl+O` to switch the whole transcript to the expanded view when you want the details. Set this key to `true` to show every tool call\'s full input and output inline as it happens, which is useful when you\'re debugging a hook, an MCP server, or a long shell command. Appears in `/config` as **Verbose output**.","type":"Boolean\\n* `true`: you see full tool output\\n* `false`: you see truncated summaries of tool output","default":"`false`"},"viewMode":{"summary":"Start every session in [default, verbose, or focus view](https://code.claude.com/docs/en/cli-reference#cli-flags)","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#viewmode","about":"Set the transcript view Claude Code starts in: `\\"default\\"`, `\\"verbose\\"`, or `\\"focus\\"`. When set, it overrides both the sticky `/focus` selection and the [`verbose`](https://code.claude.com/docs/en/settings-reference#verbose) setting.","type":"string, one of:\\n* `\\"default\\"`: the normal transcript with truncated tool output\\n* `\\"verbose\\"`: the transcript with full tool output\\n* `\\"focus\\"`: only your last prompt, a one-line summary of tool calls with edit diffstats, and the final response. Focus view needs the [fullscreen renderer](https://code.claude.com/docs/en/settings-reference#tui)","default":"unset, so the `verbose` setting and your last `/focus` choice apply"},"vimInsertModeRemaps":{"summary":"Map a two-key [INSERT-mode sequence](https://code.claude.com/docs/en/interactive-mode#remap-insert-mode-key-sequences) such as `jj` to Escape","category":"Interface and terminal","scopes":["managed","user"],"docs":"https://code.claude.com/docs/en/settings-reference#viminsertmoderemaps","about":"Map two-key INSERT-mode sequences to Escape in [vim editor mode](https://code.claude.com/docs/en/interactive-mode#vim-editor-mode). Each key is exactly two printable characters typed in sequence, and `\\"<Esc>\\"` is the only supported target; Claude Code ignores other entries. Requires Claude Code v2.1.208 or later.","type":"object mapping a two-character sequence to `\\"<Esc>\\"`","default":"unset"},"voice":{"summary":"Turn on [voice dictation](https://code.claude.com/docs/en/voice-dictation) and pick hold or tap mode","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#voice","about":"Turn on [voice dictation](https://code.claude.com/docs/en/voice-dictation) and choose how the dictation key behaves. Claude Code writes this object for you when you run `/voice`.","type":"object with `enabled` as a Boolean, `autoSubmit` as a Boolean that applies in hold mode only, and `mode`, one of:\\n* `\\"hold\\"`: you hold the dictation key while speaking and release it to stop\\n* `\\"tap\\"`: you tap the key once to start recording and again to send","default":"unset, so dictation is off; when `enabled` is `true` and `mode` is unset, Claude Code uses `\\"hold\\"`"},"voiceEnabled":{"summary":"Turn on [voice dictation](https://code.claude.com/docs/en/voice-dictation) with the older single-key form","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#voiceenabled","about":"**Warning:** Deprecated since v2.1.92, when the [`voice`](https://code.claude.com/docs/en/settings-reference#voice) object replaced it. Claude Code still reads it so older settings files keep working, but new configurations should set `voice.enabled`.\\n\\nTurn voice dictation on with the single Boolean form that predates the `voice` object. When both are set, `voice.enabled` applies.","type":"Boolean\\n* `true`: voice dictation is on when you\'re logged in with a claude.ai account and your organization\'s policy allows voice, unless `voice.enabled` is set\\n* `false`: voice dictation is off, unless `voice.enabled` is set","default":"unset"},"wheelScrollAccelerationEnabled":{"summary":"Turn off [mouse-wheel acceleration](https://code.claude.com/docs/en/fullscreen#mouse-wheel-scrolling) in fullscreen rendering","category":"Interface and terminal","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#wheelscrollaccelerationenabled","about":"Accelerate mouse-wheel scroll speed during fast scrolls in [fullscreen rendering](https://code.claude.com/docs/en/fullscreen#mouse-wheel-scrolling). Set it to `false` for a constant scroll rate per wheel notch.","type":"Boolean\\n* `true`: Claude Code accelerates mouse-wheel scroll speed during fast scrolls\\n* `false`: Claude Code scrolls at a constant rate per wheel notch","default":"`true`"},"workflowKeywordTriggerEnabled":{"summary":"Let the word `ultracode` in a prompt start a [workflow](https://code.claude.com/docs/en/workflows); set `false` to type it without starting one","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#workflowkeywordtriggerenabled","about":"Choose whether typing the keyword `ultracode` in a prompt triggers a [dynamic workflow](https://code.claude.com/docs/en/workflows#ask-for-a-workflow-in-your-prompt). Set it to `false` to type the word without triggering one.","type":"Boolean\\n* `true`: typing `ultracode` in a prompt triggers a dynamic workflow\\n* `false`: you can type the word without triggering one","default":"`true`"},"workflowSizeGuideline":{"summary":"Set the agent count Claude aims for in [dynamic workflows](https://code.claude.com/docs/en/workflows)","category":"Hooks and automation","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#workflowsizeguideline","about":"Set the [agent count Claude aims for](https://code.claude.com/docs/en/workflows#set-a-size-guideline) in the dynamic workflows it writes. Claude Code sends the value to Claude as advice, not an enforced cap: `\\"small\\"` asks for fewer than 5 agents, `\\"medium\\"` fewer than 10, and `\\"large\\"` fewer than 50. Choose `\\"small\\"` when you want to bound what a workflow spends. Requires Claude Code v2.1.219 or later.","type":"string, one of:\\n* `\\"unrestricted\\"`: no guideline, so Claude sizes the workflow to the task\\n* `\\"small\\"`: Claude aims for fewer than 5 agents\\n* `\\"medium\\"`: Claude aims for fewer than 10 agents\\n* `\\"large\\"`: Claude aims for fewer than 50 agents","default":"`\\"medium\\"`, or `\\"small\\"` when you\'re signed in on a Pro plan with Claude Code v2.1.271 or later"},"worktree":{"summary":"Configure how Claude Code creates git [worktrees](https://code.claude.com/docs/en/worktrees)","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#worktree","about":"Configure how Claude Code creates and manages [git worktrees](https://code.claude.com/docs/en/worktrees) for `--worktree`, the `EnterWorktree` tool, and isolated subagents and background sessions.","type":"object with `baseRef`, `symlinkDirectories`, `sparsePaths`, and `bgIsolation`","default":"unset"},"worktree.baseRef":{"summary":"Branch new [worktrees](https://code.claude.com/docs/en/worktrees) from the remote default branch or your local HEAD","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#worktree-baseref","about":"Choose which ref new worktrees branch from. `\\"fresh\\"` branches from `origin/<default-branch>` for a clean tree matching the remote; `\\"head\\"` branches from your current local `HEAD`, so unpushed commits and feature-branch state are present in the worktree.","type":"string, one of:\\n* `\\"fresh\\"`: new worktrees branch from `origin/<default-branch>`\\n* `\\"head\\"`: new worktrees branch from your current local `HEAD`, including unpushed commits","default":"`\\"fresh\\"`"},"worktree.bgIsolation":{"summary":"Let background sessions edit the working copy without a [worktree](https://code.claude.com/docs/en/worktrees)","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#worktree-bgisolation","about":"Choose how [background sessions](https://code.claude.com/docs/en/agent-view#how-file-edits-are-isolated) isolate their file edits. If you moved a session to the background with `←` or `/background`, that session edits files in place whatever this key says. With `\\"worktree\\"`, Claude Code blocks `Edit` and `Write` in the main checkout until the session calls `EnterWorktree`; with `\\"none\\"`, background jobs edit the working copy directly. Set `\\"none\\"` for a repository where git worktrees are impractical.","type":"string, one of:\\n* `\\"worktree\\"`: Claude Code blocks `Edit` and `Write` in the main checkout until the session calls `EnterWorktree`\\n* `\\"none\\"`: background jobs edit the working copy directly","default":"`\\"worktree\\"`"},"worktree.location":{"summary":"Choose where [Desktop SSH sessions](https://code.claude.com/docs/en/desktop#ssh-sessions) create their worktrees on a remote machine","category":"Agents, sessions, and worktrees","scopes":["user"],"docs":"https://code.claude.com/docs/en/settings-reference#worktree-location","about":"Choose the folder on a remote machine where [Desktop SSH sessions](https://code.claude.com/docs/en/desktop#choose-where-ssh-session-worktrees-go) create their worktrees, instead of `<project-root>/.claude/worktrees/`. Only the desktop app reads this key: `--worktree`, the `EnterWorktree` tool, isolated subagents, and background sessions ignore it. Requires Claude Desktop v1.44121.0 or later.","type":"string, an absolute path or one that starts with `~/`","default":"unset, so worktrees go inside the project"},"worktree.sparsePaths":{"summary":"Check out only the directories you need in each [worktree](https://code.claude.com/docs/en/worktrees)","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#worktree-sparsepaths","about":"Check out only the listed directories in each worktree through git sparse-checkout. Claude Code writes only those directories plus root-level files to disk, which is faster in large monorepos; see [Check out only the directories you need](https://code.claude.com/docs/en/large-codebases#check-out-only-the-directories-you-need).","type":"array of strings, directory paths relative to the repository root","default":"unset, so each worktree checks out the whole tree"},"worktree.symlinkDirectories":{"summary":"Symlink large directories into each [worktree](https://code.claude.com/docs/en/worktrees) instead of duplicating them","category":"Agents, sessions, and worktrees","scopes":["managed","user","project","local"],"docs":"https://code.claude.com/docs/en/settings-reference#worktree-symlinkdirectories","about":"Symlink directories from the main repository into each worktree so you don\'t duplicate large directories on disk.","type":"array of strings, directory paths relative to the repository root","default":"unset, so Claude Code symlinks no directories"},"wslInheritsWindowsSettings":{"summary":"Have WSL read [managed settings](https://code.claude.com/docs/en/managed-settings) from the Windows policy chain","category":"Enterprise and managed settings","scopes":["managed"],"docs":"https://code.claude.com/docs/en/settings-reference#wslinheritswindowssettings","about":"Have Claude Code on WSL read managed settings from the Windows policy chain, with HKLM and the Windows managed settings file taking priority over `/etc/claude-code` and HKCU below it. While the chain is on, Claude Code reads `/etc/claude-code` only when [no Windows admin document is present](https://code.claude.com/docs/en/managed-settings#present-admin-documents) in the HKLM registry value or the `C:\\\\Program Files\\\\ClaudeCode\\\\` folder. Set it to extend the policy you already deploy on Windows to WSL sessions on the same machine, so they follow the same rules as host sessions. Claude Code honors it only when set in the HKLM registry key or in a managed settings file or drop-in under `C:\\\\Program Files\\\\ClaudeCode\\\\`, both of which require Windows admin to write.","type":"Boolean\\n* `true`: Claude Code on WSL reads managed settings from the Windows policy chain, and reads `/etc/claude-code` only when no Windows admin document is present\\n* `false`: WSL reads only `/etc/claude-code`","default":"`false`, so WSL reads only `/etc/claude-code`"}}')}.keys).map(([e,t])=>({key:e,...t}));function We(e){let t=[...e.matchAll(/^\* `"([^"`<>]+)"`/gm)].map(e=>e[1]??``),n=(e.split(`
12
- `)[0]??``).split(/;| such as /)[0]??``,r=/one of|the string|^string, `"/.test(n)?[...n.matchAll(/`"([^"`<>]+)"`/g)].map(e=>e[1]??``):[];return[...new Set((t.length>0?t:r).filter(Boolean))]}function Ge(e){return We(Ue.find(t=>t.key===e)?.type??``)}var Ke=[...new Set(Ue.map(e=>e.category))];function qe(e,t){return e===`boolean`?t===!0:t===void 0?``:e===`lines`?Array.isArray(t)?t.join(`
13
- `):``:e===`json`?JSON.stringify(t,null,2):String(t)}function Je(e,t){if(typeof t==`boolean`)return{value:t};if(e===`number`){let e=Number(t);return t.trim()===``||Number.isNaN(e)?{error:`Enter a number.`}:{value:e}}if(e===`lines`)return{value:t.split(`
14
- `).map(e=>e.trim()).filter(Boolean)};if(e===`json`)try{return{value:JSON.parse(t)}}catch(e){return{error:`Not valid JSON: ${e instanceof Error?e.message:String(e)}`}}return e===`enum`&&t===``?{error:`Pick a value.`}:{value:t}}function Ye(e){return JSON.stringify(e??null).includes(`•••`)}function Xe({view:e,settingKey:t,defaultScope:n,onSaved:r}){let[i,a]=(0,v.useState)(t??``),[o,s]=(0,v.useState)(n),c=Ve(i),l=He(c),u=e.settings.find(e=>e.scope===o&&!e.legacy),d=u?.data?.[i],[f,p]=(0,v.useState)(()=>qe(l,d)),[m,h]=(0,v.useState)(null),[g,_]=(0,v.useState)(null),[y,b]=(0,v.useState)(!1),x=(0,v.useId)(),S=JSON.stringify(d);(0,v.useEffect)(()=>{p(qe(l,S===void 0?void 0:JSON.parse(S))),h(null),_(null)},[i,l,S]),(0,v.useEffect)(()=>h(null),[f,o,i]);let C=Ie(i);(0,v.useEffect)(()=>{let e=Pe.filter(e=>Ie(i).includes(e));s(t=>e.includes(t)||!e[0]?t:e[0])},[i]);let w=c!==void 0,E=Ye(d),D=async t=>{_(null);let n=t?{value:void 0}:Je(l,f);if(`error`in n)return _(n.error);b(!0);try{let r={dir:e.path,scope:o,key:i,...t?{}:{value:n.value}};h({preview:await T.previewSettings(r),edit:r,removing:t})}catch(e){_(e instanceof Error?e.message:String(e))}finally{b(!1)}};return(0,O.jsxs)(`section`,{className:`editor`,"aria-label":`Edit setting`,children:[t===null&&(0,O.jsx)(Qe,{value:i,onChange:a}),i!==``&&!w&&(0,O.jsxs)(`p`,{className:`flag bad`,children:[i,` is not in Claude Code's settings schema (`,ze,`).`]}),w&&(0,O.jsxs)(O.Fragment,{children:[c.description&&(0,O.jsx)(`p`,{className:`hint`,children:c.description}),(0,O.jsx)(`fieldset`,{className:`segmented`,"aria-label":`File to change`,children:Pe.map(e=>(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":o===e,disabled:!C.includes(e),title:C.includes(e)?void 0:`Claude Code ignores ${i} in this file`,onClick:()=>s(e),children:[(0,O.jsx)(N,{line:e,hollow:o!==e}),` `,xe(e)]},e))}),!C.includes(o)&&(0,O.jsxs)(`p`,{className:`flag warn`,children:[`Claude Code reads `,i,` only from `,C.join(` or `)||`~/.claude.json`,`; pick another file.`]}),(0,O.jsxs)(`p`,{className:`muted small mono wrap`,children:[u?k(u.path):``,u&&!u.exists?` (will be created)`:``]}),E?(0,O.jsx)(`p`,{className:`flag warn`,children:`This value holds hidden secrets; edit it in the file.`}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`label`,{className:`field`,htmlFor:x,children:[(0,O.jsx)(`span`,{children:`Value in this file`}),(0,O.jsx)(Ze,{id:x,kind:l,options:c.enum,draft:f,onChange:p})]}),l===`string`&&Ge(i).length>0&&(0,O.jsxs)(`fieldset`,{className:`suggestions`,"aria-label":`Values from the settings reference`,children:[(0,O.jsx)(`span`,{className:`muted small`,children:`Documented values`}),Ge(i).map(e=>(0,O.jsx)(`button`,{type:`button`,className:`mono`,"aria-pressed":f===e,onClick:()=>p(e),children:e},e))]}),l===`lines`&&(0,O.jsx)(`p`,{className:`muted small`,children:`One entry per line.`}),(0,O.jsxs)(`div`,{className:`editor-buttons`,children:[(0,O.jsx)(`button`,{type:`button`,className:`primary`,disabled:y||!C.includes(o),onClick:()=>D(!1),children:`Review change`}),d!==void 0&&(0,O.jsx)(`button`,{type:`button`,disabled:y,onClick:()=>D(!0),children:`Remove from this file`})]})]})]}),g&&(0,O.jsx)(`p`,{className:`flag bad`,role:`alert`,children:g}),m&&(0,O.jsx)($e,{preview:m.preview,busy:y,onSave:async()=>{if(!m)return;let{edit:e,preview:t,removing:n}=m;b(!0);try{let i=await T.saveSettings(e,t.revision),a=`${xe(e.scope)} settings`;r({change:i,message:n?`Removed ${e.key} from ${a}`:`Saved ${e.key} in ${a}`,select:`set:${e.key}`}),h(null)}catch(e){_(e instanceof Error?e.message:String(e))}finally{b(!1)}},onCancel:()=>h(null)})]})}function Ze({id:e,kind:t,options:n,draft:r,onChange:i}){return t===`boolean`?(0,O.jsxs)(`span`,{className:`check`,children:[(0,O.jsx)(`input`,{id:e,type:`checkbox`,checked:r===!0,onChange:e=>i(e.target.checked)}),r===!0?`on`:`off`]}):t===`enum`?(0,O.jsxs)(`select`,{id:e,value:String(r),onChange:e=>i(e.target.value),children:[(0,O.jsx)(`option`,{value:``,children:`Pick a value`}),(n??[]).map(e=>(0,O.jsx)(`option`,{value:String(e),children:String(e)},String(e)))]}):t===`lines`||t===`json`?(0,O.jsx)(`textarea`,{id:e,className:`mono`,rows:Math.min(14,Math.max(4,String(r).split(`
15
- `).length+1)),spellCheck:!1,value:String(r),onChange:e=>i(e.target.value)}):(0,O.jsx)(`input`,{id:e,className:`mono`,type:t===`number`?`number`:`text`,value:String(r),onChange:e=>i(e.target.value)})}function Qe({value:e,onChange:t}){let[n,r]=(0,v.useState)(e),[i,a]=(0,v.useState)(0),[o,s]=(0,v.useState)(e===``),c=(0,v.useId)(),l=(0,v.useMemo)(()=>{let e=n.trim().toLowerCase();return Be.filter(t=>t.toLowerCase().includes(e)).slice(0,30)},[n]),u=e=>{e&&(r(e),s(!1),t(e))};return(0,O.jsxs)(`div`,{className:`key-picker`,children:[(0,O.jsxs)(`label`,{className:`field`,children:[(0,O.jsx)(`span`,{children:`Setting`}),(0,O.jsx)(`input`,{className:`mono`,role:`combobox`,"aria-expanded":o,"aria-controls":c,"aria-activedescendant":o&&l[i]?`${c}-${i}`:void 0,placeholder:`Search ${Be.length} settings`,value:n,onChange:e=>{r(e.target.value),a(0),s(!0),t(``)},onFocus:()=>s(!0),onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),a(e=>Math.min(e+1,l.length-1))):e.key===`ArrowUp`?(e.preventDefault(),a(e=>Math.max(e-1,0))):e.key===`Enter`?(e.preventDefault(),u(l[i])):e.key===`Escape`&&o&&(e.stopPropagation(),s(!1))},autoFocus:!0})]}),o&&(0,O.jsxs)(`div`,{id:c,className:`key-results`,role:`listbox`,"aria-label":`Settings`,children:[l.length===0&&(0,O.jsx)(`div`,{className:`palette-empty`,children:`No setting matches.`}),l.map((e,t)=>(0,O.jsxs)(`div`,{id:`${c}-${t}`,role:`option`,tabIndex:-1,"aria-selected":t===i,className:t===i?`active`:``,onMouseEnter:()=>a(t),onMouseDown:e=>e.preventDefault(),onClick:()=>u(e),children:[(0,O.jsx)(`span`,{className:`mono`,children:e}),(0,O.jsx)(`span`,{className:`muted`,children:Ve(e)?.description})]},e))]})]})}function $e({preview:e,busy:t,onSave:n,onCancel:r}){let i=e.errors.length>0;return(0,O.jsxs)(`section`,{className:`review`,"aria-label":`Review change`,children:[(0,O.jsx)(`h3`,{className:`sub-title`,children:i?`This value does not fit the schema`:`Change to ${k(e.path)}`}),i?(0,O.jsx)(`ul`,{className:`plain`,children:e.errors.map(e=>(0,O.jsx)(`li`,{className:`flag bad`,children:e},e))}):(0,O.jsx)(ie,{before:e.before??``,after:e.after}),(0,O.jsxs)(`div`,{className:`editor-buttons`,children:[!i&&(0,O.jsx)(`button`,{type:`button`,className:`primary`,disabled:t,onClick:n,children:t?`Saving…`:`Save`}),(0,O.jsx)(`button`,{type:`button`,disabled:t,onClick:r,children:i?`Back`:`Cancel`})]}),!i&&e.before!==null&&(0,O.jsxs)(`p`,{className:`muted small`,children:[e.reformats?`ccdesk writes the whole file with 2-space indentation, as Claude Code does. `:``,`The old file is backed up first.`]})]})}var et=[`allow`,`ask`,`deny`];function tt(e,t){let[n,r]=(0,v.useState)(null),[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(!1),c=async(t,n,i,o)=>{a(null);let c={dir:e.path,file:t,...n?{remove:n}:{},...i?{add:i}:{}};s(!0);try{r({edit:c,preview:await T.previewPermission(c),message:o})}catch(e){a(e instanceof Error?e.message:String(e))}finally{s(!1)}},l=async()=>{if(!n)return!1;s(!0);try{return t({change:await T.savePermission(n.edit,n.preview.revision),message:n.message}),r(null),!0}catch(e){return a(e instanceof Error?e.message:String(e)),!1}finally{s(!1)}},u=(0,O.jsxs)(O.Fragment,{children:[i&&(0,O.jsx)(`p`,{className:`flag bad`,role:`alert`,children:i}),n&&(0,O.jsx)($e,{preview:n.preview,busy:o,onSave:()=>void l(),onCancel:()=>r(null)})]});return{start:c,save:l,busy:o,reviewing:n!==null,cancel:()=>r(null),shown:u}}function nt(e,t){return e.settings.find(e=>e.scope===t&&!e.legacy)?.path}function rt({view:e,rule:t,onSaved:n}){let r=tt(e,n),{busy:i}=r,[a,o]=(0,v.useState)(`allow`),[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(`project`),d=(0,v.useId)(),f=t?.scope??l,p=t?.path??nt(e,l),m=Pe.includes(f),h=(e,t,n)=>{p&&r.start(p,e,t,n)};return t&&!m?(0,O.jsx)(`p`,{className:`muted small`,children:`Managed rules are set by your organisation.`}):(0,O.jsxs)(`section`,{className:`editor`,"aria-label":t?`Change this rule`:`Add a rule`,children:[t?(0,O.jsxs)(`div`,{className:`editor-buttons`,children:[et.filter(e=>e!==t.list).map(e=>(0,O.jsxs)(`button`,{type:`button`,disabled:i,onClick:()=>h({list:t.list,rule:t.rule},{list:e,rule:t.rule},`Moved ${t.rule} to ${e}`),children:[`Move to `,e]},e)),(0,O.jsx)(`button`,{type:`button`,className:`quiet-danger`,disabled:i,onClick:()=>h({list:t.list,rule:t.rule},void 0,`Removed ${t.rule}`),children:`Remove`})]}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`fieldset`,{className:`segmented`,"aria-label":`List`,children:et.map(e=>(0,O.jsx)(`button`,{type:`button`,"aria-pressed":a===e,onClick:()=>{o(e),r.cancel()},children:e},e))}),(0,O.jsxs)(`label`,{className:`field`,htmlFor:d,children:[(0,O.jsx)(`span`,{children:`Rule`}),(0,O.jsx)(`input`,{id:d,className:`mono`,value:s,placeholder:`Bash(npm test:*)`,spellCheck:!1,onChange:e=>{c(e.target.value),r.cancel()}})]}),(0,O.jsx)(it,{scope:l,onPick:e=>{u(e),r.cancel()}}),(0,O.jsx)(`p`,{className:`muted small mono wrap`,children:p?k(p):``}),(0,O.jsx)(`div`,{className:`editor-buttons`,children:(0,O.jsx)(`button`,{type:`button`,className:`primary`,disabled:i||s.trim()===``,onClick:()=>h(void 0,{list:a,rule:s.trim()},`Added ${s.trim()} to ${a}`),children:`Review change`})})]}),r.shown]})}function it({scope:e,onPick:t}){return(0,O.jsx)(`fieldset`,{className:`segmented`,"aria-label":`File to change`,children:Pe.map(n=>(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":e===n,onClick:()=>t(n),children:[(0,O.jsx)(N,{line:n,hollow:e!==n}),` `,xe(n)]},n))})}function at(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ot=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,st=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ct={};function lt(e,t){return((t||ct).jsx?st:ot).test(e)}var ut=/[ \t\n\f\r]/g;function dt(e){return typeof e==`object`?e.type===`text`&&ft(e.value):ft(e)}function ft(e){return e.replace(ut,``)===``}var pt=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};pt.prototype.normal={},pt.prototype.property={},pt.prototype.space=void 0;function mt(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new pt(n,r,t)}function ht(e){return e.toLowerCase()}var gt=class{constructor(e,t){this.attribute=t,this.property=e}};gt.prototype.attribute=``,gt.prototype.booleanish=!1,gt.prototype.boolean=!1,gt.prototype.commaOrSpaceSeparated=!1,gt.prototype.commaSeparated=!1,gt.prototype.defined=!1,gt.prototype.mustUseProperty=!1,gt.prototype.number=!1,gt.prototype.overloadedBoolean=!1,gt.prototype.property=``,gt.prototype.spaceSeparated=!1,gt.prototype.space=void 0;var _t=s({boolean:()=>P,booleanish:()=>yt,commaOrSpaceSeparated:()=>St,commaSeparated:()=>xt,number:()=>F,overloadedBoolean:()=>bt,spaceSeparated:()=>I}),vt=0,P=Ct(),yt=Ct(),bt=Ct(),F=Ct(),I=Ct(),xt=Ct(),St=Ct();function Ct(){return 2**++vt}var wt=Object.keys(_t),Tt=class extends gt{constructor(e,t,n,r){let i=-1;if(super(e,t),Et(this,`space`,r),typeof n==`number`)for(;++i<wt.length;){let e=wt[i];Et(this,wt[i],(n&_t[e])===_t[e])}}};Tt.prototype.defined=!0;function Et(e,t,n){n&&(e[t]=n)}function Dt(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new Tt(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[ht(r)]=r,n[ht(a.attribute)]=r}return new pt(t,n,e.space)}var Ot=Dt({properties:{ariaActiveDescendant:null,ariaAtomic:yt,ariaAutoComplete:null,ariaBusy:yt,ariaChecked:yt,ariaColCount:F,ariaColIndex:F,ariaColSpan:F,ariaControls:I,ariaCurrent:null,ariaDescribedBy:I,ariaDetails:null,ariaDisabled:yt,ariaDropEffect:I,ariaErrorMessage:null,ariaExpanded:yt,ariaFlowTo:I,ariaGrabbed:yt,ariaHasPopup:null,ariaHidden:yt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:I,ariaLevel:F,ariaLive:null,ariaModal:yt,ariaMultiLine:yt,ariaMultiSelectable:yt,ariaOrientation:null,ariaOwns:I,ariaPlaceholder:null,ariaPosInSet:F,ariaPressed:yt,ariaReadOnly:yt,ariaRelevant:null,ariaRequired:yt,ariaRoleDescription:I,ariaRowCount:F,ariaRowIndex:F,ariaRowSpan:F,ariaSelected:yt,ariaSetSize:F,ariaSort:null,ariaValueMax:F,ariaValueMin:F,ariaValueNow:F,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function kt(e,t){return t in e?e[t]:t}function At(e,t){return kt(e,t.toLowerCase())}var jt=Dt({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:xt,acceptCharset:I,accessKey:I,action:null,allow:null,allowFullScreen:P,allowPaymentRequest:P,allowUserMedia:P,alpha:P,alt:null,as:null,async:P,autoCapitalize:null,autoComplete:I,autoFocus:P,autoPlay:P,blocking:I,capture:null,charSet:null,checked:P,cite:null,className:I,closedBy:null,colorSpace:null,cols:F,colSpan:F,command:null,commandFor:null,content:null,contentEditable:yt,controls:P,controlsList:I,coords:F|xt,crossOrigin:null,data:null,dateTime:null,decoding:null,default:P,defer:P,dir:null,dirName:null,disabled:P,download:bt,draggable:yt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:P,formTarget:null,headers:I,height:F,hidden:bt,high:F,href:null,hrefLang:null,htmlFor:I,httpEquiv:I,id:null,imageSizes:null,imageSrcSet:null,inert:P,inputMode:null,integrity:null,is:null,isMap:P,itemId:null,itemProp:I,itemRef:I,itemScope:P,itemType:I,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:P,low:F,manifest:null,max:null,maxLength:F,media:null,method:null,min:null,minLength:F,multiple:P,muted:P,name:null,nonce:null,noModule:P,noValidate:P,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:P,optimum:F,pattern:null,ping:I,placeholder:null,playsInline:P,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:P,referrerPolicy:null,rel:I,required:P,reversed:P,rows:F,rowSpan:F,sandbox:I,scope:null,scoped:P,seamless:P,selected:P,shadowRootClonable:P,shadowRootCustomElementRegistry:P,shadowRootDelegatesFocus:P,shadowRootMode:null,shadowRootSerializable:P,shape:null,size:F,sizes:null,slot:null,span:F,spellCheck:yt,src:null,srcDoc:null,srcLang:null,srcSet:null,start:F,step:null,style:null,tabIndex:F,target:null,title:null,translate:null,type:null,typeMustMatch:P,useMap:null,value:yt,width:F,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:I,axis:null,background:null,bgColor:null,border:F,borderColor:null,bottomMargin:F,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:P,declare:P,event:null,face:null,frame:null,frameBorder:null,hSpace:F,leftMargin:F,link:null,longDesc:null,lowSrc:null,marginHeight:F,marginWidth:F,noResize:P,noHref:P,noShade:P,noWrap:P,object:null,profile:null,prompt:null,rev:null,rightMargin:F,rules:null,scheme:null,scrolling:yt,standby:null,summary:null,text:null,topMargin:F,valueType:null,version:null,vAlign:null,vLink:null,vSpace:F,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:P,disablePictureInPicture:P,disableRemotePlayback:P,exportParts:xt,part:I,prefix:null,property:null,results:F,security:null,unselectable:null},space:`html`,transform:At}),Mt=Dt({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,maskType:`mask-type`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:St,accentHeight:F,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:F,amplitude:F,arabicForm:null,ascent:F,attributeName:null,attributeType:null,azimuth:F,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:F,by:null,calcMode:null,capHeight:F,className:I,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:F,diffuseConstant:F,direction:null,display:null,dur:null,divisor:F,dominantBaseline:null,download:P,dx:null,dy:null,edgeMode:null,editable:null,elevation:F,enableBackground:null,end:null,event:null,exponent:F,externalResourcesRequired:null,fill:null,fillOpacity:F,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:xt,g2:xt,glyphName:xt,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:F,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:F,horizOriginX:F,horizOriginY:F,id:null,ideographic:F,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:F,k:F,k1:F,k2:F,k3:F,k4:F,kernelMatrix:St,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:F,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:F,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:F,overlineThickness:F,paintOrder:null,panose1:null,path:null,pathLength:F,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:I,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:F,pointsAtY:F,pointsAtZ:F,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:St,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:St,rev:St,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:St,requiredFeatures:St,requiredFonts:St,requiredFormats:St,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:F,specularExponent:F,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:F,strikethroughThickness:F,string:null,stroke:null,strokeDashArray:St,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:F,strokeOpacity:F,strokeWidth:null,style:null,surfaceScale:F,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:St,tabIndex:F,tableValues:null,target:null,targetX:F,targetY:F,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:St,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:F,underlineThickness:F,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:F,values:null,vAlphabetic:F,vMathematical:F,vectorEffect:null,vHanging:F,vIdeographic:F,version:null,vertAdvY:F,vertOriginX:F,vertOriginY:F,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:F,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:kt}),Nt=Dt({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),Pt=Dt({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:At}),Ft=Dt({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),It={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},Lt=/[A-Z]/g,Rt=/-[a-z]/g,zt=/^data[-\w.:]+$/i;function Bt(e,t){let n=ht(t),r=t,i=gt;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&zt.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Rt,Ht);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Rt.test(e)){let n=e.replace(Lt,Vt);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=Tt}return new i(r,t)}function Vt(e){return`-`+e.toLowerCase()}function Ht(e){return e.charAt(1).toUpperCase()}var Ut=mt([Ot,jt,Nt,Pt,Ft],`html`),Wt=mt([Ot,Mt,Nt,Pt,Ft],`svg`);function Gt(e){return e.join(` `).trim()}var Kt=o(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(`
16
- `);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(e.charAt(0)==`/`&&e.charAt(1)==`*`){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function x(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),x()}function d(e){return e?e.replace(l,``):``}t.exports=u})),qt=o((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Kt());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),L=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),Jt=o(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(qt()),r=L();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Yt=Zt(`end`),Xt=Zt(`start`);function Zt(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function Qt(e){let t=Xt(e),n=Yt(e);if(t&&n)return{start:t,end:n}}function $t(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?tn(e.position):`start`in e||`end`in e?tn(e):`line`in e||`column`in e?en(e):``}function en(e){return nn(e&&e.line)+`:`+nn(e&&e.column)}function tn(e){return en(e&&e.start)+`-`+en(e&&e.end)}function nn(e){return e&&typeof e==`number`?e:1}var rn=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=$t(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};rn.prototype.file=``,rn.prototype.name=``,rn.prototype.reason=``,rn.prototype.message=``,rn.prototype.stack=``,rn.prototype.column=void 0,rn.prototype.line=void 0,rn.prototype.ancestors=void 0,rn.prototype.cause=void 0,rn.prototype.fatal=void 0,rn.prototype.place=void 0,rn.prototype.ruleId=void 0,rn.prototype.source=void 0;var an=l(Jt(),1),on={}.hasOwnProperty,sn=new Map,cn=/[A-Z]/g,ln=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),un=new Set([`td`,`th`]),dn=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function fn(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=Cn(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=Sn(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?Wt:Ut,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=pn(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function pn(e,t,n){if(t.type===`element`)return mn(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return hn(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return _n(e,t,n);if(t.type===`mdxjsEsm`)return gn(e,t);if(t.type===`root`)return vn(e,t,n);if(t.type===`text`)return yn(e,t)}function mn(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=Wt,e.schema=i),e.ancestors.push(t);let a=kn(e,t.tagName,!1),o=wn(e,t),s=En(e,t);return ln.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!dt(e)})),bn(e,o,a,t),xn(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function hn(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}An(e,t.position)}function gn(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);An(e,t.position)}function _n(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=Wt,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:kn(e,t.name,!0),o=Tn(e,t),s=En(e,t);return bn(e,o,a,t),xn(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function vn(e,t,n){let r={};return xn(r,En(e,t)),e.create(t,e.Fragment,r,n)}function yn(e,t){return t.value}function bn(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function xn(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function Sn(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function Cn(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Xt(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function wn(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&on.call(t.properties,i)){let a=Dn(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&un.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function Tn(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`){if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else An(e,t.position)}else{let i=r.name,a;if(r.value&&typeof r.value==`object`){if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else An(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function En(e,t){let n=[],r=-1,i=e.passKeys?new Map:sn;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=pn(e,a,o);s!==void 0&&n.push(s)}return n}function Dn(e,t,n){let r=Bt(e.schema,t);if(!(n==null||typeof n==`number`&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?at(n):Gt(n)),r.property===`style`){let t=typeof n==`object`?n:On(e,String(n));return e.stylePropertyNameCase===`css`&&(t=jn(t)),[`style`,t]}return[e.elementAttributeNameCase===`react`&&r.space?It[r.property]||r.property:r.attribute,n]}}function On(e,t){try{return(0,an.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new rn("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=dn+`#cannot-parse-style-attribute`,r}}function kn(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=lt(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}r=i}else r=lt(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return on.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);An(e)}function An(e,t){let n=new rn("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=dn+`#cannot-handle-mdx-estrees-without-createevaluater`,n}function jn(e){let t={},n;for(n in e)on.call(e,n)&&(t[Mn(n)]=e[n]);return t}function Mn(e){let t=e.replace(cn,Nn);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function Nn(e){return`-`+e.toLowerCase()}var Pn={action:[`form`],cite:[`blockquote`,`del`,`ins`,`q`],data:[`object`],formAction:[`button`,`input`],href:[`a`,`area`,`base`,`link`],icon:[`menuitem`],itemId:null,manifest:[`html`],ping:[`a`,`area`],poster:[`video`],src:[`audio`,`embed`,`iframe`,`img`,`input`,`script`,`source`,`track`,`video`]},Fn={};function In(e,t){let n=t||Fn;return Ln(e,typeof n.includeImageAlt!=`boolean`||n.includeImageAlt,typeof n.includeHtml!=`boolean`||n.includeHtml)}function Ln(e,t,n){if(zn(e)){if(`value`in e)return e.type===`html`&&!n?``:e.value;if(t&&`alt`in e&&e.alt)return e.alt;if(`children`in e)return Rn(e.children,t,n)}return Array.isArray(e)?Rn(e,t,n):``}function Rn(e,t,n){let r=[],i=-1;for(;++i<e.length;)r[i]=Ln(e[i],t,n);return r.join(``)}function zn(e){return!!(e&&typeof e==`object`)}var Bn=document.createElement(`i`);function Vn(e){let t=`&`+e+`;`;Bn.innerHTML=t;let n=Bn.textContent;return n.charCodeAt(n.length-1)===59&&e!==`semi`?!1:n!==t&&n}function Hn(e,t,n,r){let i=e.length,a=0,o;if(t=t<0?-t>i?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a<r.length;)o=r.slice(a,a+1e4),o.unshift(t,0),e.splice(...o),a+=1e4,t+=1e4}function Un(e,t){return e.length>0?(Hn(e,e.length,0,t),e):t}var Wn={}.hasOwnProperty;function Gn(e){let t={},n=-1;for(;++n<e.length;)Kn(t,e[n]);return t}function Kn(e,t){let n;for(n in t){let r=(Wn.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n],a;if(i)for(a in i){Wn.call(r,a)||(r[a]=[]);let e=i[a];qn(r[a],Array.isArray(e)?e:e?[e]:[])}}}function qn(e,t){let n=-1,r=[];for(;++n<t.length;)(t[n].add===`after`?e:r).push(t[n]);Hn(e,0,0,r)}function Jn(e,t){let n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function Yn(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var Xn=ar(/[A-Za-z]/),Zn=ar(/[\dA-Za-z]/),Qn=ar(/[#-'*+\--9=?A-Z^-~]/);function $n(e){return e!==null&&(e<32||e===127)}var er=ar(/\d/),tr=ar(/[\dA-Fa-f]/),nr=ar(/[!-/:-@[-`{-~]/);function R(e){return e!==null&&e<-2}function z(e){return e!==null&&(e<0||e===32)}function B(e){return e===-2||e===-1||e===32}var rr=ar(/\p{P}|\p{S}/u),ir=ar(/\s/);function ar(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function or(e){let t=[],n=-1,r=0,i=0;for(;++n<e.length;){let a=e.charCodeAt(n),o=``;if(a===37&&Zn(e.charCodeAt(n+1))&&Zn(e.charCodeAt(n+2)))i=2;else if(a<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(a))||(o=String.fromCharCode(a));else if(a>55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function V(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return B(r)?(e.enter(n),s(r)):t(r)}function s(r){return B(r)&&a++<i?(e.consume(r),s):(e.exit(n),t(r))}}function sr(e,t,n,r,i,a){let o=0;return s;function s(t){return a>0&&B(t)?(e.enter(r),c(t)):l(t)}function c(t){return B(t)&&o<a?(e.consume(t),o++,c):(e.exit(r),l(t))}function l(e){return o>=i?t(e):n(e)}}var cr={tokenize:lr};function lr(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(n){if(n===null)e.consume(n);else return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),V(e,t,`linePrefix`)}function i(t){return e.enter(`paragraph`),a(t)}function a(t){let r=e.enter(`chunkText`,{contentType:`text`,previous:n});return n&&(n.next=r),n=r,o(t)}function o(t){if(t===null)e.exit(`chunkText`),e.exit(`paragraph`),e.consume(t);else return R(t)?(e.consume(t),e.exit(`chunkText`),a):(e.consume(t),o)}}var ur=class{constructor(){this.index=new Map,this.map=[]}add(e,t,n){dr(this,e,t,n,!1)}addBefore(e,t,n){dr(this,e,t,n,!0)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function dr(e,t,n,r,i){if(n===0&&r.length===0)return;let a=e.index.get(t);if(a){a[1]+=n,i?(r.push(...a[2]),a[2]=r):a[2].push(...r);return}let o=[t,n,r];e.map.push(o),e.index.set(t,o)}var fr={tokenize:mr},pr={tokenize:hr};function mr(e){let t=this,n=[],r=0,i,a,o;return s;function s(i){if(r<n.length){let a=n[r];return t.containerState=a[1],e.attempt(a[0].continuation,c,l)(i)}return l(i)}function c(e){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,i&&v();let n=t.events.length,a=n,o;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){o=t.events[a][1].end;break}_(r);let s=n;for(;s<t.events.length;)t.events[s][1].end={...o},s++;let c=new ur;return c.add(a+1,0,t.events.slice(n)),c.add(n,s-n,[]),c.consume(t.events),l(e)}return s(e)}function l(a){if(r===n.length){if(!i)return f(a);if(i.currentConstruct&&i.currentConstruct.concrete)return m(a);t.interrupt=!(!i.currentConstruct||i._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(pr,u,d)(a)}function u(e){return i&&v(),_(r),f(e)}function d(e){return t.parser.lazy[t.now().line]=r!==n.length,o=t.now().offset,m(e)}function f(n){return t.containerState={},e.attempt(pr,p,m)(n)}function p(e){return r++,n.push([t.currentConstruct,t.containerState]),f(e)}function m(n){if(n===null)i&&v(),_(0),e.consume(n);else return i||=t.parser.flow(t.now()),e.enter(`chunkFlow`,{_tokenizer:i,contentType:`flow`,previous:a}),h(n)}function h(n){if(n===null)g(e.exit(`chunkFlow`),!0),_(0),e.consume(n);else return R(n)?(e.consume(n),g(e.exit(`chunkFlow`)),r=0,t.interrupt=void 0,s):(e.consume(n),h)}function g(e,n){let s=t.sliceStream(e);if(n&&s.push(null),e.previous=a,a&&(a.next=e),a=e,i.defineSkip(e.start),i.write(s),t.parser.lazy[e.start.line]){let e=i.events.length;for(;e--;)if(i.events[e][1].start.offset<o&&(!i.events[e][1].end||i.events[e][1].end.offset>o))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;e<t.events.length;)t.events[e][1].end={...c},e++;let l=new ur;l.add(a+1,0,t.events.slice(n)),l.add(n,e-n,[]),l.consume(t.events)}}function _(r){let i=n.length;for(;i-->r;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function hr(e,t,n){return V(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function gr(e){if(e===null||z(e)||ir(e))return 1;if(rr(e))return 2}function _r(e,t,n){let r=[],i=-1;for(;++i<e.length;){let a=e[i].resolveAll;a&&!r.includes(a)&&(t=a(t,n),r.push(a))}return t}var vr={name:`attention`,resolveAll:yr,tokenize:br};function yr(e,t){let n=-1,r;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`attentionSequence`&&e[n][1]._close){let i=n;for(;i--;)if(e[i][0]===`exit`&&e[i][1].type===`attentionSequence`&&e[i][1]._open&&t.sliceSerialize(e[i][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[i][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[i][1].end.offset-e[i][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;let a=e[i][1].end.offset-e[i][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1,o={...e[i][1].end},s={...e[n][1].start};xr(o,-a),xr(s,a);let c={type:a>1?`strongSequence`:`emphasisSequence`,start:o,end:{...e[i][1].end}},l={type:a>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:s},u={type:a>1?`strongText`:`emphasisText`,start:{...e[i][1].end},end:{...e[n][1].start}},d={type:a>1?`strong`:`emphasis`,start:{...c.start},end:{...l.end}};e[i][1].end={...c.start},e[n][1].start={...l.end},r=[],e[i][1].end.offset-e[i][1].start.offset&&(r=Un(r,[[`enter`,e[i][1],t],[`exit`,e[i][1],t]])),r=Un(r,[[`enter`,d,t],[`enter`,c,t],[`exit`,c,t],[`enter`,u,t]]),r=Un(r,_r(t.parser.constructs.insideSpan.null,e.slice(i+1,n),t)),r=Un(r,[[`exit`,u,t],[`enter`,l,t],[`exit`,l,t],[`exit`,d,t]]);let f=0;e[n][1].end.offset-e[n][1].start.offset&&(f=2,r=Un(r,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])),Hn(e,i-1,n-i+3,r),n=i+r.length-f-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`attentionSequence`&&(e[n][1].type=`data`);return e}function br(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,i=gr(r),a;return o;function o(t){return a=t,e.enter(`attentionSequence`),s(t)}function s(o){if(o===a)return e.consume(o),s;let c=e.exit(`attentionSequence`),l=gr(o),u=!l||l===2&&i||n.includes(o)&&o!==42&&o!==95,d=!i||i===2&&l||n.includes(r)&&r!==42&&r!==95;return c._open=!!(a===42?u:u&&(i||!d)),c._close=!!(a===42?d:d&&(l||!u)),t(o)}}function xr(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var Sr={name:`autolink`,tokenize:Cr};function Cr(e,t,n){let r=0;return i;function i(t){return e.enter(`autolink`),e.enter(`autolinkMarker`),e.consume(t),e.exit(`autolinkMarker`),e.enter(`autolinkProtocol`),a}function a(t){return Xn(t)?(e.consume(t),o):t===64?n(t):l(t)}function o(e){return e===43||e===45||e===46||Zn(e)?(r=1,s(e)):l(e)}function s(t){return t===58?(e.consume(t),r=0,c):(t===43||t===45||t===46||Zn(t))&&r++<32?(e.consume(t),s):(r=0,l(t))}function c(r){return r===62?(e.exit(`autolinkProtocol`),e.enter(`autolinkMarker`),e.consume(r),e.exit(`autolinkMarker`),e.exit(`autolink`),t):r===null||r===32||r===60||$n(r)?n(r):(e.consume(r),c)}function l(t){return t===64?(e.consume(t),u):Qn(t)?(e.consume(t),l):n(t)}function u(e){return Zn(e)?d(e):n(e)}function d(n){return n===46?(e.consume(n),r=0,u):n===62?(e.exit(`autolinkProtocol`).type=`autolinkEmail`,e.enter(`autolinkMarker`),e.consume(n),e.exit(`autolinkMarker`),e.exit(`autolink`),t):f(n)}function f(t){if((t===45||Zn(t))&&r++<63){let n=t===45?f:d;return e.consume(t),n}return n(t)}}var wr={partial:!0,tokenize:Tr};function Tr(e,t,n){return r;function r(t){return B(t)?V(e,i,`linePrefix`)(t):i(t)}function i(e){return e===null||R(e)?t(e):n(e)}}var Er={continuation:{tokenize:Or},exit:kr,name:`blockQuote`,tokenize:Dr};function Dr(e,t,n){let r=this;return i;function i(t){if(t===62){let n=r.containerState;return n.open||=(e.enter(`blockQuote`,{_container:!0}),!0),e.enter(`blockQuotePrefix`),e.enter(`blockQuoteMarker`),e.consume(t),e.exit(`blockQuoteMarker`),a}return n(t)}function a(n){return B(n)?(e.enter(`blockQuotePrefixWhitespace`),e.consume(n),e.exit(`blockQuotePrefixWhitespace`),e.exit(`blockQuotePrefix`),t):(e.exit(`blockQuotePrefix`),t(n))}}function Or(e,t,n){let r=this;return i;function i(t){return B(t)?V(e,a,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):a(t)}function a(r){return e.attempt(Er,t,n)(r)}}function kr(e){e.exit(`blockQuote`)}var Ar={name:`characterEscape`,tokenize:jr};function jr(e,t,n){return r;function r(t){return e.enter(`characterEscape`),e.enter(`escapeMarker`),e.consume(t),e.exit(`escapeMarker`),i}function i(r){return nr(r)?(e.enter(`characterEscapeValue`),e.consume(r),e.exit(`characterEscapeValue`),e.exit(`characterEscape`),t):n(r)}}var Mr={name:`characterReference`,tokenize:Nr};function Nr(e,t,n){let r=this,i=0,a,o;return s;function s(t){return e.enter(`characterReference`),e.enter(`characterReferenceMarker`),e.consume(t),e.exit(`characterReferenceMarker`),c}function c(t){return t===35?(e.enter(`characterReferenceMarkerNumeric`),e.consume(t),e.exit(`characterReferenceMarkerNumeric`),l):(e.enter(`characterReferenceValue`),a=31,o=Zn,u(t))}function l(t){return t===88||t===120?(e.enter(`characterReferenceMarkerHexadecimal`),e.consume(t),e.exit(`characterReferenceMarkerHexadecimal`),e.enter(`characterReferenceValue`),a=6,o=tr,u):(e.enter(`characterReferenceValue`),a=7,o=er,u(t))}function u(s){if(s===59&&i){let i=e.exit(`characterReferenceValue`);return o===Zn&&!Vn(r.sliceSerialize(i))?n(s):(e.enter(`characterReferenceMarker`),e.consume(s),e.exit(`characterReferenceMarker`),e.exit(`characterReference`),t)}return o(s)&&i++<a?(e.consume(s),u):n(s)}}var Pr={partial:!0,tokenize:Fr};function Fr(e,t,n){let r=this;return i;function i(t){return t===null?n(t):(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),a)}function a(e){return r.parser.lazy[r.now().line]?n(e):t(e)}}var Ir={concrete:!0,name:`codeFenced`,tokenize:Lr};function Lr(e,t,n){let r=this,i={partial:!0,tokenize:x},a=0,o=0,s;return c;function c(e){return l(e)}function l(t){let n=r.events[r.events.length-1];return a=n&&n[1].type===`linePrefix`?n[2].sliceSerialize(n[1],!0).length:0,s=t,e.enter(`codeFenced`),e.enter(`codeFencedFence`),e.enter(`codeFencedFenceSequence`),u(t)}function u(t){return t===s?(o++,e.consume(t),u):o<3?n(t):(e.exit(`codeFencedFenceSequence`),B(t)?V(e,d,`whitespace`)(t):d(t))}function d(n){return n===null||R(n)?(e.exit(`codeFencedFence`),r.interrupt?t(n):e.check(Pr,h,b)(n)):(e.enter(`codeFencedFenceInfo`),e.enter(`chunkString`,{contentType:`string`}),f(n))}function f(t){return t===null||R(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceInfo`),d(t)):B(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceInfo`),V(e,p,`whitespace`)(t)):t===96&&t===s?n(t):(e.consume(t),f)}function p(t){return t===null||R(t)?d(t):(e.enter(`codeFencedFenceMeta`),e.enter(`chunkString`,{contentType:`string`}),m(t))}function m(t){return t===null||R(t)?(e.exit(`chunkString`),e.exit(`codeFencedFenceMeta`),d(t)):t===96&&t===s?n(t):(e.consume(t),m)}function h(t){return e.attempt(i,b,g)(t)}function g(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),_}function _(t){return a>0&&B(t)?V(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||R(t)?e.check(Pr,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||R(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),B(t)?V(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),B(t)?V(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||R(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}var Rr={name:`codeIndented`,tokenize:Br},zr={partial:!0,tokenize:Vr};function Br(e,t,n){return r;function r(t){return e.enter(`codeIndented`),sr(e,i,n,`linePrefix`,4,4)(t)}function i(t){return t===null?o(t):R(t)?e.attempt(zr,i,o)(t):(e.enter(`codeFlowValue`),a(t))}function a(t){return t===null||R(t)?(e.exit(`codeFlowValue`),i(t)):(e.consume(t),a)}function o(n){return e.exit(`codeIndented`),t(n)}}function Vr(e,t,n){let r=this;return i;function i(o){return r.parser.lazy[r.now().line]?n(o):R(o)?(e.enter(`lineEnding`),e.consume(o),e.exit(`lineEnding`),i):sr(e,t,a,`linePrefix`,4,4)(o)}function a(e){return R(e)?i(e):n(e)}}var Hr={name:`codeText`,previous:Wr,resolve:Ur,tokenize:Gr};function Ur(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r<t;)if(e[r][1].type===`codeTextData`){e[n][1].type=`codeTextPadding`,e[t][1].type=`codeTextPadding`,n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)i===void 0?r!==t&&e[r][1].type!==`lineEnding`&&(i=r):(r===t||e[r][1].type===`lineEnding`)&&(e[i][1].type=`codeTextData`,r!==i+2&&(e[i][1].end=e[r-1][1].end,e.splice(i+2,r-i-2),t-=r-i-2,r=i+2),i=void 0);return e}function Wr(e){return e!==96||this.events[this.events.length-1][1].type===`characterEscape`}function Gr(e,t,n){let r=0,i,a;return o;function o(t){return e.enter(`codeText`),e.enter(`codeTextSequence`),s(t)}function s(t){return t===96?(e.consume(t),r++,s):(e.exit(`codeTextSequence`),c(t))}function c(t){return t===null?n(t):t===32?(e.enter(`space`),e.consume(t),e.exit(`space`),c):t===96?(a=e.enter(`codeTextSequence`),i=0,u(t)):R(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c):(e.enter(`codeTextData`),l(t))}function l(t){return t===null||t===32||t===96||R(t)?(e.exit(`codeTextData`),c(t)):(e.consume(t),l)}function u(n){return n===96?(e.consume(n),i++,u):i===r?(e.exit(`codeTextSequence`),e.exit(`codeText`),t(n)):(a.type=`codeTextData`,l(n))}}var Kr=class{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return e<this.left.length?this.left[e]:this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,t){let n=t??1/0;return n<this.left.length?this.left.slice(e,n):e>this.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&qr(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),qr(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),qr(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)){if(e<this.left.length){let t=this.left.splice(e,1/0);qr(this.right,t.reverse())}else{let t=this.right.splice(this.left.length+this.right.length-e,1/0);qr(this.left,t.reverse())}}}};function qr(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function Jr(e){let t={},n=-1,r,i,a,o,s,c,l,u=new Kr(e);for(;++n<u.length;){for(;n in t;)n=t[n];if(r=u.get(n),n&&r[1].type===`chunkFlow`&&u.get(n-1)[1].type===`listItemPrefix`&&(c=r[1]._tokenizer.events,a=0,a<c.length&&c[a][1].type===`lineEndingBlank`&&(a+=2),a<c.length&&c[a][1].type===`content`))for(;++a<c.length&&c[a][1].type!==`content`;)c[a][1].type===`chunkText`&&(c[a][1]._isInFirstContentOfListItem=!0,a++);if(r[0]===`enter`)r[1].contentType&&(Object.assign(t,Yr(u,n)),n=t[n],l=!0);else if(r[1]._container){for(a=n,i=void 0;a--;)if(o=u.get(a),o[1].type===`lineEnding`||o[1].type===`lineEndingBlank`)o[0]===`enter`&&(i&&(u.get(i)[1].type=`lineEndingBlank`),o[1].type=`lineEnding`,i=a);else if(o[1].type!==`linePrefix`&&o[1].type!==`listItemIndent`)break;i&&(r[1].end={...u.get(i)[1].start},s=u.slice(i,n),s.unshift(r),u.splice(i,n-i+1,s))}}return Hn(e,0,1/0,u.slice(0)),!l}function Yr(e,t){let n=e.get(t)[1],r=e.get(t)[2],i=t-1,a=[],o=n._tokenizer;o||(o=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(o._contentTypeTextTrailing=!0));let s=o.events,c=[],l={},u,d,f=-1,p=n,m=0,h=0,g=[h];for(;p;){for(;e.get(++i)[1]!==p;);a.push(i),p._tokenizer||(u=r.sliceStream(p),p.next||u.push(null),d&&o.defineSkip(p.start),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=!0),o.write(u),p._isInFirstContentOfListItem&&(o._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}for(p=n;++f<s.length;)s[f][0]===`exit`&&s[f-1][0]===`enter`&&s[f][1].type===s[f-1][1].type&&s[f][1].start.line!==s[f][1].end.line&&(h=f+1,g.push(h),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(o.events=[],p?(p._tokenizer=void 0,p.previous=void 0):g.pop(),f=g.length;f--;){let t=s.slice(g[f],g[f+1]),n=a.pop();c.push([n,n+t.length-1]),e.splice(n,2,t)}for(c.reverse(),f=-1;++f<c.length;)l[m+c[f][0]]=m+c[f][1],m+=c[f][1]-c[f][0]-1;return l}var Xr={resolve:Qr,tokenize:$r},Zr={partial:!0,tokenize:ei};function Qr(e){return Jr(e),e}function $r(e,t){let n;return r;function r(t){return e.enter(`content`),n=e.enter(`chunkContent`,{contentType:`content`}),i(t)}function i(t){return t===null?a(t):R(t)?e.check(Zr,o,a)(t):(e.consume(t),i)}function a(n){return e.exit(`chunkContent`),e.exit(`content`),t(n)}function o(t){return e.consume(t),e.exit(`chunkContent`),n.next=e.enter(`chunkContent`,{contentType:`content`,previous:n}),n=n.next,i}}function ei(e,t,n){let r=this;return i;function i(t){return e.exit(`chunkContent`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),V(e,a,`linePrefix`)}function a(i){if(i===null||R(i))return n(i);let a=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes(`codeIndented`)&&a&&a[1].type===`linePrefix`&&a[2].sliceSerialize(a[1],!0).length>=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function ti(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||$n(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||R(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||z(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u<l&&i===40?(e.consume(i),u++,h):i===41?(e.consume(i),u--,h):i===null||i===32||i===40||$n(i)?n(i):(e.consume(i),i===92?g:h)}function g(t){return t===40||t===41||t===92?(e.consume(t),h):h(t)}}function ni(e,t,n,r,i,a){let o=this,s=0,c;return l;function l(t){return e.enter(r),e.enter(i),e.consume(t),e.exit(i),e.enter(a),u}function u(l){return s>999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):R(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||R(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!B(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function ri(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):R(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),V(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||R(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function ii(e,t){let n;return r;function r(i){return R(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):B(i)?V(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var ai={name:`definition`,tokenize:si},oi={partial:!0,tokenize:ci};function si(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return ni.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=Yn(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return z(t)?ii(e,l)(t):l(t)}function l(t){return ti(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(oi,d,d)(t)}function d(t){return B(t)?V(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||R(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function ci(e,t,n){return r;function r(t){return z(t)?ii(e,i)(t):n(t)}function i(t){return ri(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return B(t)?V(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||R(e)?t(e):n(e)}}var li={name:`hardBreakEscape`,tokenize:ui};function ui(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return R(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var di={name:`headingAtx`,resolve:fi,tokenize:pi};function fi(e,t){let n=e.length-2,r=3;if(e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r){let i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`};Hn(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])}return e}function pi(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||z(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||R(n)?(e.exit(`atxHeading`),t(n)):B(n)?V(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||z(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var mi=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),hi=[`pre`,`script`,`style`,`textarea`],gi={concrete:!0,name:`htmlFlow`,resolveTo:vi,tokenize:yi},_i={partial:!0,tokenize:bi};function vi(e){let t=e.length;for(;t--&&(e[t][0]!==`enter`||e[t][1].type!==`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function yi(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:se):Xn(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):Xn(a)?(e.consume(a),i=4,r.interrupt?t:se):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:se):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:ee:m):n(i)}function h(t){return Xn(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||z(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&hi.includes(l)?(i=1,r.interrupt?t(s):ee(s)):mi.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):ee(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||Zn(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:ee):n(i)}function v(t){return B(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||Xn(t)?(e.consume(t),b):B(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||Zn(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):B(t)?(e.consume(t),x):y(t)}function S(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,C):B(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||R(t)?n(t):(e.consume(t),C)}function w(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||z(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||B(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||R(t)?ee(t):B(t)?(e.consume(t),D):n(t)}function ee(t){return t===45&&i===2?(e.consume(t),O):t===60&&i===1?(e.consume(t),ie):t===62&&i===4?(e.consume(t),k):t===63&&i===3?(e.consume(t),se):t===93&&i===5?(e.consume(t),oe):R(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(_i,ce,te)(t)):t===null||R(t)?(e.exit(`htmlFlowData`),te(t)):(e.consume(t),ee)}function te(t){return e.check(Pr,ne,ce)(t)}function ne(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),re}function re(t){return t===null||R(t)?te(t):(e.enter(`htmlFlowData`),ee(t))}function O(t){return t===45?(e.consume(t),se):ee(t)}function ie(t){return t===47?(e.consume(t),o=``,ae):ee(t)}function ae(t){if(t===62){let n=o.toLowerCase();return hi.includes(n)?(e.consume(t),k):ee(t)}return Xn(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),ae):ee(t)}function oe(t){return t===93?(e.consume(t),se):ee(t)}function se(t){return t===62?(e.consume(t),k):t===45&&i===2?(e.consume(t),se):ee(t)}function k(t){return t===null||R(t)?(e.exit(`htmlFlowData`),ce(t)):(e.consume(t),k)}function ce(n){return e.exit(`htmlFlow`),t(n)}}function bi(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(wr,t,n)}}var xi={name:`htmlText`,tokenize:Si};function Si(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):Xn(t)?(e.consume(t),w):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):Xn(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):R(t)?(o=d,ie(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?O(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):R(t)?(o=h,ie(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?O(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?O(t):R(t)?(o=v,ie(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):R(t)?(o=y,ie(t)):(e.consume(t),y)}function b(e){return e===62?O(e):y(e)}function x(t){return Xn(t)?(e.consume(t),S):n(t)}function S(t){return t===45||Zn(t)?(e.consume(t),S):C(t)}function C(t){return R(t)?(o=C,ie(t)):B(t)?(e.consume(t),C):O(t)}function w(t){return t===45||Zn(t)?(e.consume(t),w):t===47||t===62||z(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),O):t===58||t===95||Xn(t)?(e.consume(t),E):R(t)?(o=T,ie(t)):B(t)?(e.consume(t),T):O(t)}function E(t){return t===45||t===46||t===58||t===95||Zn(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),ee):R(t)?(o=D,ie(t)):B(t)?(e.consume(t),D):T(t)}function ee(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,te):R(t)?(o=ee,ie(t)):B(t)?(e.consume(t),ee):(e.consume(t),ne)}function te(t){return t===i?(e.consume(t),i=void 0,re):t===null?n(t):R(t)?(o=te,ie(t)):(e.consume(t),te)}function ne(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||z(t)?T(t):(e.consume(t),ne)}function re(e){return e===47||e===62||z(e)?T(e):n(e)}function O(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function ie(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),ae}function ae(t){return B(t)?V(e,oe,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):oe(t)}function oe(t){return e.enter(`htmlTextData`),o(t)}}var Ci={name:`labelEnd`,resolveAll:Di,resolveTo:Oi,tokenize:ki},wi={tokenize:Ai},Ti={tokenize:ji},Ei={tokenize:Mi};function Di(e){let t=-1,n=[];for(;++t<e.length;){let r=e[t][1];if(n.push(e[t]),r.type===`labelImage`||r.type===`labelLink`||r.type===`labelEnd`){let e=r.type===`labelImage`?4:2;r.type=`data`,t+=e}}return e.length!==n.length&&Hn(e,0,e.length,n),e}function Oi(e,t){let n=e.length,r=0,i,a,o;for(;n--;){let t=e[n][1];if(i){if(t.type===`link`||t.type===`labelLink`&&t._inactive)break;e[n][0]===`enter`&&t.type===`labelLink`&&(t._inactive=!0)}else if(a){if(e[n][0]===`enter`&&(t.type===`labelImage`||t.type===`labelLink`)&&!t._balanced&&(i=n,t.type!==`labelLink`)){r=2;break}}else t.type===`labelEnd`&&(a=n)}let s={type:e[i][1].type===`labelLink`?`link`:`image`,start:{...e[i][1].start},end:{...e[e.length-1][1].end}},c={type:`label`,start:{...e[i][1].start},end:{...e[a][1].end}},l={type:`labelText`,start:{...e[i+r+2][1].end},end:{...e[a-2][1].start}};return o=[[`enter`,s,t],[`enter`,c,t]],o=Un(o,e.slice(i+1,i+r+3)),o=Un(o,[[`enter`,l,t]]),o=Un(o,_r(t.parser.constructs.insideSpan.null,e.slice(i+r+4,a-3),t)),o=Un(o,[[`exit`,l,t],e[a-2],e[a-1],[`exit`,c,t]]),o=Un(o,e.slice(a+1)),o=Un(o,[[`exit`,s,t]]),Hn(e,i,e.length,o),e}function ki(e,t,n){let r=this,i=r._labelStarts,a,o;if(i){for(;i.length>0&&i[i.length-1]._balanced;)i.pop();a=i[i.length-1]}return s;function s(t){return a?a._inactive?d(t):(o=r.parser.defined.includes(Yn(r.sliceSerialize({start:a.end,end:r.now()}))),e.enter(`labelEnd`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelEnd`),c):n(t)}function c(t){return t===40?e.attempt(wi,u,o?u:d)(t):t===91?e.attempt(Ti,u,o?l:d)(t):o?u(t):d(t)}function l(t){return e.attempt(Ei,u,d)(t)}function u(e){return i.pop(),t(e)}function d(e){return a._balanced=!0,n(e)}}function Ai(e,t,n){return r;function r(t){return e.enter(`resource`),e.enter(`resourceMarker`),e.consume(t),e.exit(`resourceMarker`),i}function i(t){return z(t)?ii(e,a)(t):a(t)}function a(t){return t===41?u(t):ti(e,o,s,`resourceDestination`,`resourceDestinationLiteral`,`resourceDestinationLiteralMarker`,`resourceDestinationRaw`,`resourceDestinationString`,32)(t)}function o(t){return z(t)?ii(e,c)(t):u(t)}function s(e){return n(e)}function c(t){return t===34||t===39||t===40?ri(e,l,n,`resourceTitle`,`resourceTitleMarker`,`resourceTitleString`)(t):u(t)}function l(t){return z(t)?ii(e,u)(t):u(t)}function u(r){return r===41?(e.enter(`resourceMarker`),e.consume(r),e.exit(`resourceMarker`),e.exit(`resource`),t):n(r)}}function ji(e,t,n){let r=this;return i;function i(t){return ni.call(r,e,a,o,`reference`,`referenceMarker`,`referenceString`)(t)}function a(e){return r.parser.defined.includes(Yn(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function o(e){return n(e)}}function Mi(e,t,n){return r;function r(t){return e.enter(`reference`),e.enter(`referenceMarker`),e.consume(t),e.exit(`referenceMarker`),i}function i(r){return r===93?(e.enter(`referenceMarker`),e.consume(r),e.exit(`referenceMarker`),e.exit(`reference`),t):n(r)}}var Ni={name:`labelStartImage`,resolveAll:Ci.resolveAll,tokenize:Pi};function Pi(e,t,n){let r=this,i;return a;function a(t){return e.enter(`labelImage`),e.enter(`labelImageMarker`),e.consume(t),e.exit(`labelImageMarker`),o}function o(t){return t===91?(e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),i=e.exit(`labelImage`),s):n(t)}function s(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):(r._labelStarts=r._labelStarts||[],r._labelStarts.push(i),t(e))}}var Fi={name:`labelStartLink`,resolveAll:Ci.resolveAll,tokenize:Ii};function Ii(e,t,n){let r=this,i;return a;function a(t){return e.enter(`labelLink`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),i=e.exit(`labelLink`),o}function o(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):(r._labelStarts=r._labelStarts||[],r._labelStarts.push(i),t(e))}}var Li={name:`lineEnding`,tokenize:Ri};function Ri(e,t){return n;function n(n){return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),V(e,t,`linePrefix`)}}var zi={name:`thematicBreak`,tokenize:Bi};function Bi(e,t,n){let r=0,i;return a;function a(t){return e.enter(`thematicBreak`),o(t)}function o(e){return i=e,s(e)}function s(a){return a===i?(e.enter(`thematicBreakSequence`),c(a)):r>=3&&(a===null||R(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),B(t)?V(e,s,`whitespace`)(t):s(t))}}var Vi={continuation:{tokenize:Gi},exit:qi,name:`list`,tokenize:Wi},Hi={partial:!0,tokenize:Ji},Ui={partial:!0,tokenize:Ki};function Wi(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:er(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(zi,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return er(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(wr,r.interrupt?n:u,e.attempt(Hi,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return B(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function Gi(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(wr,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,V(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!B(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Ui,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,V(e,e.attempt(Vi,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function Ki(e,t,n){let r=this;return V(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function qi(e){e.exit(this.containerState.type)}function Ji(e,t,n){let r=this;return V(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!B(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var Yi={name:`setextUnderline`,resolveTo:Xi,tokenize:Zi};function Xi(e,t){let n=new ur,r=e.length,i,a,o;for(;r--;)if(e[r][0]===`enter`){if(e[r][1].type===`content`){i=r;break}e[r][1].type===`paragraph`&&(a=r)}else e[r][1].type===`content`&&n.add(r,1,[]),!o&&e[r][1].type===`definition`&&(o=r);let s={type:`setextHeading`,start:{...e[i][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type=`setextHeadingText`,o?(n.add(a,0,[[`enter`,s,t]]),n.add(o+1,0,[[`exit`,e[i][1],t]]),e[i][1].end={...e[o][1].end}):e[i][1]=s,n.add(e.length,0,[[`exit`,s,t]]),n.consume(e),e}function Zi(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),B(t)?V(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||R(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var Qi={tokenize:$i};function $i(e){let t=this,n=e.attempt(wr,r,e.attempt(this.parser.constructs.flowInitial,i,V(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Xr,i)),`linePrefix`)));return n;function r(r){if(r===null)e.consume(r);else return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null)e.consume(r);else return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var ea={resolveAll:ra()},ta=H(`string`),na=H(`text`);function H(e){return{resolveAll:ra(e===`text`?ia:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null)t.consume(e);else return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++i<t.length;){let e=t[i];if(!e.previous||e.previous.call(n,n.previous))return!0}return!1}}}function ra(e){return t;function t(t,n){let r=-1,i;for(;++r<=t.length;)i===void 0?t[r]&&t[r][1].type===`data`&&(i=r,r++):(!t[r]||t[r][1].type!==`data`)&&(r!==i+2&&(t[i][1].end=t[r-1][1].end,t.splice(i+2,r-i-2),r=i+2),i=void 0);return e?e(t,n):t}}function ia(e,t){let n=new ur,r=0;for(;++r<=e.length;)if((r===e.length||e[r][1].type===`lineEnding`)&&e[r-1][1].type===`data`){let i=e[r-1][1],a=t.sliceStream(i),o=a.length,s=-1,c=0,l;for(;o--;){let e=a[o];if(typeof e==`string`){for(s=e.length;e.charCodeAt(s-1)===32;)c++,s--;if(s)break;s=-1}else if(e===-2)l=!0,c++;else if(e!==-1){o++;break}}if(t._contentTypeTextTrailing&&r===e.length&&(c=0),c){let a={type:r===e.length||l||c<2?`lineSuffix`:`hardBreakTrailing`,start:{_bufferIndex:o?s:i.start._bufferIndex+s,_index:i.start._index+o,line:i.end.line,column:i.end.column-c,offset:i.end.offset-c},end:{...i.end}};i.end={...a.start},i.start.offset===i.end.offset?Object.assign(i,a):n.add(r,0,[[`enter`,a,t],[`exit`,a,t]])}r++}return n.consume(e),e}var aa=s({attentionMarkers:()=>pa,contentInitial:()=>sa,disable:()=>ma,document:()=>oa,flow:()=>la,flowInitial:()=>ca,insideSpan:()=>fa,string:()=>ua,text:()=>da}),oa={42:Vi,43:Vi,45:Vi,48:Vi,49:Vi,50:Vi,51:Vi,52:Vi,53:Vi,54:Vi,55:Vi,56:Vi,57:Vi,62:Er},sa={91:ai},ca={[-2]:Rr,[-1]:Rr,32:Rr},la={35:di,42:zi,45:[Yi,zi],60:gi,61:Yi,95:zi,96:Ir,126:Ir},ua={38:Mr,92:Ar},da={[-5]:Li,[-4]:Li,[-3]:Li,33:Ni,38:Mr,42:vr,60:[Sr,xi],91:Fi,92:[li,Ar],93:Ci,95:vr,96:Hr},fa={null:[vr,ea]},pa={null:[42,95]},ma={null:[]};function ha(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:C(x),check:C(S),consume:v,enter:y,exit:b,interrupt:C(S,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=Un(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=_r(a,l.events,l),l.events):[]}function f(e,t){return _a(p(e),t)}function p(e){return ga(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,E()}function g(){for(;r._index<o.length;){let e=o[r._index];if(typeof e==`string`){let t=r._index;for(r._bufferIndex<0&&(r._bufferIndex=0);r._index===t&&r._bufferIndex<e.length;)_(e.charCodeAt(r._bufferIndex))}else _(e)}}function _(e){u=u(e)}function v(e){R(e)?(r.line++,r.column=1,r.offset+=e===-3?2:1,E()):e!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===o[r._index].length&&(r._bufferIndex=-1,r._index++)),l.previous=e}function y(e,t){let n=t||{};return n.type=e,n.start=m(),l.events.push([`enter`,n,l]),s.push(n),n}function b(e){let t=s.pop();return t.end=m(),l.events.push([`exit`,t,l]),t}function x(e,t){w(e,t.from)}function S(e,t){t.restore()}function C(e,t){return n;function n(n,r,i){let a,o,s,u;return Array.isArray(n)?f(n):`tokenize`in n?f([n]):d(n);function d(e){return t;function t(t){let n=t!==null&&e[t],r=t!==null&&e.null;return f([...Array.isArray(n)?n:n?[n]:[],...Array.isArray(r)?r:r?[r]:[]])(t)}}function f(e){return a=e,o=0,e.length===0?i:p(e[o])}function p(e){return n;function n(n){return u=T(),s=e,e.partial||(l.currentConstruct=e),e.name&&l.parser.constructs.disable.null.includes(e.name)?h(n):e.tokenize.call(t?Object.assign(Object.create(l),t):l,c,m,h)(n)}}function m(t){return e(s,u),r}function h(e){return u.restore(),++o<a.length?p(a[o]):i}}}function w(e,t){e.resolveAll&&!a.includes(e)&&a.push(e),e.resolve&&Hn(l.events,t,l.events.length-t,e.resolve(l.events.slice(t),l)),e.resolveTo&&(l.events=e.resolveTo(l.events,l))}function T(){let e=m(),t=l.previous,n=l.currentConstruct,i=l.events.length,a=Array.from(s);return{from:i,restore:o};function o(){r=e,l.previous=t,l.currentConstruct=n,l.events.length=i,s=a,E()}}function E(){r.line in i&&r.column<2&&(r.column=i[r.line],r.offset+=i[r.line]-1)}}function ga(e,t){let n=t.start._index,r=t.start._bufferIndex,i=t.end._index,a=t.end._bufferIndex,o;if(n===i)o=[e[n].slice(r,a)];else{if(o=e.slice(n,i),r>-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function _a(e,t){let n=-1,r=[],i;for(;++n<e.length;){let a=e[n],o;if(typeof a==`string`)o=a;else switch(a){case-5:o=`\r`;break;case-4:o=`
17
- `;break;case-3:o=`\r
18
- `;break;case-2:o=t?` `:` `;break;case-1:if(!t&&i)continue;o=` `;break;default:o=String.fromCharCode(a)}i=a===-2,r.push(o)}return r.join(``)}function va(e){let t={constructs:Gn([aa,...(e||{}).extensions||[]]),content:n(cr),defined:[],document:n(fr),flow:n(Qi),lazy:{},string:n(ta),text:n(na)};return t;function n(e){return n;function n(n){return ha(t,e,n)}}}function ya(e){for(;!Jr(e););return e}var ba=/[\0\t\n\r]/g;function xa(){let e=1,t=``,n=!0,r;return i;function i(i,a,o){i=t+(typeof i==`string`?i.toString():new TextDecoder(a||void 0).decode(i));let s=[],c=0;for(t=``,n&&=(i.charCodeAt(0)===65279&&c++,void 0);c<i.length;){ba.lastIndex=c;let n=ba.exec(i),a=n&&n.index!==void 0?n.index:i.length,o=i.charCodeAt(a);if(!n){t=i.slice(c);break}if(o===10&&c===a&&r)s.push(-3),r=void 0;else switch(r&&=(s.push(-5),void 0),c<a&&(s.push(i.slice(c,a)),e+=a-c),o){case 0:s.push(65533),e++;break;case 9:{let t=Math.ceil(e/4)*4;for(s.push(-2);e++<t;)s.push(-1);break}case 10:s.push(-4),e=1;break;default:r=!0,e=1}c=a+1}return o&&(r&&s.push(-5),t&&s.push(t),s.push(null)),s}}var Sa=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ca(e){return e.replace(Sa,wa)}function wa(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){let e=n.charCodeAt(1),t=e===120||e===88;return Jn(n.slice(t?2:1),t?16:10)}return Vn(n)||e}var Ta={}.hasOwnProperty;function Ea(e,t,n){return t&&typeof t==`object`&&(n=t,t=void 0),Da(n)(ya(va(n).document().write(xa()(e,t,!0))))}function Da(e){let t={afterExit:[],beforeEnter:[],transforms:[],canContainEols:[`emphasis`,`fragment`,`heading`,`paragraph`,`strong`],enter:{autolink:o(Se),autolinkProtocol:E,autolinkEmail:E,atxHeading:o(M),blockQuote:o(A),characterEscape:E,characterReference:E,codeFenced:o(_e),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:o(_e,s),codeText:o(ve,s),codeTextData:E,data:E,codeFlowValue:E,definition:o(ye),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:o(j),hardBreakEscape:o(be),hardBreakTrailing:o(be),htmlFlow:o(xe,s),htmlFlowData:E,htmlText:o(xe,s),htmlTextData:E,image:o(N),label:s,link:o(Se),listItem:o(we),listItemValue:p,listOrdered:o(Ce,f),listUnordered:o(Ce),paragraph:o(Te),reference:ue,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:o(M),strong:o(Ee),thematicBreak:o(Oe)},exit:{atxHeading:l(),atxHeadingSequence:S,autolink:l(),autolinkEmail:ge,autolinkProtocol:he,blockQuote:l(),characterEscapeValue:D,characterReferenceMarkerHexadecimal:fe,characterReferenceMarkerNumeric:fe,characterReferenceValue:pe,characterReference:me,codeFenced:l(_),codeFencedFence:g,codeFencedFenceInfo:m,codeFencedFenceMeta:h,codeFlowValue:D,codeIndented:l(v),codeText:l(O),codeTextData:D,data:D,definition:l(),definitionDestinationString:x,definitionLabelString:y,definitionTitleString:b,emphasis:l(),hardBreakEscape:l(te),hardBreakTrailing:l(te),htmlFlow:l(ne),htmlFlowData:D,htmlText:l(re),htmlTextData:D,image:l(ae),label:se,labelText:oe,lineEnding:ee,link:l(ie),listItem:l(),listOrdered:l(),listUnordered:l(),paragraph:l(),referenceString:de,resourceDestinationString:k,resourceTitleString:ce,resource:le,setextHeading:l(T),setextHeadingLineSequence:w,setextHeadingText:C,strong:l(),thematicBreak:l()}};ka(t,(e||{}).mdastExtensions||[]);let n={};return r;function r(e){let r={type:`root`,children:[],position:void 0},o={stack:[r],tokenStack:[],config:t,enter:c,exit:u,buffer:s,resume:d,data:n},l=[],f=[],p=-1;for(;++p<e.length;)f.push(e[p]),(e[p][1].type===`listOrdered`||e[p][1].type===`listUnordered`)&&(e[p][0]===`enter`?l.push(f.length-1):a(f,l.pop()));for(e=f,p=-1;++p<e.length;){let n=t[e[p][0]];e[p][0]===`enter`&&t.beforeEnter.length>0&&i(t.beforeEnter,{...o,sliceSerialize:e[p][2].sliceSerialize},e[p][1]),Ta.call(n,e[p][1].type)&&n[e[p][1].type].call({...o,sliceSerialize:e[p][2].sliceSerialize},e[p][1]),e[p][0]===`exit`&&t.afterExit.length>0&&i(t.afterExit,{...o,sliceSerialize:e[p][2].sliceSerialize},e[p][1])}if(o.tokenStack.length>0){let e=o.tokenStack[o.tokenStack.length-1];(e[1]||ja).call(o,void 0,e[0])}for(r.position={start:Oa(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:Oa(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},p=-1;++p<t.transforms.length;)r=t.transforms[p](r)||r;return r}function i(e,t,n){let r=-1;for(;++r<e.length;)e[r].call(t,n)}function a(e,t){let n=e.length-1,r=t-1,i=-1,a=!1,o,s,c,l,u=[];for(;++r<=n;){let t=e[r];switch(t[1].type){case`listUnordered`:case`listOrdered`:case`blockQuote`:t[0]===`enter`?i++:i--,l=void 0;break;case`lineEndingBlank`:t[0]===`enter`&&(o&&!l&&!i&&!c&&(c=r),l=void 0);break;case`linePrefix`:case`listItemValue`:case`listItemMarker`:case`listItemPrefix`:case`listItemPrefixWhitespace`:break;default:l=void 0}if(!i&&t[0]===`enter`&&t[1].type===`listItemPrefix`||i===-1&&t[0]===`exit`&&(t[1].type===`listUnordered`||t[1].type===`listOrdered`)){if(o){let n=r;for(s=void 0;n--;){let t=e[n];if(t[1].type===`lineEnding`||t[1].type===`lineEndingBlank`){if(t[0]===`exit`)continue;s&&(e[s][1].type=`lineEndingBlank`,a=!0),t[1].type=`lineEnding`,s=n}else if(t[1].type!==`linePrefix`&&t[1].type!==`blockQuotePrefix`&&t[1].type!==`blockQuotePrefixWhitespace`&&t[1].type!==`blockQuoteMarker`&&t[1].type!==`listItemIndent`)break}c&&(!s||c<s)&&(o._spread=!0),o.end=Object.assign({},s?e[s][1].start:t[1].end),u.push({at:s||r,event:[`exit`,o,t[2]]})}if(t[1].type===`listItemPrefix`){let e={type:`listItem`,_spread:!1,start:Object.assign({},t[1].start),end:void 0};o=e,u.push({at:r,event:[`enter`,e,t[2]]}),c=void 0,l=!0}}}let d=e.splice(t),f=0;for(r=-1;++r<d.length;){for(;f<u.length&&u[f].at===t+r;)e.push(u[f++].event);e.push(d[r])}e[t][1]._spread=a}function o(e,t){return n;function n(n){c.call(this,e(n),n),t&&t.call(this,n)}}function s(){this.stack.push({type:`fragment`,children:[]})}function c(e,t,n){this.stack[this.stack.length-1].children.push(e),this.stack.push(e),this.tokenStack.push([t,n||void 0]),e.position={start:Oa(t.start),end:void 0}}function l(e){return t;function t(t){e&&e.call(this,t),u.call(this,t)}}function u(e,t){let n=this.stack.pop(),r=this.tokenStack.pop();if(!r)throw Error("Cannot close `"+e.type+"` ("+$t({start:e.start,end:e.end})+`): it’s not open`);r[0].type!==e.type&&(t?t.call(this,e,r[0]):(r[1]||ja).call(this,e,r[0])),n.position.end=Oa(e.end)}function d(){return In(this.stack.pop())}function f(){this.data.expectingFirstListItemValue=!0}function p(e){if(this.data.expectingFirstListItemValue){let t=this.stack[this.stack.length-2];t.start=Number.parseInt(this.sliceSerialize(e),10),this.data.expectingFirstListItemValue=void 0}}function m(){let e=this.resume(),t=this.stack[this.stack.length-1];t.lang=e}function h(){let e=this.resume(),t=this.stack[this.stack.length-1];t.meta=e}function g(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function _(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,``),this.data.flowCodeInside=void 0}function v(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e.replace(/(\r?\n|\r)$/g,``)}function y(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=Yn(this.sliceSerialize(e)).toLowerCase()}function b(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function x(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function S(e){let t=this.stack[this.stack.length-1];t.depth||=this.sliceSerialize(e).length}function C(){this.data.setextHeadingSlurpLineEnding=!0}function w(e){let t=this.stack[this.stack.length-1];t.depth=this.sliceSerialize(e).codePointAt(0)===61?1:2}function T(){this.data.setextHeadingSlurpLineEnding=void 0}function E(e){let t=this.stack[this.stack.length-1].children,n=t[t.length-1];(!n||n.type!==`text`)&&(n=De(),n.position={start:Oa(e.start),end:void 0},t.push(n)),this.stack.push(n)}function D(e){let t=this.stack.pop();t.value+=this.sliceSerialize(e),t.position.end=Oa(e.end)}function ee(e){let n=this.stack[this.stack.length-1];if(this.data.atHardBreak){let t=n.children[n.children.length-1];t.position.end=Oa(e.end),this.data.atHardBreak=void 0}else!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(n.type)&&(E.call(this,e),D.call(this,e))}function te(){this.data.atHardBreak=!0}function ne(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function re(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function O(){let e=this.resume(),t=this.stack[this.stack.length-1];t.value=e}function ie(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function ae(){let e=this.stack[this.stack.length-1];if(this.data.inReference){let t=this.data.referenceType||`shortcut`;e.type+=`Reference`,e.referenceType=t,delete e.url,delete e.title}else delete e.identifier,delete e.label;this.data.referenceType=void 0}function oe(e){let t=this.sliceSerialize(e),n=this.stack[this.stack.length-2];n.label=Ca(t),n.identifier=Yn(t).toLowerCase()}function se(){let e=this.stack[this.stack.length-1],t=this.resume(),n=this.stack[this.stack.length-1];this.data.inReference=!0,n.type===`link`?n.children=e.children:n.alt=t}function k(){let e=this.resume(),t=this.stack[this.stack.length-1];t.url=e}function ce(){let e=this.resume(),t=this.stack[this.stack.length-1];t.title=e}function le(){this.data.inReference=void 0}function ue(){this.data.referenceType=`collapsed`}function de(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.label=t,n.identifier=Yn(this.sliceSerialize(e)).toLowerCase(),this.data.referenceType=`full`}function fe(e){this.data.characterReferenceType=e.type}function pe(e){let t=this.sliceSerialize(e),n=this.data.characterReferenceType,r;n?(r=Jn(t,n===`characterReferenceMarkerNumeric`?10:16),this.data.characterReferenceType=void 0):r=Vn(t);let i=this.stack[this.stack.length-1];i.value+=r}function me(e){let t=this.stack.pop();t.position.end=Oa(e.end)}function he(e){D.call(this,e);let t=this.stack[this.stack.length-1];t.url=this.sliceSerialize(e)}function ge(e){D.call(this,e);let t=this.stack[this.stack.length-1];t.url=`mailto:`+this.sliceSerialize(e)}function A(){return{type:`blockquote`,children:[],position:void 0}}function _e(){return{type:`code`,lang:null,meta:null,value:``,position:void 0}}function ve(){return{type:`inlineCode`,value:``,position:void 0}}function ye(){return{type:`definition`,identifier:``,label:null,title:null,url:``,position:void 0}}function j(){return{type:`emphasis`,children:[],position:void 0}}function M(){return{type:`heading`,depth:0,children:[],position:void 0}}function be(){return{type:`break`,position:void 0}}function xe(){return{type:`html`,value:``,position:void 0}}function N(){return{type:`image`,title:null,url:``,alt:null,position:void 0}}function Se(){return{type:`link`,title:null,url:``,children:[],position:void 0}}function Ce(e){return{type:`list`,ordered:e.type===`listOrdered`,start:null,spread:e._spread,children:[],position:void 0}}function we(e){return{type:`listItem`,spread:e._spread,checked:null,children:[],position:void 0}}function Te(){return{type:`paragraph`,children:[],position:void 0}}function Ee(){return{type:`strong`,children:[],position:void 0}}function De(){return{type:`text`,value:``,position:void 0}}function Oe(){return{type:`thematicBreak`,position:void 0}}}function Oa(e){return{line:e.line,column:e.column,offset:e.offset}}function ka(e,t){let n=-1;for(;++n<t.length;){let r=t[n];Array.isArray(r)?ka(e,r):Aa(e,r)}}function Aa(e,t){let n;for(n in t)if(Ta.call(t,n))switch(n){case`canContainEols`:{let r=t[n];r&&e[n].push(...r);break}case`transforms`:{let r=t[n];r&&e[n].push(...r);break}case`afterExit`:case`beforeEnter`:{let r=t[n];r&&e[n].push(r);break}case`enter`:case`exit`:{let r=t[n];r&&Object.assign(e[n],r);break}}}function ja(e,t){throw Error(e?"Cannot close `"+e.type+"` ("+$t({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+$t({start:t.start,end:t.end})+`) is open`:"Cannot close document, a token (`"+t.type+"`, "+$t({start:t.start,end:t.end})+`) is still open`)}function Ma(e){let t=this;t.parser=n;function n(n){return Ea(n,{...t.data(`settings`),...e,extensions:t.data(`micromarkExtensions`)||[],mdastExtensions:t.data(`fromMarkdownExtensions`)||[]})}}function Na(e,t){let n={type:`element`,tagName:`blockquote`,properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function Pa(e,t){let n={type:`element`,tagName:`br`,properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:`text`,value:`
19
- `}]}function Fa(e,t){let n=t.value?t.value+`
20
- `:``,r={},i=t.lang?t.lang.split(/\s+/):[];i.length>0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function Ia(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function La(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Ra(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=or(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function za(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Ba(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function Va(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function Ha(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Va(e,t);let i={src:or(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function Ua(e,t){let n={src:or(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function Wa(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function Ga(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Va(e,t);let i={href:or(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Ka(e,t){let n={href:or(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function qa(e,t,n){let r=e.all(t),i=n?Ja(n):Ya(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s<r.length;){let e=r[s];(i||s!==0||e.type!==`element`||e.tagName!==`p`)&&o.push({type:`text`,value:`
21
- `}),e.type===`element`&&e.tagName===`p`&&!i?o.push(...e.children):o.push(e)}let c=r[r.length-1];c&&(i||c.type!==`element`||c.tagName!==`p`)&&o.push({type:`text`,value:`
22
- `});let l={type:`element`,tagName:`li`,properties:a,children:o};return e.patch(t,l),e.applyData(t,l)}function Ja(e){let t=!1;if(e.type===`list`){t=e.spread||!1;let n=e.children,r=-1;for(;!t&&++r<n.length;)t=Ya(n[r])}return t}function Ya(e){return e.spread??e.children.length>1}function Xa(e,t){let n={},r=e.all(t),i=-1;for(typeof t.start==`number`&&t.start!==1&&(n.start=t.start);++i<r.length;){let e=r[i];if(e.type===`element`&&e.tagName===`li`&&e.properties&&Array.isArray(e.properties.className)&&e.properties.className.includes(`task-list-item`)){n.className=[`contains-task-list`];break}}let a={type:`element`,tagName:t.ordered?`ol`:`ul`,properties:n,children:e.wrap(r,!0)};return e.patch(t,a),e.applyData(t,a)}function Za(e,t){let n={type:`element`,tagName:`p`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Qa(e,t){let n={type:`root`,children:e.wrap(e.all(t))};return e.patch(t,n),e.applyData(t,n)}function $a(e,t){let n={type:`element`,tagName:`strong`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function eo(e,t){let n=e.all(t),r=n.shift(),i=[];if(r){let n={type:`element`,tagName:`thead`,properties:{},children:e.wrap([r],!0)};e.patch(t.children[0],n),i.push(n)}if(n.length>0){let r={type:`element`,tagName:`tbody`,properties:{},children:e.wrap(n,!0)},a=Xt(t.children[1]),o=Yt(t.children[t.children.length-1]);a&&o&&(r.position={start:a,end:o}),i.push(r)}let a={type:`element`,tagName:`table`,properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function to(e,t,n){let r=n?n.children:void 0,i=(r?r.indexOf(t):1)===0?`th`:`td`,a=n&&n.type===`table`?n.align:void 0,o=a?a.length:t.children.length,s=-1,c=[];for(;++s<o;){let n=t.children[s],r={},o=a?a[s]:void 0;o&&(r.align=o);let l={type:`element`,tagName:i,properties:r,children:[]};n&&(l.children=e.all(n),e.patch(n,l),l=e.applyData(n,l)),c.push(l)}let l={type:`element`,tagName:`tr`,properties:{},children:e.wrap(c,!0)};return e.patch(t,l),e.applyData(t,l)}function no(e,t){let n={type:`element`,tagName:`td`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}var ro=9,io=32;function ao(e){let t=String(e),n=/\r?\n|\r/g,r=n.exec(t),i=0,a=[];for(;r;)a.push(oo(t.slice(i,r.index),i>0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return a.push(oo(t.slice(i),i>0,!1)),a.join(``)}function oo(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===ro||t===io;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===ro||t===io;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function so(e,t){let n={type:`text`,value:ao(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function co(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var lo={blockquote:Na,break:Pa,code:Fa,delete:Ia,emphasis:La,footnoteReference:Ra,heading:za,html:Ba,imageReference:Ha,image:Ua,inlineCode:Wa,linkReference:Ga,link:Ka,listItem:qa,list:Xa,paragraph:Za,root:Qa,strong:$a,table:eo,tableCell:no,tableRow:to,text:so,thematicBreak:co,toml:uo,yaml:uo,definition:uo,footnoteDefinition:uo};function uo(){}var{defineProperty:fo}=Object,po=typeof self==`object`?self:globalThis,mo=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new po[e](t)},ho=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o){let i=r(t),a=r(n);i===`__proto__`?fo(e,i,{value:a,configurable:!0,enumerable:!0,writable:!0}):e[i]=a}return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(typeof po[e]==`function`?mo(e,t):Error(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}case`-0`:return-0}return n(mo(a,o),i)};return r},go=e=>ho(new Map,e)(0),_o=``,{toString:vo}={},{keys:yo,is:bo}=Object,xo=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=vo.call(e).slice(8,-1);switch(n){case`Array`:return[1,_o];case`Object`:return[2,_o];case`Date`:return[3,_o];case`RegExp`:return[4,_o];case`Map`:return[5,_o];case`Set`:return[6,_o];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},So=([e,t])=>e===0&&(t===`function`||t===`symbol`),Co=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=o=>{if(n.has(o))return n.get(o);let[s,c]=xo(o);switch(s){case 0:{let t=o;switch(c){case`bigint`:s=8,t=o.toString();break;case`number`:if(!o&&bo(o,-0))return r.push([`-0`])-1;break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+c);t=null;break;case`undefined`:return i([-1],o)}return i([s,t],o)}case 1:{if(c){let e=o;return c===`DataView`?e=new Uint8Array(o.buffer):c===`ArrayBuffer`&&(e=new Uint8Array(o)),i([c,[...e]],o)}let e=[],t=i([s,e],o);for(let t of o)e.push(a(t));return t}case 2:{if(c)switch(c){case`BigInt`:return i([c,o.toString()],o);case`Boolean`:case`Number`:case`String`:return i([c,o.valueOf()],o)}if(t&&`toJSON`in o)return a(o.toJSON());let n=[],r=i([s,n],o);for(let t of yo(o))(e||!So(xo(o[t])))&&n.push([a(t),a(o[t])]);return r}case 3:return i([s,isNaN(o.getTime())?_o:o.toISOString()],o);case 4:{let{source:e,flags:t}=o;return i([s,{source:e,flags:t}],o)}case 5:{let t=[],n=i([s,t],o);for(let[n,r]of o)(e||!(So(xo(n))||So(xo(r))))&&t.push([a(n),a(r)]);return n}case 6:{let t=[],n=i([s,t],o);for(let n of o)(e||!So(xo(n)))&&t.push(a(n));return n}}let{message:l}=o;return i([s,{name:c,message:l}],o)};return a},wo=(e,{json:t,lossy:n}={})=>{let r=[];return Co(!(t||n),!!t,new Map,r)(e),r},To=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?go(wo(e,t)):structuredClone(e):(e,t)=>go(wo(e,t));function Eo(e,t){let n=[{type:`text`,value:`↩`}];return t>1&&n.push({type:`element`,tagName:`sup`,properties:{},children:[{type:`text`,value:String(t)}]}),n}function Do(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function Oo(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||Eo,r=e.options.footnoteBackLabel||Do,i=e.options.footnoteLabel||`Footnotes`,a=e.options.footnoteLabelTagName||`h2`,o=e.options.footnoteLabelProperties||{className:[`sr-only`]},s=[],c=-1;for(;++c<e.footnoteOrder.length;){let i=e.footnoteById.get(e.footnoteOrder[c]);if(!i)continue;let a=e.all(i),o=String(i.identifier).toUpperCase(),l=or(o.toLowerCase()),u=0,d=[],f=e.footnoteCounts.get(o);for(;f!==void 0&&++u<=f;){d.length>0&&d.push({type:`text`,value:` `});let e=typeof n==`string`?n:n(c,u);typeof e==`string`&&(e={type:`text`,value:e}),d.push({type:`element`,tagName:`a`,properties:{href:`#`+t+`fnref-`+l+(u>1?`-`+u:``),dataFootnoteBackref:``,ariaLabel:typeof r==`string`?r:r(c,u),className:[`data-footnote-backref`]},children:Array.isArray(e)?e:[e]})}let p=a[a.length-1];if(p&&p.type===`element`&&p.tagName===`p`){let e=p.children[p.children.length-1];e&&e.type===`text`?e.value+=` `:p.children.push({type:`text`,value:` `}),p.children.push(...d)}else a.push(...d);let m={type:`element`,tagName:`li`,properties:{id:t+`fn-`+l},children:e.wrap(a,!0)};e.patch(i,m),s.push(m)}if(s.length!==0)return{type:`element`,tagName:`section`,properties:{dataFootnotes:!0,className:[`footnotes`]},children:[{type:`element`,tagName:a,properties:{...To(o),id:`footnote-label`},children:[{type:`text`,value:i}]},{type:`text`,value:`
23
- `},{type:`element`,tagName:`ol`,properties:{},children:e.wrap(s,!0)},{type:`text`,value:`
24
- `}]}}var ko=(function(e){if(e==null)return Po;if(typeof e==`function`)return No(e);if(typeof e==`object`)return Array.isArray(e)?Ao(e):jo(e);if(typeof e==`string`)return Mo(e);throw Error(`Expected function, string, or object as test`)});function Ao(e){let t=[],n=-1;for(;++n<e.length;)t[n]=ko(e[n]);return No(r);function r(...e){let n=-1;for(;++n<t.length;)if(t[n].apply(this,e))return!0;return!1}}function jo(e){let t=e;return No(n);function n(n){let r=n,i;for(i in e)if(r[i]!==t[i])return!1;return!0}}function Mo(e){return No(t);function t(t){return t&&t.type===e}}function No(e){return t;function t(t,n,r){return!!(Fo(t)&&e.call(this,t,typeof n==`number`?n:void 0,r||void 0))}}function Po(){return!0}function Fo(e){return typeof e==`object`&&!!e&&`type`in e}function Io(e){return e}var Lo=[];function Ro(e,t,n,r){let i;typeof t==`function`&&typeof n!=`function`?(r=n,n=t):i=t;let a=ko(i),o=r?-1:1;s(e,void 0,[])();function s(e,i,c){let l=e&&typeof e==`object`?e:{};if(typeof l.type==`string`){let t=typeof l.tagName==`string`?l.tagName:typeof l.name==`string`?l.name:void 0;Object.defineProperty(u,"name",{value:`node (`+Io(e.type+(t?`<`+t+`>`:``))+`)`})}return u;function u(){let l=Lo,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=zo(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d<t.children.length;){let e=t.children[d];if(u=s(e,d,f)(),u[0]===!1)return u;d=typeof u[1]==`number`?u[1]:d+o}}return l}}}function zo(e){return Array.isArray(e)?e:typeof e==`number`?[!0,e]:e==null?Lo:[e]}function Bo(e,t,n,r){let i,a,o;typeof t==`function`&&typeof n!=`function`?(a=void 0,o=t,i=n):(a=t,o=n,i=r),Ro(e,a,s,i);function s(e,t){let n=t[t.length-1],r=n?n.children.indexOf(e):void 0;return o(e,r,n)}}var U={}.hasOwnProperty,W={};function Vo(e,t){let n=t||W,r=new Map,i=new Map,a={all:s,applyData:Uo,definitionById:r,footnoteById:i,footnoteCounts:new Map,footnoteOrder:[],handlers:{...lo,...n.handlers},one:o,options:n,patch:Ho,wrap:Go};return Bo(e,function(e){if(e.type===`definition`||e.type===`footnoteDefinition`){let t=e.type===`definition`?r:i,n=String(e.identifier).toUpperCase();t.has(n)||t.set(n,e)}}),a;function o(e,t){let n=e.type,r=a.handlers[n];if(U.call(a.handlers,n)&&r)return r(a,e,t);if(a.options.passThrough&&a.options.passThrough.includes(n)){if(`children`in e){let{children:t,...n}=e,r=To(n);return r.children=a.all(e),r}return To(e)}return(a.options.unknownHandler||Wo)(a,e,t)}function s(e){let t=[];if(`children`in e){let n=e.children,r=-1;for(;++r<n.length;){let i=a.one(n[r],e);if(i){if(r&&n[r-1].type===`break`&&(!Array.isArray(i)&&i.type===`text`&&(i.value=Ko(i.value)),!Array.isArray(i)&&i.type===`element`)){let e=i.children[0];e&&e.type===`text`&&(e.value=Ko(e.value))}Array.isArray(i)?t.push(...i):t.push(i)}}}return t}}function Ho(e,t){e.position&&(t.position=Qt(e))}function Uo(e,t){let n=t;if(e&&e.data){let t=e.data.hName,r=e.data.hChildren,i=e.data.hProperties;typeof t==`string`&&(n.type===`element`?n.tagName=t:n={type:`element`,tagName:t,properties:{},children:`children`in n?n.children:[n]}),n.type===`element`&&i&&Object.assign(n.properties,To(i)),`children`in n&&n.children&&r!=null&&(n.children=r)}return n}function Wo(e,t){let n=t.data||{},r=`value`in t&&!(U.call(n,`hProperties`)||U.call(n,`hChildren`))?{type:`text`,value:t.value}:{type:`element`,tagName:`div`,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Go(e,t){let n=[],r=-1;for(t&&n.push({type:`text`,value:`
25
- `});++r<e.length;)r&&n.push({type:`text`,value:`
26
- `}),n.push(e[r]);return t&&e.length>0&&n.push({type:`text`,value:`
27
- `}),n}function Ko(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function qo(e,t){let n=Vo(e,t),r=n.one(e,void 0),i=Oo(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:`
28
- `},i)),a}function Jo(e,t){return e&&`run`in e?async function(n,r){let i=qo(n,{file:r,...t});await e.run(i,r)}:function(n,r){return qo(n,{file:r,...e||t})}}function Yo(e){if(e)throw e}var Xo=o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});f<p;++f)if(t=arguments[f],t!=null)for(n in t)r=l(d,n),i=l(t,n),d!==i&&(m&&i&&(s(i)||(a=o(i)))?(a?(a=!1,u=r&&o(r)?r:[]):u=r&&s(r)?r:{},c(d,{name:n,newValue:e(m,u,i)})):i!==void 0&&c(d,{name:n,newValue:i}));return d}}));function Zo(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function Qo(){let e=[],t={run:n,use:r};return t;function n(...t){let n=-1,r=t.pop();if(typeof r!=`function`)throw TypeError(`Expected function as last argument, not `+r);i(null,...t);function i(a,...o){let s=e[++n],c=-1;if(a)r(a);else{for(;++c<t.length;)(o[c]===null||o[c]===void 0)&&(o[c]=t[c]);t=o,s?$o(s,i)(...o):r(null,...o)}}}function r(n){if(typeof n!=`function`)throw TypeError("Expected `middelware` to be a function, not "+n);return e.push(n),t}}function $o(e,t){let n;return r;function r(...t){let r=e.length>t.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var es={basename:ts,dirname:ns,extname:rs,join:is,sep:`/`};function ts(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);ss(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function ns(e){if(ss(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function rs(e){ss(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}}else n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function is(...e){let t=-1,n;for(;++t<e.length;)ss(e[t]),e[t]&&(n=n===void 0?e[t]:n+`/`+e[t]);return n===void 0?`.`:as(n)}function as(e){ss(e);let t=e.codePointAt(0)===47,n=os(e,!t);return n.length===0&&!t&&(n=`.`),n.length>0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function os(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o<e.length)s=e.codePointAt(o);else if(s===47)break;else s=47;if(s===47){if(i!==o-1&&a!==1){if(i!==o-1&&a===2){if(n.length<2||r!==2||n.codePointAt(n.length-1)!==46||n.codePointAt(n.length-2)!==46){if(n.length>2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function ss(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var cs={cwd:ls};function ls(){return`/`}function us(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function ds(e){if(typeof e==`string`)e=new URL(e);else if(!us(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return fs(e)}function fs(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n<t.length;)if(t.codePointAt(n)===37&&t.codePointAt(n+1)===50){let e=t.codePointAt(n+2);if(e===70||e===102){let e=TypeError(`File URL path must not include encoded / characters`);throw e.code=`ERR_INVALID_FILE_URL_PATH`,e}}return decodeURIComponent(t)}var ps=[`history`,`path`,`basename`,`stem`,`extname`,`dirname`],ms=class{constructor(e){let t;t=e?us(e)?{path:e}:typeof e==`string`||vs(e)?{value:e}:e:{},this.cwd=`cwd`in t?``:cs.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let n=-1;for(;++n<ps.length;){let e=ps[n];e in t&&t[e]!==void 0&&t[e]!==null&&(this[e]=e===`history`?[...t[e]]:t[e])}let r;for(r in t)ps.includes(r)||(this[r]=t[r])}get basename(){return typeof this.path==`string`?es.basename(this.path):void 0}set basename(e){gs(e,`basename`),hs(e,`basename`),this.path=es.join(this.dirname||``,e)}get dirname(){return typeof this.path==`string`?es.dirname(this.path):void 0}set dirname(e){_s(this.basename,`dirname`),this.path=es.join(e||``,this.basename)}get extname(){return typeof this.path==`string`?es.extname(this.path):void 0}set extname(e){if(hs(e,`extname`),_s(this.dirname,`extname`),e){if(e.codePointAt(0)!==46)throw Error("`extname` must start with `.`");if(e.includes(`.`,1))throw Error("`extname` cannot contain multiple dots")}this.path=es.join(this.dirname,this.stem+(e||``))}get path(){return this.history[this.history.length-1]}set path(e){us(e)&&(e=ds(e)),gs(e,`path`),this.path!==e&&this.history.push(e)}get stem(){return typeof this.path==`string`?es.basename(this.path,this.extname):void 0}set stem(e){gs(e,`stem`),hs(e,`stem`),this.path=es.join(this.dirname||``,e+(this.extname||``))}fail(e,t,n){let r=this.message(e,t,n);throw r.fatal=!0,r}info(e,t,n){let r=this.message(e,t,n);return r.fatal=void 0,r}message(e,t,n){let r=new rn(e,t,n);return this.path&&(r.name=this.path+`:`+r.name,r.file=this.path),r.fatal=!1,this.messages.push(r),r}toString(e){return this.value===void 0?``:typeof this.value==`string`?this.value:new TextDecoder(e||void 0).decode(this.value)}};function hs(e,t){if(e&&e.includes(es.sep))throw Error("`"+t+"` cannot be a path: did not expect `"+es.sep+"`")}function gs(e,t){if(!e)throw Error("`"+t+"` cannot be empty")}function _s(e,t){if(!e)throw Error("Setting `"+t+"` requires `path` to be set too")}function vs(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var ys=(function(e){let t=this.constructor.prototype,n=t[e],r=function(){return n.apply(r,arguments)};return Object.setPrototypeOf(r,t),r}),bs=l(Xo(),1),xs={}.hasOwnProperty,Ss=new class e extends ys{constructor(){super(`copy`),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=Qo()}copy(){let t=new e,n=-1;for(;++n<this.attachers.length;){let e=this.attachers[n];t.use(...e)}return t.data((0,bs.default)(!0,{},this.namespace)),t}data(e,t){return typeof e==`string`?arguments.length===2?(Ts(`data`,this.frozen),this.namespace[e]=t,this):xs.call(this.namespace,e)&&this.namespace[e]||void 0:e?(Ts(`data`,this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;let e=this;for(;++this.freezeIndex<this.attachers.length;){let[t,...n]=this.attachers[this.freezeIndex];if(n[0]===!1)continue;n[0]===!0&&(n[0]=void 0);let r=t.call(e,...n);typeof r==`function`&&this.transformers.use(r)}return this.frozen=!0,this.freezeIndex=1/0,this}parse(e){this.freeze();let t=Os(e),n=this.parser||this.Parser;return Cs(`parse`,n),n(String(t),t)}process(e,t){let n=this;return this.freeze(),Cs(`process`,this.parser||this.Parser),ws(`process`,this.compiler||this.Compiler),t?r(void 0,t):new Promise(r);function r(r,i){let a=Os(e),o=n.parse(a);n.run(o,a,function(e,t,r){if(e||!t||!r)return s(e);let i=t,a=n.stringify(i,r);As(a)?r.value=a:r.result=a,s(e,r)});function s(e,n){e||!n?i(e):r?r(n):t(void 0,n)}}}processSync(e){let t=!1,n;return this.freeze(),Cs(`processSync`,this.parser||this.Parser),ws(`processSync`,this.compiler||this.Compiler),this.process(e,r),Ds(`processSync`,`process`,t),n;function r(e,r){t=!0,Yo(e),n=r}}run(e,t,n){Es(e),this.freeze();let r=this.transformers;return!n&&typeof t==`function`&&(n=t,t=void 0),n?i(void 0,n):new Promise(i);function i(i,a){let o=Os(t);r.run(e,o,s);function s(t,r,o){let s=r||e;t?a(t):i?i(s):n(void 0,s,o)}}}runSync(e,t){let n=!1,r;return this.run(e,t,i),Ds(`runSync`,`run`,n),r;function i(e,t){Yo(e),r=t,n=!0}}stringify(e,t){this.freeze();let n=Os(t),r=this.compiler||this.Compiler;return ws(`stringify`,r),Es(e),r(e,n)}use(e,...t){let n=this.attachers,r=this.namespace;if(Ts(`use`,this.frozen),e!=null){if(typeof e==`function`)s(e,t);else if(typeof e==`object`)Array.isArray(e)?o(e):a(e);else throw TypeError("Expected usable value, not `"+e+"`")}return this;function i(e){if(typeof e==`function`)s(e,[]);else if(typeof e==`object`){if(Array.isArray(e)){let[t,...n]=e;s(t,n)}else a(e)}else throw TypeError("Expected usable value, not `"+e+"`")}function a(e){if(!(`plugins`in e)&&!(`settings`in e))throw Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");o(e.plugins),e.settings&&(r.settings=(0,bs.default)(!0,r.settings,e.settings))}function o(e){let t=-1;if(e!=null){if(Array.isArray(e))for(;++t<e.length;){let n=e[t];i(n)}else throw TypeError("Expected a list of plugins, not `"+e+"`")}}function s(e,t){let r=-1,i=-1;for(;++r<n.length;)if(n[r][0]===e){i=r;break}if(i===-1)n.push([e,...t]);else if(t.length>0){let[r,...a]=t,o=n[i][1];Zo(o)&&Zo(r)&&(r=(0,bs.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function Cs(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function ws(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function Ts(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Es(e){if(!Zo(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function Ds(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function Os(e){return ks(e)?e:new ms(e)}function ks(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function As(e){return typeof e==`string`||js(e)}function js(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var Ms=[],Ns={allowDangerousHtml:!0},Ps=/^(https?|ircs?|mailto|xmpp)$/i,Fs=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function Is(e){let t=Ls(e),n=Rs(e);return zs(t.runSync(t.parse(n),n),e)}function Ls(e){let t=e.rehypePlugins||Ms,n=e.remarkPlugins||Ms,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Ns}:Ns;return Ss().use(Ma).use(n).use(Jo,r).use(t)}function Rs(e){let t=e.children||``,n=new ms;return typeof t==`string`?n.value=t:``+t,n}function zs(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Bs;for(let e of Fs)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return Bo(e,l),fn(e,{Fragment:O.Fragment,components:i,ignoreInvalidStyle:!0,jsx:O.jsx,jsxs:O.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in Pn)if(Object.hasOwn(Pn,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=Pn[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Bs(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||Ps.test(e.slice(0,t))?e:``}function Vs(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function Hs(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function Us(e,t,n){let r=ko((n||{}).ignore||[]),i=Ws(t),a=-1;for(;++a<i.length;)Ro(e,`text`,o);function o(e,t){let n=-1,i;for(;++n<t.length;){let e=t[n],a=i?i.children:void 0;if(r(e,a?a.indexOf(e):void 0,i))return;i=e}if(i)return s(e,t)}function s(e,t){let n=t[t.length-1],r=i[a][0],o=i[a][1],s=0,c=n.children.indexOf(e),l=!1,u=[];r.lastIndex=0;let d=r.exec(e.value);for(;d;){let n=d.index,i={index:d.index,input:d.input,stack:[...t,e]},a=o(...d,i);if(typeof a==`string`&&(a=a.length>0?{type:`text`,value:a}:void 0),a===!1)r.lastIndex=n+1;else{if(s!==n&&f({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a))for(let e of a)f(e);else a&&f(a);s=n+d[0].length,l=!0}if(!r.global)break;d=r.exec(e.value)}return l?(s<e.value.length&&f({type:`text`,value:e.value.slice(s)}),n.children.splice(c,1,...u)):u=[e],c+u.length;function f(e){let t=u[u.length-1];t&&t.type===`text`&&e.type===`text`?t.value+=e.value:u.push(e)}}}function Ws(e){if(!Array.isArray(e))throw TypeError(`Expected find and replace tuple or list of tuples`);let t=[],n=!e[0]||Array.isArray(e[0])?e:[e],r=-1;for(;++r<n.length;){let e=n[r];t.push([Gs(e[0]),Ks(e[1])])}return t}function Gs(e){return typeof e==`string`?new RegExp(Hs(e),`g`):e}function Ks(e){return typeof e==`function`?e:function(){return e}}var qs=`phrasing`,Js=[`autolink`,`link`,`image`,`label`];function Ys(){return{transforms:[rc],enter:{literalAutolink:Zs,literalAutolinkEmail:Qs,literalAutolinkHttp:Qs,literalAutolinkWww:Qs},exit:{literalAutolink:nc,literalAutolinkEmail:tc,literalAutolinkHttp:$s,literalAutolinkWww:ec}}}function Xs(){return{unsafe:[{character:`@`,before:`[+\\-.\\w]`,after:`[\\-.\\w]`,inConstruct:qs,notInConstruct:Js},{character:`.`,before:`[Ww]`,after:`[\\-.\\w]`,inConstruct:qs,notInConstruct:Js},{character:`:`,before:`[ps]`,after:`\\/`,inConstruct:qs,notInConstruct:Js}]}}function Zs(e){this.enter({type:`link`,title:null,url:``,children:[]},e)}function Qs(e){this.config.enter.autolinkProtocol.call(this,e)}function $s(e){this.config.exit.autolinkProtocol.call(this,e)}function ec(e){this.config.exit.data.call(this,e);let t=this.stack[this.stack.length-1];t.type,t.url=`http://`+this.sliceSerialize(e)}function tc(e){this.config.exit.autolinkEmail.call(this,e)}function nc(e){this.exit(e)}function rc(e){Us(e,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,ic],[/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu,ac]],{ignore:[`link`,`linkReference`]})}function ic(e,t,n,r,i){let a=``;if(!cc(i)||(/^w/i.test(t)&&(n=t+n,t=``,a=`http://`),!oc(n)))return!1;let o=sc(n+r);if(!o[0])return!1;let s={type:`link`,title:null,url:a+t+o[0],children:[{type:`text`,value:t+o[0]}]};return o[1]?[s,{type:`text`,value:o[1]}]:s}function ac(e,t,n,r){return!cc(r,!0)||/[-\d_]$/.test(n)?!1:{type:`link`,title:null,url:`mailto:`+t+`@`+n,children:[{type:`text`,value:t+`@`+n}]}}function oc(e){let t=e.split(`.`);return!(t.length<2||t[t.length-1]&&(/_/.test(t[t.length-1])||!/[a-zA-Z\d]/.test(t[t.length-1]))||t[t.length-2]&&(/_/.test(t[t.length-2])||!/[a-zA-Z\d]/.test(t[t.length-2])))}function sc(e){let t=/[!"&'),.:;<>?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=Vs(e,`(`),a=Vs(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function cc(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||ir(n)||rr(n))&&(!t||n!==47)}vc.peek=_c;function lc(){this.buffer()}function uc(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function dc(){this.buffer()}function fc(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function pc(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Yn(this.sliceSerialize(e)).toLowerCase(),n.label=t}function mc(e){this.exit(e)}function hc(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Yn(this.sliceSerialize(e)).toLowerCase(),n.label=t}function gc(e){this.exit(e)}function _c(){return`[`}function vc(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function yc(){return{enter:{gfmFootnoteCallString:lc,gfmFootnoteCall:uc,gfmFootnoteDefinitionLabelString:dc,gfmFootnoteDefinition:fc},exit:{gfmFootnoteCallString:pc,gfmFootnoteCall:mc,gfmFootnoteDefinitionLabelString:hc,gfmFootnoteDefinition:gc}}}function bc(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:vc},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?`
29
- `:` `)+r.indentLines(r.containerFlow(e,a.current()),t?Sc:xc))),s(),o}}function xc(e,t,n){return t===0?e:Sc(e,t,n)}function Sc(e,t,n){return(n?``:` `)+e}var Cc=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];Oc.attention=kc,Oc.peek=Ac;function wc(){return{canContainEols:[`delete`],enter:{strikethrough:Ec},exit:{strikethrough:Dc}}}function Tc(){return{handlers:{delete:Oc},unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:Cc}]}}function Ec(e){this.enter({type:`delete`,children:[],position:void 0},e)}function Dc(e){this.exit(e)}function Oc(e,t,n,r){let i=n.createTracker(r),a=n.stack.includes(`strikethrough`)?`~`:`~~`,o=n.enter(`strikethrough`),s=i.move(a);return s+=n.containerPhrasing(e,{...i.current(),before:s,after:`~`}),s+=i.move(a),o(),s}function kc(){return{construct:`strikethrough`,markers:[`~`],sizes:[2,1]}}function Ac(){return`~`}function jc(e){return e.length}function Mc(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||jc,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++u<e.length;){let t=[],r=[],a=-1;for(e[u].length>l&&(l=e[u].length);++a<e[u].length;){let o=Nc(e[u][a]);if(n.alignDelimiters!==!1){let e=i(o);r[a]=e,(c[a]===void 0||e>c[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++d<l;)a[d]=Pc(r[d]);else{let e=Pc(r);for(;++d<l;)a[d]=e}d=-1;let f=[],p=[];for(;++d<l;){let e=a[d],t=``,r=``;e===99?(t=`:`,r=`:`):e===108?t=`:`:e===114&&(r=`:`);let i=n.alignDelimiters===!1?1:Math.max(1,c[d]-t.length-r.length),o=t+`-`.repeat(i)+r;n.alignDelimiters!==!1&&(i=t.length+i+r.length,i>c[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u<o.length;){let e=o[u],t=s[u];d=-1;let r=[];for(;++d<l;){let i=e[d]||``,o=``,s=``;if(n.alignDelimiters!==!1){let e=c[d]-(t[d]||0),n=a[d];n===114?o=` `.repeat(e):n===99?e%2?(o=` `.repeat(e/2+.5),s=` `.repeat(e/2-.5)):(o=` `.repeat(e/2),s=o):s=` `.repeat(e)}n.delimiterStart!==!1&&!d&&r.push(`|`),n.padding!==!1&&(n.alignDelimiters!==!1||i!==``)&&(n.delimiterStart!==!1||d)&&r.push(` `),n.alignDelimiters!==!1&&r.push(o),r.push(i),n.alignDelimiters!==!1&&r.push(s),n.padding!==!1&&r.push(` `),(n.delimiterEnd!==!1||d!==l-1)&&r.push(`|`)}m.push(n.delimiterEnd===!1?r.join(``).replace(/ +$/,``):r.join(``))}return m.join(`
30
- `)}function Nc(e){return e==null?``:String(e)}function Pc(e){let t=typeof e==`string`?e.codePointAt(0):0;return t===67||t===99?99:t===76||t===108?108:t===82||t===114?114:0}var Fc=ko([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function Ic(e,t,n,r){let i=n.enter(`blockquote`),a=n.createTracker(r);a.move(`> `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),Lc);return i(),o}function Lc(e,t,n){return`>`+(n?``:` `)+e}function Rc(e,t){return zc(e,t.inConstruct,!0)&&!zc(e,t.notInConstruct,!1)}function zc(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++r<t.length;)if(e.includes(t[r]))return!0;return!1}function Bc(e,t,n,r){let i=-1;for(;++i<n.unsafe.length;){let e=n.unsafe[i];if(e.character===`
31
- `&&!e.before&&!e.after&&Rc(n.stack,e))return/[\t ]/.test(r.before)?``:` `}return`\\
32
- `}function Vc(e,t){let n=String(e),r=n.indexOf(t),i=r,a=0,o=0;if(typeof t!=`string`)throw TypeError(`Expected substring`);for(;r!==-1;)r===i?++a>o&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function Hc(e,t){return!(t.options.fences!==!1||!e.value||e.lang||!/[^\n\r ]/.test(e.value)||/^[\t ]*(?:[\n\r]|$)|(?:^|[\n\r])[\t ]*$/.test(e.value))}function Uc(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function Wc(e,t,n,r){let i=Uc(n),a=e.value||``;if(Hc(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,Gc);return e(),t}let o=n.createTracker(r),s=i.repeat(Math.max(Vc(a,i)+1,3)),c=n.enter(`codeFenced`),l=i==="`"?`GraveAccent`:`Tilde`,u=o.move(s);if(e.lang){let t=n.enter(`codeFencedLang${l}`);u+=o.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...o.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${l}`);u+=o.move(` `),u+=o.move(n.safe(e.meta,{before:u,after:`
33
- `,encode:["`"],...o.current()})),t()}return u+=o.move(`
34
- `),a&&(u+=o.move(a+`
35
- `)),u+=o.move(s),c(),u}function Gc(e,t,n){return(n?``:` `)+e}function Kc(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function qc(e,t,n,r){let i=Kc(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`
36
- `,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function Jc(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}Yc.attention=Xc,Yc.peek=Zc;function Yc(e,t,n,r){let i=n.enter(`phrasing`),a=n.containerPhrasing({type:`root`,children:[e]},r);return i(),a}function Xc(e,t){return{construct:`emphasis`,markers:Jc(t)===`*`?[`*`,`_`]:[`_`,`*`],sizes:[1]}}function Zc(e,t,n){return n.options.emphasis||`*`}function Qc(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function $c(e,t){let n=!1;return Bo(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&In(e)&&(t.options.setext||n))}function el(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if($c(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:`
37
- `,after:`
38
- `});return r(),t(),o+`
39
- `+(i===1?`=`:`-`).repeat(o.length-(Math.max(o.lastIndexOf(`\r`),o.lastIndexOf(`
40
- `))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:`
41
- `,...a.current()}),u=l.charCodeAt(0);return(u===9||u===32)&&(l=Qc(u)+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}tl.peek=nl;function tl(e){return e.value||``}function nl(){return`<`}rl.peek=il;function rl(e,t,n,r){let i=Kc(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function il(){return`!`}al.peek=ol;function al(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=u.filter(function(e){return e!==`phrasing`}),o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function ol(){return`!`}sl.peek=cl;function sl(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^\n\r ]/.test(r)&&(/^[\n\r ]/.test(r)&&/[\n\r ]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a<n.unsafe.length;){let e=n.unsafe[a],t=n.compilePattern(e);if(!e.atBreak)continue;let i;for(;i=t.exec(r);){let e=i.index;r.charCodeAt(e)===10&&r.charCodeAt(e-1)===13&&e--,r=r.slice(0,e)+` `+r.slice(i.index+1)}}return i+r+i}function cl(){return"`"}function ll(e,t){let n=In(e);return!(t.options.resourceLink||!e.url||e.title||!e.children||e.children.length!==1||e.children[0].type!==`text`||n!==e.url&&`mailto:`+n!==e.url||!/^[a-z][+\-.a-z]+:/i.test(e.url)||/[\0- <>\u007F]/.test(e.url))}ul.peek=dl;function ul(e,t,n,r){let i=Kc(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r);if(ll(e,n)){let t=n.stack;n.stack=t.filter(function(e){return e!==`phrasing`});let r=n.enter(`autolink`),i=o.move(`<`);return i+=o.move(n.containerPhrasing(e,{before:i,after:`>`,...o.current()})),i+=o.move(`>`),r(),n.stack=t,i}let s=n.enter(`link`),c=n.enter(`label`),l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function dl(e,t,n){return ll(e,n)?`<`:`[`}fl.peek=pl;function fl(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=u.filter(function(e){return e!==`phrasing`}),o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function pl(){return`[`}function ml(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function hl(e){let t=ml(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function gl(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function _l(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function vl(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?gl(n):ml(n),s=e.ordered?o===`.`?`)`:`.`:hl(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),_l(n)===o&&t){let t=-1;for(;++t<e.children.length;){let n=e.children[t];if(n&&n.type===`listItem`&&n.children&&n.children[0]&&n.children[0].type===`thematicBreak`){c=!0;break}}}}c&&(o=s),n.bulletCurrent=o;let l=n.containerFlow(e,r);return n.bulletLastUsed=o,n.bulletCurrent=a,i(),l}function yl(e){let t=e.options.listItemIndent||`one`;if(t!==`tab`&&t!==`one`&&t!==`mixed`)throw Error("Cannot serialize items with `"+t+"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");return t}function bl(e,t,n,r){let i=yl(n),a=n.bulletCurrent||ml(n);t&&t.type===`list`&&t.ordered&&(a=(typeof t.start==`number`&&t.start>-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function xl(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}function Sl(e,t,n,r){if(!e.children.some(function(e){return Fc(e)}))return n.containerFlow(e,r);let i=n.enter(`phrasing`),a=n.containerPhrasing(e,r);return i(),a}function Cl(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}wl.attention=Tl,wl.peek=El;function wl(e,t,n,r){let i=n.enter(`phrasing`),a=n.containerPhrasing({type:`root`,children:[e]},r);return i(),a}function Tl(e,t){return{construct:`strong`,markers:Cl(t)===`*`?[`*`,`_`]:[`_`,`*`],sizes:[2]}}function El(e,t,n){return n.options.strong||`*`}function Dl(e,t,n,r){let i=t?t.children:[],a=i.indexOf(e);return n.safe(e.value,{...r,afterNode:i[a+1],beforeNode:i[a-1]})}function Ol(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function kl(e,t,n){let r=(_l(n)+(n.options.ruleSpaces?` `:``)).repeat(Ol(n));return n.options.ruleSpaces?r.slice(0,-1):r}var Al={blockquote:Ic,break:Bc,code:Wc,definition:qc,emphasis:Yc,hardBreak:Bc,heading:el,html:tl,image:rl,imageReference:al,inlineCode:sl,link:ul,linkReference:fl,list:vl,listItem:bl,paragraph:xl,root:Sl,strong:wl,text:Dl,thematicBreak:kl};function jl(){return{enter:{table:Ml,tableData:Il,tableHeader:Il,tableRow:Pl},exit:{codeText:Ll,table:Nl,tableData:Fl,tableHeader:Fl,tableRow:Fl}}}function Ml(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function Nl(e){this.exit(e),this.data.inTable=void 0}function Pl(e){this.enter({type:`tableRow`,children:[]},e)}function Fl(e){this.exit(e)}function Il(e){this.enter({type:`tableCell`,children:[]},e)}function Ll(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,Rl));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function Rl(e,t){return t===`|`?t:e}function zl(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:`
42
- `,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(`
43
- `))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return Mc(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i<r.length;)a[i]=d(r[i],t,n);return o(),a}function d(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`tableRow`);for(;++i<r.length;)a[i]=c(r[i],e,t,n);return o(),a}function f(e,t,n){let r=Al.inlineCode(e,t,n);return n.stack.includes(`tableCell`)&&(r=r.replace(/\|/g,`\\$&`)),r}}function Bl(){return{exit:{taskListCheckValueChecked:Hl,taskListCheckValueUnchecked:Hl,paragraph:Ul}}}function Vl(){return{unsafe:[{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{listItem:Wl}}}function Hl(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type===`taskListCheckValueChecked`}function Ul(e){let t=this.stack[this.stack.length-2];if(t&&t.type===`listItem`&&typeof t.checked==`boolean`){let e=this.stack[this.stack.length-1];e.type;let n=e.children[0];if(n&&n.type===`text`){let r=t.children,i=-1,a;for(;++i<r.length;){let e=r[i];if(e.type===`paragraph`){a=e;break}}a===e&&(n.value=n.value.slice(1),n.value.length===0?e.children.shift():e.position&&n.position&&typeof n.position.start.offset==`number`&&(n.position.start.column++,n.position.start.offset++,e.position.start=Object.assign({},n.position.start)))}}this.exit(e)}function Wl(e,t,n,r){let i=e.children[0],a=typeof e.checked==`boolean`&&i&&i.type===`paragraph`,o=`[`+(e.checked?`x`:` `)+`] `,s=n.createTracker(r);a&&s.move(o);let c=Al.listItem(e,t,n,{...r,...s.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,l)),c;function l(e){return e+o}}function Gl(){return[Ys(),yc(),wc(),jl(),Bl()]}function Kl(e){return{extensions:[Xs(),bc(e),Tc(),zl(e),Vl()]}}var ql={tokenize:ou,partial:!0},Jl={tokenize:su,partial:!0},Yl={tokenize:cu,partial:!0},Xl={tokenize:lu,partial:!0},Zl={tokenize:uu,partial:!0},Ql={name:`wwwAutolink`,tokenize:G,previous:du},$l={name:`protocolAutolink`,tokenize:au,previous:fu},eu={name:`emailAutolink`,tokenize:iu,previous:pu},tu={};function nu(){return{text:tu}}for(var ru=48;ru<123;)tu[ru]=eu,ru++,ru===58?ru=65:ru===91&&(ru=97);tu[43]=eu,tu[45]=eu,tu[46]=eu,tu[95]=eu,tu[72]=[eu,$l],tu[104]=[eu,$l],tu[87]=[eu,Ql],tu[119]=[eu,Ql];function iu(e,t,n){let r=this,i,a;return o;function o(t){return!mu(t)||!pu.call(r,r.previous)||hu(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkEmail`),s(t))}function s(t){return mu(t)?(e.consume(t),s):t===64?(e.consume(t),c):n(t)}function c(t){return t===46?e.check(Zl,u,l)(t):t===45||t===95||Zn(t)?(a=!0,e.consume(t),c):u(t)}function l(t){return e.consume(t),i=!0,c}function u(o){return a&&i&&Xn(r.previous)?(e.exit(`literalAutolinkEmail`),e.exit(`literalAutolink`),t(o)):n(o)}}function G(e,t,n){let r=this;return i;function i(t){return t!==87&&t!==119||!du.call(r,r.previous)||hu(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkWww`),e.check(ql,e.attempt(Jl,e.attempt(Yl,a),n),n)(t))}function a(n){return e.exit(`literalAutolinkWww`),e.exit(`literalAutolink`),t(n)}}function au(e,t,n){let r=this,i=``,a=!1;return o;function o(t){return(t===72||t===104)&&fu.call(r,r.previous)&&!hu(r.events)?(e.enter(`literalAutolink`),e.enter(`literalAutolinkHttp`),i+=String.fromCodePoint(t),e.consume(t),s):n(t)}function s(t){if(Xn(t)&&i.length<5)return i+=String.fromCodePoint(t),e.consume(t),s;if(t===58){let n=i.toLowerCase();if(n===`http`||n===`https`)return e.consume(t),c}return n(t)}function c(t){return t===47?(e.consume(t),a?l:(a=!0,c)):n(t)}function l(t){return t===null||$n(t)||z(t)||ir(t)||rr(t)?n(t):e.attempt(Jl,e.attempt(Yl,u),n)(t)}function u(n){return e.exit(`literalAutolinkHttp`),e.exit(`literalAutolink`),t(n)}}function ou(e,t,n){let r=0;return i;function i(t){return(t===87||t===119)&&r<3?(r++,e.consume(t),i):t===46&&r===3?(e.consume(t),a):n(t)}function a(e){return e===null?n(e):t(e)}}function su(e,t,n){let r,i,a;return o;function o(t){return t===46||t===95?e.check(Xl,c,s)(t):t===null||z(t)||ir(t)||t!==45&&rr(t)?c(t):(a=!0,e.consume(t),o)}function s(t){return t===95?r=!0:(i=r,r=void 0),e.consume(t),o}function c(e){return i||r||!a?n(e):t(e)}}function cu(e,t){let n=0,r=0;return i;function i(o){return o===40?(n++,e.consume(o),i):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(Xl,t,a)(o):o===null||z(o)||ir(o)?t(o):(e.consume(o),i)}function a(t){return t===41&&r++,e.consume(t),i}}function lu(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||z(o)||ir(o)?t(o):n(o)}function i(e){return e===null||e===40||e===91||z(e)||ir(e)?t(e):r(e)}function a(e){return Xn(e)?o(e):n(e)}function o(t){return t===59?(e.consume(t),r):Xn(t)?(e.consume(t),o):n(t)}}function uu(e,t,n){return r;function r(t){return e.consume(t),i}function i(e){return Zn(e)?n(e):t(e)}}function du(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||z(e)}function fu(e){return!Xn(e)}function pu(e){return!(e===47||mu(e))}function mu(e){return e===43||e===45||e===46||e===95||Zn(e)}function hu(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type===`labelLink`||r.type===`labelImage`)&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var gu={tokenize:wu,partial:!0};function _u(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:xu,continuation:{tokenize:Su},exit:Cu}},text:{91:{name:`gfmFootnoteCall`,tokenize:bu},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:vu,resolveTo:yu}}}}function vu(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=Yn(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function yu(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function bu(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||z(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(Yn(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return z(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function xu(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||z(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=Yn(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return z(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),V(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function Su(e,t,n){return e.check(wr,t,e.attempt(gu,t,n))}function Cu(e){e.exit(`gfmFootnoteDefinition`)}function wu(e,t,n){let r=this;return V(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function Tu(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`strikethroughSequenceTemporary`&&e[n][1]._close){let r=n;for(;r--;)if(e[r][0]===`exit`&&e[r][1].type===`strikethroughSequenceTemporary`&&e[r][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[r][1].end.offset-e[r][1].start.offset){e[n][1].type=`strikethroughSequence`,e[r][1].type=`strikethroughSequence`;let i={type:`strikethrough`,start:Object.assign({},e[r][1].start),end:Object.assign({},e[n][1].end)},a={type:`strikethroughText`,start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},o=[[`enter`,i,t],[`enter`,e[r][1],t],[`exit`,e[r][1],t],[`enter`,a,t]],s=t.parser.constructs.insideSpan.null;s&&Hn(o,o.length,0,_r(s,e.slice(r+1,n),t)),Hn(o,o.length,0,[[`exit`,a,t],[`enter`,e[n][1],t],[`exit`,e[n][1],t],[`exit`,i,t]]),Hn(e,r-1,n-r+3,o),n=r+o.length-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`strikethroughSequenceTemporary`&&(e[n][1].type=`data`);return e}function i(e,n,r){let i=this.previous,a=this.events,o=0;return s;function s(t){return i===126&&a[a.length-1][1].type!==`characterEscape`?r(t):(e.enter(`strikethroughSequenceTemporary`),c(t))}function c(a){let s=gr(i);if(a===126)return o>1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=gr(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var Eu=class{constructor(){this.map=[],this.index=new Map}add(e,t,n){Du(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function Du(e,t,n,r){if(n===0&&r.length===0)return;let i=e.index.get(t);if(i){i[1]+=n,i[2].push(...r);return}let a=[t,n,r];e.map.push(a),e.index.set(t,a)}function Ou(e,t){let n=!1,r=[];for(;t<e.length;){let i=e[t];if(n){if(i[0]===`enter`)i[1].type===`tableContent`&&r.push(e[t+1][1].type===`tableDelimiterMarker`?`left`:`none`);else if(i[1].type===`tableContent`){if(e[t-1][1].type===`tableDelimiterMarker`){let e=r.length-1;r[e]=r[e]===`left`?`center`:`right`}}else if(i[1].type===`tableDelimiterRow`)break}else i[0]===`enter`&&i[1].type===`tableDelimiterRow`&&(n=!0);t+=1}return r}function ku(){return{flow:{null:{name:`table`,tokenize:Au,resolveAll:ju}}}}function Au(e,t,n){let r=this,i=0,a=0,o;return s;function s(e){let t=r.events.length-1;for(;t>-1;){let{type:e}=r.events[t][1];if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124||(o=!0,a+=1),u(e)}function u(t){return t===null?n(t):R(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):B(t)?V(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||z(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,B(t)?V(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return B(t)?V(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||R(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return B(t)?V(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||R(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||R(n)?(e.exit(`tableRow`),t(n)):B(n)?V(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||z(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function ju(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new Eu;for(;++n<e.length;){let p=e[n],m=p[1];p[0]===`enter`?m.type===`tableHead`?(s=!1,c!==0&&(Nu(f,t,c,l,u),u=void 0,c=0),l={type:`table`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,l,t]])):m.type===`tableRow`||m.type===`tableDelimiterRow`?(r=!0,d=void 0,a=[0,0,0,0],o=[0,n+1,0,0],s&&(s=!1,u={type:`tableBody`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,u,t]])),i=m.type===`tableDelimiterRow`?2:u?3:1):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],d=Mu(f,t,a,i,void 0,d),a=[0,0,0,0]),o[2]=n)):m.type===`tableCellDivider`&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],d=Mu(f,t,a,i,void 0,d)),a=o,o=[a[1],n,0,0])):m.type===`tableHead`?(s=!0,c=n):m.type===`tableRow`||m.type===`tableDelimiterRow`?(c=n,a[1]===0?o[1]!==0&&(d=Mu(f,t,o,i,n,d)):(o[0]=o[1],d=Mu(f,t,a,i,n,d)),i=0):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)&&(o[3]=n)}for(c!==0&&Nu(f,t,c,l,u),f.consume(t.events),n=-1;++n<t.events.length;){let e=t.events[n];e[0]===`enter`&&e[1].type===`table`&&(e[1]._align=Ou(t.events,n))}return e}function Mu(e,t,n,r,i,a){let o=r===1?`tableHeader`:r===2?`tableDelimiter`:`tableData`;n[0]!==0&&(a.end=Object.assign({},Pu(t.events,n[0])),e.add(n[0],0,[[`exit`,a,t]]));let s=Pu(t.events,n[1]);if(a={type:o,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[[`enter`,a,t]]),n[2]!==0){let i=Pu(t.events,n[2]),a=Pu(t.events,n[3]),o={type:`tableContent`,start:Object.assign({},i),end:Object.assign({},a)};if(e.add(n[2],0,[[`enter`,o,t]]),r!==2){let r=t.events[n[2]],i=t.events[n[3]];if(r[1].end=Object.assign({},i[1].end),r[1].type=`chunkText`,r[1].contentType=`text`,n[3]>n[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},Pu(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function Nu(e,t,n,r,i){let a=[],o=Pu(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function Pu(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var Fu={name:`tasklistCheck`,tokenize:Lu};function Iu(){return{text:{91:Fu}}}function Lu(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return z(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return R(r)?t(r):B(r)?e.check({tokenize:Ru},t,n)(r):n(r)}}function Ru(e,t,n){return V(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function zu(e){return Gn([nu(),_u(),Tu(e),ku(),Iu()])}var Bu={};function Vu(e){let t=this,n=e||Bu,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(zu(n)),a.push(Gl()),o.push(Kl(n))}function Hu({children:e,onClick:t,current:n}){return(0,O.jsx)(`button`,{type:`button`,className:`row-name`,"aria-current":n?`true`:void 0,onClick:e=>{e.stopPropagation(),t()},children:e})}function Uu({realPath:e}){return e?me(e)?(0,O.jsxs)(`span`,{className:`flag via-agents`,title:`Links to ${k(e)}; other agents read ~/.agents too`,children:[(0,O.jsx)(A,{name:`link`}),` ~/.agents`]}):(0,O.jsx)(`span`,{className:`via`,title:`Links to ${k(e)}`,children:(0,O.jsx)(A,{name:`link`})}):null}var Wu={tracked:`tracked in git`,untracked:`untracked`,ignored:`git-ignored`,"no-git":`outside git`};function Gu({value:e,scope:t}){return t===`managed`?(0,O.jsx)(`span`,{className:`vis vis-personal`,children:`organisation`}):e?(0,O.jsx)(`span`,{className:`vis vis-${e}`,children:Wu[e]}):(0,O.jsx)(`span`,{className:`vis vis-personal`,children:`only you`})}function K({label:e,children:t}){return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`dt`,{children:e}),(0,O.jsx)(`dd`,{children:t})]})}function Ku({path:e}){let[t,n]=(0,v.useState)(null),r=(e,t)=>{n(e),setTimeout(()=>n(null),t)};return(0,O.jsxs)(`span`,{className:`path`,children:[(0,O.jsx)(`span`,{className:`mono`,children:k(e)}),(0,O.jsx)(`button`,{type:`button`,className:`icon-button small`,"aria-label":`Copy path`,onClick:()=>{navigator.clipboard.writeText(e).then(()=>r(`copied`,1200),()=>r(`could not copy`,2400))},children:(0,O.jsx)(A,{name:`copy`})}),(0,O.jsx)(`button`,{type:`button`,className:`icon-button small`,"aria-label":`Open in editor`,title:`Open in editor`,onClick:()=>{T.open(e).then(({editor:e})=>r(`opened with ${e}`,2400),e=>r(e instanceof Error?e.message:String(e),6e3))},children:(0,O.jsx)(A,{name:`open`})}),t&&(0,O.jsx)(`span`,{className:`copied`,role:`status`,children:t})]})}function qu({text:e,markdown:t=!0}){let[n,r]=(0,v.useState)(!t);return(0,O.jsxs)(`section`,{className:`contents`,children:[(0,O.jsxs)(`div`,{className:`contents-bar`,children:[(0,O.jsx)(`span`,{children:`Contents`}),t&&(0,O.jsxs)(`fieldset`,{className:`segmented small`,"aria-label":`Contents view`,children:[(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":!n,onClick:()=>r(!1),children:[(0,O.jsx)(A,{name:`eye`}),` Read`]}),(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":n,onClick:()=>r(!0),children:[(0,O.jsx)(A,{name:`code`}),` Raw`]})]})]}),n?(0,O.jsx)(`pre`,{className:`raw`,children:e}):(0,O.jsx)(`div`,{className:`prose`,children:(0,O.jsx)(Is,{remarkPlugins:[Vu],children:e})})]})}function Ju(e){return e.replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/,``)}function Yu(e){return e}function Xu(e,t){let[n=``,...r]=t.split(`.`),i=e.effective.find(e=>e.key===n&&e.from.length>0);if(!i)return{};let a=i.value;for(let e of r)a=typeof a==`object`&&a?a[e]:void 0;return a===void 0?{}:{set:i,value:a}}function Zu({text:e}){return(0,O.jsx)(`div`,{className:`prose docs-text`,children:(0,O.jsx)(Is,{components:{a:({href:e,children:t})=>(0,O.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,children:t})},children:e})})}function Qu(e){return e.replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/[`*]/g,``)}function q(e){return e.length===0?`~/.claude.json only`:e.length===4?`any settings file`:e.map(e=>xe(e).toLowerCase()).join(`, `)}var $u=Yu({id:`catalog`,title:`All settings`,rows:e=>Ue.map(t=>{let{set:n}=Xu(e,t.key),r=n?.from.at(-1)??null;return{id:`cat:${t.key}`,section:`catalog`,line:r,item:t,...n?{set:n}:{}}}),columns:[{label:``,sort:e=>+!e.set},{label:`Setting`,sort:e=>e.item.key},{label:`What it does`},{label:`Files`,sort:e=>-e.item.scopes.length},{label:`Here`,sort:e=>+!e.set}],cells:(e,{view:t},n)=>{let r=e.item,{value:i}=Xu(t,r.key);return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:e.line&&(0,O.jsx)(N,{line:e.line})}),(0,O.jsx)(`td`,{className:`mono`,children:(0,O.jsx)(Hu,{onClick:n,children:r.key})}),(0,O.jsx)(`td`,{className:`desc`,children:Qu(r.summary)}),(0,O.jsx)(`td`,{className:`catalog-files`,children:r.scopes.length===0?(0,O.jsx)(`span`,{className:`muted small`,children:`~/.claude.json`}):Ne.filter(e=>r.scopes.includes(e)).map(e=>(0,O.jsx)(N,{line:e,hollow:!0},e))}),(0,O.jsx)(`td`,{className:`mono value`,children:i===void 0?(0,O.jsx)(`span`,{className:`muted`,children:`default`}):ue(fe(i))})]})},empty:()=>`ccdesk has no list of Claude Code's settings.`,text:e=>`${e.item.key} ${Qu(e.item.summary)} ${e.item.category}`,label:e=>`setting ${e.item.key} (all settings)`,heading:e=>e.item.key,facet:{label:`Filter settings by area`,of:e=>e.item.category,order:Ke},Head:()=>(0,O.jsx)(`span`,{className:`tt-note`,children:`Every setting in Claude Code's settings reference; the ones set here show their value`}),Details:({row:e,actions:t})=>{let n=e.item,{view:r}=t,{set:i,value:a}=Xu(r,n.key),[o=n.key,s]=n.key.split(`.`,2),c=n.scopes.filter(e=>Pe.includes(e)),l=Ve(o)!==void 0;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`div`,{className:`verdict`,children:(0,O.jsx)(Zu,{text:n.summary})}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Area`,children:n.category}),(0,O.jsx)(K,{label:`Read from`,children:q(n.scopes)}),(0,O.jsx)(K,{label:`Here`,children:a===void 0?`not set, so the default applies`:(0,O.jsxs)(`span`,{className:`mono`,children:[ue(fe(a)),i&&` (${i.from.map(e=>xe(e).toLowerCase()).join(`, `)})`]})})]}),n.about&&n.about!==n.summary&&(0,O.jsx)(Zu,{text:n.about}),n.type&&(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:`Values`}),(0,O.jsx)(Zu,{text:n.type})]}),n.default&&(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:`Default`}),(0,O.jsx)(Zu,{text:n.default})]}),(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:a===void 0?`Set it`:`Change it`}),n.scopes.length===0?(0,O.jsxs)(`p`,{className:`muted small`,children:[`Claude Code keeps this in ~/.claude.json, which ccdesk never changes. Use`,` `,(0,O.jsx)(`code`,{children:`/config`}),` in Claude Code.`]}):c.length===0?(0,O.jsx)(`p`,{className:`muted small`,children:`Only managed settings can set this.`}):s?(0,O.jsxs)(`p`,{className:`muted small`,children:[`It is a field of `,(0,O.jsx)(`code`,{children:o}),`; edit that setting to change it.`]}):l?(0,O.jsx)(Xe,{view:r,settingKey:n.key,defaultScope:[...i?.from??[]].reverse().find(e=>c.includes(e))??(c.includes(`user`)?`user`:c[0]??`user`),onSaved:t.onSaved},n.key):(0,O.jsx)(`p`,{className:`muted small`,children:`This key is not in the settings schema ccdesk ships, so it cannot be edited here.`})]}),(0,O.jsx)(`p`,{className:`muted small`,children:(0,O.jsxs)(`a`,{className:`docs-link`,href:n.docs,target:`_blank`,rel:`noreferrer`,children:[`Read it in the settings reference `,(0,O.jsx)(A,{name:`open`})]})})]})}}),J=[`agent`,`skill`,`command`,`output style`,`plugin`];function Y(e){return e.shadowedBy?`not used: ${k(e.shadowedBy)} defines this name with higher priority`:e.override===`off`?`hidden by skillOverrides`:e.override===`user-invocable-only`?`only when you call it: skillOverrides hides it from Claude`:e.override===`name-only`?`listed to Claude by name only (skillOverrides)`:null}var X=Yu({id:`extensions`,title:`Agents, skills & plugins`,short:`Extensions`,rows:e=>{let t=e.inventory;return[...[[`agent`,t.agents],[`skill`,t.skills],[`command`,t.commands],[`output style`,t.outputStyles]].flatMap(([e,t])=>t.map(t=>({id:`ent:${e}:${t.path}`,section:`extensions`,line:t.scope,item:t,kind:e}))),...t.plugins.map(e=>({id:`plug:${e.id}`,section:`extensions`,line:`plugin`,item:e,kind:`plugin`}))]},columns:[{label:``,sort:e=>e.line},{label:`Kind`,sort:e=>J.indexOf(e.kind)},{label:`Name`,sort:e=>e.kind===`plugin`?e.item.id:e.item.id??e.item.name},{label:`Description`}],cells:(e,t,n)=>{if(e.kind===`plugin`){let t=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:`plugin`,hollow:!t.enabled})}),(0,O.jsx)(`td`,{children:`plugin`}),(0,O.jsx)(`td`,{className:`mono`,children:(0,O.jsx)(Hu,{onClick:n,children:t.id})}),(0,O.jsxs)(`td`,{className:`desc`,children:[`v`,t.version,` · `,t.note]})]})}let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:e.line})}),(0,O.jsx)(`td`,{children:e.kind}),(0,O.jsxs)(`td`,{className:`mono`,children:[(0,O.jsx)(Hu,{onClick:n,children:r.id??r.name}),(0,O.jsx)(Uu,{realPath:r.realPath})]}),(0,O.jsxs)(`td`,{className:`desc`,children:[Y(r)&&(0,O.jsx)(`span`,{className:`flag warn`,children:Y(r)}),` `,r.description]})]})},empty:()=>`No subagents, skills, commands or plugins.`,dimmed:e=>e.kind===`plugin`?!e.item.enabled:!!e.item.shadowedBy||e.item.override===`off`,text:e=>e.kind===`plugin`?`plugin ${e.item.id}`:`${e.kind} ${e.item.id??e.item.name} ${e.item.description}`,label:e=>e.kind===`plugin`?`plugin ${e.item.id}`:`${e.kind} ${e.item.id??e.item.name}`,heading:e=>e.kind===`plugin`?e.item.id:e.item.id??e.item.name,facet:{label:`Filter by kind`,of:e=>e.kind,order:J},Details:({row:e})=>{if(e.kind===`plugin`){let t=e.item;return(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Version`,children:t.version}),(0,O.jsx)(K,{label:`Status`,children:t.note}),(0,O.jsx)(K,{label:`Installed for`,children:t.scope}),(0,O.jsx)(K,{label:`Updated`,children:le(t.updated)}),(0,O.jsx)(K,{label:`Folder`,children:(0,O.jsx)(Ku,{path:t.installPath})})]})}let t=e.item;return(0,O.jsxs)(O.Fragment,{children:[t.description&&(0,O.jsx)(`p`,{className:`verdict`,children:t.description}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Kind`,children:e.kind}),(0,O.jsx)(K,{label:`Path`,children:(0,O.jsx)(Ku,{path:t.path})}),t.realPath&&(0,O.jsx)(K,{label:`Links to`,children:(0,O.jsx)(Ku,{path:t.realPath})}),Y(t)?(0,O.jsx)(K,{label:`Offered`,children:Y(t)}):t.listed===!1&&(0,O.jsx)(K,{label:`Invoked`,children:`only when you call it; Claude does not pick it on its own`}),t.paths&&(0,O.jsx)(K,{label:`Applies to`,children:(0,O.jsx)(`span`,{className:`mono`,children:t.paths.join(`, `)})}),t.model&&(0,O.jsx)(K,{label:`Model`,children:t.model}),t.plugin&&(0,O.jsx)(K,{label:`Plugin`,children:t.plugin})]}),(0,O.jsx)(qu,{text:Ju(t.text)})]})}}),ed=Yu({id:`hooks`,title:`Hooks`,rows:e=>{let t=new Map;return e.inventory.hooks.map(e=>{let n=`hook:${e.sourcePath}:${e.event}:${e.matcher??``}:${e.command}`,r=t.get(n)??0;return t.set(n,r+1),{id:r===0?n:`${n}:${r}`,section:`hooks`,line:e.source,item:e}})},columns:[{label:``,sort:e=>e.item.source},{label:`Event`,sort:e=>e.item.event},{label:`Matcher`,sort:e=>e.item.matcher??``},{label:`Runs`}],cells:(e,t,n)=>{let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:e.line})}),(0,O.jsx)(`td`,{children:(0,O.jsx)(Hu,{onClick:n,children:r.event})}),(0,O.jsx)(`td`,{className:`mono`,children:r.matcher??(0,O.jsx)(`span`,{className:`muted`,children:`any`})}),(0,O.jsxs)(`td`,{className:`mono value`,children:[ue(r.command),!r.active&&(0,O.jsx)(`span`,{className:`flag warn`,title:r.note,children:`off`})]})]})},empty:()=>`No hooks run here.`,dimmed:e=>!e.item.active,text:e=>`${e.item.event} ${e.item.matcher??``} ${e.item.command}`,label:e=>`${e.item.event} hook: ${e.item.command}`,heading:e=>`${e.item.event} hook`,facet:{label:`Filter hooks by event`,of:e=>e.item.event},Details:({row:e})=>{let t=e.item;return(0,O.jsxs)(O.Fragment,{children:[!t.active&&(0,O.jsx)(`p`,{className:`verdict off`,children:t.note}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Event`,children:t.event}),(0,O.jsx)(K,{label:`Matcher`,children:(0,O.jsx)(`span`,{className:`mono`,children:t.matcher??`any`})}),(0,O.jsx)(K,{label:`Type`,children:t.type}),(0,O.jsx)(K,{label:`Runs`,children:(0,O.jsx)(`span`,{className:`mono wrap`,children:ue(t.command)})}),(0,O.jsx)(K,{label:`Defined in`,children:(0,O.jsx)(Ku,{path:t.sourcePath})}),t.plugin&&(0,O.jsx)(K,{label:`Plugin`,children:t.plugin})]})]})}}),td={loaded:`loaded`,"on-match":`on match`,skipped:`skipped`},nd={loaded:`ok`,"on-match":``,skipped:`off`},rd=Yu({id:`instructions`,title:`Instructions`,rows:e=>e.instructions.map((e,t)=>({id:`ins:${e.path}`,section:`instructions`,line:e.scope,item:e,order:t+1})),columns:[{label:`#`,sort:e=>e.order},{label:``},{label:`File`,sort:e=>e.item.path},{label:`Status`,sort:e=>e.item.status},{label:`Why`},{label:`Lines`,sort:e=>e.item.lines},{label:`Visibility`,sort:e=>e.item.visibility??``}],cells:(e,{view:t},n)=>{let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{className:`num`,children:e.order}),(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:e.line,hollow:r.status!==`loaded`})}),(0,O.jsxs)(`td`,{className:`mono`,children:[(0,O.jsx)(Hu,{onClick:n,children:ce(r.path,t.path)}),(0,O.jsx)(Uu,{realPath:r.realPath}),r.checks.length>0&&(0,O.jsxs)(`span`,{className:`flag warn`,title:r.checks.join(`
44
- `),children:[(0,O.jsx)(A,{name:`warn`}),` `,r.checks.length]})]}),(0,O.jsx)(`td`,{children:(0,O.jsx)(`span`,{className:`status status-${r.status}`,children:td[r.status]})}),(0,O.jsx)(`td`,{className:`why`,children:r.reason}),(0,O.jsx)(`td`,{className:`num`,children:r.lines}),(0,O.jsx)(`td`,{children:(0,O.jsx)(Gu,{value:r.visibility,scope:r.scope})})]})},empty:()=>`No CLAUDE.md, AGENTS.md or rules apply here.`,dimmed:e=>e.item.status===`skipped`,text:e=>`${e.item.path} ${e.item.reason}`,label:e=>k(e.item.path),heading:e=>e.item.path.split(/[/\\]/).slice(-2).join(`/`),facet:{label:`Filter instructions by status`,of:e=>td[e.item.status],order:Object.values(td)},Details:({row:e})=>{let t=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`p`,{className:`verdict ${nd[t.status]}`,children:t.reason}),t.checks.length>0&&(0,O.jsx)(`ul`,{className:`plain checks-list`,children:t.checks.map(e=>(0,O.jsxs)(`li`,{className:`flag warn`,children:[(0,O.jsx)(A,{name:`warn`}),` `,e]},e))}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`File`,children:(0,O.jsx)(Ku,{path:t.path})}),t.realPath&&(0,O.jsx)(K,{label:`Links to`,children:(0,O.jsx)(Ku,{path:t.realPath})}),me(t.realPath)&&(0,O.jsx)(K,{label:`Shared with`,children:`other coding agents that read ~/.agents`}),(0,O.jsx)(K,{label:`Visibility`,children:(0,O.jsx)(Gu,{value:t.visibility,scope:t.scope})}),(0,O.jsxs)(K,{label:`Size`,children:[t.lines,` lines · `,(t.bytes/1024).toFixed(1),` KB`]}),t.mtime&&(0,O.jsx)(K,{label:`Changed`,children:le(t.mtime)}),t.paths&&(0,O.jsx)(K,{label:`Applies to`,children:(0,O.jsx)(`span`,{className:`mono`,children:t.paths.join(`, `)})})]}),t.imports.length>0&&(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:`Imports`}),(0,O.jsx)(`ul`,{className:`plain`,children:t.imports.map(e=>(0,O.jsxs)(`li`,{className:`mono`,children:[`@`,e.raw,e.via!==t.path&&(0,O.jsxs)(`span`,{className:`muted`,children:[` via `,e.via.split(/[/\\]/).pop()]}),!e.exists&&(0,O.jsx)(`span`,{className:`flag bad`,children:`missing`}),e.tooLarge&&(0,O.jsx)(`span`,{className:`flag warn`,children:`over 4 MiB, not loaded`}),e.external&&(0,O.jsx)(`span`,{className:`flag`,children:`outside this project`}),e.pending&&(0,O.jsx)(`span`,{className:`flag warn`,title:`Claude Code asks before loading imports from outside the project`,children:`waits for your approval`})]},`${e.via}:${e.resolved}`))})]}),(0,O.jsx)(qu,{text:t.text})]})}}),id={active:`configured`,pending:`needs approval`,shadowed:`overridden`,disabled:`turned off`,rejected:`rejected`,blocked:`blocked`,invalid:`invalid`},ad=Yu({id:`mcp`,title:`MCP servers`,rows:e=>e.inventory.mcpServers.map(e=>({id:`mcp:${e.scope}:${e.plugin??``}:${e.name}`,section:`mcp`,line:e.scope,item:e})),columns:[{label:``,sort:e=>e.item.scope},{label:`Server`,sort:e=>e.item.name},{label:`Transport`,sort:e=>e.item.transport},{label:`Target`},{label:`Status`,sort:e=>Object.keys(id).indexOf(e.item.status)}],cells:(e,t,n)=>{let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:e.line})}),(0,O.jsx)(`td`,{className:`mono`,children:(0,O.jsx)(Hu,{onClick:n,children:r.name})}),(0,O.jsx)(`td`,{children:r.transport}),(0,O.jsx)(`td`,{className:`mono value`,children:ue(r.target)}),(0,O.jsx)(`td`,{children:(0,O.jsx)(`span`,{className:r.status===`active`?`muted`:`flag warn`,title:r.note,children:id[r.status]})})]})},empty:()=>`No MCP servers are configured for this directory.`,dimmed:e=>e.item.status!==`active`,text:e=>`${e.item.name} ${e.item.target}`,label:e=>`MCP ${e.item.name}`,heading:e=>e.item.name,facet:{label:`Filter MCP servers by status`,of:e=>id[e.item.status],order:Object.values(id)},Details:({row:e})=>{let t=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`p`,{className:`verdict ${t.status===`active`?`ok`:`off`}`,children:t.note??`Configured and allowed here, so Claude Code starts it with each session. ccdesk does not connect, so it cannot tell whether the server works.`}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Defined for`,children:t.scope}),t.plugin&&(0,O.jsx)(K,{label:`Plugin`,children:t.plugin}),(0,O.jsx)(K,{label:`Transport`,children:t.transport}),(0,O.jsx)(K,{label:`Target`,children:(0,O.jsx)(`span`,{className:`mono wrap`,children:ue(t.target)})}),(0,O.jsx)(K,{label:`Defined in`,children:(0,O.jsx)(Ku,{path:t.sourcePath})})]}),(0,O.jsx)(`p`,{className:`muted small`,children:`Environment variables and headers are hidden.`})]})}}),od=[`user`,`feedback`,`project`,`reference`,`unknown`];function sd({type:e}){return(0,O.jsxs)(`span`,{className:`type`,children:[(0,O.jsx)(`span`,{className:`type-dot type-${e}`,"aria-hidden":`true`}),e]})}var cd=Yu({id:`memory`,title:`Memory`,rows:e=>e.memory.memories.map(e=>({id:`mem:${e.path}`,section:`memory`,line:`memory`,item:e})),columns:[{label:``},{label:`Name`,sort:e=>e.item.name},{label:`Type`,sort:e=>od.indexOf(e.item.type)},{label:`Description`},{label:`Checks`,sort:e=>Number(!e.item.inIndex)*10+e.item.brokenLinks.length},{label:`Updated`,sort:e=>e.item.mtime}],cells:(e,{sharedNames:t},n)=>{let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:`memory`})}),(0,O.jsx)(`td`,{className:`mono`,children:(0,O.jsx)(Hu,{onClick:n,children:r.name})}),(0,O.jsx)(`td`,{children:(0,O.jsx)(sd,{type:r.type})}),(0,O.jsx)(`td`,{className:`desc`,children:r.description}),(0,O.jsxs)(`td`,{className:`checks`,children:[!r.inIndex&&(0,O.jsx)(`span`,{className:`flag bad`,title:`MEMORY.md does not mention it`,children:`not in index`}),r.brokenLinks.length>0&&(0,O.jsxs)(`span`,{className:`flag warn`,children:[r.brokenLinks.length,` broken link`,r.brokenLinks.length===1?``:`s`]}),t.has(r.name)&&(0,O.jsx)(`span`,{className:`flag`,children:`also elsewhere`})]}),(0,O.jsx)(`td`,{className:`num`,title:new Date(r.mtime).toLocaleString(),children:le(r.mtime)})]})},empty:e=>e.memory.index?`MEMORY.md is here, but no memory files.`:`Claude hasn't saved any memory for this directory yet.`,text:e=>`${e.item.name} ${e.item.description} ${e.item.type} ${e.item.body}`,label:e=>`memory ${e.item.name}`,heading:e=>e.item.name,facet:{label:`Filter memory by type`,of:e=>e.item.type,order:od,render:e=>(0,O.jsx)(sd,{type:e})},Head:ld,Details:fd});function ld({actions:e}){let t=e.view.memory,n=t.index,[r,i]=(0,v.useState)(!1);return(0,O.jsxs)(O.Fragment,{children:[t.note&&(0,O.jsxs)(`span`,{className:`flag${t.loaded?``:` warn`}`,title:k(t.dir),children:[!t.loaded&&(0,O.jsx)(A,{name:`warn`}),` `,t.note]}),n?.truncated&&(0,O.jsxs)(`span`,{className:`flag warn`,title:`Claude Code reads only the first 200 lines or 25KB of MEMORY.md`,children:[(0,O.jsx)(A,{name:`warn`}),` MEMORY.md: lines past `,n.loadedLines,` are not loaded`]}),n&&n.missingFiles.length>0&&(0,O.jsxs)(`span`,{className:`fix`,children:[(0,O.jsxs)(`span`,{className:`flag warn`,title:n.missingFiles.join(`, `),children:[(0,O.jsx)(A,{name:`warn`}),` `,n.missingFiles.length,` index`,` `,n.missingFiles.length===1?`line points`:`lines point`,` at missing files`]}),!t.custom&&!r&&(0,O.jsxs)(`button`,{type:`button`,className:`head-action`,onClick:()=>i(!0),children:[(0,O.jsx)(A,{name:`trash`}),` Remove `,n.missingFiles.length===1?`line`:`lines`,`…`]})]}),n&&r&&(0,O.jsx)(dd,{action:`remove-dead`,path:n.path,verb:`Remove lines`,busyVerb:`Removing…`,message:`Removed ${n.missingFiles.length===1?`the dead line`:`dead lines`} from MEMORY.md`,actions:e,onClose:()=>i(!1)})]})}function ud(e){return e.split(/[/\\]/).at(-1)??e}function dd({action:e,path:t,verb:n,busyVerb:r,message:i,danger:a=!1,select:o,actions:s,onClose:c}){let[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1);return(0,v.useEffect)(()=>{T.previewMemory(e,t).then(u,e=>f(e instanceof Error?e.message:String(e)))},[e,t]),(0,O.jsxs)(`section`,{className:`review memory-review`,"aria-label":`Review memory change`,children:[d?(0,O.jsx)(`p`,{className:`flag bad`,role:`alert`,children:d}):l?l.files.map(e=>(0,O.jsxs)(`div`,{className:`memory-review-file`,children:[(0,O.jsxs)(`p`,{className:`sub-title small`,title:k(e.path),children:[(0,O.jsx)(`span`,{className:`mono`,children:ud(e.path)}),e.after===null&&(0,O.jsx)(`span`,{className:`muted`,children:` is deleted; a backup is kept and you can undo it`})]}),(0,O.jsx)(ie,{before:e.before??``,after:e.after??``})]},e.path)):(0,O.jsx)(`p`,{className:`muted small`,children:`Reading the files…`}),(0,O.jsxs)(`div`,{className:`editor-buttons`,children:[l&&!d&&(0,O.jsx)(`button`,{type:`button`,className:a?`danger`:`primary`,disabled:p,onClick:()=>{m(!0),s.onChange(()=>T.changeMemory(e,t,l.revision),i,o).finally(c)},children:p?r:n}),(0,O.jsx)(`button`,{type:`button`,onClick:c,disabled:p,children:`Cancel`})]})]})}function fd({row:e,actions:t}){let n=e.item,r=t.view.memory.custom===!0,[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(!1),c=t.overview?.sharedMemories.find(e=>e.name===n.name)?.stores??[],l=n.path.split(/[/\\]/).at(-3),u=c.filter(e=>e.projectPath.replace(/[^a-zA-Z0-9]/g,`-`)!==l);return(0,O.jsxs)(O.Fragment,{children:[n.description&&(0,O.jsx)(`p`,{className:`verdict`,children:n.description}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Type`,children:(0,O.jsx)(sd,{type:n.type})}),(0,O.jsx)(K,{label:`File`,children:(0,O.jsx)(Ku,{path:n.path})}),(0,O.jsx)(K,{label:`Changed`,children:le(n.mtime)}),(0,O.jsx)(K,{label:`In MEMORY.md`,children:n.inIndex?`yes`:(0,O.jsxs)(`span`,{className:`fix`,children:[(0,O.jsx)(`span`,{className:`flag bad`,children:`no, so Claude won't see it at session start`}),!r&&!o&&(0,O.jsxs)(`button`,{type:`button`,className:`head-action`,onClick:()=>s(!0),children:[(0,O.jsx)(A,{name:`plus`}),` Add to MEMORY.md…`]})]})}),n.linkedFrom.length>0&&(0,O.jsx)(K,{label:`Linked from`,children:(0,O.jsx)(`span`,{className:`mono`,children:n.linkedFrom.join(`, `)})}),n.brokenLinks.length>0&&(0,O.jsx)(K,{label:`Broken links`,children:(0,O.jsx)(`span`,{className:`mono`,children:n.brokenLinks.map(e=>`[[${e}]]`).join(`, `)})})]}),o&&(0,O.jsx)(dd,{action:`add`,path:n.path,verb:`Add to MEMORY.md`,busyVerb:`Adding…`,message:`Added ${n.name} to MEMORY.md`,actions:t,onClose:()=>s(!1)}),u.length>0&&(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:`Also saved in`}),(0,O.jsx)(`ul`,{className:`plain`,children:u.map(e=>(0,O.jsxs)(`li`,{children:[(0,O.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>t.onOpenDirectory(e.projectPath),children:k(e.projectPath)}),(0,O.jsx)(`span`,{className:`flag ${e.hash===n.hash?``:`warn`}`,children:e.hash===n.hash?`identical`:`different text`})]},e.projectPath))}),u.some(e=>e.hash===n.hash)&&(0,O.jsx)(`p`,{className:`muted small`,children:`Deleting this copy keeps the identical one saved elsewhere.`})]}),!r&&(0,O.jsx)(`div`,{className:`actions`,children:i?(0,O.jsxs)(`section`,{className:`confirm`,"aria-label":`Confirm delete`,children:[(0,O.jsxs)(`p`,{children:[`Delete `,(0,O.jsx)(`strong`,{children:n.file}),n.inIndex?` and its line in MEMORY.md`:``,`?`,n.linkedFrom.length>0&&` ${n.linkedFrom.length} other ${n.linkedFrom.length===1?`memory links`:`memories link`} here and will have a broken link.`]}),(0,O.jsx)(dd,{action:`delete`,path:n.path,verb:`Delete memory`,busyVerb:`Deleting…`,message:`Deleted ${n.file}`,danger:!0,select:null,actions:t,onClose:()=>a(!1)})]}):(0,O.jsxs)(`button`,{type:`button`,className:`quiet-danger`,onClick:()=>a(!0),children:[(0,O.jsx)(A,{name:`trash`}),` Delete memory…`]})}),(0,O.jsx)(qu,{text:n.body})]})}function pd(e){let t=e.since?` since ${new Date(e.since).toLocaleDateString(void 0,{day:`numeric`,month:`short`})}`:``,n=e.repository?`in this repository`:`here`;return`${e.sessions===1?`the session`:`the ${he(e.sessions,`session`)}`} started ${n}${t}`}function md(e){let t=new Set(e.permissions.flatMap(e=>e.kind===`rule`&&e.inEffect?[e.rule]:[]));return(e.usage?.approvals??[]).filter(e=>!t.has(e.rule))}function hd(e){return`suggested`in e}function gd(e,t){return e.kind===`rule`&&e.list===`allow`&&e.inEffect&&!e.decidedBy&&!!t&&t.sessions>0&&t.matches[e.rule]===0}var _d={allow:`runs without asking`,ask:`asks you first`,deny:`blocked`},vd=[`deny`,`ask`,`allow`],yd=Yu({id:`permissions`,title:`Permissions`,rows:e=>{let t=new Set,n=e.permissions.map(e=>{let n=`perm:${e.scope}:${e.kind===`rule`?`${e.list}:${e.rule}`:`${e.kind}:${e.value}`}`,r=n;for(let e=2;t.has(r);e++)r=`${n}#${e}`;return t.add(r),{id:r,section:`permissions`,line:e.scope,item:e}}),r=md(e).map(e=>({id:`perm:suggested:${e.rule}`,section:`permissions`,line:null,item:e,suggested:!0}));return[...n,...r]},columns:[{label:``,sort:e=>hd(e)?`~`:e.item.scope},{label:`List`,sort:e=>hd(e)?4:e.item.kind===`rule`?vd.indexOf(e.item.list):3},{label:`Rule`,sort:e=>`rule`in e.item?e.item.rule:e.item.value},{label:`Outcome`}],cells:(e,t,n)=>{if(hd(e))return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{}),(0,O.jsx)(`td`,{children:(0,O.jsx)(`span`,{className:`muted`,children:`suggested`})}),(0,O.jsx)(`td`,{className:`mono value`,children:(0,O.jsx)(Hu,{onClick:n,children:e.item.rule})}),(0,O.jsxs)(`td`,{className:`desc`,children:[`you allowed it `,he(e.item.approved,`time`),(0,O.jsxs)(`span`,{className:`muted`,children:[` · `,le(e.item.last)]})]})]});let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:e.line})}),(0,O.jsx)(`td`,{children:r.kind===`rule`?(0,O.jsx)(`span`,{className:`perm perm-${r.list}`,children:r.list}):(0,O.jsx)(`span`,{className:`muted`,children:r.kind===`defaultMode`?`default mode`:`extra folder`})}),(0,O.jsx)(`td`,{className:`mono value`,children:(0,O.jsx)(Hu,{onClick:n,children:r.kind===`rule`?r.rule:ue(r.value)})}),(0,O.jsx)(`td`,{className:`desc`,children:r.inEffect?r.kind===`rule`&&r.decidedBy?(0,O.jsxs)(`span`,{className:`flag warn`,children:[r.decidedBy.list===`deny`?`denied`:`asks first`,`: same rule in`,` `,r.decidedBy.list,` (`,r.decidedBy.scope,`)`]}):r.kind===`rule`?(0,O.jsxs)(O.Fragment,{children:[_d[r.list],gd(r,t.view.usage)&&(0,O.jsx)(`span`,{className:`flag`,children:`covered no call here`})]}):r.kind===`defaultMode`?`how sessions start`:`Claude may read and edit here`:(0,O.jsx)(`span`,{className:`flag warn`,children:r.note??`not in effect`})})]})},empty:()=>`No settings file sets permissions here, so Claude asks before using tools that need it.`,dimmed:e=>!hd(e)&&(!e.item.inEffect||e.item.kind===`rule`&&!!e.item.decidedBy),text:e=>hd(e)?`permission suggested allow ${e.item.rule}`:e.item.kind===`rule`?`permission ${e.item.list} ${e.item.rule}`:`permission ${e.item.kind} ${e.item.value}`,label:e=>hd(e)?`suggested allow ${e.item.rule}`:e.item.kind===`rule`?`${e.item.list} ${e.item.rule}`:`${e.item.kind} ${e.item.value}`,heading:e=>`rule`in e.item?e.item.rule:e.item.kind===`defaultMode`?`Default permission mode`:`Extra folder`,facet:{label:`Filter permissions by list`,of:e=>hd(e)?`suggested`:e.item.kind===`rule`?e.item.list:`other`,order:[`deny`,`ask`,`allow`,`other`,`suggested`]},Head:({actions:e})=>(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`tt-note`,children:`Checked deny, then ask, then allow, across every file`}),(0,O.jsxs)(`button`,{type:`button`,className:`head-action`,onClick:()=>e.onAdd(`permission`),children:[(0,O.jsx)(A,{name:`plus`}),` Add rule`]})]}),Details:({row:e,actions:t})=>{if(hd(e))return(0,O.jsx)(xd,{row:e,actions:t},e.id);let n=e.item,{view:r}=t,i=n.kind===`rule`?n.path:r.settings.find(e=>e.scope===n.scope&&!e.legacy)?.path;return(0,O.jsxs)(O.Fragment,{children:[n.inEffect?n.kind===`rule`?(0,O.jsx)(`p`,{className:`verdict ${n.decidedBy?`off`:n.list===`deny`?``:`ok`}`,children:n.decidedBy?`This ${n.list} rule never applies: the same rule is in ${n.decidedBy.list} (${n.decidedBy.scope} settings), which is checked first.`:{allow:`Claude uses matching tools without asking, unless a deny or ask rule matches first.`,ask:`Claude asks before using matching tools, unless a deny rule matches first.`,deny:`Claude may not use matching tools. No allow rule in any file can undo this.`}[n.list]}):(0,O.jsx)(`p`,{className:`verdict`,children:n.kind===`defaultMode`?`Sessions here start in ${n.value} mode.`:`Claude may read and edit files in this folder as well as the project.`}):(0,O.jsx)(`p`,{className:`verdict off`,children:n.note}),(0,O.jsxs)(`dl`,{className:`fields`,children:[n.kind===`rule`&&(0,O.jsx)(K,{label:`List`,children:n.list}),(0,O.jsx)(K,{label:n.kind===`rule`?`Rule`:`Value`,children:(0,O.jsx)(`span`,{className:`mono wrap`,children:n.kind===`rule`?n.rule:ue(n.value)})}),(0,O.jsxs)(K,{label:`Set in`,children:[xe(n.scope),` settings`]}),n.kind===`rule`&&n.list!==`deny`&&n.inEffect&&(0,O.jsx)(K,{label:`Covered here`,children:(0,O.jsx)(bd,{rule:n,usage:r.usage})}),i&&(0,O.jsx)(K,{label:`File`,children:(0,O.jsx)(Ku,{path:i})})]}),(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:`How Claude Code decides`}),(0,O.jsx)(`p`,{className:`muted small`,children:`Rules from every settings file are pooled and checked in order: deny, then ask, then allow. The first match decides, so a deny in any file beats an allow in any other.`})]}),n.kind===`rule`?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`h3`,{className:`sub-title`,children:`Change this rule`}),(0,O.jsx)(rt,{view:r,rule:n,onSaved:t.onSaved},e.id)]}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`h3`,{className:`sub-title`,children:`Change permissions`}),(0,O.jsx)(Xe,{view:r,settingKey:`permissions`,defaultScope:Pe.includes(n.scope)?n.scope:`user`,onSaved:t.onSaved},n.scope)]})]})}});function bd({rule:e,usage:t}){if(t===void 0)return(0,O.jsx)(`span`,{className:`muted`,children:`counting…`});if(t===null)return(0,O.jsx)(`span`,{className:`muted`,children:`ccdesk could not read the transcripts`});let n=t.matches[e.rule];return n===void 0?(0,O.jsx)(`span`,{className:`muted`,children:`counting…`}):n===null?(0,O.jsx)(`span`,{className:`muted`,children:`not counted: ccdesk matches tool, command and domain rules`}):t.sessions===0?(0,O.jsx)(`span`,{className:`muted`,children:`no sessions here yet`}):(0,O.jsxs)(O.Fragment,{children:[he(n,`call`),` in `,pd(t),n===0&&e.list===`allow`&&(0,O.jsxs)(`span`,{className:`muted small`,children:[` `,e.scope===`user`?`Your user settings apply in every directory, so others may still use it.`:`If Claude no longer needs it here, removing it narrows what runs without asking.`]})]})}function xd({row:e,actions:t}){let{view:n}=t,r=tt(n,t.onSaved),[i,a]=(0,v.useState)(`local`),o=nt(n,i),{rule:s,approved:c,last:l}=e.item,u=/^Bash\((.+) \*\)$/.exec(s)?.[1];return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`p`,{className:`verdict`,children:[`Claude Code asked you `,he(c,`time`),` about calls this rule covers, and you allowed each one, refusing none of the calls it covers. An allow rule lets Claude make them without asking, unless a deny or ask rule matches first.`]}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Rule`,children:(0,O.jsx)(`span`,{className:`mono wrap`,children:s})}),(0,O.jsx)(K,{label:`You allowed`,children:he(c,`call`)}),(0,O.jsx)(K,{label:`Last asked`,children:le(l)})]}),u&&(0,O.jsxs)(`p`,{className:`muted small`,children:[`It allows every command that starts with `,(0,O.jsx)(`code`,{children:u}),`, with any arguments.`]}),(0,O.jsxs)(`section`,{className:`sub editor`,"aria-label":`Allow this rule`,children:[(0,O.jsx)(`h3`,{children:`Allow it`}),(0,O.jsx)(`p`,{className:`muted small`,children:`In local settings it applies only for you here; in project settings, for everyone working in this repository; in your user settings, in every project.`}),(0,O.jsx)(it,{scope:i,onPick:e=>{a(e),r.cancel()}}),(0,O.jsx)(`p`,{className:`muted small mono wrap`,children:o?k(o):``}),!r.reviewing&&(0,O.jsx)(`div`,{className:`editor-buttons`,children:(0,O.jsx)(`button`,{type:`button`,className:`primary`,disabled:r.busy||!o,onClick:()=>o&&void r.start(o,void 0,{list:`allow`,rule:s},`Allowed ${s} in ${xe(i).toLowerCase()} settings`),children:`Review change`})}),r.shown]}),(0,O.jsxs)(`p`,{className:`muted small`,children:[`Counted from Claude Code's transcripts for`,` `,n.usage?pd(n.usage):`this directory`,`. ccdesk reads only which tool ran and whether you allowed it; it never shows what was in a session.`]})]})}var Sd=Yu({id:`settings`,title:`Settings`,rows:e=>e.effective.map(e=>{let t=e.from;return{id:`set:${e.key}`,section:`settings`,line:t[t.length-1]??`user`,item:e,lines:t}}),columns:[{label:``,sort:e=>Ne.indexOf(e.item.from[0]??`user`)},{label:`Key`,sort:e=>e.item.key},{label:`Value`},{label:`Overrides`}],cells:(e,t,n)=>{let r=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{className:`bullets`,children:e.lines.map(e=>(0,O.jsx)(N,{line:e},e))}),(0,O.jsx)(`td`,{className:`mono`,children:(0,O.jsx)(Hu,{onClick:n,children:r.key})}),(0,O.jsx)(`td`,{className:`mono value`,children:r.from.length===0?(0,O.jsx)(`span`,{className:`muted`,children:`ignored`}):ue(fe(r.value))}),(0,O.jsxs)(`td`,{className:`beat`,children:[r.merged?(0,O.jsx)(`span`,{className:`muted`,children:`merged`}):r.overridden.map(e=>(0,O.jsxs)(`span`,{className:`beaten`,children:[(0,O.jsx)(N,{line:e.scope,hollow:!0}),` `,(0,O.jsx)(`s`,{children:ue(fe(e.value))})]},e.scope)),r.ignored.map(e=>(0,O.jsxs)(`span`,{className:`beaten`,title:e.reason,children:[(0,O.jsx)(N,{line:e.scope,hollow:!0}),` `,(0,O.jsx)(`s`,{children:ue(fe(e.value))}),` `,(0,O.jsx)(`span`,{className:`flag warn`,children:`ignored`})]},`ignored-${e.scope}`))]})]})},empty:()=>`No settings files set anything here.`,tableClass:e=>e.some(e=>e.item.merged||e.item.overridden.length>0||e.item.ignored.length>0)?``:`no-overrides`,dimmed:e=>e.item.from.length===0,text:e=>`${e.item.key} ${JSON.stringify(e.item.value)}`,label:e=>`setting ${e.item.key}`,heading:e=>e.item.key,Head:({actions:e})=>(0,O.jsxs)(`button`,{type:`button`,className:`head-action`,onClick:()=>e.onAdd(`setting`),children:[(0,O.jsx)(A,{name:`plus`}),` Add setting`]}),Details:({row:e,actions:t})=>{let n=e.item,{view:r}=t,i=e=>r.settings.find(t=>t.scope===e&&!t.legacy);return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`p`,{className:`verdict ${n.from.length===0?`off`:`ok`}`,children:n.from.length===0?`Claude Code ignores this value: ${n.ignored[0]?.reason??``}.`:n.merged?`Lists and objects from these files are combined.`:`${xe(n.from[0]??`user`)} settings decide this value.`}),(0,O.jsx)(`h3`,{className:`sub-title`,children:`Every file that sets it`}),(0,O.jsx)(`table`,{className:`layers`,children:(0,O.jsx)(`tbody`,{children:Ne.map(e=>{let t=i(e),r=t?.data?.[n.key],a=n.ignored.find(t=>t.scope===e);return(0,O.jsxs)(`tr`,{className:r===void 0?`unset`:n.from.includes(e)?`wins`:`lost`,title:a?.reason,children:[(0,O.jsx)(`th`,{scope:`row`,children:(0,O.jsx)(N,{line:e,hollow:r===void 0})}),(0,O.jsx)(`td`,{className:`mono`,children:r===void 0?t?.exists?`not set`:`no file`:`${fe(r)}${a?` (ignored)`:``}`})]},e)})})}),(0,O.jsx)(`h3`,{className:`sub-title`,children:`Value Claude Code uses`}),n.note&&(0,O.jsx)(`p`,{className:`muted small`,children:n.note}),(0,O.jsx)(`pre`,{className:`raw`,children:JSON.stringify(n.value,null,2)}),(0,O.jsx)(`h3`,{className:`sub-title`,children:`Change it`}),(0,O.jsx)(Xe,{view:r,settingKey:n.key,defaultScope:[...n.from].reverse().find(e=>Pe.includes(e))??`user`,onSaved:t.onSaved},n.key),(0,O.jsx)(`dl`,{className:`fields`,children:n.from.map(e=>{let t=i(e);return t?(0,O.jsx)(K,{label:`${xe(e)} file`,children:(0,O.jsx)(Ku,{path:t.path})},e):null})})]})}});function Cd(e,t){return e?e.tools.find(e=>e.tool===t)?.calls??0:null}function wd(e,t){if(e===void 0)return`counting…`;if(e===null)return`ccdesk could not read the transcripts`;if(e.sessions===0)return`no sessions here yet`;let n=e.tools.find(e=>e.tool===t);if(!n)return`not called in ${pd(e)}`;let r=n.approved+n.refused;return`${he(n.calls,`call`)} in ${pd(e)}${r>0?`; asked you ${he(r,`time`)}, you refused ${n.refused}`:``}`}function Td(e){switch(e.verdict){case`denied`:return`removed`;case`asks`:return`asks every time`;case`allowed`:return`runs without asking`;case`default`:return e.asks?`asks first`:`no approval needed`}}function Ed(e){let t=e.decidedBy,n=t?`${t.rule} in ${xe(t.scope).toLowerCase()} settings`:``;switch(e.verdict){case`denied`:return`Denied by ${n}, so Claude Code removes the tool from Claude's context.`;case`asks`:return`Claude asks you every time it wants this tool, because of ${n}.`;case`allowed`:return`Claude uses it without asking, because of ${n}, unless a rule below for some uses denies or asks first.`;case`default`:return e.name===`EndConversation`?`No permission rule or PreToolUse hook applies to this tool while Claude has any other tool, so it is never blocked and never asks.`:e.asks?`No rule names the whole tool, so Claude asks before using it.`:`No rule names the whole tool, and it needs no approval. File tools still ask for paths outside the working directories.`}}function Dd(e){let t=e.permissions.find(e=>e.kind===`defaultMode`&&e.inEffect);return t?.kind===`defaultMode`?t.value:`default`}function Od(e,t){return e.permissions.filter(e=>e.kind===`rule`&&e.inEffect&&(t.removedBy??[]).some(t=>t.list===e.list&&t.rule===e.rule&&t.scope===e.scope))}function kd({tool:e,actions:t}){let{view:n}=t,r=tt(n,t.onSaved),[i,a]=(0,v.useState)(!1),[o,s]=(0,v.useState)(`user`);if(e.name===`EndConversation`)return null;let c=Od(n,e);if(e.verdict===`denied`&&c.length>0){let e=c.filter(e=>!Pe.includes(e.scope));return(0,O.jsxs)(`section`,{className:`sub editor`,"aria-label":`Turn back on`,children:[(0,O.jsx)(`h3`,{children:`Turn back on`}),e.length>0?(0,O.jsx)(`p`,{className:`muted small`,children:`Managed settings turn it off, so it stays off whatever your files say.`}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`p`,{className:`muted small`,children:c.length===1?`Removing this rule gives Claude the tool again.`:`Each of these rules turns it off; remove all of them to give Claude the tool again.`}),(0,O.jsx)(`ul`,{className:`plain`,children:c.map(e=>(0,O.jsxs)(`li`,{className:`tool-switch-rule`,children:[(0,O.jsx)(N,{line:e.scope}),` `,(0,O.jsx)(`span`,{className:`mono`,children:e.rule}),(0,O.jsxs)(`span`,{className:`muted small`,children:[` `,`in `,xe(e.scope).toLowerCase(),` settings`]}),!e.rule.includes(`(`)&&e.rule.includes(`*`)&&(0,O.jsx)(`span`,{className:`flag warn`,children:`also turns off every other tool it matches`}),(0,O.jsx)(`button`,{type:`button`,className:`head-action`,disabled:r.busy||r.reviewing,onClick:()=>void r.start(e.path,{list:`deny`,rule:e.rule},void 0,`Removed ${e.rule} from deny`),children:`Remove…`})]},`${e.path}:${e.rule}`))})]}),r.shown]})}let l=nt(n,o);return(0,O.jsx)(`section`,{className:`sub editor`,"aria-label":`Turn off for Claude`,children:i?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`h3`,{children:`Turn off for Claude`}),(0,O.jsx)(`p`,{className:`muted small`,children:`A deny rule naming the whole tool removes it from Claude's context. In your user settings it applies in every project; in project settings, for everyone working in this repository; in local settings, only for you here.`}),(0,O.jsx)(it,{scope:o,onPick:e=>{s(e),r.cancel()}}),(0,O.jsx)(`p`,{className:`muted small mono wrap`,children:l?k(l):``}),!r.reviewing&&(0,O.jsxs)(`div`,{className:`editor-buttons`,children:[(0,O.jsx)(`button`,{type:`button`,className:`primary`,disabled:r.busy||!l,onClick:()=>l&&void r.start(l,void 0,{list:`deny`,rule:e.name},`Turned off ${e.name} in ${xe(o).toLowerCase()} settings`),children:`Review change`}),(0,O.jsx)(`button`,{type:`button`,onClick:()=>a(!1),children:`Cancel`})]}),r.shown]}):(0,O.jsxs)(`button`,{type:`button`,className:`quiet-danger`,onClick:()=>a(!0),children:[(0,O.jsx)(A,{name:`block`}),` Turn off for Claude…`]})})}function Ad({text:e}){return e.split(/`([^`]+)`/).map((e,t)=>t%2==1?(0,O.jsx)(`code`,{children:e},t):e)}var jd=[rd,Sd,yd,Yu({id:`tools`,title:`Built-in tools`,short:`Tools`,rows:e=>e.tools.map(t=>({id:`tool:${t.name}`,section:`tools`,line:t.decidedBy?.scope??null,item:t,calls:Cd(e.usage,t.name)})),columns:[{label:``},{label:`Tool`,sort:e=>e.item.name},{label:`Outcome`,sort:e=>Td(e.item)},{label:`Rules and hooks`,sort:e=>e.item.scoped.length+e.item.hooks},{label:`Used`,sort:e=>e.calls??-1},{label:`Description`}],cells:(e,t,n)=>{let r=e.item,i=r.scoped.filter(e=>!e.unchecked);return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`td`,{children:e.line&&(0,O.jsx)(N,{line:e.line})}),(0,O.jsx)(`td`,{className:`mono`,children:(0,O.jsx)(Hu,{onClick:n,children:r.name})}),(0,O.jsx)(`td`,{children:(0,O.jsx)(`span`,{className:`tool-outcome tool-${r.verdict==="default"?r.asks?`asks`:`free`:r.verdict}`,children:Td(r)})}),(0,O.jsxs)(`td`,{className:`checks`,children:[i.length>0&&(0,O.jsxs)(`span`,{className:`flag`,title:i.map(e=>`${e.list} ${e.rule}`).join(`
45
- `),children:[he(i.length,`rule`),` for some uses`]}),i.length<r.scoped.length&&(0,O.jsx)(`span`,{className:`flag warn`,title:`Claude Code never checks a path rule on this tool`,children:he(r.scoped.length-i.length,`unchecked rule`)}),r.hooks>0&&(0,O.jsx)(`span`,{className:`flag`,children:he(r.hooks,`hook`)})]}),(0,O.jsx)(`td`,{className:`num${e.calls?` used`:``}`,children:e.calls??`…`}),(0,O.jsx)(`td`,{className:`desc`,children:(0,O.jsx)(Ad,{text:r.description.split(/(?<=\.)\s/)[0]??``})})]})},empty:()=>`ccdesk has no list of built-in tools.`,dimmed:e=>e.item.verdict===`denied`,text:e=>`tool ${e.item.name} ${Td(e.item)} ${e.item.description}`,label:e=>`tool ${e.item.name}`,heading:e=>e.item.name,facet:{label:`Filter tools by outcome`,of:e=>Td(e.item),order:[`removed`,`asks every time`,`asks first`,`runs without asking`,`no approval needed`]},Head:({actions:e})=>(0,O.jsxs)(`span`,{className:`tt-note`,children:[`As in Manual mode; sessions here start in `,Dd(e.view),` mode`]}),Details:({row:e,actions:t})=>{let n=e.item;return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`p`,{className:`verdict ${n.verdict===`denied`?`off`:n.verdict===`allowed`||!n.asks&&n.verdict==="default"?`ok`:``}`,children:Ed(n)}),(0,O.jsx)(`p`,{children:(0,O.jsx)(Ad,{text:n.description})}),n.scoped.length>0&&(0,O.jsxs)(`section`,{className:`sub`,children:[(0,O.jsx)(`h3`,{children:`Rules for some uses`}),(0,O.jsx)(`ul`,{className:`plain`,children:n.scoped.map(e=>(0,O.jsxs)(`li`,{children:[(0,O.jsx)(N,{line:e.scope}),` `,(0,O.jsx)(`span`,{className:`perm perm-${e.list}`,children:e.list}),` `,(0,O.jsx)(`span`,{className:`mono`,children:e.rule}),e.unchecked&&(0,O.jsx)(`span`,{className:`flag warn`,children:`never checked: Claude Code checks paths against Edit and Read rules only`})]},`${e.scope}:${e.list}:${e.rule}`))}),(0,O.jsx)(`p`,{className:`muted small`,children:`Checked deny, then ask, then allow, before the rule for the whole tool applies.`})]}),(0,O.jsxs)(`dl`,{className:`fields`,children:[(0,O.jsx)(K,{label:`Manual mode`,children:n.asks?`asks before using it`:`no approval needed`}),(0,O.jsx)(K,{label:`Used here`,children:wd(t.view.usage,n.name)}),(0,O.jsx)(K,{label:`PreToolUse hooks`,children:n.hooks===0?`none`:`${he(n.hooks,`hook`)} run before each use`})]}),(0,O.jsx)(kd,{tool:n,actions:t},`${n.name}:${n.verdict}`),(0,O.jsx)(`p`,{className:`muted small`,children:`Permission modes other than Manual change which uses ask. Tool names and descriptions come from Claude Code's tools reference.`})]})}}),cd,ed,ad,X,$u];function Md(e){let t=jd.find(t=>t.id===e);if(!t)throw Error(`Unknown section ${e}`);return t}function Nd(e){return jd.flatMap(t=>t.rows(e))}function Pd({row:e,adding:t,actions:n,onClose:r}){let i=(0,v.useRef)(null),a=t??e?.id??null;if((0,v.useEffect)(()=>{a&&matchMedia(`(max-width: 1180px)`).matches&&i.current?.focus()},[a]),t){let e=t===`setting`?`Add a setting`:`Add a permission rule`;return(0,O.jsxs)(`aside`,{className:`inspector`,"aria-label":e,children:[(0,O.jsxs)(`header`,{className:`insp-head`,children:[(0,O.jsx)(A,{name:`plus`}),(0,O.jsx)(`h2`,{ref:i,tabIndex:-1,children:e}),(0,O.jsx)(`button`,{type:`button`,className:`icon-button`,onClick:r,"aria-label":`Close`,children:(0,O.jsx)(A,{name:`close`})})]}),(0,O.jsx)(`div`,{className:`insp-body`,children:t===`setting`?(0,O.jsx)(Xe,{view:n.view,settingKey:null,defaultScope:`user`,onSaved:n.onSaved}):(0,O.jsx)(rt,{view:n.view,rule:null,onSaved:n.onSaved})})]})}if(!e)return(0,O.jsxs)(`aside`,{className:`inspector empty`,"aria-label":`Details`,children:[(0,O.jsx)(`p`,{children:`Select a row to see the file behind it.`}),(0,O.jsxs)(`p`,{className:`muted`,children:[(0,O.jsx)(`kbd`,{children:`j`}),` `,(0,O.jsx)(`kbd`,{children:`k`}),` move · `,(0,O.jsx)(`kbd`,{children:`1`}),`–`,(0,O.jsx)(`kbd`,{children:jd.length}),` sections ·`,` `,(0,O.jsx)(`kbd`,{children:`/`}),` filter · `,(0,O.jsx)(`kbd`,{children:`Ctrl`}),` `,(0,O.jsx)(`kbd`,{children:`K`}),` jump anywhere`]})]});let o=Md(e.section),{Details:s}=o;return(0,O.jsxs)(`aside`,{className:`inspector`,"aria-label":`Details`,children:[(0,O.jsxs)(`header`,{className:`insp-head`,children:[e.line?(0,O.jsx)(N,{line:e.line}):(0,O.jsx)(A,{name:`command`}),(0,O.jsx)(`h2`,{ref:i,tabIndex:-1,children:o.heading(e)}),(0,O.jsx)(`button`,{type:`button`,className:`icon-button`,onClick:r,"aria-label":`Close details`,children:(0,O.jsx)(A,{name:`close`})})]}),(0,O.jsx)(`div`,{className:`insp-body`,children:(0,O.jsx)(s,{row:e,actions:n},e.id)})]})}var Fd={query:``,line:null,sort:{},only:{}};function Id(){let e=new URLSearchParams(location.search);return e.has(`changes`)?{kind:`changes`}:e.has(`all`)?{kind:`all`}:{kind:`directory`,dir:e.get(`dir`)??void 0}}function Ld(){let e=new URLSearchParams(location.search),t={...Fd,sort:{},only:{}};t.query=e.get(`q`)??``;let n=e.get(`line`);t.line=be.find(e=>e.line===n)?.line??null;for(let[n,r]of e){let[e,i]=n.split(`.`);if(i){if(e===`sort`){let e=/^(\d+)(d?)$/.exec(r);e&&(t.sort[i]={column:Number(e[1]),descending:e[2]===`d`})}else e===`only`&&(t.only[i]=r)}}return t}function Rd(e){return e.kind===`changes`?new URLSearchParams(`changes`):e.kind===`all`?new URLSearchParams(`all`):new URLSearchParams(e.dir?{dir:e.dir}:{})}function zd(e,t){let n=e.toString().replace(/^(changes|all)=(&|$)/,`$1$2`),r=n?`?${n}`:location.pathname;t?history.pushState(null,``,r):history.replaceState(null,``,r)}function Bd(e){zd(Rd(e),!0)}function Vd(e,t){let n=Rd(e);t.query&&n.set(`q`,t.query),t.line&&n.set(`line`,t.line);for(let[e,r]of Object.entries(t.sort))r&&n.set(`sort.${e}`,`${r.column}${r.descending?`d`:``}`);for(let[e,r]of Object.entries(t.only))r&&n.set(`only.${e}`,r);zd(n,!1)}function Hd(e,t){return typeof e==`number`&&typeof t==`number`?e-t:String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:`base`})}function Ud(e,t,n,r){let i=n.query.trim().toLowerCase();return e.map(e=>{let a=t.filter(t=>t.section===e.id),o=n.only[e.id],s=a.filter(t=>(!n.line||t.line===n.line||t.section===`settings`&&t.lines.includes(n.line))&&(!o||e.facet?.of(t)===o)&&(!i||e.text(t).toLowerCase().includes(i))),c=n.sort[e.id],l=c?e.columns[c.column]?.sort:void 0;return c&&l&&s.sort((e,t)=>Hd(l(e),l(t))*(c.descending?-1:1)),{section:e,all:a,matching:s,shown:s.slice(0,r[e.id]??50)}})}function Wd(e){return!!(e.query.trim()||e.line||Object.values(e.only).some(Boolean))}function Gd(e){let t=e.inventory;return be.filter(e=>e.line!==`plugin`||t.plugins.some(e=>e.enabled)).map(({line:n,name:r})=>{let i=[];if(n===`memory`){let t=e.memory.memories.length;return t&&i.push(he(t,`memory`,`memories`)),{line:n,name:r,facts:i,active:t>0}}if(n===`plugin`){let e=t.plugins.filter(e=>e.enabled).length;return e&&i.push(he(e,`plugin`)),{line:n,name:r,facts:i,active:e>0}}let a=e.instructions.filter(e=>e.scope===n),o=a.filter(e=>e.status!==`skipped`).length,s=a.length-o;o&&i.push(he(o,`file`)),s&&i.push(`${s} skipped`);let c=e.effective.filter(e=>e.from.includes(n)).length;c&&i.push(he(c,`setting`));let l=t.hooks.filter(e=>e.source===n).length;l&&i.push(he(l,`hook`));let u=t.mcpServers.filter(e=>e.scope===n).length;u&&i.push(`${u} MCP`);let d=[...t.agents,...t.skills,...t.commands,...t.outputStyles].filter(e=>e.scope===n).length;d&&i.push(he(d,`extension`));let f=l+u+d;return{line:n,name:r,facts:i,active:o>0||c>0||f>0}})}function Kd({view:e,lit:t,filter:n,onFilter:r}){let i=Gd(e);return(0,O.jsx)(`nav`,{className:`route`,"aria-label":`Load order for this directory`,children:(0,O.jsx)(`ol`,{className:`route-stops`,children:i.map(e=>{let i=n===e.line;return(0,O.jsx)(`li`,{className:`stop${e.active?``:` idle`}${t===e.line?` lit`:``}`,children:(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":i,className:i?`on`:``,onClick:()=>r(i?null:e.line),title:i?`Show every scope`:`Show only ${e.name.toLowerCase()} items`,children:[(0,O.jsx)(`span`,{className:`stop-node`,children:(0,O.jsx)(N,{line:e.line,hollow:!e.active})}),(0,O.jsx)(`span`,{className:`stop-name`,children:e.name}),(0,O.jsx)(`span`,{className:`stop-facts`,children:e.facts.length?e.facts.join(` · `):`not used`})]})},e.line)})})})}function qd({view:e}){let t=e.sharing;if(!t)return null;let n=[[`tracked`,`Tracked in git: everyone who clones gets these`,t.tracked],[`untracked`,`Not tracked yet`,t.untracked],[`ignored`,`Git-ignored: only you`,t.ignored]];return n.every(([,,e])=>e.length===0)?null:(0,O.jsx)(`dl`,{className:`sharing`,"aria-label":`What this repository shares`,children:n.filter(([,,e])=>e.length>0).map(([e,t,n])=>(0,O.jsxs)(`div`,{className:`sharing-group vis-${e}`,children:[(0,O.jsx)(`dt`,{children:t}),(0,O.jsx)(`dd`,{className:`mono`,children:n.map(e=>(0,O.jsx)(`span`,{children:e},e))})]},e))})}function Jd(e,t){return e?.column===t?e.descending?void 0:{column:t,descending:!0}:{column:t,descending:!1}}function Yd({columns:e,sort:t,onSort:n}){return(0,O.jsx)(`thead`,{children:(0,O.jsx)(`tr`,{children:e.map((e,r)=>{let i=t?.column===r;return(0,O.jsx)(`th`,{scope:`col`,"aria-sort":i?t.descending?`descending`:`ascending`:void 0,children:e.sort?(0,O.jsxs)(`button`,{type:`button`,className:`sort`,onClick:()=>n(Jd(t,r)),children:[e.label||(0,O.jsx)(`span`,{className:`visually-hidden`,children:`Scope`}),(0,O.jsx)(`span`,{className:`sort-mark${i?` on`:``}`,"aria-hidden":`true`,children:i?t.descending?`↓`:`↑`:`↕`})]}):e.label},e.label||`scope`)})})})}function Xd({shown:e,total:t,page:n,onMore:r}){return e>=t?null:(0,O.jsxs)(`button`,{type:`button`,className:`show-more`,onClick:r,children:[`Show `,Math.min(n,t-e),` more`,(0,O.jsxs)(`span`,{className:`muted`,children:[` `,`· `,e,` of `,t,` shown`]})]})}function Zd({groups:e,actions:t,state:n,selected:r,onSelect:i,onSort:a,onOnly:o,onShowMore:s,filtered:c}){return(0,O.jsx)(`div`,{className:`timetable`,children:e.map(({section:e,all:l,matching:u,shown:d})=>{if(c&&u.length===0)return null;let f=n.sort[e.id],{Head:p}=e;return(0,O.jsxs)(`section`,{id:`section-${e.id}`,className:`tt-section`,"aria-labelledby":`h-${e.id}`,children:[(0,O.jsxs)(`header`,{className:`tt-head`,children:[(0,O.jsx)(`h2`,{id:`h-${e.id}`,children:e.title}),(0,O.jsx)(`span`,{className:`tt-count`,children:u.length===l.length?l.length:`${u.length} of ${l.length}`}),e.facet&&(0,O.jsx)(ef,{label:e.facet.label,values:Qd(l,e.facet.of,e.facet.order),current:n.only[e.id],render:e.facet.render,onPick:t=>o(e.id,t)}),p&&(0,O.jsx)(p,{actions:t})]}),l.length===0?(0,O.jsx)(`p`,{className:`tt-empty`,children:e.empty(t.view)}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`table`,{className:`tt tt-${e.id} ${e.tableClass?.(l)??``}`,children:[(0,O.jsx)(Yd,{columns:e.columns,sort:f,onSort:t=>a(e.id,t)}),(0,O.jsx)(`tbody`,{children:d.map(n=>(0,O.jsx)(`tr`,{id:`row-${n.id}`,className:`${n.id===r?`selected`:``}${e.dimmed?.(n)?` dim`:``}`,onClick:()=>i(n.id),children:e.cells(n,t,()=>i(n.id))},n.id))})]}),(0,O.jsx)(Xd,{shown:d.length,total:u.length,page:50,onMore:()=>s(e.id)})]})]},e.id)})})}function Qd(e,t,n=[]){let r=new Map;for(let n of e)r.set(t(n),(r.get(t(n))??0)+1);let i=e=>n.includes(e)?n.indexOf(e):n.length;return[...r].sort(([e],[t])=>i(e)-i(t)||e.localeCompare(t))}var $d=8;function ef({label:e,values:t,current:n,render:r,onPick:i}){return t.length<2&&!n?null:t.length>$d?(0,O.jsxs)(`select`,{className:`facet-select`,"aria-label":e,value:n??``,onChange:e=>i(e.target.value||void 0),children:[(0,O.jsxs)(`option`,{value:``,children:[`All (`,t.reduce((e,[,t])=>e+t,0),`)`]}),n&&!t.some(([e])=>e===n)&&(0,O.jsxs)(`option`,{value:n,children:[n,` (0)`]}),t.map(([e,t])=>(0,O.jsxs)(`option`,{value:e,children:[e,` (`,t,`)`]},e))]}):(0,O.jsxs)(`fieldset`,{className:`segmented`,"aria-label":e,children:[(0,O.jsx)(`button`,{type:`button`,"aria-pressed":!n,onClick:()=>i(void 0),children:`All`}),t.map(([e,t])=>(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":n===e,onClick:()=>i(n===e?void 0:e),children:[r?r(e):e,` `,(0,O.jsx)(`span`,{className:`seg-count`,children:t})]},e))]})}function tf({toast:e,onDone:t}){return(0,v.useEffect)(()=>{if(!e)return;let n=setTimeout(t,e.undo?12e3:4e3);return()=>clearTimeout(n)},[e,t]),(0,O.jsx)(`div`,{className:`toast-region`,role:`status`,"aria-live":`polite`,children:e&&(0,O.jsxs)(`div`,{className:`toast`,children:[(0,O.jsx)(`span`,{children:e.text}),e.undo&&(0,O.jsxs)(`button`,{type:`button`,onClick:()=>void e.undo?.(),children:[(0,O.jsx)(A,{name:`undo`}),` Undo`]})]})})}function nf(e){return e instanceof C&&e.status===401?`This page lost its access token. Open the link ccdesk printed in your terminal again.`:e instanceof Error?e.message:String(e)}function rf(e){let[t,n]=(0,v.useState)({state:`loading`}),[r,i]=(0,v.useState)({state:`loading`}),[a,o]=(0,v.useState)(null),s=e===void 0?t.state===`ready`?t.data.launchDir:null:e,c=(0,v.useCallback)(()=>{T.overview().then(e=>{oe(e.home),n({state:`ready`,data:e})},e=>n({state:`error`,message:nf(e)}))},[]);(0,v.useEffect)(c,[c]);let l=(0,v.useRef)(0),u=(0,v.useCallback)((e,t)=>{let n=++l.current;t||i({state:`loading`}),T.directory(e).then(t=>{n===l.current&&(i({state:`ready`,data:t}),o(e))},e=>{n===l.current&&i({state:`error`,message:nf(e)})})},[]);(0,v.useEffect)(()=>{s!==null&&u(s,!1)},[s,u]);let d=(0,v.useRef)(s);d.current=s;let f=(0,v.useCallback)(()=>{d.current!==null&&u(d.current,!0),c()},[u,c]);(0,v.useEffect)(()=>{if(s===null)return;let e=new AbortController;return(async()=>{let t=Date.now();for(;!e.signal.aborted;)try{let{changed:n,at:r}=await T.watch(s,t,e.signal);t=Math.max(t,r),n&&!e.signal.aborted&&f()}catch{await new Promise(e=>setTimeout(e,5e3))}})(),()=>e.abort()},[s,f]),(0,v.useEffect)(()=>{let e=Date.now(),t=()=>{document.visibilityState!==`visible`||Date.now()-e<1500||(e=Date.now(),f())};return addEventListener(`focus`,t),document.addEventListener(`visibilitychange`,t),()=>{removeEventListener(`focus`,t),document.removeEventListener(`visibilitychange`,t)}},[f]);let p=r.state===`ready`&&a===s?r.data:null,[m,h]=(0,v.useState)(null);return(0,v.useEffect)(()=>{if(!p)return;let e=!0,t=p.permissions.flatMap(e=>e.kind===`rule`&&e.inEffect?[{list:e.list,rule:e.rule}]:[]);return T.usage(p.path,t).then(t=>e&&h({path:p.path,data:t}),()=>e&&h({path:p.path,data:null})),()=>{e=!1}},[p]),{overview:t,view:r,data:(0,v.useMemo)(()=>p&&m?.path===p.path?{...p,usage:m.data}:p,[p,m]),dir:s,reload:f}}function af(e){return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLElement&&e.isContentEditable}function of({view:e,overview:t,rows:n,jump:r,onJumped:i,reload:a,onToast:o,onOpenDirectory:s,onOpenPalette:c}){let[l,u]=(0,v.useState)(null),[d,f]=(0,v.useState)(null),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(Ld),[_,y]=(0,v.useState)({}),b=(0,v.useRef)(null);(0,v.useEffect)(()=>Vd({kind:`directory`,dir:e.path},h),[h,e.path]);let x=e=>{g(e),y({})},S=(0,v.useMemo)(()=>Ud(jd,n,h,_),[n,h,_]),C=(0,v.useMemo)(()=>S.flatMap(e=>e.shown),[S]),w=Wd(h),E=n.find(e=>e.id===l)??null,D=(0,v.useCallback)((e,t=!1)=>{f(null),u(e),requestAnimationFrame(()=>{let n=document.getElementById(`row-${e}`);n?.scrollIntoView({block:`nearest`}),t&&n?.querySelector(`button`)?.focus({preventScroll:!0})})},[]);(0,v.useEffect)(()=>{if(r||!matchMedia(`(min-width: 1181px)`).matches)return;let t=e.instructions.find(e=>e.status===`loaded`);t&&u(`ins:${t.path}`)},[]),(0,v.useEffect)(()=>{if(!r)return;let e=n.find(e=>e.id===r.id);if(!e)return;i(),m(!1);let t=S.find(t=>t.section.id===e.section);t&&!t.matching.includes(e)?x(Fd):t&&!t.shown.includes(e)&&y(n=>({...n,[e.section]:t.matching.indexOf(e)+50})),requestAnimationFrame(()=>D(r.id))},[r]),(0,v.useEffect)(()=>{let e=e=>e&&document.getElementById(`section-${e}`)?.scrollIntoView({block:`start`}),t=t=>{if(!(af(t.target)||t.altKey||t.ctrlKey||t.metaKey)){if(t.key===`/`)t.preventDefault(),m(!1),requestAnimationFrame(()=>b.current?.focus());else if((t.key===`j`||t.key===`k`)&&!p){let e=C.findIndex(e=>e.id===l),n=C[t.key===`j`?e+1:Math.max(e-1,0)]??C[0];n&&D(n.id,!0)}else/^[1-9]$/.test(t.key)&&!p?e(jd[Number(t.key)-1]?.id):t.key===`Escape`&&(u(null),f(null))}};return addEventListener(`keydown`,t),()=>removeEventListener(`keydown`,t)},[C,l,D,p]);let ee=(0,v.useCallback)(async e=>{try{await T.restore(e.id,e.revision),o({text:`Put ${e.target.split(/[/\\]/).pop()} back`})}catch(e){o({text:`Could not undo: ${nf(e)}. Recent changes keeps the backup.`})}a()},[o,a]),te=(0,v.useCallback)(({change:e,message:t,select:n})=>{f(null),n!==void 0&&u(n),o({text:t,undo:()=>ee(e)}),a()},[o,a,ee]),ne=(0,v.useMemo)(()=>({view:e,overview:t,sharedNames:new Set(t?.sharedMemories.map(e=>e.name)??[]),onOpenDirectory:s,onAdd:e=>{u(null),f(e)},onSaved:te,onChange:async(e,t,n)=>{try{te({change:await e(),message:t,...n===void 0?{}:{select:n}})}catch(e){o({text:`Could not do that: ${nf(e)}`}),a()}}}),[e,t,s,te,o,a]),{trust:re}=e;return(0,O.jsxs)(`div`,{className:`workspace`,children:[(0,O.jsxs)(`div`,{className:`work-main`,children:[(0,O.jsxs)(`header`,{className:`dir-head`,children:[(0,O.jsxs)(`div`,{className:`dir-title`,children:[(0,O.jsx)(`h1`,{className:`mono`,children:k(e.path)}),!e.exists&&(0,O.jsx)(`span`,{className:`flag bad`,children:`folder no longer exists`}),e.gitRoot&&e.gitRoot!==e.path&&(0,O.jsxs)(`span`,{className:`flag`,children:[`inside `,k(e.gitRoot)]}),re.sessionOnly?(0,O.jsx)(`span`,{className:`flag`,title:`In your home directory Claude Code asks for trust each session and saves no answer.`,children:`trust asked each session`}):!re.trusted&&(0,O.jsx)(`span`,{className:`flag warn`,title:`Until you accept Claude Code's trust dialog for ${k(re.root)}, its allow rules, extra folders and .mcp.json approvals wait.${re.inheritedFrom?` You trusted ${k(re.inheritedFrom)}, which covers some of this but not those grants.`:``}`,children:`not trusted yet`})]}),(0,O.jsxs)(`div`,{className:`toolbar`,children:[(0,O.jsxs)(`fieldset`,{className:`segmented view-switch`,"aria-label":`View`,children:[(0,O.jsx)(`button`,{type:`button`,"aria-pressed":!p,onClick:()=>m(!1),children:`Config`}),(0,O.jsxs)(`button`,{type:`button`,"aria-pressed":p,onClick:()=>m(!0),children:[(0,O.jsx)(A,{name:`eye`}),` What Claude sees`]})]}),(0,O.jsxs)(`label`,{className:`filter${p?` hidden`:``}`,children:[(0,O.jsx)(A,{name:`search`}),(0,O.jsx)(`input`,{ref:b,value:h.query,onChange:e=>x({...h,query:e.target.value}),onKeyDown:e=>{e.key===`Escape`&&(x({...h,query:``}),e.currentTarget.blur())},placeholder:`Filter rows`,"aria-label":`Filter rows`}),(0,O.jsx)(`kbd`,{children:`/`})]}),(0,O.jsxs)(`button`,{type:`button`,className:`palette-button`,onClick:c,children:[`Jump to `,(0,O.jsx)(`kbd`,{children:`Ctrl K`})]})]}),(0,O.jsx)(`nav`,{className:`section-index${p?` hidden`:``}`,"aria-label":`Sections`,children:S.map(({section:e,all:t},n)=>(0,O.jsxs)(`a`,{href:`#section-${e.id}`,className:t.length===0?`empty`:``,onClick:t=>{t.preventDefault(),document.getElementById(`section-${e.id}`)?.scrollIntoView({block:`start`})},children:[(0,O.jsx)(`kbd`,{children:n+1}),` `,e.short??e.title,(0,O.jsx)(`span`,{className:`seg-count`,children:t.length})]},e.id))})]}),e.problems.length>0&&(0,O.jsxs)(`section`,{className:`problems`,role:`alert`,"aria-label":`Files ccdesk could not read`,children:[(0,O.jsx)(A,{name:`warn`}),(0,O.jsx)(`ul`,{className:`plain`,children:e.problems.map(e=>(0,O.jsxs)(`li`,{children:[(0,O.jsx)(`span`,{className:`mono`,children:k(e.path)}),`: `,e.error,`. Claude Code may skip this file.`]},e.path))})]}),p?(0,O.jsx)(Oe,{view:e}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(Kd,{view:e,lit:E?.line??null,filter:h.line,onFilter:e=>x({...h,line:e})}),(0,O.jsx)(qd,{view:e}),(0,O.jsx)(Zd,{groups:S,actions:ne,state:h,selected:l,onSelect:D,onSort:(e,t)=>g({...h,sort:{...h.sort,[e]:t}}),onOnly:(e,t)=>x({...h,only:{...h.only,[e]:t}}),onShowMore:e=>y(t=>({...t,[e]:(t[e]??50)+50})),filtered:w}),w&&C.length===0&&(0,O.jsxs)(`p`,{className:`tt-empty`,children:[`Nothing matches.`,` `,(0,O.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>x(Fd),children:`Clear filters`})]})]})]}),(0,O.jsx)(Pd,{row:E,adding:d,actions:ne,onClose:()=>{u(null),f(null)}})]})}var sf=[{label:`Directory`,sort:e=>e.path},{label:`Sessions`,sort:e=>e.sessions},{label:`Memories`,sort:e=>e.memories},{label:`Last used`,sort:e=>e.lastActive??``}];function cf({overview:e,onOpen:t}){let n=(0,v.useMemo)(()=>e.projects.filter(e=>!e.ephemeral),[e]),r=n.reduce((e,t)=>e+t.memories,0),[i,a]=(0,v.useState)(()=>Ld().query),[o,s]=(0,v.useState)(()=>Ld().sort.dirs),[c,l]=(0,v.useState)(50);(0,v.useEffect)(()=>Vd({kind:`all`},{...Fd,query:i,sort:o?{dirs:o}:{}}),[i,o]);let u=(0,v.useMemo)(()=>{let e=i.trim().toLowerCase(),t=n.filter(t=>!e||t.path.toLowerCase().includes(e)),r=o&&sf[o.column]?.sort;return o&&r&&t.sort((e,t)=>{let[n,i]=[r(e),r(t)],a=typeof n==`number`&&typeof i==`number`?n-i:String(n).localeCompare(String(i));return o.descending?-a:a}),t},[n,i,o]);return(0,O.jsxs)(`div`,{className:`page`,children:[(0,O.jsxs)(`header`,{className:`page-head`,children:[(0,O.jsx)(`h1`,{children:`All directories`}),(0,O.jsxs)(`p`,{className:`lede`,children:[n.length,` directories used with Claude Code, `,r,` memories, config from`,` `,(0,O.jsx)(`span`,{className:`mono`,children:k(e.claudeDir)}),`.`]})]}),(0,O.jsxs)(`section`,{className:`tt-section`,"aria-labelledby":`h-dirs`,children:[(0,O.jsxs)(`header`,{className:`tt-head`,children:[(0,O.jsx)(`h2`,{id:`h-dirs`,children:`Directories`}),(0,O.jsx)(`span`,{className:`tt-count`,children:u.length===n.length?n.length:`${u.length} of ${n.length}`}),(0,O.jsxs)(`label`,{className:`filter`,children:[(0,O.jsx)(A,{name:`search`}),(0,O.jsx)(`input`,{value:i,onChange:e=>{a(e.target.value),l(50)},placeholder:`Filter directories`,"aria-label":`Filter directories`})]})]}),(0,O.jsxs)(`table`,{className:`tt tt-dirs`,children:[(0,O.jsx)(Yd,{columns:sf,sort:o,onSort:s}),(0,O.jsx)(`tbody`,{children:u.slice(0,c).map(e=>(0,O.jsxs)(`tr`,{onClick:()=>t(e.path),className:e.exists?``:`dim`,children:[(0,O.jsxs)(`td`,{className:`mono`,children:[(0,O.jsx)(`button`,{type:`button`,className:`row-name`,onClick:n=>{n.stopPropagation(),t(e.path)},children:k(e.path)}),!e.exists&&(0,O.jsx)(`span`,{className:`flag`,children:`folder gone`})]}),(0,O.jsx)(`td`,{className:`num`,children:e.sessions||`—`}),(0,O.jsx)(`td`,{className:`num`,children:e.memories||`—`}),(0,O.jsx)(`td`,{className:`num`,children:le(e.lastActive)})]},e.path))})]}),u.length===0&&(0,O.jsx)(`p`,{className:`tt-empty`,children:n.length===0?`No directories yet. Temporary and test directories are listed in the sidebar.`:`No directory matches.`}),(0,O.jsx)(Xd,{shown:Math.min(c,u.length),total:u.length,page:50,onMore:()=>l(c+50)})]}),(0,O.jsxs)(`section`,{className:`tt-section`,"aria-labelledby":`h-shared`,children:[(0,O.jsxs)(`header`,{className:`tt-head`,children:[(0,O.jsx)(`h2`,{id:`h-shared`,children:`Memory saved in more than one directory`}),(0,O.jsx)(`span`,{className:`tt-count`,children:e.sharedMemories.length})]}),e.sharedMemories.length===0?(0,O.jsx)(`p`,{className:`tt-empty`,children:`Every memory lives in exactly one directory.`}):(0,O.jsxs)(`table`,{className:`tt tt-shared`,children:[(0,O.jsx)(`thead`,{children:(0,O.jsxs)(`tr`,{children:[(0,O.jsx)(`th`,{scope:`col`}),(0,O.jsx)(`th`,{scope:`col`,children:`Memory`}),(0,O.jsx)(`th`,{scope:`col`,children:`Copies`}),(0,O.jsx)(`th`,{scope:`col`,children:`Saved in`})]})}),(0,O.jsx)(`tbody`,{children:e.sharedMemories.map(e=>{let n=new Set(e.stores.map(e=>e.hash)).size===1;return(0,O.jsxs)(`tr`,{children:[(0,O.jsx)(`td`,{children:(0,O.jsx)(N,{line:`memory`})}),(0,O.jsx)(`td`,{className:`mono`,children:e.name}),(0,O.jsx)(`td`,{children:(0,O.jsx)(`span`,{className:`flag ${n?``:`warn`}`,children:n?`identical`:`drifted apart`})}),(0,O.jsx)(`td`,{className:`stores`,children:e.stores.map(e=>(0,O.jsx)(`button`,{type:`button`,className:`link mono`,onClick:()=>t(e.projectPath),children:k(e.projectPath)},e.projectPath))})]},e.name)})})]})]})]})}function lf({overview:e,rows:t,onClose:n,onOpenDirectory:r,onSelectRow:i,onOpenMemory:a}){let[o,s]=(0,v.useState)(``),[c,l]=(0,v.useState)(0),u=(0,v.useRef)(null);(0,v.useEffect)(()=>u.current?.focus(),[]),(0,v.useEffect)(()=>{document.getElementById(`pal-${c}`)?.scrollIntoView({block:`nearest`})},[c]);let d=(0,v.useMemo)(()=>{let n=o.trim().toLowerCase(),r=(e?.projects??[]).filter(e=>!e.ephemeral&&(!n||e.path.toLowerCase().includes(n))).map(e=>({kind:`dir`,key:`dir:${e.path}`,label:k(e.path),path:e.path})),i=t.filter(e=>n&&Md(e.section).text(e).toLowerCase().includes(n)).map(e=>({kind:`row`,key:e.id,label:Md(e.section).label(e),row:e})),a=new Set(t.map(e=>e.id)),s=(e?.memoryCatalog??[]).filter(e=>n&&!a.has(`mem:${e.path}`)&&`${e.name} ${e.description} ${e.type}`.toLowerCase().includes(n)).map(e=>({kind:`memory`,key:`cat:${e.path}`,label:`memory ${e.name} · ${k(e.projectPath)}`,projectPath:e.projectPath,path:e.path}));return[...i,...s,...r].slice(0,40)},[o,e,t]),f=e=>{e&&(e.kind===`dir`?r(e.path):e.kind===`memory`?a(e.projectPath,e.path):i(e.row.id),n())};return(0,O.jsx)(`div`,{className:`palette-backdrop`,onMouseDown:n,children:(0,O.jsxs)(`div`,{className:`palette`,role:`dialog`,"aria-modal":`true`,"aria-label":`Jump to`,onMouseDown:e=>e.stopPropagation(),children:[(0,O.jsxs)(`label`,{className:`palette-input`,children:[(0,O.jsx)(A,{name:`search`}),(0,O.jsx)(`input`,{ref:u,role:`combobox`,"aria-expanded":`true`,value:o,onChange:e=>{s(e.target.value),l(0)},placeholder:`Jump to a directory, file, setting or memory`,"aria-controls":`palette-results`,"aria-activedescendant":d[c]?`pal-${c}`:void 0,onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),l(e=>Math.min(e+1,d.length-1))):e.key===`ArrowUp`?(e.preventDefault(),l(e=>Math.max(e-1,0))):e.key===`Enter`?(e.preventDefault(),f(d[c])):e.key===`Escape`?n():e.key===`Tab`&&e.preventDefault()}})]}),(0,O.jsxs)(`div`,{id:`palette-results`,className:`palette-results`,role:`listbox`,"aria-label":`Results`,children:[d.length===0&&(0,O.jsx)(`div`,{className:`palette-empty`,children:o.trim()?`Nothing matches “${o}”.`:`Type to search directories, files, settings and memories.`}),d.map((e,t)=>(0,O.jsxs)(`div`,{id:`pal-${t}`,role:`option`,tabIndex:-1,"aria-selected":t===c,className:t===c?`active`:``,onMouseEnter:()=>l(t),onClick:()=>f(e),children:[e.kind===`row`?e.row.line?(0,O.jsx)(N,{line:e.row.line}):(0,O.jsx)(A,{name:`command`}):e.kind===`memory`?(0,O.jsx)(N,{line:`memory`}):(0,O.jsx)(A,{name:`folder`}),(0,O.jsx)(`span`,{className:e.kind===`dir`?`mono`:``,children:e.label})]},e.key))]})]})})}function uf(e,t){return e===t?`~ (home)`:k(e)}function df({overview:e,current:t,changesOpen:n,dark:r,onOpen:i,onChanges:a,onToggleTheme:o}){let[s,c]=(0,v.useState)(``),[l,u]=(0,v.useState)(!1),d=e?.projects??[],f=e=>!s||e.path.toLowerCase().includes(s.toLowerCase()),p=d.find(t=>t.path===e?.launchDir),m=d.filter(e=>!e.ephemeral&&e!==p&&f(e)),h=d.filter(e=>e.ephemeral&&e!==p&&f(e)),g=n=>(0,O.jsx)(`li`,{children:(0,O.jsxs)(`button`,{type:`button`,className:`rail-item${t===n.path?` current`:``}${n.exists?``:` gone`}`,"aria-current":t===n.path?`page`:void 0,onClick:()=>i(n.path),title:n.exists?k(n.path):`${k(n.path)} (folder no longer exists)`,children:[(0,O.jsx)(`span`,{className:`rail-label`,children:uf(n.path,e?.home??``)}),n.memories>0&&(0,O.jsx)(`span`,{className:`rail-count`,children:n.memories})]})},n.path);return(0,O.jsxs)(`nav`,{className:`rail`,"aria-label":`Directories`,children:[(0,O.jsxs)(`div`,{className:`brand`,children:[(0,O.jsx)(`img`,{src:`/logo.png`,width:`26`,height:`26`,alt:``}),(0,O.jsx)(`span`,{children:`ccdesk`}),(0,O.jsx)(`button`,{type:`button`,className:`icon-button`,onClick:o,"aria-label":`Dark theme`,"aria-pressed":r,children:(0,O.jsx)(A,{name:`sun`})})]}),(0,O.jsxs)(`button`,{type:`button`,className:`rail-item overview-link${t===null?` current`:``}`,"aria-current":t===null?`page`:void 0,onClick:()=>i(null),children:[(0,O.jsx)(A,{name:`folder`}),` `,(0,O.jsx)(`span`,{className:`rail-label`,children:`All directories`})]}),(0,O.jsxs)(`button`,{type:`button`,className:`rail-item overview-link${n?` current`:``}`,"aria-current":n?`page`:void 0,onClick:a,children:[(0,O.jsx)(A,{name:`undo`}),` `,(0,O.jsx)(`span`,{className:`rail-label`,children:`Recent changes`})]}),p&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`h2`,{className:`rail-group`,children:`Opened from`}),(0,O.jsx)(`ul`,{className:`rail-list`,children:g(p)})]}),(0,O.jsxs)(`label`,{className:`rail-filter`,children:[(0,O.jsx)(A,{name:`search`}),(0,O.jsx)(`input`,{value:s,onChange:e=>c(e.target.value),placeholder:`Find a directory`,"aria-label":`Find a directory`})]}),(0,O.jsx)(`h2`,{className:`rail-group`,children:`Used with Claude`}),m.length>0?(0,O.jsx)(`ul`,{className:`rail-list`,children:m.map(g)}):(0,O.jsx)(`p`,{className:`rail-empty`,children:s?`No directory matches.`:`No other directories yet.`}),h.length>0&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`button`,{type:`button`,className:`rail-group toggle`,"aria-expanded":l,onClick:()=>u(!l),children:[`Temporary and test dirs `,(0,O.jsx)(`span`,{className:`rail-count`,children:h.length})]}),l&&(0,O.jsx)(`ul`,{className:`rail-list`,children:h.map(g)})]})]})}function ff(){let e=document.documentElement.dataset.theme;return e?e===`dark`:matchMedia(`(prefers-color-scheme: dark)`).matches}function pf(){let[e,t]=(0,v.useState)(Id),[n,r]=(0,v.useState)(!1),[i,a]=(0,v.useState)(null),[o,s]=(0,v.useState)(null),[c,l]=(0,v.useState)(ff),[u,d]=(0,v.useState)(0),f=rf(e.kind===`directory`?e.dir:null),{view:p,data:m,dir:h,reload:g}=f,_=f.overview.state===`ready`?f.overview.data:null,y=(0,v.useMemo)(()=>m?Nd(m):[],[m]),b=(0,v.useCallback)(e=>{t(e),d(e=>e+1),Bd(e)},[]),x=(0,v.useCallback)(e=>b(e===null?{kind:`all`}:{kind:`directory`,dir:e}),[b]);(0,v.useEffect)(()=>{let e=()=>{t(Id()),d(e=>e+1)};return addEventListener(`popstate`,e),()=>removeEventListener(`popstate`,e)},[]),(0,v.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),r(e=>!e))};return addEventListener(`keydown`,e),()=>removeEventListener(`keydown`,e)},[]);let S=()=>{let e=ff()?`light`:`dark`;document.documentElement.dataset.theme=e,l(e===`dark`);try{localStorage.setItem(`ccdesk-theme`,e)}catch{}},C=(0,v.useCallback)(()=>a(null),[]);return(0,O.jsxs)(`div`,{className:`app`,children:[(0,O.jsx)(df,{overview:_,current:e.kind===`directory`?m?.path??h:e.kind===`all`?null:void 0,changesOpen:e.kind===`changes`,dark:c,onOpen:x,onChanges:()=>b({kind:`changes`}),onToggleTheme:S}),(0,O.jsx)(`main`,{className:`main`,children:f.overview.state===`error`?(0,O.jsx)(mf,{message:f.overview.message}):e.kind===`changes`?(0,O.jsx)(j,{onRestored:e=>{a({text:e}),g()}}):e.kind===`all`?_?(0,O.jsx)(cf,{overview:_,onOpen:x},u):(0,O.jsx)(Z,{}):p.state===`error`?(0,O.jsx)(mf,{message:p.message}):m?(0,O.jsx)(of,{view:m,overview:_,rows:y,jump:o,onJumped:()=>s(null),reload:g,onToast:a,onOpenDirectory:x,onOpenPalette:()=>r(!0)},`${m.path}:${u}`):(0,O.jsx)(Z,{})}),n&&(0,O.jsx)(lf,{overview:_,rows:y,onClose:()=>r(!1),onOpenDirectory:x,onSelectRow:e=>s({id:e}),onOpenMemory:(e,t)=>{e!==h&&x(e),s({id:`mem:${t}`})}}),(0,O.jsx)(tf,{toast:i,onDone:C})]})}function Z(){return(0,O.jsxs)(`div`,{className:`loading`,role:`status`,children:[(0,O.jsx)(`span`,{className:`loading-line`,"aria-hidden":`true`}),`Reading your config…`]})}function mf({message:e}){return(0,O.jsxs)(`div`,{className:`problem`,role:`alert`,children:[(0,O.jsx)(`h1`,{children:`Something went wrong`}),(0,O.jsx)(`p`,{children:e})]})}try{let e=localStorage.getItem(`ccdesk-theme`);(e===`light`||e===`dark`)&&(document.documentElement.dataset.theme=e)}catch{}var hf=document.getElementById(`root`);hf&&(0,y.createRoot)(hf).render((0,O.jsx)(v.StrictMode,{children:(0,O.jsx)(pf,{})}));