diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/assets/RulesSearch-AGDNDU76-DIaJs7Ds.js b/assets/RulesSearch-AGDNDU76-DIaJs7Ds.js new file mode 100644 index 0000000..e06061d --- /dev/null +++ b/assets/RulesSearch-AGDNDU76-DIaJs7Ds.js @@ -0,0 +1,39 @@ +import{u as de,r as O,D as fe,j as w,R as ge,a as N}from"./index-HorgIjLO.js";function _(t){return Array.isArray?Array.isArray(t):ne(t)==="[object Array]"}const pe=1/0;function me(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-pe?"-0":e}function xe(t){return t==null?"":me(t)}function y(t){return typeof t=="string"}function se(t){return typeof t=="number"}function Me(t){return t===!0||t===!1||Ee(t)&&ne(t)=="[object Boolean]"}function re(t){return typeof t=="object"}function Ee(t){return re(t)&&t!==null}function m(t){return t!=null}function W(t){return!t.trim().length}function ne(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const ye="Incorrect 'index' type",Ie=t=>`Invalid value for key ${t}`,_e=t=>`Pattern length exceeds max of ${t}.`,Se=t=>`Missing ${t} property in key`,Ae=t=>`Property 'weight' in key '${t}' must be a positive integer`,J=Object.prototype.hasOwnProperty;class we{constructor(e){this._keys=[],this._keyMap={};let s=0;e.forEach(r=>{let n=ie(r);this._keys.push(n),this._keyMap[n.id]=n,s+=n.weight}),this._keys.forEach(r=>{r.weight/=s})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function ie(t){let e=null,s=null,r=null,n=1,i=null;if(y(t)||_(t))r=t,e=Z(t),s=B(t);else{if(!J.call(t,"name"))throw new Error(Se("name"));const c=t.name;if(r=c,J.call(t,"weight")&&(n=t.weight,n<=0))throw new Error(Ae(c));e=Z(c),s=B(c),i=t.getFn}return{path:e,id:s,weight:n,src:r,getFn:i}}function Z(t){return _(t)?t:t.split(".")}function B(t){return _(t)?t.join("."):t}function be(t,e){let s=[],r=!1;const n=(i,c,o)=>{if(m(i))if(!c[o])s.push(i);else{let h=c[o];const a=i[h];if(!m(a))return;if(o===c.length-1&&(y(a)||se(a)||Me(a)))s.push(xe(a));else if(_(a)){r=!0;for(let l=0,d=a.length;lt.score===e.score?t.idx{this._keysMap[s.id]=r})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,y(this.docs[0])?this.docs.forEach((e,s)=>{this._addString(e,s)}):this.docs.forEach((e,s)=>{this._addObject(e,s)}),this.norm.clear())}add(e){const s=this.size();y(e)?this._addString(e,s):this._addObject(e,s)}removeAt(e){this.records.splice(e,1);for(let s=e,r=this.size();s{let c=n.getFn?n.getFn(e):this.getFn(e,n.path);if(m(c)){if(_(c)){let o=[];const h=[{nestedArrIndex:-1,value:c}];for(;h.length;){const{nestedArrIndex:a,value:l}=h.pop();if(m(l))if(y(l)&&!W(l)){let d={v:l,i:a,n:this.norm.get(l)};o.push(d)}else _(l)&&l.forEach((d,f)=>{h.push({nestedArrIndex:f,value:d})})}r.$[i]=o}else if(y(c)&&!W(c)){let o={v:c,n:this.norm.get(c)};r.$[i]=o}}}),this.records.push(r)}toJSON(){return{keys:this.keys,records:this.records}}}function ce(t,e,{getFn:s=u.getFn,fieldNormWeight:r=u.fieldNormWeight}={}){const n=new Q({getFn:s,fieldNormWeight:r});return n.setKeys(t.map(ie)),n.setSources(e),n.create(),n}function $e(t,{getFn:e=u.getFn,fieldNormWeight:s=u.fieldNormWeight}={}){const{keys:r,records:n}=t,i=new Q({getFn:e,fieldNormWeight:s});return i.setKeys(r),i.setIndexRecords(n),i}function F(t,{errors:e=0,currentLocation:s=0,expectedLocation:r=0,distance:n=u.distance,ignoreLocation:i=u.ignoreLocation}={}){const c=e/t.length;if(i)return c;const o=Math.abs(r-s);return n?c+o/n:o?1:c}function Oe(t=[],e=u.minMatchCharLength){let s=[],r=-1,n=-1,i=0;for(let c=t.length;i=e&&s.push([r,n]),r=-1)}return t[i-1]&&i-r>=e&&s.push([r,i-1]),s}const v=32;function je(t,e,s,{location:r=u.location,distance:n=u.distance,threshold:i=u.threshold,findAllMatches:c=u.findAllMatches,minMatchCharLength:o=u.minMatchCharLength,includeMatches:h=u.includeMatches,ignoreLocation:a=u.ignoreLocation}={}){if(e.length>v)throw new Error(_e(v));const l=e.length,d=t.length,f=Math.max(0,Math.min(r,d));let g=i,p=f;const x=o>1||h,R=x?Array(d):[];let I;for(;(I=t.indexOf(e,p))>-1;){let M=F(e,{currentLocation:I,expectedLocation:f,distance:n,ignoreLocation:a});if(g=Math.min(M,g),p=I+l,x){let S=0;for(;S=U;E-=1){let T=E-1,X=s[t.charAt(T)];if(x&&(R[T]=+!!X),C[E]=(C[E+1]<<1|1)&X,M&&(C[E]|=(k[E+1]|k[E])<<1|1|k[E+1]),C[E]&ue&&(L=F(e,{errors:M,currentLocation:T,expectedLocation:f,distance:n,ignoreLocation:a}),L<=g)){if(g=L,p=T,p<=f)break;U=Math.max(1,2*f-p)}}if(F(e,{errors:M+1,currentLocation:f,expectedLocation:f,distance:n,ignoreLocation:a})>g)break;k=C}const D={isMatch:p>=0,score:Math.max(.001,L)};if(x){const M=Oe(R,o);M.length?h&&(D.indices=M):D.isMatch=!1}return D}function Te(t){let e={};for(let s=0,r=t.length;s{this.chunks.push({pattern:f,alphabet:Te(f),startIndex:g})},d=this.pattern.length;if(d>v){let f=0;const g=d%v,p=d-g;for(;f{const{isMatch:I,score:k,indices:L}=je(e,p,x,{location:n+R,distance:i,threshold:c,findAllMatches:o,minMatchCharLength:h,includeMatches:r,ignoreLocation:a});I&&(f=!0),d+=k,I&&L&&(l=[...l,...L])});let g={isMatch:f,score:f?d/this.chunks.length:1};return f&&r&&(g.indices=l),g}}class b{constructor(e){this.pattern=e}static isMultiMatch(e){return q(e,this.multiRegex)}static isSingleMatch(e){return q(e,this.singleRegex)}search(){}}function q(t,e){const s=t.match(e);return s?s[1]:null}class Fe extends b{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const s=e===this.pattern;return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class Pe extends b{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const r=e.indexOf(this.pattern)===-1;return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class De extends b{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const s=e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,this.pattern.length-1]}}}class Ke extends b{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const s=!e.startsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class We extends b{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const s=e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class Be extends b{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const s=!e.endsWith(this.pattern);return{isMatch:s,score:s?0:1,indices:[0,e.length-1]}}}class ae extends b{constructor(e,{location:s=u.location,threshold:r=u.threshold,distance:n=u.distance,includeMatches:i=u.includeMatches,findAllMatches:c=u.findAllMatches,minMatchCharLength:o=u.minMatchCharLength,isCaseSensitive:h=u.isCaseSensitive,ignoreLocation:a=u.ignoreLocation}={}){super(e),this._bitapSearch=new oe(e,{location:s,threshold:r,distance:n,includeMatches:i,findAllMatches:c,minMatchCharLength:o,isCaseSensitive:h,ignoreLocation:a})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class he extends b{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let s=0,r;const n=[],i=this.pattern.length;for(;(r=e.indexOf(this.pattern,s))>-1;)s=r+i,n.push([r,s-1]);const c=!!n.length;return{isMatch:c,score:c?0:1,indices:n}}}const z=[Fe,he,De,Ke,Be,We,Pe,ae],ee=z.length,ze=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,He="|";function Ve(t,e={}){return t.split(He).map(s=>{let r=s.trim().split(ze).filter(i=>i&&!!i.trim()),n=[];for(let i=0,c=r.length;i!!(t[P.AND]||t[P.OR]),Ue=t=>!!t[Y.PATH],Xe=t=>!_(t)&&re(t)&&!G(t),te=t=>({[P.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function le(t,e,{auto:s=!0}={}){const r=n=>{let i=Object.keys(n);const c=Ue(n);if(!c&&i.length>1&&!G(n))return r(te(n));if(Xe(n)){const h=c?n[Y.PATH]:i[0],a=c?n[Y.PATTERN]:n[h];if(!y(a))throw new Error(Ie(h));const l={keyId:B(h),pattern:a};return s&&(l.searcher=V(a,e)),l}let o={children:[],operator:i[0]};return i.forEach(h=>{const a=n[h];_(a)&&a.forEach(l=>{o.children.push(r(l))})}),o};return G(t)||(t=te(t)),r(t)}function Je(t,{ignoreFieldNorm:e=u.ignoreFieldNorm}){t.forEach(s=>{let r=1;s.matches.forEach(({key:n,norm:i,score:c})=>{const o=n?n.weight:null;r*=Math.pow(c===0&&o?Number.EPSILON:c,(o||1)*(e?1:i))}),s.score=r})}function Ze(t,e){const s=t.matches;e.matches=[],m(s)&&s.forEach(r=>{if(!m(r.indices)||!r.indices.length)return;const{indices:n,value:i}=r;let c={indices:n,value:i};r.key&&(c.key=r.key.src),r.idx>-1&&(c.refIndex=r.idx),e.matches.push(c)})}function qe(t,e){e.score=t.score}function et(t,e,{includeMatches:s=u.includeMatches,includeScore:r=u.includeScore}={}){const n=[];return s&&n.push(Ze),r&&n.push(qe),t.map(i=>{const{idx:c}=i,o={item:e[c],refIndex:c};return n.length&&n.forEach(h=>{h(i,o)}),o})}class ${constructor(e,s={},r){this.options={...u,...s},this.options.useExtendedSearch,this._keyStore=new we(this.options.keys),this.setCollection(e,r)}setCollection(e,s){if(this._docs=e,s&&!(s instanceof Q))throw new Error(ye);this._myIndex=s||ce(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){m(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const s=[];for(let r=0,n=this._docs.length;r-1&&(h=h.slice(0,s)),et(h,this._docs,{includeMatches:r,includeScore:n})}_searchStringList(e){const s=V(e,this.options),{records:r}=this._myIndex,n=[];return r.forEach(({v:i,i:c,n:o})=>{if(!m(i))return;const{isMatch:h,score:a,indices:l}=s.searchIn(i);h&&n.push({item:i,idx:c,matches:[{score:a,value:i,norm:o,indices:l}]})}),n}_searchLogical(e){const s=le(e,this.options),r=(o,h,a)=>{if(!o.children){const{keyId:d,searcher:f}=o,g=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(h,d),searcher:f});return g&&g.length?[{idx:a,item:h,matches:g}]:[]}const l=[];for(let d=0,f=o.children.length;d{if(m(o)){let a=r(s,o,h);a.length&&(i[h]||(i[h]={idx:h,item:o,matches:[]},c.push(i[h])),a.forEach(({matches:l})=>{i[h].matches.push(...l)}))}}),c}_searchObjectList(e){const s=V(e,this.options),{keys:r,records:n}=this._myIndex,i=[];return n.forEach(({$:c,i:o})=>{if(!m(c))return;let h=[];r.forEach((a,l)=>{h.push(...this._findMatches({key:a,value:c[l],searcher:s}))}),h.length&&i.push({idx:o,item:c,matches:h})}),i}_findMatches({key:e,value:s,searcher:r}){if(!m(s))return[];let n=[];if(_(s))s.forEach(({v:i,i:c,n:o})=>{if(!m(i))return;const{isMatch:h,score:a,indices:l}=r.searchIn(i);h&&n.push({score:a,key:e,value:i,idx:c,norm:o,indices:l})});else{const{v:i,n:c}=s,{isMatch:o,score:h,indices:a}=r.searchIn(i);o&&n.push({score:h,key:e,value:i,norm:c,indices:a})}return n}}$.version="7.0.0";$.createIndex=ce;$.parseIndex=$e;$.config=u;$.parseQuery=le;Qe(Ge);function lt(){const t=de(),e=O.useContext(fe),s=Object.entries(t.getParsedRules()).map(([a,l])=>{var d;return{name:a,title:(d=l==null?void 0:l.rawNode)==null?void 0:d.titre}}),[r,n]=O.useState([]),[i,c]=O.useState(""),o=new $(s,{keys:["title","name"]});O.useEffect(()=>{c("")},[e]),O.useEffect(()=>{const a=o.search(i,{limit:10});n(a.map(l=>l.item))},[i]);const h=r.length===0;return w.jsxs(tt,{id:"documentation-search",children:[w.jsx(st,{id:"documentation-search-input",type:"text",placeholder:"Chercher une règle",value:i,onChange:a=>c(a.target.value),onFocus:a=>c(a.target.value),empty:h}),h?null:w.jsx(rt,{id:"documentation-search-results",children:r.map(({name:a,title:l},d)=>w.jsx(nt,{id:"documentation-search-item",isLast:d===r.length-1,onClick:()=>c(""),children:w.jsx(ge,{dottedName:a,children:w.jsxs(it,{onClick:()=>c(""),children:[w.jsx(ct,{id:"documentation-search-item-name",children:a}),w.jsx(ot,{id:"documentation-search-item-title",children:l})]})})},a))})]})}var tt=N.div` + margin-bottom: 1rem; + margin-right: 1rem; + max-width: 350px; +`,st=N.input` + width: 100%; + padding: 0.5rem; + border: 1px solid #ccc; + border-radius: ${({empty:t})=>t?"5px":"5px 5px 0 0"}; + + &:focus { + outline: none; + border: 1px solid #666; + } +`,rt=N.div` + background-color: white; + border: 1px solid #ccc; + border-top: none; + border-radius: 0 0 0.25rem 0.25rem; + position: relative; +`,nt=N.div` + padding: 0.5rem; + border-bottom: ${({isLast:t})=>t?"none":"1px solid #e6e6e6"}; + border-left: 2px solid transparent; + border-radius: ${({isLast:t})=>t?"0 0 0.25rem 0.25rem":"0"}; + + &:hover { + background-color: #f6f6f6; + } +`,it=N.span` + display: flex; + flex-wrap: wrap; + flex-gap: 0.5rem; + align-items: center; +`,ct=N.span` + width: 100%; +`,ot=N.span` + color: #666; +`;export{lt as default}; diff --git a/assets/index-BEqDY2_e.css b/assets/index-BEqDY2_e.css new file mode 100644 index 0000000..dbc2a00 --- /dev/null +++ b/assets/index-BEqDY2_e.css @@ -0,0 +1 @@ +body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{--textColor: #2975d1;--darkerColor: #333350}.App{padding:1rem;margin-bottom:1rem}#documentation-rule-root>p:first-of-type{display:inline-block;background:var(--lighterColor);padding:.4rem .6rem .2rem}header{color:var(--textColor);background:linear-gradient(60deg,var(--darkColor) 0%,var(--color) 100%);padding:.6rem 1rem;box-shadow:0 1px 3px rgba(var(--rgbColor),.12),0 1px 2px rgba(var(--rgbColor),.24);border-radius:.4rem}small{color:inherit}a{color:var(--textColor)}a:hover{color:var(--darkerColor)}h1{color:inherit;margin-top:.6rem;margin-bottom:.6rem}a{text-decoration:none}button{color:inherit}span{background:inherit}small{background:none}li :scope.active .content{background-color:transparent}#documentation-rule-root>article{max-width:800px} diff --git a/assets/index-HorgIjLO.js b/assets/index-HorgIjLO.js new file mode 100644 index 0000000..017a379 --- /dev/null +++ b/assets/index-HorgIjLO.js @@ -0,0 +1,1433 @@ +var Ny=Object.defineProperty;var Py=(e,t,n)=>t in e?Ny(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ce=(e,t,n)=>Py(e,typeof t!="symbol"?t+"":t,n);function jy(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function hr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Df={exports:{}},is={},Mf={exports:{}},re={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vo=Symbol.for("react.element"),_y=Symbol.for("react.portal"),Ry=Symbol.for("react.fragment"),Ay=Symbol.for("react.strict_mode"),Oy=Symbol.for("react.profiler"),Iy=Symbol.for("react.provider"),Ly=Symbol.for("react.context"),qy=Symbol.for("react.forward_ref"),Ty=Symbol.for("react.suspense"),$y=Symbol.for("react.memo"),zy=Symbol.for("react.lazy"),Bd=Symbol.iterator;function Fy(e){return e===null||typeof e!="object"?null:(e=Bd&&e[Bd]||e["@@iterator"],typeof e=="function"?e:null)}var Bf={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Uf=Object.assign,Wf={};function li(e,t,n){this.props=e,this.context=t,this.refs=Wf,this.updater=n||Bf}li.prototype.isReactComponent={};li.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};li.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Hf(){}Hf.prototype=li.prototype;function pc(e,t,n){this.props=e,this.context=t,this.refs=Wf,this.updater=n||Bf}var mc=pc.prototype=new Hf;mc.constructor=pc;Uf(mc,li.prototype);mc.isPureReactComponent=!0;var Ud=Array.isArray,Kf=Object.prototype.hasOwnProperty,fc={current:null},Gf={key:!0,ref:!0,__self:!0,__source:!0};function Qf(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)Kf.call(t,r)&&!Gf.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,H=_[z];if(0>>1;zi(we,x))tei(de,we)?(_[z]=de,_[te]=x,z=te):(_[z]=we,_[ae]=x,z=ae);else if(tei(de,x))_[z]=de,_[te]=x,z=te;else break e}}return $}function i(_,$){var x=_.sortIndex-$.sortIndex;return x!==0?x:_.id-$.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var l=[],u=[],c=1,d=null,m=3,p=!1,b=!1,y=!1,E=typeof setTimeout=="function"?setTimeout:null,h=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(_){for(var $=n(u);$!==null;){if($.callback===null)r(u);else if($.startTime<=_)r(u),$.sortIndex=$.expirationTime,t(l,$);else break;$=n(u)}}function C(_){if(y=!1,v(_),!b)if(n(l)!==null)b=!0,B(P);else{var $=n(u);$!==null&&D(C,$.startTime-_)}}function P(_,$){b=!1,y&&(y=!1,h(R),R=-1),p=!0;var x=m;try{for(v($),d=n(l);d!==null&&(!(d.expirationTime>$)||_&&!V());){var z=d.callback;if(typeof z=="function"){d.callback=null,m=d.priorityLevel;var H=z(d.expirationTime<=$);$=e.unstable_now(),typeof H=="function"?d.callback=H:d===n(l)&&r(l),v($)}else r(l);d=n(l)}if(d!==null)var k=!0;else{var ae=n(u);ae!==null&&D(C,ae.startTime-$),k=!1}return k}finally{d=null,m=x,p=!1}}var w=!1,N=null,R=-1,U=5,W=-1;function V(){return!(e.unstable_now()-W_||125<_?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):U=0<_?Math.floor(1e3/_):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_getFirstCallbackNode=function(){return n(l)},e.unstable_next=function(_){switch(m){case 1:case 2:case 3:var $=3;break;default:$=m}var x=m;m=$;try{return _()}finally{m=x}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(_,$){switch(_){case 1:case 2:case 3:case 4:case 5:break;default:_=3}var x=m;m=_;try{return $()}finally{m=x}},e.unstable_scheduleCallback=function(_,$,x){var z=e.unstable_now();switch(typeof x=="object"&&x!==null?(x=x.delay,x=typeof x=="number"&&0z?(_.sortIndex=x,t(u,_),n(l)===null&&_===n(u)&&(y?(h(R),R=-1):y=!0,D(C,x-z))):(_.sortIndex=H,t(l,_),b||p||(b=!0,B(P))),_},e.unstable_shouldYield=V,e.unstable_wrapCallback=function(_){var $=m;return function(){var x=m;m=$;try{return _.apply(this,arguments)}finally{m=x}}}})(eh);Zf.exports=eh;var Xy=Zf.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var th=O,yt=Xy;function I(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ml=Object.prototype.hasOwnProperty,Jy=/^[: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]*$/,Hd={},Kd={};function Zy(e){return Ml.call(Kd,e)?!0:Ml.call(Hd,e)?!1:Jy.test(e)?Kd[e]=!0:(Hd[e]=!0,!1)}function ex(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function tx(e,t,n,r){if(t===null||typeof t>"u"||ex(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ze(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Ue={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ue[e]=new Ze(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ue[t]=new Ze(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ue[e]=new Ze(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ue[e]=new Ze(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ue[e]=new Ze(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ue[e]=new Ze(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ue[e]=new Ze(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ue[e]=new Ze(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ue[e]=new Ze(e,5,!1,e.toLowerCase(),null,!1,!1)});var gc=/[\-:]([a-z])/g;function vc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(gc,vc);Ue[t]=new Ze(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(gc,vc);Ue[t]=new Ze(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(gc,vc);Ue[t]=new Ze(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ue[e]=new Ze(e,1,!1,e.toLowerCase(),null,!1,!1)});Ue.xlinkHref=new Ze("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ue[e]=new Ze(e,1,!1,e.toLowerCase(),null,!0,!0)});function yc(e,t,n,r){var i=Ue.hasOwnProperty(t)?Ue[t]:null;(i!==null?i.type!==0:r||!(2s||i[a]!==o[s]){var l=` +`+i[a].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=a&&0<=s);break}}}finally{Ys=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?ji(e):""}function nx(e){switch(e.tag){case 5:return ji(e.type);case 16:return ji("Lazy");case 13:return ji("Suspense");case 19:return ji("SuspenseList");case 0:case 2:case 15:return e=Xs(e.type,!1),e;case 11:return e=Xs(e.type.render,!1),e;case 1:return e=Xs(e.type,!0),e;default:return""}}function Hl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Pr:return"Fragment";case Nr:return"Portal";case Bl:return"Profiler";case xc:return"StrictMode";case Ul:return"Suspense";case Wl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ih:return(e.displayName||"Context")+".Consumer";case rh:return(e._context.displayName||"Context")+".Provider";case bc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case wc:return t=e.displayName||null,t!==null?t:Hl(e.type)||"Memo";case Sn:t=e._payload,e=e._init;try{return Hl(e(t))}catch{}}return null}function rx(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Hl(t);case 8:return t===xc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Mn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ah(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ix(e){var t=ah(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Oo(e){e._valueTracker||(e._valueTracker=ix(e))}function sh(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ah(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Sa(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Kl(e,t){var n=t.checked;return Se({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Qd(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Mn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function lh(e,t){t=t.checked,t!=null&&yc(e,"checked",t,!1)}function Gl(e,t){lh(e,t);var n=Mn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Ql(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ql(e,t.type,Mn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Yd(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ql(e,t,n){(t!=="number"||Sa(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var _i=Array.isArray;function Vr(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Io.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Qi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Li={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ox=["Webkit","ms","Moz","O"];Object.keys(Li).forEach(function(e){ox.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Li[t]=Li[e]})});function ph(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Li.hasOwnProperty(e)&&Li[e]?(""+t).trim():t+"px"}function mh(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=ph(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var ax=Se({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Jl(e,t){if(t){if(ax[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(I(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(I(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(I(61))}if(t.style!=null&&typeof t.style!="object")throw Error(I(62))}}function Zl(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";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 eu=null;function kc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var tu=null,Dr=null,Mr=null;function Zd(e){if(e=bo(e)){if(typeof tu!="function")throw Error(I(280));var t=e.stateNode;t&&(t=us(t),tu(e.stateNode,e.type,t))}}function fh(e){Dr?Mr?Mr.push(e):Mr=[e]:Dr=e}function hh(){if(Dr){var e=Dr,t=Mr;if(Mr=Dr=null,Zd(e),t)for(e=0;e>>=0,e===0?32:31-(vx(e)/yx|0)|0}var Lo=64,qo=4194304;function Ri(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ja(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var s=a&~i;s!==0?r=Ri(s):(o&=a,o!==0&&(r=Ri(o)))}else a=n&~i,a!==0?r=Ri(a):o!==0&&(r=Ri(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-zt(t),e[t]=n}function kx(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Ti),lp=" ",up=!1;function qh(e,t){switch(e){case"keyup":return Yx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Th(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var jr=!1;function Jx(e,t){switch(e){case"compositionend":return Th(t);case"keypress":return t.which!==32?null:(up=!0,lp);case"textInput":return e=t.data,e===lp&&up?null:e;default:return null}}function Zx(e,t){if(jr)return e==="compositionend"||!Rc&&qh(e,t)?(e=Ih(),aa=Pc=_n=null,jr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=mp(n)}}function Vh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Vh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Dh(){for(var e=window,t=Sa();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Sa(e.document)}return t}function Ac(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function l1(e){var t=Dh(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Vh(n.ownerDocument.documentElement,n)){if(r!==null&&Ac(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=fp(n,o);var a=fp(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,_r=null,su=null,zi=null,lu=!1;function hp(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;lu||_r==null||_r!==Sa(r)||(r=_r,"selectionStart"in r&&Ac(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}),zi&&to(zi,r)||(zi=r,r=Aa(su,"onSelect"),0Or||(e.current=fu[Or],fu[Or]=null,Or--)}function he(e,t){Or++,fu[Or]=e.current,e.current=t}var Bn={},Qe=Hn(Bn),ot=Hn(!1),lr=Bn;function Qr(e,t){var n=e.type.contextTypes;if(!n)return Bn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function at(e){return e=e.childContextTypes,e!=null}function Ia(){xe(ot),xe(Qe)}function kp(e,t,n){if(Qe.current!==Bn)throw Error(I(168));he(Qe,t),he(ot,n)}function Yh(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(I(108,rx(e)||"Unknown",i));return Se({},n,r)}function La(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Bn,lr=Qe.current,he(Qe,e),he(ot,ot.current),!0}function Ep(e,t,n){var r=e.stateNode;if(!r)throw Error(I(169));n?(e=Yh(e,t,lr),r.__reactInternalMemoizedMergedChildContext=e,xe(ot),xe(Qe),he(Qe,e)):xe(ot),he(ot,n)}var on=null,cs=!1,dl=!1;function Xh(e){on===null?on=[e]:on.push(e)}function b1(e){cs=!0,Xh(e)}function Kn(){if(!dl&&on!==null){dl=!0;var e=0,t=ue;try{var n=on;for(ue=1;e>=a,i-=a,an=1<<32-zt(t)+i|n<R?(U=N,N=null):U=N.sibling;var W=m(h,N,v[R],C);if(W===null){N===null&&(N=U);break}e&&N&&W.alternate===null&&t(h,N),g=o(W,g,R),w===null?P=W:w.sibling=W,w=W,N=U}if(R===v.length)return n(h,N),be&&Yn(h,R),P;if(N===null){for(;RR?(U=N,N=null):U=N.sibling;var V=m(h,N,W.value,C);if(V===null){N===null&&(N=U);break}e&&N&&V.alternate===null&&t(h,N),g=o(V,g,R),w===null?P=V:w.sibling=V,w=V,N=U}if(W.done)return n(h,N),be&&Yn(h,R),P;if(N===null){for(;!W.done;R++,W=v.next())W=d(h,W.value,C),W!==null&&(g=o(W,g,R),w===null?P=W:w.sibling=W,w=W);return be&&Yn(h,R),P}for(N=r(h,N);!W.done;R++,W=v.next())W=p(N,h,R,W.value,C),W!==null&&(e&&W.alternate!==null&&N.delete(W.key===null?R:W.key),g=o(W,g,R),w===null?P=W:w.sibling=W,w=W);return e&&N.forEach(function(S){return t(h,S)}),be&&Yn(h,R),P}function E(h,g,v,C){if(typeof v=="object"&&v!==null&&v.type===Pr&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ao:e:{for(var P=v.key,w=g;w!==null;){if(w.key===P){if(P=v.type,P===Pr){if(w.tag===7){n(h,w.sibling),g=i(w,v.props.children),g.return=h,h=g;break e}}else if(w.elementType===P||typeof P=="object"&&P!==null&&P.$$typeof===Sn&&Rp(P)===w.type){n(h,w.sibling),g=i(w,v.props),g.ref=ki(h,w,v),g.return=h,h=g;break e}n(h,w);break}else t(h,w);w=w.sibling}v.type===Pr?(g=ir(v.props.children,h.mode,C,v.key),g.return=h,h=g):(C=fa(v.type,v.key,v.props,null,h.mode,C),C.ref=ki(h,g,v),C.return=h,h=C)}return a(h);case Nr:e:{for(w=v.key;g!==null;){if(g.key===w)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){n(h,g.sibling),g=i(g,v.children||[]),g.return=h,h=g;break e}else{n(h,g);break}else t(h,g);g=g.sibling}g=xl(v,h.mode,C),g.return=h,h=g}return a(h);case Sn:return w=v._init,E(h,g,w(v._payload),C)}if(_i(v))return b(h,g,v,C);if(vi(v))return y(h,g,v,C);Mo(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,g!==null&&g.tag===6?(n(h,g.sibling),g=i(g,v),g.return=h,h=g):(n(h,g),g=yl(v,h.mode,C),g.return=h,h=g),a(h)):n(h,g)}return E}var Xr=og(!0),ag=og(!1),wo={},Qt=Hn(wo),oo=Hn(wo),ao=Hn(wo);function tr(e){if(e===wo)throw Error(I(174));return e}function Vc(e,t){switch(he(ao,t),he(oo,e),he(Qt,wo),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Xl(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Xl(t,e)}xe(Qt),he(Qt,t)}function Jr(){xe(Qt),xe(oo),xe(ao)}function sg(e){tr(ao.current);var t=tr(Qt.current),n=Xl(t,e.type);t!==n&&(he(oo,e),he(Qt,n))}function Dc(e){oo.current===e&&(xe(Qt),xe(oo))}var ke=Hn(0);function Va(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var pl=[];function Mc(){for(var e=0;en?n:4,e(!0);var r=ml.transition;ml.transition={};try{e(!1),t()}finally{ue=n,ml.transition=r}}function Eg(){return Pt().memoizedState}function S1(e,t,n){var r=zn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Sg(e))Cg(t,n);else if(n=tg(e,t,n,r),n!==null){var i=Xe();Ft(n,e,r,i),Ng(n,t,r)}}function C1(e,t,n){var r=zn(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Sg(e))Cg(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,s=o(a,n);if(i.hasEagerState=!0,i.eagerState=s,Dt(s,a)){var l=t.interleaved;l===null?(i.next=i,zc(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=tg(e,t,i,r),n!==null&&(i=Xe(),Ft(n,e,r,i),Ng(n,t,r))}}function Sg(e){var t=e.alternate;return e===Ee||t!==null&&t===Ee}function Cg(e,t){Fi=Da=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ng(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Sc(e,n)}}var Ma={readContext:Nt,useCallback:He,useContext:He,useEffect:He,useImperativeHandle:He,useInsertionEffect:He,useLayoutEffect:He,useMemo:He,useReducer:He,useRef:He,useState:He,useDebugValue:He,useDeferredValue:He,useTransition:He,useMutableSource:He,useSyncExternalStore:He,useId:He,unstable_isNewReconciler:!1},N1={readContext:Nt,useCallback:function(e,t){return Bt().memoizedState=[e,t===void 0?null:t],e},useContext:Nt,useEffect:Op,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ca(4194308,4,yg.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ca(4194308,4,e,t)},useInsertionEffect:function(e,t){return ca(4,2,e,t)},useMemo:function(e,t){var n=Bt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Bt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=S1.bind(null,Ee,e),[r.memoizedState,e]},useRef:function(e){var t=Bt();return e={current:e},t.memoizedState=e},useState:Ap,useDebugValue:Kc,useDeferredValue:function(e){return Bt().memoizedState=e},useTransition:function(){var e=Ap(!1),t=e[0];return e=E1.bind(null,e[1]),Bt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ee,i=Bt();if(be){if(n===void 0)throw Error(I(407));n=n()}else{if(n=t(),De===null)throw Error(I(349));cr&30||cg(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,Op(pg.bind(null,r,o,e),[e]),r.flags|=2048,uo(9,dg.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Bt(),t=De.identifierPrefix;if(be){var n=sn,r=an;n=(r&~(1<<32-zt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=so++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Ht]=t,e[io]=r,qg(e,t,!1,!1),t.stateNode=e;e:{switch(a=Zl(n,r),n){case"dialog":ve("cancel",e),ve("close",e),i=r;break;case"iframe":case"object":case"embed":ve("load",e),i=r;break;case"video":case"audio":for(i=0;iei&&(t.flags|=128,r=!0,Ei(o,!1),t.lanes=4194304)}else{if(!r)if(e=Va(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Ei(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!be)return Ke(t),null}else 2*Re()-o.renderingStartTime>ei&&n!==1073741824&&(t.flags|=128,r=!0,Ei(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Re(),t.sibling=null,n=ke.current,he(ke,r?n&1|2:n&1),t):(Ke(t),null);case 22:case 23:return Zc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?mt&1073741824&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),null;case 24:return null;case 25:return null}throw Error(I(156,t.tag))}function L1(e,t){switch(Ic(t),t.tag){case 1:return at(t.type)&&Ia(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Jr(),xe(ot),xe(Qe),Mc(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Dc(t),null;case 13:if(xe(ke),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(I(340));Yr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return xe(ke),null;case 4:return Jr(),null;case 10:return $c(t.type._context),null;case 22:case 23:return Zc(),null;case 24:return null;default:return null}}var Uo=!1,Ge=!1,q1=typeof WeakSet=="function"?WeakSet:Set,M=null;function Tr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Pe(e,t,r)}else n.current=null}function Nu(e,t,n){try{n()}catch(r){Pe(e,t,r)}}var Dp=!1;function T1(e,t){if(uu=_a,e=Dh(),Ac(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,s=-1,l=-1,u=0,c=0,d=e,m=null;t:for(;;){for(var p;d!==n||i!==0&&d.nodeType!==3||(s=a+i),d!==o||r!==0&&d.nodeType!==3||(l=a+r),d.nodeType===3&&(a+=d.nodeValue.length),(p=d.firstChild)!==null;)m=d,d=p;for(;;){if(d===e)break t;if(m===n&&++u===i&&(s=a),m===o&&++c===r&&(l=a),(p=d.nextSibling)!==null)break;d=m,m=d.parentNode}d=p}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(cu={focusedElem:e,selectionRange:n},_a=!1,M=t;M!==null;)if(t=M,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,M=e;else for(;M!==null;){t=M;try{var b=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(b!==null){var y=b.memoizedProps,E=b.memoizedState,h=t.stateNode,g=h.getSnapshotBeforeUpdate(t.elementType===t.type?y:qt(t.type,y),E);h.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(I(163))}}catch(C){Pe(t,t.return,C)}if(e=t.sibling,e!==null){e.return=t.return,M=e;break}M=t.return}return b=Dp,Dp=!1,b}function Vi(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Nu(t,n,o)}i=i.next}while(i!==r)}}function ms(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Pu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function zg(e){var t=e.alternate;t!==null&&(e.alternate=null,zg(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ht],delete t[io],delete t[mu],delete t[y1],delete t[x1])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Fg(e){return e.tag===5||e.tag===3||e.tag===4}function Mp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Fg(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ju(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Oa));else if(r!==4&&(e=e.child,e!==null))for(ju(e,t,n),e=e.sibling;e!==null;)ju(e,t,n),e=e.sibling}function _u(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(_u(e,t,n),e=e.sibling;e!==null;)_u(e,t,n),e=e.sibling}var Me=null,Tt=!1;function wn(e,t,n){for(n=n.child;n!==null;)Vg(e,t,n),n=n.sibling}function Vg(e,t,n){if(Gt&&typeof Gt.onCommitFiberUnmount=="function")try{Gt.onCommitFiberUnmount(os,n)}catch{}switch(n.tag){case 5:Ge||Tr(n,t);case 6:var r=Me,i=Tt;Me=null,wn(e,t,n),Me=r,Tt=i,Me!==null&&(Tt?(e=Me,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Me.removeChild(n.stateNode));break;case 18:Me!==null&&(Tt?(e=Me,n=n.stateNode,e.nodeType===8?cl(e.parentNode,n):e.nodeType===1&&cl(e,n),Zi(e)):cl(Me,n.stateNode));break;case 4:r=Me,i=Tt,Me=n.stateNode.containerInfo,Tt=!0,wn(e,t,n),Me=r,Tt=i;break;case 0:case 11:case 14:case 15:if(!Ge&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&(o&2||o&4)&&Nu(n,t,a),i=i.next}while(i!==r)}wn(e,t,n);break;case 1:if(!Ge&&(Tr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Pe(n,t,s)}wn(e,t,n);break;case 21:wn(e,t,n);break;case 22:n.mode&1?(Ge=(r=Ge)||n.memoizedState!==null,wn(e,t,n),Ge=r):wn(e,t,n);break;default:wn(e,t,n)}}function Bp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new q1),t.forEach(function(r){var i=W1.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Lt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=Re()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*z1(r/1960))-r,10e?16:e,Rn===null)var r=!1;else{if(e=Rn,Rn=null,Wa=0,oe&6)throw Error(I(331));var i=oe;for(oe|=4,M=e.current;M!==null;){var o=M,a=o.child;if(M.flags&16){var s=o.deletions;if(s!==null){for(var l=0;lRe()-Xc?rr(e,0):Yc|=n),st(e,t)}function Gg(e,t){t===0&&(e.mode&1?(t=qo,qo<<=1,!(qo&130023424)&&(qo=4194304)):t=1);var n=Xe();e=pn(e,t),e!==null&&(yo(e,t,n),st(e,n))}function U1(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Gg(e,n)}function W1(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(I(314))}r!==null&&r.delete(t),Gg(e,n)}var Qg;Qg=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ot.current)nt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return nt=!1,O1(e,t,n);nt=!!(e.flags&131072)}else nt=!1,be&&t.flags&1048576&&Jh(t,Ta,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;da(e,t),e=t.pendingProps;var i=Qr(t,Qe.current);Ur(t,n),i=Uc(null,t,r,e,i,n);var o=Wc();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,at(r)?(o=!0,La(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Fc(t),i.updater=ds,t.stateNode=i,i._reactInternals=t,xu(t,r,e,n),t=ku(null,t,r,!0,o,n)):(t.tag=0,be&&o&&Oc(t),Ye(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(da(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=K1(r),e=qt(r,e),i){case 0:t=wu(null,t,r,e,n);break e;case 1:t=zp(null,t,r,e,n);break e;case 11:t=Tp(null,t,r,e,n);break e;case 14:t=$p(null,t,r,qt(r.type,e),n);break e}throw Error(I(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),wu(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),zp(e,t,r,i,n);case 3:e:{if(Og(t),e===null)throw Error(I(387));r=t.pendingProps,o=t.memoizedState,i=o.element,ng(e,t),Fa(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=Zr(Error(I(423)),t),t=Fp(e,t,r,n,i);break e}else if(r!==i){i=Zr(Error(I(424)),t),t=Fp(e,t,r,n,i);break e}else for(ft=qn(t.stateNode.containerInfo.firstChild),vt=t,be=!0,$t=null,n=ag(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Yr(),r===i){t=mn(e,t,n);break e}Ye(e,t,r,n)}t=t.child}return t;case 5:return sg(t),e===null&&gu(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,du(r,i)?a=null:o!==null&&du(r,o)&&(t.flags|=32),Ag(e,t),Ye(e,t,a,n),t.child;case 6:return e===null&&gu(t),null;case 13:return Ig(e,t,n);case 4:return Vc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Xr(t,null,r,n):Ye(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),Tp(e,t,r,i,n);case 7:return Ye(e,t,t.pendingProps,n),t.child;case 8:return Ye(e,t,t.pendingProps.children,n),t.child;case 12:return Ye(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,he($a,r._currentValue),r._currentValue=a,o!==null)if(Dt(o.value,a)){if(o.children===i.children&&!ot.current){t=mn(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){a=o.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=un(-1,n&-n),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),vu(o.return,n,t),s.lanes|=n;break}l=l.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(I(341));a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),vu(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}Ye(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Ur(t,n),i=Nt(i),r=r(i),t.flags|=1,Ye(e,t,r,n),t.child;case 14:return r=t.type,i=qt(r,t.pendingProps),i=qt(r.type,i),$p(e,t,r,i,n);case 15:return _g(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qt(r,i),da(e,t),t.tag=1,at(r)?(e=!0,La(t)):e=!1,Ur(t,n),ig(t,r,i),xu(t,r,i,n),ku(null,t,r,!0,e,n);case 19:return Lg(e,t,n);case 22:return Rg(e,t,n)}throw Error(I(156,t.tag))};function Yg(e,t){return kh(e,t)}function H1(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.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 St(e,t,n,r){return new H1(e,t,n,r)}function td(e){return e=e.prototype,!(!e||!e.isReactComponent)}function K1(e){if(typeof e=="function")return td(e)?1:0;if(e!=null){if(e=e.$$typeof,e===bc)return 11;if(e===wc)return 14}return 2}function Fn(e,t){var n=e.alternate;return n===null?(n=St(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&14680064,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}function fa(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")td(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Pr:return ir(n.children,i,o,t);case xc:a=8,i|=8;break;case Bl:return e=St(12,n,t,i|2),e.elementType=Bl,e.lanes=o,e;case Ul:return e=St(13,n,t,i),e.elementType=Ul,e.lanes=o,e;case Wl:return e=St(19,n,t,i),e.elementType=Wl,e.lanes=o,e;case oh:return hs(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rh:a=10;break e;case ih:a=9;break e;case bc:a=11;break e;case wc:a=14;break e;case Sn:a=16,r=null;break e}throw Error(I(130,e==null?e:typeof e,""))}return t=St(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function ir(e,t,n,r){return e=St(7,e,r,t),e.lanes=n,e}function hs(e,t,n,r){return e=St(22,e,r,t),e.elementType=oh,e.lanes=n,e.stateNode={isHidden:!1},e}function yl(e,t,n){return e=St(6,e,null,t),e.lanes=n,e}function xl(e,t,n){return t=St(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function G1(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Zs(0),this.expirationTimes=Zs(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Zs(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function nd(e,t,n,r,i,o,a,s,l){return e=new G1(e,t,n,s,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=St(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Fc(o),e}function Q1(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ev)}catch(e){console.error(e)}}ev(),Jf.exports=xt;var tv=Jf.exports;const Xp=hr(tv);var Jp=tv;Dl.createRoot=Jp.createRoot,Dl.hydrateRoot=Jp.hydrateRoot;var eb=Object.create,ad=Object.defineProperty,tb=Object.getOwnPropertyDescriptor,nv=Object.getOwnPropertyNames,nb=Object.getPrototypeOf,rb=Object.prototype.hasOwnProperty,rv=(e,t)=>function(){return t||(0,e[nv(e)[0]])((t={exports:{}}).exports,t),t.exports},ib=(e,t)=>{for(var n in t)ad(e,n,{get:t[n],enumerable:!0})},ob=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of nv(t))!rb.call(e,i)&&i!==n&&ad(e,i,{get:()=>t[i],enumerable:!(r=tb(t,i))||r.enumerable});return e},iv=(e,t,n)=>(n=e!=null?eb(nb(e)):{},ob(ad(n,"default",{value:e,enumerable:!0}),e)),ab=rv({"../../node_modules/nearley/lib/nearley.js"(e,t){(function(n,r){typeof t=="object"&&t.exports?t.exports=r():n.nearley=r()})(e,function(){function n(c,d,m){return this.id=++n.highestId,this.name=c,this.symbols=d,this.postprocess=m,this}n.highestId=0,n.prototype.toString=function(c){var d=typeof c>"u"?this.symbols.map(u).join(" "):this.symbols.slice(0,c).map(u).join(" ")+" ● "+this.symbols.slice(c).map(u).join(" ");return this.name+" → "+d};function r(c,d,m,p){this.rule=c,this.dot=d,this.reference=m,this.data=[],this.wantedBy=p,this.isComplete=this.dot===c.symbols.length}r.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},r.prototype.nextState=function(c){var d=new r(this.rule,this.dot+1,this.reference,this.wantedBy);return d.left=this,d.right=c,d.isComplete&&(d.data=d.build(),d.right=void 0),d},r.prototype.build=function(){var c=[],d=this;do c.push(d.right.data),d=d.left;while(d.left);return c.reverse(),c},r.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,s.fail))};function i(c,d){this.grammar=c,this.index=d,this.states=[],this.wants={},this.scannable=[],this.completed={}}i.prototype.process=function(c){for(var d=this.states,m=this.wants,p=this.completed,b=0;b0&&d.push(" ^ "+p+" more lines identical to this"),p=0,d.push(" "+E)),m=E}},s.prototype.getSymbolDisplay=function(c){return l(c)},s.prototype.buildFirstStateStack=function(c,d){if(d.indexOf(c)!==-1)return null;if(c.wantedBy.length===0)return[c];var m=c.wantedBy[0],p=[c].concat(d),b=this.buildFirstStateStack(m,p);return b===null?null:[c].concat(b)},s.prototype.save=function(){var c=this.table[this.current];return c.lexerState=this.lexerState,c},s.prototype.restore=function(c){var d=c.index;this.current=d,this.table[d]=c,this.table.splice(d+1),this.lexerState=c.lexerState,this.results=this.finish()},s.prototype.rewind=function(c){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[c])},s.prototype.finish=function(){var c=[],d=this.grammar.start,m=this.table[this.table.length-1];return m.states.forEach(function(p){p.rule.name===d&&p.dot===p.rule.symbols.length&&p.reference===0&&p.data!==s.fail&&c.push(p)}),c.map(function(p){return p.data})};function l(c){var d=typeof c;if(d==="string")return c;if(d==="object"){if(c.literal)return JSON.stringify(c.literal);if(c instanceof RegExp)return"character matching "+c;if(c.type)return c.type+" token";if(c.test)return"token matching "+String(c.test);throw new Error("Unknown symbol type: "+c)}}function u(c){var d=typeof c;if(d==="string")return c;if(d==="object"){if(c.literal)return JSON.stringify(c.literal);if(c instanceof RegExp)return c.toString();if(c.type)return"%"+c.type;if(c.test)return"<"+String(c.test)+">";throw new Error("Unknown symbol type: "+c)}}return{Parser:s,Grammar:o,Rule:n}})}}),sb=rv({"../../node_modules/moo/moo.js"(e,t){(function(n,r){typeof define=="function"&&define.amd?define([],r):typeof t=="object"&&t.exports?t.exports=r():n.moo=r()})(e,function(){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=typeof new RegExp().sticky=="boolean";function o(S){return S&&r.call(S)==="[object RegExp]"}function a(S){return S&&typeof S=="object"&&!o(S)&&!Array.isArray(S)}function s(S){return S.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function l(S){var A=new RegExp("|"+S);return A.exec("").length-1}function u(S){return"("+S+")"}function c(S){if(!S.length)return"(?!)";var A=S.map(function(q){return"(?:"+q+")"}).join("|");return"(?:"+A+")"}function d(S){if(typeof S=="string")return"(?:"+s(S)+")";if(o(S)){if(S.ignoreCase)throw new Error("RegExp /i flag not allowed");if(S.global)throw new Error("RegExp /g flag is implied");if(S.sticky)throw new Error("RegExp /y flag is implied");if(S.multiline)throw new Error("RegExp /m flag is implied");return S.source}else throw new Error("Not a pattern: "+S)}function m(S,A){return S.length>A?S:Array(A-S.length+1).join(" ")+S}function p(S,A){for(var q=S.length,T=0;;){var B=S.lastIndexOf(` +`,q-1);if(B===-1||(T++,q=B,T===A)||q===0)break}var D=T0)throw new Error("RegExp has capture groups: "+de+` +Use (?: … ) instead`);if(!z.lineBreaks&&de.test(` +`))throw new Error("Rule should declare lineBreaks: "+de);$.push(u(te))}}var je=q&&q.fallback,We=i&&!je?"ym":"gm",ut=i||je?"":"|";D===!0&&(We+="u");var ct=new RegExp(c($)+ut,We);return{regexp:ct,groups:_,fast:T,error:q||g}}function C(S){var A=v(h(S));return new R({start:A},"start")}function P(S,A,q){var T=S&&(S.push||S.next);if(T&&!q[T])throw new Error("Missing state '"+T+"' (in token '"+S.defaultType+"' of state '"+A+"')");if(S&&S.pop&&+S.pop!=1)throw new Error("pop must be 1 (in token '"+S.defaultType+"' of state '"+A+"')")}function w(S,A){var q=S.$all?h(S.$all):[];delete S.$all;var T=Object.getOwnPropertyNames(S);A||(A=T[0]);for(var B=Object.create(null),D=0;D{var a;const i={SyntaxError:"Erreur syntaxique",EvaluationError:"Erreur d'évaluation",SituationError:"Erreur lors de la mise à jour de la situation",UnknownRule:"Règle inconnue",PrivateRule:"Règle privée"},o=/error/i.test(e);return` +[ ${i[e]??e} ]`+(n&&"dottedName"in n&&((a=n.dottedName)!=null&&a.length)?` +➡️ Dans la règle "${n.dottedName}"`:"")+` +${o?"✖️":"⚠️"} ${t}`+(r?` +`+(o?" ":"ℹ️ ")+r.message:"")},bs=class extends K{constructor(e){super("InternalError",` +Erreur interne du moteur. + +Cette erreur est le signe d'un bug dans publicodes. Pour nous aider à le résoudre, vous pouvez copier ce texte dans un nouveau ticket : https://github.com/betagouv/mon-entreprise/issues/new. + +payload: +${JSON.stringify(e,null,2)} +`,e)}},lb=class extends bs{constructor(e){super(e)}};function ws(e,t,n,r){e.warn(sd("Avertissement",t,n,r))}function Zp(e,t){e.warn(sd("Avertissement",`Cette règle est tagguée comme experimentale. + +Cela veut dire qu'elle peut être modifiée, renommée, ou supprimée sans qu'il n'y ait de changement de version majeure dans l'API. +`,{dottedName:t}))}function em(e,t,n){if(e.has(t)){e.get(t).add(n);return}e.set(t,new Set([n]))}function ub(e,t){return Object.entries(t).reduce((n,[r,i])=>({...n,[r]:[...n[r]??[],...i]}),e)}var Yt=e=>{const t={};for(const n in e)t[n]=e[n];return t};function po(e,t=!0){function n(r){const i=e(r,n);return i===!1?r:i===void 0?Lu(n,r):t?i:Lu(n,i)}return n}function ov(e){function t(r){switch(e(r,t)){case"continue":Lu(n,r);return;case"stop":return}}const n=r=>(t(r),r);return t}function cb(e,t){const n={};for(const r in t)n[r]=e(t[r]);return n}var Lu=(e,t)=>{switch(t=db(e,t),t.nodeKind){case"rule":return pb(e,t);case"reference":case"constant":return t;case"arrondi":return wb(e,t);case"simplifier unité":case"variable manquante":case"est non applicable":case"est non défini":return fb(e,t);case"barème":case"taux progressif":case"grille":return gb(e,t);case"une possibilité":return vb(e,t);case"durée":return xb(e,t);case"résoudre référence circulaire":return kb(e,t);case"inversion":return bb(e,t);case"operation":return yb(e,t);case"contexte":return Sb(e,t);case"unité":return Cb(e,t);case"variations":return Nb(e,t);case"replacementRule":return mb(e,t);case"texte":return Eb(e,t);case"condition":return Pb(e,t);default:throw new lb(t)}},db=(e,t)=>{if(!("sourceMap"in t)||!t.sourceMap||!t.sourceMap.args)return t;const n=t.sourceMap,r={};for(const i in n.args){const o=n.args[i];r[i]=Array.isArray(o)?o.map(a=>e(a)):e(o)}return{...t,sourceMap:{...n,args:r}}},pb=(e,t)=>{const n=Yt(t);n.suggestions={};for(const r in t.suggestions)n.suggestions[r]=e(t.suggestions[r]);return n.replacements=t.replacements.map(e),n.explanation={ruleDisabledByItsParent:t.explanation.ruleDisabledByItsParent,nullableParent:t.explanation.nullableParent?e(t.explanation.nullableParent):void 0,parents:t.explanation.parents.map(e),valeur:e(t.explanation.valeur)},n},mb=(e,t)=>({...t,definitionRule:e(t.definitionRule),replacedReference:e(t.replacedReference),whiteListedNames:t.whiteListedNames.map(e),blackListedNames:t.blackListedNames.map(e)}),fb=(e,t)=>({...t,explanation:e(t.explanation)});function hb(e,t){return t.map(n=>({...n,...n.plafond&&{plafond:e(n.plafond)},..."montant"in n&&{montant:e(n.montant)},..."taux"in n&&{taux:e(n.taux)}}))}var gb=(e,t)=>({...t,explanation:{assiette:e(t.explanation.assiette),multiplicateur:e(t.explanation.multiplicateur),tranches:hb(e,t.explanation.tranches)}}),vb=(e,t)=>({...t,explanation:t.explanation.map(e)}),yb=(e,t)=>{const n=Yt(t);return n.explanation=[e(t.explanation[0]),e(t.explanation[1])],n},xb=(e,t)=>({...t,explanation:{depuis:e(t.explanation.depuis),"jusqu'à":e(t.explanation["jusqu'à"])}}),bb=(e,t)=>({...t,explanation:{...t.explanation,inversionCandidates:t.explanation.inversionCandidates.map(e)}}),wb=(e,t)=>({...t,explanation:{valeur:e(t.explanation.valeur),arrondi:e(t.explanation.arrondi)}}),kb=(e,t)=>({...t,explanation:{...t.explanation,valeur:e(t.explanation.valeur)}}),Eb=(e,t)=>({...t,explanation:t.explanation.map(n=>typeof n=="string"?n:e(n))}),Sb=(e,t)=>({...t,explanation:{...t.explanation,contexte:t.explanation.contexte.map(([n,r])=>[e(n),e(r)]),valeur:e(t.explanation.valeur)}}),Cb=(e,t)=>{const n=Yt(t);return n.explanation=e(t.explanation),n},Nb=(e,t)=>({...t,explanation:t.explanation.map(({condition:n,consequence:r})=>({condition:e(n),consequence:r&&e(r)}))}),Pb=(e,t)=>{const n=Yt(t);return n.explanation={si:e(t.explanation.si),alors:e(t.explanation.alors),sinon:e(t.explanation.sinon)},n},Bi={constant:e=>e};function Te(e,t){if(Bi??(Bi={}),Bi[e])throw new K("EvaluationError",`Multiple evaluation functions registered for the nodeKind \x1B[4m${e}`,{dottedName:""});Bi[e]=t}var tm={isNullable:void 0,type:void 0};function jb(e,t,n){function r(o){if(!o||typeof o!="object")return tm;if(n.has(o))return n.get(o);n.set(o,tm);const a=i(o);return n.set(o,a),a}function i(o){switch(o.nodeKind){case"barème":case"durée":case"grille":case"taux progressif":return{isNullable:!1,type:"number"};case"est non défini":case"est non applicable":return{isNullable:!1,type:"boolean"};case"constant":return{isNullable:o.isNullable??o.nodeValue===null,type:o.type};case"operation":return{isNullable:["<","<=",">",">=","/","*"].includes(o.operationKind)?r(o.explanation[0]).isNullable||r(o.explanation[1]).isNullable:o.operationKind==="-"?r(o.explanation[0]).isNullable:!1,type:["<","<=",">",">=","=","!=","et","ou"].includes(o.operationKind)?"boolean":"number"};case"inversion":case"replacementRule":case"résoudre référence circulaire":return{isNullable:!1,type:"number"};case"texte":case"une possibilité":return{isNullable:!1,type:"string"};case"contexte":case"rule":case"arrondi":return r(o.explanation.valeur);case"unité":case"simplifier unité":case"variable manquante":return r(o.explanation);case"condition":return{isNullable:[o.explanation.si,o.explanation.alors,o.explanation.sinon].some(a=>r(a).isNullable),type:r(o.explanation.alors).type??r(o.explanation.sinon).type};case"variations":{const a=o.explanation.map(({consequence:s})=>r(s));return{isNullable:a.some(s=>s.isNullable),type:a.map(s=>s.type).find(s=>s!==void 0)}}case"reference":return r(t[o.dottedName])}}return e.forEach(o=>{const a=t[o];r(a),a.explanation.parents.forEach(r)}),n}var _b=e=>"missingVariables"in e?e.missingVariables:{},av=(e={})=>Object.fromEntries(Object.entries(e).map(([t,n])=>[t,n+1])),mr=(e={},t={})=>Object.fromEntries([...Object.keys(e),...Object.keys(t)].map(n=>[n,(e[n]??0)+(t[n]??0)])),jt=e=>e.map(_b).reduce(mr,{}),Xt=e=>({nodeValue:e,type:typeof e,isDefault:!0,nodeKind:"constant"}),yr={nodeKind:"constant",nodeValue:null,missingVariables:{},type:void 0,isNullable:!0},sv={nodeKind:"constant",nodeValue:void 0,missingVariables:{},type:void 0,isNullable:!1},Ga={...sv,type:"number"};function gn(e,t,n){let r,i;function o(a,s){r??(r=Y(n,mo({dottedName:"INLINE_MECANISM"}))),i??(i={});for(const c in t)"par défaut"in t[c]&&(i[c]=Y(t[c]["par défaut"],mo({})));Object.keys(t).length===1&&"valeur"in t&&(a={valeur:a});const l={};for(const c in a)l[c]=Y(a[c],s);const u=po(c=>{if(c.nodeKind!=="reference"||!(c.name in t))return;const d=c.name;if(d in l)return l[d];if(d in i)return i[d];throw new K("SyntaxError",`Il manque la clé '${d} dans le mécanisme ${e}`,{dottedName:d})})(r);return u.sourceMap={mecanismName:e,args:l},u}return o.nom=e,Object.assign(o,"name",{value:`parse${lv(e)}Inline`})}function xr(e,t,n){function r(i,o){Object.keys(t).length===1&&"valeur"in t&&(i={valeur:i});const a={};for(const l in i){const u=i[l];a[l]=Array.isArray(u)?u.map(c=>Y(c,o)):Y(u,o)}const s=Y(n(a),o);return s.sourceMap={mecanismName:e,args:a},s}return r.nom=e,Object.assign(r,"name",{value:`parse${lv(e)}Inline`})}function lv(e){return e.replace(/(?:^\w|[A-Z]|\b\w)/g,t=>t.toUpperCase()).replace(/\s+/g,"")}var Rb=gn("abattement",{abattement:{},valeur:{}},{"-":["valeur","abattement"],plancher:0}),Ab=gn("applicable si",{"applicable si":{},valeur:{}},{condition:{si:"applicable si != non",alors:"valeur",sinon:yr}}),ln=(e,t=n=>n)=>{if(e.includes(" /")||e.includes("/ "))throw new Error(`L'unité "${e}" ne doit pas contenir d'espace avant et après "/"`);const[n,...r]=e.split("/"),i=a=>Ib(a.split(".").filter(Boolean).map(s=>t(s)));return{numerators:i(n),denominators:r.flatMap(a=>i(a))}},Ob=/(\d+)(?!.*[A-Za-z])/g;function uv(e){const t={};return e.forEach(n=>{const r=n.match(Ob);if(r!=null){const i=r[0],o=n.split(i)[0];t[o]=(t[o]??0)+ +i}else t[n]=(t[n]??0)+1}),t}function Ib(e){const t=uv(e);return Object.entries(t).flatMap(([n,r])=>Array(r).fill(n))}function Lb(e){const t=uv(e);return Object.entries(t).map(([n,r])=>r>1?`${n}${r}`:n)}var Ko=(e,t,n=r=>r)=>Lb(e.map(r=>n(r,t))).join("."),nm=2;function rt(e,t=nm,n=r=>r){if(e===null||typeof e!="object")return typeof e=="string"?n(e,t):e;const r=ks(e),{numerators:i=[],denominators:o=[]}=r,a=i.length>0,s=o.length>0;return!a&&!s?"":a&&!s?Ko(i,t,n):!a&&s?`/${Ko(o,1,n)}`:`${Ko(i,nm,n)}/${Ko(o,1,n)}`}var Ui={numerators:[],denominators:[]},Nn=(e,t)=>{if(e==="/"){if(t.length!==2)throw new K("InternalError","Infer units of a division with units.length !== 2)",{});return Nn("*",[t[0]||Ui,{numerators:(t[1]||Ui).denominators,denominators:(t[1]||Ui).numerators}])}const n=t.filter(Boolean);if(n.length<=1)return n[0];if(e==="*")return ks({numerators:n.flatMap(r=>(r==null?void 0:r.numerators)??[]),denominators:n.flatMap(r=>(r==null?void 0:r.denominators)??[])});if(e==="-"||e==="+")return t.find(r=>r)},cv=(e,t)=>Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,r)=>e[r]===t[r]):e===t,rm=(e,t=cv)=>n=>{const r=n.findIndex(i=>t(i,e));return n.filter((i,o)=>o!==r)},ks=(e,t=cv)=>[...e.numerators,...e.denominators].reduce(({numerators:r,denominators:i},o)=>r.find(a=>t(o,a))&&i.find(a=>t(o,a))?{numerators:rm(o,t)(r),denominators:rm(o,t)(i)}:{numerators:r,denominators:i},e),ha={"mois/an":12,"jour/an":365,"jour/mois":365/12,"trimestre/an":4,"mois/trimestre":3,"jour/trimestre":365/12*3,"€/k€":10**3,"g/kg":10**3,"mg/g":10**3,"mg/kg":10**6,"m/km":10**3,"cm/m":10**2,"mm/cm":10**1,"mm/m":10**3,"cm/km":10**5,"mm/km":10**6};function im(e,t){return ha[`${t}/${e}`]||ha[`${e}/${t}`]&&1/ha[`${e}/${t}`]}function qu(e,t){let n=100**(t.filter(r=>r==="%").length-e.filter(r=>r==="%").length);return[n]=e.reduce(([r,i],o)=>{const a=i.findIndex(l=>!!im(o,l)),s=im(o,i[a])||1;return[r*s,[...i.slice(0,a+1),...i.slice(a+1)]]},[n,t]),n}var om={"kW.h":"kWh","mn/h":"noeud"};function qb(e,t){return!e||!t?!1:e===t||e===om[t]||t===om[e]}function ko(e,t,n){const r=rt(e),i=rt(t);if(!qb(r,i)&&!$b(e,t))throw new K("EngineError",`Impossible de convertir l'unité '${r}' en '${i}'`,{});if(!n||e===void 0)return n;const[o,a]=am(e||Ui),[s,l]=am(t||Ui);return mv(n*a/l*qu(o.numerators,s.numerators)*qu(s.denominators,o.denominators))}var dv=Tb(ha);function Tb(e){return Object.keys(e).reduce((t,n)=>{const[r,i]=n.split("/"),o=t.findIndex(s=>s.has(r)),a=t.findIndex(s=>s.has(i));if(o>-1&&a>-1&&o!==a)throw new K("EngineError",`Invalid ratio ${n}`,{});return o===-1&&a===-1?t.push(new Set([r,i])):o>-1?t[o].add(i):a>-1&&t[a].add(r),t},[])}function pv(e,t){return e===t||dv.some(n=>n.has(e)&&n.has(t))}function mv(e){return+e.toFixed(16)}function fv(e){const{numerators:t,denominators:n}=ks(e,pv);return t.length&&t.every(r=>r==="%")?{numerators:["%"],denominators:n}:hv({numerators:t,denominators:n})}function am(e,t=1){const n=qu(e.numerators,e.denominators);return[ks(hv(e),pv),t&&mv(t*n)]}var hv=e=>({numerators:e.numerators.filter(t=>t!=="%"),denominators:e.denominators.filter(t=>t!=="%")});function $b(e,t){if(e==null||t==null)return!0;const n=u=>u.reduce((c,d)=>{const m=dv.findIndex(b=>b.has(d)),p=m===-1?d:""+m;return{...c,[p]:1+(c[p]??0)}},{}),[r,i,o,a]=[e.numerators,e.denominators,t.numerators,t.denominators].map(n),s=u=>[...new Set(u)],l=[r,i,o,a].map(Object.keys).flat();return s(l).every(u=>(r[u]||0)-(i[u]||0)===(o[u]||0)-(a[u]||0)||u==="%")}function sm(e,t){return+e.toFixed(t)}var zb=function(e){var i;const t=gv(this.evaluateNode(e.explanation.valeur)),n=t.nodeValue;let r=e.explanation.arrondi;if(n!==!1&&(r=this.evaluateNode(r),typeof r.nodeValue=="number"&&!((i=rt(r.unit))!=null&&i.match(/décimales?/))))throw new K("EvaluationError",`L'unité ${rt(r.unit)} de l'arrondi est inconnu. Vous devez utiliser l'unité “décimales”`,{dottedName:this.cache._meta.evaluationRuleStack[0]});return{...e,nodeValue:typeof t.nodeValue!="number"||!("nodeValue"in r)?t.nodeValue:typeof r.nodeValue=="number"?sm(t.nodeValue,r.nodeValue):r.nodeValue===!0?sm(t.nodeValue,0):r.nodeValue===void 0?void 0:t.nodeValue,explanation:{valeur:t,arrondi:r},missingVariables:jt([t,r]),unit:t.unit}};function Es(e,t){return{explanation:{valeur:Y(e.valeur,t),arrondi:Y(e.arrondi,t)},nodeKind:Es.nom}}Es.nom="arrondi";Te(Es.nom,zb);function gv(e){if(!e.unit)return e;const t=fv(e.unit);return or(t,e)}function or(e,t){return{...t,nodeValue:t.unit&&typeof t.nodeValue=="number"?ko(t.unit,e,t.nodeValue):t.nodeValue,unit:e}}var bl=({style:e,maximumFractionDigits:t=2,minimumFractionDigits:n=0,language:r})=>i=>{const o=e==="currency"&&t>=2&&n===0&&!Number.isInteger(i)?2:n;return Intl.NumberFormat(r,{style:e,currency:"EUR",maximumFractionDigits:t,minimumFractionDigits:o}).format(i)};function Fb({maximumFractionDigits:e,minimumFractionDigits:t,language:n,formatUnit:r,unit:i,nodeValue:o}){if(typeof o!="number")return o;const a=i?rt(i,o,r):void 0;switch(a){case"€":return bl({style:"currency",maximumFractionDigits:e,minimumFractionDigits:t,language:n})(o);case"%":return bl({style:"percent",maximumFractionDigits:e,language:n})(o/100);default:return bl({style:"decimal",minimumFractionDigits:t,maximumFractionDigits:e,language:n})(o)+(typeof a=="string"?` ${a}`:"")}}function vv(e){return e&&e[0].toUpperCase()+e.slice(1)}var Vb={fr:{true:"oui",false:"non"},en:{true:"yes",false:"no"}};function Vn(e,{language:t="fr",displayedUnit:n,formatUnit:r,precision:i=2}={}){let o=typeof e=="number"||typeof e>"u"||e===null?e:e.nodeValue;if(typeof o=="number"&&Number.isNaN(o))return"Erreur dans le calcul du nombre";if(o===void 0)return"Pas encore défini";if(o===null)return"Non applicable";if(typeof o=="string")return o.replace("\\n",` +`);if(typeof o=="boolean")return Vb[t][o];if(typeof o=="number"){let a=typeof e=="number"||typeof e>"u"||!("unit"in e)?void 0:e.unit;if(a){const s=gv({unit:a,nodeValue:o});a=s.unit,o=s.nodeValue}return Fb({minimumFractionDigits:0,maximumFractionDigits:i,language:t,formatUnit:r,nodeValue:o,unit:n??a}).trim()}}var Jt={};ib(Jt,{contextNameToDottedName:()=>Tu,cyclicDependencies:()=>Gb,decodeRuleName:()=>Jb,disambiguateReference:()=>wv,disambiguateReferenceNode:()=>zu,encodeRuleName:()=>Xb,findCommonAncestor:()=>bv,getChildrenRules:()=>Zb,isAccessible:()=>Ss,isExperimental:()=>$u,nameLeaf:()=>yv,ruleParent:()=>xv,ruleParents:()=>Eo,ruleWithDedicatedDocumentationPage:()=>ew,updateReferencesMapsFromReferenceNode:()=>ud});function Ci(e,t){return e!=null&&Object.prototype.hasOwnProperty.call(e,t)}function lm(e){return function(){return e}}var Db="\0",um="",cm=(e,t)=>{e[t]?e[t]++:e[t]=1},dm=(e,t)=>{--e[t]||delete e[t]},Oi=(e,t,n,r)=>{let i=""+t,o=""+n;if(!e&&i>o){const a=i;i=o,o=a}return i+um+o+um+(r===void 0?Db:r)},Mb=(e,t,n,r)=>{let i=""+t,o=""+n;if(!e&&i>o){const s=i;i=o,o=s}const a={v:i,w:o};return r&&(a.name=r),a},wl=(e,t)=>Oi(e,t.v,t.w,t.name),Bb=class{constructor(e={}){Ce(this,"_nodeCount",0);Ce(this,"_edgeCount",0);Ce(this,"_isDirected");Ce(this,"_label");Ce(this,"_defaultNodeLabelFn");Ce(this,"_defaultEdgeLabelFn");Ce(this,"_nodes");Ce(this,"_in");Ce(this,"_preds");Ce(this,"_out");Ce(this,"_sucs");Ce(this,"_edgeObjs");Ce(this,"_edgeLabels");this._isDirected=Ci(e,"directed")?e.directed:!0,this._label=void 0,this._defaultNodeLabelFn=lm(void 0),this._defaultEdgeLabelFn=lm(void 0),this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}setGraph(e){return this._label=e,this}graph(){return this._label}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}setNode(e,t=void 0){return Ci(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}setNodes(e,t){return e.forEach(n=>{t!==void 0?this.setNode(n,t):this.setNode(n)}),this}node(e){return this._nodes[e]}hasNode(e){return Ci(this._nodes,e)}successors(e){const t=this._sucs[e];if(t)return Object.keys(t)}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setEdge(e,t,n=void 0,r=void 0){e=""+e,t=""+t;const i=Oi(this._isDirected,e,t,r);if(Ci(this._edgeLabels,i))return n!==void 0&&(this._edgeLabels[i]=n),this;this.setNode(e),this.setNode(t),this._edgeLabels[i]=n!==void 0?n:this._defaultEdgeLabelFn(e,t,r);const o=Mb(this._isDirected,e,t,r);return e=o.v,t=o.w,Object.freeze(o),this._edgeObjs[i]=o,cm(this._preds[t],e),cm(this._sucs[e],t),this._in[t][i]=o,this._out[e][i]=o,this._edgeCount++,this}edge(e,t,n){const r=arguments.length===1?wl(this._isDirected,arguments[0]):Oi(this._isDirected,e,t,n);return this._edgeLabels[r]}hasEdge(e,t,n){const r=arguments.length===1?wl(this._isDirected,arguments[0]):Oi(this._isDirected,e,t,n);return Ci(this._edgeLabels,r)}removeEdge(e,t,n){const r=arguments.length===1?wl(this._isDirected,arguments[0]):Oi(this._isDirected,e,t,n),i=this._edgeObjs[r];return i&&(e=i.v,t=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],dm(this._preds[t],e),dm(this._sucs[e],t),delete this._in[t][r],delete this._out[e][r],this._edgeCount--),this}outEdges(e,t=void 0){const n=this._out[e];if(n){const r=Object.values(n);return t===void 0?r:r.filter(function(i){return i.w===t})}}};function Ub(e){let t=0;const n=[],r={},i=[];function o(a){const s=r[a]={onStack:!0,lowlink:t,index:t++};if(n.push(a),e.successors(a).forEach(function(l){Object.prototype.hasOwnProperty.call(r,l)?r[l].onStack&&(s.lowlink=Math.min(s.lowlink,r[l].index)):(o(l),s.lowlink=Math.min(s.lowlink,r[l].lowlink))}),s.lowlink===s.index){const l=[];let u;do u=n.pop(),r[u].onStack=!1,l.push(u);while(a!==u);i.push(l)}}return e.nodes().forEach(function(a){Object.prototype.hasOwnProperty.call(r,a)||o(a)}),i}function Wb(e){return Ub(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}function Hb(e){const t=new Bb;return[...e.entries()].forEach(([n,r])=>{r.forEach(i=>{t.setEdge(n,i)})}),t}function Kb(e,t){var o;function*n(a){let s=a;for(;;)yield t[s++%t.length]}const r=[];for(let a=0;as.length>a.length?a:s)}function Gb(e){const{referencesMaps:t}=ga(e),n=Hb(t.referencesIn),i=Wb(n).map(s=>s.reverse()),o=i.map(s=>Kb(t.referencesIn,s)),a=i.map((s,l)=>Yb(n,s,o[l]));return[o,a]}var Qb=(e,t,n)=>{for(let r=0;r{e.outEdges(i).filter(({w:o})=>t.includes(o)).forEach(({v:o,w:a})=>{r.add(`"${o}" -> "${a}"`+(Qb(n,o,a)?" [color=red]":""))})}),`digraph Cycle { + ${[...r].join(`; + `)}; +}`}var fr=e=>e.split(" . "),ld=e=>e.join(" . "),yv=e=>{var t;return(t=fr(e).slice(-1))==null?void 0:t[0]},Xb=e=>e==null?void 0:e.replace(/\s\.\s/g,"/").replace(/-/g,"‑").replace(/\s/g,"-"),Jb=e=>e.replace(/\//g," . ").replace(/-/g," ").replace(/\u2011/g,"-"),Tu=e=>e.endsWith("$SITUATION")?xv(e):e,xv=e=>ld(fr(e).slice(0,-1));function Eo(e){return fr(e).slice(0,-1).map((t,n,r)=>ld(r.slice(0,n+1))).reverse()}var Zb=(e,t)=>Object.keys(e).filter(r=>r.startsWith(t)&&fr(r).length===fr(t).length+1);function bv(e,t){const n=fr(e),r=fr(t),i=n.findIndex((o,a)=>r[a]!==o);return i===-1?e:ld(n.slice(0,i))}function Ss(e,t,n){if(!(n in e))throw new K("InternalError",`La règle "${n}" n'existe pas`,{dottedName:n});const r=bv(t,n),i=[n,...Eo(n),""];return i.slice(0,Math.max(i.indexOf(r)-1,0)).every(a=>!(a in e)||e[a].private===!1)}function $u(e,t){if(!(t in e))throw new K("InternalError",`La règle "${t}" n'existe pas`,{dottedName:t});return[t,...Eo(t)].some(r=>{var i;return r in e&&((i=e[r].rawNode)==null?void 0:i.experimental)==="oui"})}function kl(e,t){return e?e+" . "+t:t}function wv(e,t="",n){const r=Eo(t);if(r.push(t),n.startsWith("^ . ")){const s=n.match(/^(\^ \. )+/)[0].length/4;n=n.replace(/^(\^ \. )+/,""),r.splice(-s)}const i=r.pop();r.unshift(i),r.push("");const o=r.find(s=>{const l=kl(s,n);return!(l in e)||l===t?!1:Ss(e,t,l)});if(o!==void 0)return kl(o,n);if(t.endsWith(n))return t;const a=r.map(s=>kl(s,n));throw a.every(s=>!(s in e))?new K("SyntaxError",`La référence "${n}" est introuvable. +Vérifiez que l'orthographe et l'espace de nom sont corrects`,{dottedName:Tu(t)}):new K("SyntaxError",`La règle "${a.find(s=>s in e)}" n'est pas accessible depuis "${t}". + Cela vient du fait qu'elle est privée ou qu'un de ses parent est privé`,{dottedName:Tu(t)})}function ew(e){return e.virtualRule!==!0&&e.type!=="groupe"&&e.type!=="texte"&&e.type!=="paragraphe"&&e.type!=="notification"}function ud(e,t,n){e.nodeKind==="reference"&&(em(t.referencesIn,n??e.contextDottedName,e.dottedName),em(t.rulesThatUse,e.dottedName,n??e.contextDottedName))}function zu(e,t){if(e.nodeKind==="reference")return e.dottedName||(e.dottedName=wv(t,e.contextDottedName,e.name),e.title=t[e.dottedName].title,e.acronym=t[e.dottedName].rawNode.acronyme),e}function tw(e,t,n){const r=t.privé==="oui"||e.startsWith("[privé] ");e=e.replace(/^\[privé\] /,"");const i=[n.dottedName,e].filter(Boolean).join(" . "),o=yv(i),a=vv(t.titre??o);if(n.parsedRules[i])throw new K("EvaluationError",`La référence '${i}' a déjà été définie`,{dottedName:i});const s={};for(const d in t)uk.includes(d)&&(s[d]=t[d]);if("formule"in t&&(s.valeur=t.formule),!r&&!i.endsWith("$SITUATION")){s["dans la situation"]=`${i} . $SITUATION`,s.avec=Yt(s.avec)??{};const d=Yt(sv);d.isNullable=t["possiblement non applicable"]==="oui",s.avec["[privé] $SITUATION"]={valeur:d},s["par défaut"]!=null&&(s["par défaut"]={valeur:s["par défaut"],"variable manquante":i})}const l=n.dottedName;n.dottedName=i,n.parsedRules[i]=void 0;const u={valeur:Y(s,n),parents:Eo(i).map(d=>({dottedName:d,nodeKind:"reference",contextDottedName:n.dottedName}))},c={};if(t.suggestions)for(const d in t.suggestions)c[d]=Y(t.suggestions[d],n);return n.parsedRules[i]={dottedName:i,replacements:[...dk(t["rend non applicable"],n),...Fv(t.remplace,n)],title:a,private:r,suggestions:c,nodeKind:"rule",explanation:u,rawNode:t,virtualRule:r},n.dottedName=l,n.parsedRules[i]}function kv(e,t){for(const n in e){let r=e[n];if((typeof r=="string"||typeof r=="number")&&(r={valeur:`${r}`}),typeof r!="object")throw new K("SyntaxError",`Rule ${n} is incorrectly written. Please give it a proper value.`,{dottedName:n});const i=r===null?{}:Yt(r);tw(n,i,t)}}Te("rule",function(t){const{ruleDisabledByItsParent:n,nullableParent:r,parentMissingVariables:i}=Ev(this,t);let o={...t.explanation.valeur,nodeValue:null,missingVariables:{}};return n||(this.cache._meta.evaluationRuleStack.filter(s=>s===t.dottedName).length>1?o={nodeValue:void 0}:(this.cache._meta.evaluationRuleStack.unshift(t.dottedName),o=this.evaluateNode(t.explanation.valeur),this.cache._meta.evaluationRuleStack.shift())),o.missingVariables??(o.missingVariables={}),nw(this,t,o),{...o,missingVariables:mr(o.missingVariables,i),...t,explanation:{parents:t.explanation.parents,valeur:o,nullableParent:r,ruleDisabledByItsParent:n}}});function nw(e,t,n){t.private===!0||!Ss(e.context.parsedRules,"",t.dottedName)||n.nodeValue===void 0&&!Object.keys(n.missingVariables).length&&(n.missingVariables[t.dottedName]=1)}function Ev(e,t){var o,a,s;if(t.private)return{ruleDisabledByItsParent:!1,parentMissingVariables:{}};const n=e.context.nodesTypes,r=t.explanation.parents.find(l=>{var u,c;return((u=n.get(l))==null?void 0:u.isNullable)||((c=n.get(l))==null?void 0:c.type)==="boolean"});if(!r)return{ruleDisabledByItsParent:!1,parentMissingVariables:{}};if(!e.cache._meta.parentRuleStack.includes(t.dottedName)){e.cache._meta.parentRuleStack.unshift(t.dottedName);let l=Xt(!1);if((o=n.get(r))!=null&&o.isNullable&&(l=e.evaluateNode({nodeKind:"est non applicable",explanation:r})),l.nodeValue!==!0&&((a=n.get(r))==null?void 0:a.type)==="boolean"&&(l=e.evaluateNode({nodeKind:"operation",operator:"=",operationKind:"=",explanation:[r,Xt(!1)]})),e.cache._meta.parentRuleStack.shift(),l.nodeValue===!0)return{ruleDisabledByItsParent:!0,parentMissingVariables:l.missingVariables??{},nullableParent:r}}let i={};if(((s=n.get(r))==null?void 0:s.type)==="boolean"){const l=e.evaluateNode(r);return i=l.missingVariables??{},{ruleDisabledByItsParent:l.nodeValue===!1,parentMissingVariables:i,nullableParent:r}}return{ruleDisabledByItsParent:!1,parentMissingVariables:i,nullableParent:r}}function Sv(e,t){return kv(e.avec,t),Y(e.valeur,t)}Sv.nom="avec";var cd=(e,t)=>e.map((n,r)=>{if(!n.plafond&&r>e.length)throw new K("SyntaxError",`La tranche n°${r} du barème n'a pas de plafond précisé. Seule la dernière tranche peut ne pas être plafonnée`,{dottedName:""});return{...n,...n.taux!==void 0?{taux:Y(n.taux,t)}:{},...n.montant!==void 0?{montant:Y(n.montant,t)}:{},plafond:"plafond"in n?Y(n.plafond,t):{nodeValue:1/0,nodeKind:"constant",type:"number",isNullable:!1}}});function dd({multiplicateur:e,assiette:t,parsedTranches:n}){return n.reduce(([r,i],o,a)=>{if(i)return[[...r,{...o,isAfterActive:!0}],i];const s=this.evaluateNode(o.plafond),l=r[a-1]?r[a-1].plafond:{nodeValue:0};let u=s.nodeValue===void 0||e.nodeValue===void 0?void 0:s.nodeValue*e.nodeValue;try{u=u===1/0||u===0?u:ko(Nn("*",[s.unit,e.unit]),t.unit,u)}catch(b){ws(this.context.logger,`L'unité du plafond de la tranche n°${a+1} n'est pas compatible avec celle l'assiette`,{dottedName:this.cache._meta.evaluationRuleStack[0]},b)}const c=r[a-1]?r[a-1].plafondValue:0,d=c===void 0||t.nodeValue===void 0?void 0:c>t.nodeValue,m=[s,t,e,l];if(m.some(b=>b.nodeValue===void 0))return[[...r,{...o,plafond:s,plafondValue:u,plancherValue:c,nodeValue:void 0,isActive:void 0,isAfterActive:d,missingVariables:jt(m)}],!1];if(r[a-1]&&c&&u<=c)throw new K("EvaluationError",`Le plafond de la tranche n°${a+1} a une valeur inférieure à celui de la tranche précédente`,{dottedName:this.cache._meta.evaluationRuleStack[0]});const p={...o,plafond:s,plancherValue:c,plafondValue:u,isAfterActive:d,isActive:t.nodeValue>=c&&t.nodeValue{if(r.isAfterActive)return{...r,nodeValue:0};const i=n(r.taux),o=jt([i,r]);return[t.nodeValue,i.nodeValue,r.plafondValue,r.plancherValue].some(a=>a===void 0)?{...r,taux:i,nodeValue:void 0,missingVariables:o}:{...r,taux:i,..."unit"in t&&{unit:t.unit},nodeValue:(Math.min(t.nodeValue,r.plafondValue)-r.plancherValue)*ko(i.unit,ln(""),i.nodeValue),missingVariables:o}})}var ow=function(e){const t=this.evaluateNode.bind(this),n=this.evaluateNode(e.explanation.assiette),r=this.evaluateNode(e.explanation.multiplicateur);if(r.nodeValue===0)throw new K("EvaluationError","Le multiplicateur ne peut pas être nul",{dottedName:this.cache._meta.evaluationRuleStack[0]});let i=e.explanation.tranches,o=n.nodeValue;return[0,void 0,null].includes(n.nodeValue)||(i=iw(dd.call(this,{parsedTranches:e.explanation.tranches,assiette:n,multiplicateur:r}),n,t),o=i.reduce((a,{nodeValue:s})=>s==null?void 0:a+s,0)),{...e,nodeValue:o,missingVariables:jt([n,r,...i]),explanation:{assiette:n,multiplicateur:r,tranches:i},unit:n.unit}};Te("barème",ow);var aw=function(e){let t;const n=this.evaluateNode(e.explanation.si);let r=e.explanation.alors,i=e.explanation.sinon;if("unit"in n)throw new K("EvaluationError","La condition doit être de type booléen",{dottedName:this.cache._meta.evaluationRuleStack[0]});if(n.nodeValue===!0)r=this.evaluateNode(e.explanation.alors),r.isActive=!0,t=r;else if(n.nodeValue===!1)i=this.evaluateNode(e.explanation.sinon),t=i;else if(n.nodeValue===null)t=n;else if(n.nodeValue===void 0)i=this.evaluateNode(e.explanation.sinon),r=this.evaluateNode(e.explanation.alors),t={...n,missingVariables:jt([i,r])};else throw new K("EvaluationError","La condition doit être de type booléen",{dottedName:this.cache._meta.evaluationRuleStack[0]});const o=t.unit??r.unit;return{nodeValue:t.nodeValue,missingVariables:mr(av(n.missingVariables),t.missingVariables),...o!=null?{unit:o}:{},...e,explanation:{si:n,alors:r,sinon:i}}};function Cv(e,t){return{explanation:{si:Y(e.si,t),alors:Y(e.alors,t),sinon:Y(e.sinon,t)},nodeKind:"condition"}}Cv.nom="condition";Te("condition",aw);function pd(e,t){const n=Y(e.valeur,t),r=Object.keys(e.contexte).map(o=>[Y(o,t),Y(e.contexte[o],t)]).sort(([o],[a])=>o.name.localeCompare(a.name)),i=lw(JSON.stringify(r));return{explanation:{valeur:n,contexte:r,subEngineId:i},nodeKind:pd.nom}}pd.nom="contexte";var sw=function(e){const t=Object.fromEntries(e.explanation.contexte.filter(([i,o])=>{const a=this.evaluateNode(i),s=this.evaluateNode(o);return a.nodeValue!==s.nodeValue||rt(a.unit)!==rt(s.unit)}).map(([i,o])=>[i.dottedName,o]));if(this.cache._meta.currentContexteSituation===JSON.stringify(t))return{...yr,...e};let n;this.context.subEngines.has(e.explanation.subEngineId)?n=this.context.subEngines.get(e.explanation.subEngineId):(n=this.shallowCopy(),n.context.subEngineId=e.explanation.subEngineId,this.context.subEngines.set(e.explanation.subEngineId,n),Object.keys(t).length&&(n.setSituation(t,{keepPreviousSituation:!0}),Object.entries(t).forEach(([i,o])=>{const a=this.cache.nodes.get(o);if(!a)throw new K("InternalError","The situation should have already been evaluated",{dottedName:this.context.dottedName});const s=n.context.parsedRules[i+" . $SITUATION"];if(!(s!=null&&s.explanation.valeur))throw new K("InternalError","The origin rule should be defined",{dottedName:this.context.dottedName});n.cache.nodes.set(s.explanation.valeur,a)}))),n.cache._meta.currentContexteSituation=JSON.stringify(t);const r=n.evaluateNode(e.explanation.valeur);return{...e,nodeValue:r.nodeValue,explanation:{...e.explanation,valeur:r},missingVariables:r.missingVariables,..."unit"in r&&{unit:r.unit}}};Te("contexte",sw);function lw(e){let t=0;for(let n=0,r=e.length;n+e<10?`0${e}`:""+e;function Pv(e,t,n){const r=new Date(+e,+t-1,+n);if(!+r||r.getDate()!==+n)throw new K("SyntaxError",`La date ${n}/${t}/${e} n'est pas valide`,{dottedName:""});return`${El(n)}/${El(t)}/${El(e)}`}function ti(e){const[t,n,r]=Nv(e).split("/"),i=new Date(+r,+n-1,+t);return i.setMinutes(i.getMinutes()-i.getTimezoneOffset()),i}function uw(e){return Pv(e.getFullYear(),e.getMonth()+1,e.getDate())}function pm(e){return+e.slice(-4)}function mm(e){const[,t,n]=e.split("/");return`01/${(3*Math.floor((Number.parseInt(t,10)-1)/3)+1).toString().padStart(2,"0")}/${n}`}function jv(e,t){return(ti(t).getTime()-ti(e).getTime())/864e5}function Fu(e,t){const[n,r,i]=e.split("/").map(p=>+p),[o,a,s]=t.split("/").map(p=>+p),l=a-r+12*(s-i),u=new Date(i,r,0).getDate(),c=new Date(s,a,0).getDate(),d=(n-1)/u,m=o/c;return l-d+m}function _v(e,t){const n=jv(e,t),r=c=>c%4===0&&c%100!==0||c%400===0,i=c=>c>=new Date(c.getFullYear(),2,1),o=ti(e),a=ti(t),s=o.getFullYear()+(i(o)?1:0),l=a.getFullYear()+(i(o)?0:-1),u=Array.from({length:l-s+1},(c,d)=>s+d).filter(r).length;return(n-u)/365}function cw(e,t){return Math.floor(Fu(mm(e),mm(t))/3)+1}function dw(e,t){const n="01/"+pm(e),r="01/"+pm(t);return Math.floor(_v(n,r))+1}var pw=function(e){const t=this.evaluateNode(e.explanation.depuis),n=this.evaluateNode(e.explanation["jusqu'à"]),r=t.nodeValue,i=n.nodeValue;let o;if(r===null||i===null)o=null;else if(r===void 0||i===void 0)o=void 0;else switch(e.unit.numerators[0]){case"jour":o=jv(r,i);break;case"mois":o=Fu(r,i);break;case"an":o=_v(r,i);break;case"trimestre":o=Fu(r,i)/3;break;case"trimestre civil":o=cw(r,i);break;case"année civile":o=dw(r,i);break}return typeof o=="number"&&(o=Math.max(0,o)),{...e,missingVariables:jt([t,n]),nodeValue:o,explanation:{depuis:t,"jusqu'à":n}}},fm=Xt(uw(new Date)),mw=(e,t)=>{const n={depuis:Y(e.depuis??fm,t),"jusqu'à":Y(e["jusqu'à"]??fm,t)},r=e.unité?ln(e.unité):ln("jour");if(r.denominators.length>0||r.numerators.length>1||!hm.includes(r.numerators[0]))throw new K("SyntaxError",`Seules les unités suivantes sont acceptées pour une durée : ${hm.join(", ")}. + L'unité fournie est: ${r.numerators[0]}`,{dottedName:t.dottedName});return{explanation:n,unit:r,nodeKind:"durée"}};Te("durée",pw);var hm=["mois","jour","an","trimestre","trimestre civil","année civile"];function Rv(e,t){return{explanation:Y(e,t),nodeKind:"est non défini"}}Rv.nom="est non défini";var fw=gn("est défini",{valeur:{}},{"=":[{"est non défini":"valeur"},"non"]}),hw=gn("est applicable",{valeur:{}},{"=":[{"est non applicable":"valeur"},"non"]}),gw=function(e){const t=this.evaluateNode(e.explanation);let n=!1;return t.nodeValue===void 0&&(n=!0),{...e,nodeValue:n,missingVariables:t.missingVariables,explanation:t}};Te("est non défini",gw);function Av(e,t){return{explanation:Y(e,t),nodeKind:"est non applicable"}}Av.nom="est non applicable";var Go=e=>({nodeKind:"est non applicable",explanation:e}),vw=function(e){var r,i,o,a;const t=e.explanation;if(((r=this.context.nodesTypes.get(t))==null?void 0:r.isNullable)===!1&&t.nodeKind!=="rule"&&t.nodeKind!=="reference")return{...e,nodeValue:!1,missingVariables:{}};if(this.cache.nodes.has(t)&&this.cache.nodes.get(t)!==void 0)return{...e,nodeValue:((i=this.cache.nodes.get(t))==null?void 0:i.nodeValue)===null,missingVariables:((o=this.cache.nodes.get(t))==null?void 0:o.missingVariables)??{}};switch(t.nodeKind){case"rule":{const{ruleDisabledByItsParent:s,parentMissingVariables:l}=Ev(this,t);if(s)return{...e,nodeValue:!0,missingVariables:l};const u=this.evaluateNode(Go(t.explanation.valeur)),c=mr(l,u.missingVariables);return u.nodeValue===!1&&((a=this.context.nodesTypes.get(this.context.parsedRules[`${t.dottedName} . $SITUATION`]))!=null&&a.isNullable)&&!Object.keys(u.missingVariables).length&&(c[t.dottedName]=1),{...e,nodeValue:u.nodeValue,missingVariables:c}}case"reference":return{...this.evaluateNode(Go(this.context.parsedRules[t.dottedName])),...e};case"condition":return{...this.evaluateNode({...t,explanation:{si:t.explanation.si,alors:Go(t.explanation.alors),sinon:Go(t.explanation.sinon)}}),...e}}const n=this.evaluateNode(t);return{...e,nodeValue:n.nodeValue===void 0?void 0:n.nodeValue===null,missingVariables:n.missingVariables}};Te("est non applicable",vw);function yw(e,t){return{explanation:{assiette:Y(e.assiette,t),multiplicateur:e.multiplicateur?Y(e.multiplicateur,t):Xt(1),tranches:cd(e.tranches,t)},nodeKind:"grille"}}var xw=function(e){var l;const t=this.evaluateNode.bind(this),n=this.evaluateNode(e.explanation.assiette),r=this.evaluateNode(e.explanation.multiplicateur);if(r.nodeValue===0)throw new K("EvaluationError","Le multiplicateur ne peut pas être nul",{dottedName:this.cache._meta.evaluationRuleStack[0]});const i=dd.call(this,{parsedTranches:e.explanation.tranches,assiette:n,multiplicateur:r}).map(u=>{if(u.isActive===!1)return u;const c=t(u.montant);return{...u,montant:c,nodeValue:c.nodeValue,unit:c.unit,missingVariables:jt([c,u])}});let o;const a=i.find(u=>u.isActive);a?o=[a]:i[i.length-1].isAfterActive===!1?o=[{nodeValue:!1}]:o=i.filter(u=>u.isActive===void 0);const s=o[0]?o[0].isActive===void 0?void 0:o[0].nodeValue:!1;return{...e,nodeValue:s,missingVariables:jt([n,r,...o]),explanation:{...e.explanation,assiette:n,multiplicateur:r,tranches:i},unit:((l=o[0])==null?void 0:l.unit)??void 0}};Te("grille",xw);function Ov(e,t,n,r=0,i=100,o=0){let a=t,s=n,l=a,u=e(a),c=e(s),d=u,m,p,b,y,E,h;for(;i-- >0;){if(b=s-a,Math.abs(d)=m&&Math.abs(u)>Math.abs(c)){let g,v;const C=l-s;a===l?(g=c/u,y=C*g,E=1-g):(E=u/d,g=c/d,v=c/u,y=v*(C*E*(E-g)-(s-a)*(g-1)),E=(E-1)*(g-1)*(v-1)),y>0?E=-E:y=-y,y<.75*C*E-Math.abs(m*E)/2&&y0?m:-m),a=s,u=c,s+=p,c=e(s),(c>0&&d>0||c<0&&d<0)&&(l=a,d=u),Math.abs(c){if(this.cache._meta.evaluationRuleStack.includes(h.dottedName))return!1;const g=t.evaluateNode(t.context.parsedRules[`${h.dottedName} . $SITUATION`]);return typeof g.nodeValue=="number"&&!(h.dottedName in g.missingVariables)});if(n===void 0)return{...e,nodeValue:void 0,missingVariables:{...Object.fromEntries(e.explanation.inversionCandidates.map(h=>[h.dottedName,1])),[e.explanation.ruleToInverse]:1}};const r=t.evaluateNode(n);let i=0;t.setSituation({[n.dottedName]:Ga},{keepPreviousSituation:!0}),t.cache.traversedVariablesStack=this.cache.traversedVariablesStack?[]:void 0;let o;const a=h=>(i++,t.setSituation({[e.explanation.ruleToInverse]:{nodeValue:h,nodeKind:"constant",type:"number",unit:r.unit}},{keepPreviousSituation:!0}),t.cache.traversedVariablesStack=this.cache.traversedVariablesStack?[]:void 0,o=t.evaluateNode(n),o),s=r.nodeValue;let l;const u=s,d=a(u).nodeValue,m=d>s?.9:1.2,p=d!==void 0?u*s*m/d:2e3,y=a(p).nodeValue,E=this.context.inversionMaxIterations??10;if(d!==void 0||y!==void 0){const h=P=>(P===u?d:P===p?y:a(P).nodeValue)-s,g=y!==void 0&&yd||d>s)?p:d!==void 0&&dy||y>s)?u:e.explanation.min,v=y!==void 0&&y>s&&(ys&&(de.explanation.max)&&(l=void 0)}if(l==null&&(this.cache.inversionFail=!0),this.cache.traversedVariablesStack){const h=this.cache.traversedVariablesStack[0];h&&(o.traversedVariables??[]).forEach(g=>h.add(g))}return{...e,nodeValue:l,unit:r.unit,explanation:{...e.explanation,inversionGoal:n,numberOfIteration:i,inversionFail:this.cache.inversionFail},missingVariables:o.missingVariables}},ww=(e,t)=>{let n=typeof e=="object"&&"avec"in e?e.avec:e;const r=typeof e=="object"&&"min"in e?e.min:-1e6,i=typeof e=="object"&&"max"in e?e.max:1e8,o=typeof e=="object"&&"tolérance d'erreur"in e?e["tolérance d'erreur"]:.1;if(e===null)throw new K("SyntaxError","Il manque les règles avec laquelle effectuer le calcul d'inversion dans le mécanisme `inversion numérique`",{dottedName:t.dottedName});return Array.isArray(n)||(n=[n]),{explanation:{ruleToInverse:t.dottedName,inversionCandidates:n.map(a=>({...Y(a,t)})),min:r,max:i,errorTolerance:o},nodeKind:"inversion"}};Te("inversion",bw);var kw=xr("le maximum de",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({condition:{si:{"est non applicable":"$INTERNAL valeur"},alors:"$INTERNAL acc",sinon:{condition:{si:{ou:[{"est non applicable":"$INTERNAL acc"},{">":["$INTERNAL valeur","$INTERNAL acc"]}]},alors:"$INTERNAL valeur",sinon:"$INTERNAL acc"}}},avec:{"[privé] $INTERNAL valeur":{valeur:n},"[privé] $INTERNAL acc":{valeur:t}}}),yr)),Ew=xr("le minimum de",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({condition:{si:{"est non applicable":"$INTERNAL valeur"},alors:"$INTERNAL acc",sinon:{condition:{si:{ou:[{"est non applicable":"$INTERNAL acc"},{"<":["$INTERNAL valeur","$INTERNAL acc"]}]},alors:"$INTERNAL valeur",sinon:"$INTERNAL acc"}}},avec:{"[privé] $INTERNAL valeur":{valeur:n},"[privé] $INTERNAL acc":{valeur:t}}}),yr));function Vu(e){return e.reverse().reduce((t,n)=>({"+":[n,t]}),yr)}var Sw=xr("somme",{valeur:{type:"liste"}},({valeur:e})=>Vu([...e])),Cw=xr("moyenne",{valeur:{type:"liste"}},({valeur:e})=>{const t=[...e];return{"/":[Vu(t),Vu(t.map(Nw))]}});function Nw(e){return{"applicable si":{"est applicable":e},valeur:1}}var Pw=gn("non applicable si",{"non applicable si":{},valeur:{}},{condition:{si:"non applicable si = non",alors:"valeur",sinon:yr}}),jw=(e,t)=>(Array.isArray(e)&&(e={possibilités:e}),{...e,explanation:e.possibilités.map(n=>Y(n,t)),context:t.dottedName,nodeKind:"une possibilité"});Te("une possibilité",e=>({...e,missingVariables:{[e.context]:1},nodeValue:void 0}));var Iv={"*":[(e,t)=>e*t,"×"],"/":[(e,t)=>e/t,"∕"],"+":[(e,t)=>e+t],"-":[(e,t)=>e-t,"−"],"<":[(e,t)=>ee<=t,"≤"],">":[(e,t)=>e>t],">=":[(e,t)=>e>=t,"≥"],"=":[(e,t)=>(e??!1)===(t??!1)],"!=":[(e,t)=>(e??!1)!==(t??!1),"≠"],et:[(e,t)=>(e??!1)&&(t??!1)],ou:[(e,t)=>(e??!1)||(t??!1)]},_w=(e,t)=>(n,r)=>{const i=n.map(o=>Y(o,r));return{...n,nodeKind:"operation",operationKind:e,operator:t||e,explanation:i}},Rw=function(e){var l;let t=this.evaluateNode(e.explanation[0]),n={...e,missingVariables:{}};if(t.nodeValue===null&&["<",">","<=",">=","/","*","-","et"].includes(e.operationKind)||t.nodeValue===0&&["/","*"].includes(e.operationKind)||t.nodeValue===!1&&e.operationKind==="et"||t.nodeValue===!0&&e.operationKind==="ou")return{...n,nodeValue:e.operationKind==="et"?!1:t.nodeValue,missingVariables:t.missingVariables};let r=this.evaluateNode(e.explanation[1]);if(n.explanation=[t,r],e.operationKind==="/"&&r.nodeValue===0)throw new K("EvaluationError","Division by zero",{dottedName:this.cache._meta.evaluationRuleStack[0]});if(r.nodeValue===null&&["<",">","<=",">=","/","*","et"].includes(e.operationKind)||r.nodeValue===0&&["*"].includes(e.operationKind)||r.nodeValue===!1&&e.operationKind==="et"||r.nodeValue===!0&&e.operationKind==="ou")return{...n,nodeValue:e.operationKind==="et"?!1:r.nodeValue,missingVariables:r.missingVariables};n.missingVariables=jt([t,r]),(t.nodeValue===void 0||r.nodeValue===void 0)&&(n={...n,nodeValue:void 0});const i=["+","-"].includes(e.operationKind)&&rt(r.unit)==="%"&&rt(t.unit)!=="%";if(!("nodeValue"in n)&&!["/","*"].includes(e.operationKind)&&!i)try{t.unit&&"unit"in r?r=or(t.unit,r):r.unit&&(t=or(r.unit,t))}catch(u){ws(this.context.logger,`Dans l'expression '${e.operationKind}', la partie gauche (unité: ${rt(t.unit)}) n'est pas compatible avec la partie droite (unité: ${rt(r.unit)})`,{dottedName:this.cache._meta.evaluationRuleStack[0]},u)}const o=Iv[e.operationKind][0],a=t.nodeValue,s=r.nodeValue;if(n.nodeValue="nodeValue"in n?n.nodeValue:["<",">","<=",">=","*","/"].includes(e.operationKind)&&r.nodeValue===null?null:[a,s].every(u=>{var c;return typeof u=="string"&&((c=u.match)==null?void 0:c.call(u,/^[\d]{2}\/[\d]{2}\/[\d]{4}$/))})?o(ti(a).getTime(),ti(s).getTime()):o(a,s),e.operationKind==="*"&&((l=Nn("*",[t.unit,r.unit]))!=null&&l.numerators.includes("%"))){const u=Nn("*",[t.unit,r.unit]),c=n.nodeValue;return{...n,nodeValue:typeof c=="number"?c/100:c,unit:Nn("*",[u,{numerators:[],denominators:["%"]}])}}if(i){const u=Nn("*",[t.unit,r.unit]);return{...n,nodeValue:typeof t.nodeValue=="number"&&typeof r.nodeValue=="number"?t.nodeValue*(1+r.nodeValue/100*(e.operationKind==="-"?-1:1)):n.nodeValue,unit:Nn("*",[u,{numerators:[],denominators:["%"]}])}}return e.operationKind==="*"||e.operationKind==="/"||e.operationKind==="-"||e.operationKind==="+"?{...n,unit:Nn(e.operationKind,[t.unit,r.unit])}:n};Te("operation",Rw);var Aw=Object.fromEntries(Object.entries(Iv).map(([e,[,t]])=>[e,_w(e,t)])),Ow=Aw,Iw=gn("par défaut",{"par défaut":{},valeur:{}},{condition:{si:{"est non défini":"valeur"},alors:"par défaut",sinon:"valeur"}}),Lw=gn("plafond",{plafond:{},valeur:{}},{condition:{si:{et:["plafond != non","valeur > plafond"]},alors:"plafond",sinon:"valeur"}}),qw=gn("plancher",{plancher:{},valeur:{}},{condition:{si:{et:["plancher != non","valeur < plancher"]},alors:"plancher",sinon:"valeur"}});function Tw(e){return e.reduce((t,n)=>({"*":[n,t]}),Xt(1))}var gm=xr("produit",{valeur:{type:"liste"}},({valeur:e})=>({valeur:Tw([...e]),"simplifier l'unité":"oui"})),$w=function(e){if(this.cache._meta.evaluationRuleStack.slice(1).includes(e.explanation.ruleToSolve))return{...Ga,...e};let t=0;const n=this.shallowCopy();n.cache._meta.parentRuleStack=[...this.cache._meta.parentRuleStack],n.cache._meta.evaluationRuleStack=[...this.cache._meta.evaluationRuleStack];const r=this.context.inversionMaxIterations??25,i=d=>(t++,n.setSituation({[e.explanation.ruleToSolve]:{...Ga,nodeValue:d}},{keepPreviousSituation:!0}),n.evaluateNode(e.explanation.valeur)),o=Symbol("inversion failed");let a=o;const s=1;let l=i(s);const u=l.nodeValue,c=l.unit;return u!==void 0&&(a=Ov(b=>b===s?u-s:(l=i(b),l.nodeValue-b),-1e6,1e8,.5,r,2)),a===o&&(a=void 0,this.cache.inversionFail=!0),a!==void 0&&(l=i(a)),{...e,unit:c,nodeValue:a,explanation:{...e.explanation,valeur:l,numberOfIterations:t},missingVariables:l.missingVariables}};function Lv(e,t){return{explanation:{ruleToSolve:t.dottedName,valeur:Y(e.valeur,t)},nodeKind:"résoudre référence circulaire"}}Lv.nom="résoudre la référence circulaire";Te("résoudre référence circulaire",$w);function qv(e,t){return{explanation:Y(e.valeur,t),nodeKind:"simplifier unité"}}qv.nom="simplifier l'unité";Te("simplifier unité",function(t){const n=this.evaluateNode(t.explanation),r=n.nodeValue,i={...n,...t,explanation:n};if(r==null)return i;if(!n.unit)return{...i,unit:n.unit};const o=fv(n.unit);return{...i,nodeValue:typeof r=="number"?ko(n.unit,o,r):r,unit:o}});var zw=gn("dans la situation",{valeur:{},"dans la situation":{}},{condition:{si:{"est non défini":"dans la situation"},alors:"valeur",sinon:"dans la situation"}});function Fw(e,t){return{explanation:{assiette:Y(e.assiette,t),multiplicateur:e.multiplicateur?Y(e.multiplicateur,t):Xt(1),tranches:cd(e.tranches,t)},nodeKind:"taux progressif"}}var Vw=function(e){const t=this.evaluateNode.bind(this),n=this.evaluateNode(e.explanation.assiette),r=this.evaluateNode(e.explanation.multiplicateur);if(r.nodeValue===0)throw new K("EvaluationError","Division by zero",{dottedName:""});const i=dd.call(this,{parsedTranches:e.explanation.tranches,assiette:n,multiplicateur:r}),o={...e,explanation:{tranches:i,assiette:n,multiplicateur:r},unit:ln("%")},a=i[i.length-1];if(i.every(({isActive:g})=>g===!1)||a.isActive&&a.plafond.nodeValue===1/0){const g=or(ln("%"),t(a.taux)),{nodeValue:v,missingVariables:C}=g;return a.taux=g,a.nodeValue=v,a.missingVariables=C,{...o,nodeValue:v,missingVariables:C}}if(i.every(({isActive:g})=>g!==!0)||typeof n.nodeValue!="number")return{...o,nodeValue:void 0,missingVariables:jt(i)};const s=i.findIndex(({isActive:g})=>g===!0),l=i[s];l.taux=or(ln("%"),t(l.taux));const u=i[s-1];u&&(u.taux=or(ln("%"),t(u.taux)),u.isActive=!0);const c=u?u.taux:l.taux,d=[c,l.taux];if(d.some(g=>g.nodeValue===void 0))return l.nodeValue=void 0,{...o,nodeValue:void 0,missingVariables:jt(d)};const m=c.nodeValue,p=l.taux.nodeValue,b=l.plancherValue,y=l.plafondValue,E=(p-m)/(y-b),h=m+(n.nodeValue-b)*E;return l.nodeValue=h,{...o,nodeValue:h,missingVariables:{}}};Te("taux progressif",Vw);var md="texte";function Du(e,t){const n=[];let r=0;for(const{0:i,index:o}of e.matchAll(/{{(.|\n)*?}}/g)){const a=i.slice(2,-2).trim(),s=Y(a,t);n.push(e.substring(r,o),s),r=(o??0)+i.length}return n.push(e.slice(r)),{nodeKind:md,explanation:n}}Du.nom=md;Te(md,function(t){const n=t.explanation.map(r=>typeof r=="string"?r:this.evaluateNode(r));return{...t,explanation:n,missingVariables:jt(t.explanation.filter(r=>typeof r!="string")),nodeValue:n.map(r=>typeof r=="string"?r:Vn(r)).join("")}});var Dw=xr("toutes ces conditions",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({et:[t,n]}),"oui")),Mw=xr("une de ces conditions",{valeur:{type:"liste"}},({valeur:e})=>e.reduce((t,n)=>({ou:[t,n]}),"non"));function Cs(e,t){const n=Y(e.valeur,t),r=ln(e.unité,t.getUnitKey);return{explanation:n,unit:r,nodeKind:Cs.nom}}Cs.nom="unité";Te(Cs.nom,function(t){const n=this.evaluateNode(t.explanation);let r=n.nodeValue;if(r!==null&&"unit"in t)try{r=ko(n.unit,t.unit,n.nodeValue)}catch(i){ws(this.context.logger,"Erreur lors de la conversion d'unité explicite",{dottedName:this.cache._meta.evaluationRuleStack[0]},i)}return{...t,nodeValue:r,explanation:n,missingVariables:n.missingVariables}});function Ns(e,t){return{missingVariable:e["variable manquante"],nodeKind:Ns.nom,explanation:Y(e.valeur,t)}}Ns.nom="variable manquante";Te(Ns.nom,function(t){const n=this.evaluateNode(t.explanation),r=Object.values(n.missingVariables).reduce((i,o)=>i>o?i:o,0);return{...t,nodeValue:n.nodeValue,unit:n.unit,explanation:n,missingVariables:mr(n.missingVariables,{[t.missingVariable]:r+1})}});function Bw(e,t){return{explanation:e.map(({si:r,alors:i,sinon:o})=>o!==void 0?{consequence:Y(o,t),condition:Xt(!0)}:{consequence:Y(i,t),condition:Y(r,t)}),nodeKind:"variations"}}var Uw=function(e){const[t,n,r]=e.explanation.reduce(([i,o,a,s],{condition:l,consequence:u},c)=>{if(s===!0)return[i,[...o,{condition:l,consequence:u}],a,s];const d=this.evaluateNode(l),m=s===void 0?s:!s&&(d.nodeValue===void 0?void 0:d.nodeValue!==!1&&d.nodeValue!==null);if(m===!1||m===null)return[i,[...o,{condition:d,consequence:u}],a,s];let p;if(d.nodeValue!==!1&&d.nodeValue!==null&&(p=this.evaluateNode(u),a))try{p=or(a,p)}catch(b){ws(this.context.logger,`L'unité de la branche n° ${c+1} du mécanisme 'variations' n'est pas compatible avec celle d'une branche précédente`,{dottedName:this.cache._meta.evaluationRuleStack[0]},b)}return[m&&(p==null?void 0:p.nodeValue),[...o,{condition:d,consequence:p??u}],a||(p==null?void 0:p.unit),s||m]},[null,[],void 0,!1]);return{...e,nodeValue:t,...r!==void 0&&{unit:r},explanation:n,missingVariables:n.reduce((i,{condition:o,consequence:a})=>mr(i,mr(av(o.missingVariables),"nodeValue"in o&&o.nodeValue!==!1&&o.nodeValue!==null?a.missingVariables:{})),{})}};Te("variations",Uw);var Ww=iv(ab()),Qo=([e,,t,,n])=>({[t.value.toLowerCase()]:[e,n]}),Hw=([e,,t])=>({[e]:[zr([{value:"0"}]),t]}),vm=e=>({variable:e.value}),ym=([{value:e}])=>{},zr=([{value:e}])=>({constant:{type:"number",nodeValue:parseFloat(e)}}),Kw=e=>({...zr(e),unité:e[2].value}),xm=([{value:e}])=>({constant:{type:"date",nodeValue:Nv(e)}}),Sl=([{value:e}])=>({constant:{type:"boolean",nodeValue:e==="oui"}}),bm=([{value:e}])=>({constant:{type:"string",nodeValue:e.slice(1,-1)}}),Gw=iv(sb());function Ne(e){return e[0]}var Qw="(?:(?:0?[1-9]|[12][0-9]|3[01])\\/)?(?:0?[1-9]|1[012])\\/\\d{4}",Yw="[a-zA-ZÀ-ſ€$%°]",Xw="[a-zA-ZÀ-ſ0-9',]",Mu=`${Yw}(?:[-']?${Xw}+)*`,Jw="-?(?:[1-9][0-9]+|[0-9])(?:\\.[0-9]+)?",ie=Gw.default.compile({"(":"(",")":")","[":"[","]":"]",comparison:[">","<",">=","<=","=","!="],date:new RegExp(Qw),boolean:["oui","non"],number:new RegExp(Jw),word:new RegExp(Mu),string:[/'.*'/,/".*"/],parentSelector:"^",JSONObject:/{.*}/,additionSubstraction:/[\+-]/,multiplicationDivision:["*","/"],dot:" . ",".":".",space:{match:/[\s]+/,lineBreaks:!0}}),Cr=e=>({value:e.map(t=>t&&t.value).join("")}),Ni=e=>Cr(e.flat()),Zw=ie,ek=[{name:"main",symbols:["Comparison"],postprocess:Ne},{name:"main",symbols:["NumericValue"],postprocess:Ne},{name:"main",symbols:["Date"],postprocess:Ne},{name:"main",symbols:["NonNumericTerminal"],postprocess:Ne},{name:"main",symbols:["JSONObject"],postprocess:Ne},{name:"NumericValue",symbols:["AdditionSubstraction"],postprocess:Ne},{name:"NumericValue",symbols:["Negation"],postprocess:Ne},{name:"NumericTerminal",symbols:["Variable"],postprocess:Ne},{name:"NumericTerminal",symbols:["number"],postprocess:Ne},{name:"Negation",symbols:[{literal:"-"},ie.has("space")?{type:"space"}:space,"Parentheses"],postprocess:Hw},{name:"Parentheses",symbols:[{literal:"("},ie.has("space")?{type:"space"}:space,"NumericValue",ie.has("space")?{type:"space"}:space,{literal:")"}],postprocess:([,,e])=>e},{name:"Parentheses",symbols:[{literal:"("},"NumericValue",{literal:")"}],postprocess:([,e])=>e},{name:"Parentheses",symbols:["NumericTerminal"],postprocess:Ne},{name:"Date",symbols:["Variable"],postprocess:Ne},{name:"Date",symbols:[ie.has("date")?{type:"date"}:xm],postprocess:xm},{name:"Comparison",symbols:["Comparable",ie.has("space")?{type:"space"}:space,ie.has("comparison")?{type:"comparison"}:comparison,ie.has("space")?{type:"space"}:space,"Comparable"],postprocess:Qo},{name:"Comparison",symbols:["Date",ie.has("space")?{type:"space"}:space,ie.has("comparison")?{type:"comparison"}:comparison,ie.has("space")?{type:"space"}:space,"Date"],postprocess:Qo},{name:"Comparable$subexpression$1",symbols:["AdditionSubstraction"]},{name:"Comparable$subexpression$1",symbols:["NonNumericTerminal"]},{name:"Comparable",symbols:["Comparable$subexpression$1"],postprocess:([[e]])=>e},{name:"NonNumericTerminal",symbols:[ie.has("boolean")?{type:"boolean"}:Sl],postprocess:Sl},{name:"NonNumericTerminal",symbols:[ie.has("string")?{type:"string"}:bm],postprocess:bm},{name:"Variable",symbols:["VariableWithoutParentSelector"],postprocess:([e])=>vm(e)},{name:"Variable$ebnf$1",symbols:[]},{name:"Variable$ebnf$1$subexpression$1",symbols:[ie.has("parentSelector")?{type:"parentSelector"}:parentSelector,ie.has("dot")?{type:"dot"}:dot],postprocess:Cr},{name:"Variable$ebnf$1",symbols:["Variable$ebnf$1","Variable$ebnf$1$subexpression$1"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Variable",symbols:["Variable$ebnf$1","VariableWithoutParentSelector"],postprocess:e=>vm(Ni(e))},{name:"VariableWithoutParentSelector$ebnf$1",symbols:[]},{name:"VariableWithoutParentSelector$ebnf$1$subexpression$1",symbols:[ie.has("dot")?{type:"dot"}:dot,"Words"],postprocess:Cr},{name:"VariableWithoutParentSelector$ebnf$1",symbols:["VariableWithoutParentSelector$ebnf$1","VariableWithoutParentSelector$ebnf$1$subexpression$1"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"VariableWithoutParentSelector",symbols:["Words","VariableWithoutParentSelector$ebnf$1"],postprocess:e=>Ni(e)},{name:"Words$ebnf$1$subexpression$1$ebnf$1",symbols:[ie.has("space")?{type:"space"}:space],postprocess:Ne},{name:"Words$ebnf$1$subexpression$1$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"Words$ebnf$1$subexpression$1",symbols:["Words$ebnf$1$subexpression$1$ebnf$1","WordOrNumber"],postprocess:Cr},{name:"Words$ebnf$1",symbols:["Words$ebnf$1$subexpression$1"]},{name:"Words$ebnf$1$subexpression$2$ebnf$1",symbols:[ie.has("space")?{type:"space"}:space],postprocess:Ne},{name:"Words$ebnf$1$subexpression$2$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"Words$ebnf$1$subexpression$2",symbols:["Words$ebnf$1$subexpression$2$ebnf$1","WordOrNumber"],postprocess:Cr},{name:"Words$ebnf$1",symbols:["Words$ebnf$1","Words$ebnf$1$subexpression$2"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Words",symbols:["WordOrKeyword","Words$ebnf$1"],postprocess:Ni},{name:"Words",symbols:[ie.has("word")?{type:"word"}:Mu],postprocess:Ne},{name:"WordOrKeyword",symbols:[ie.has("word")?{type:"word"}:Mu],postprocess:Ne},{name:"WordOrKeyword",symbols:[ie.has("boolean")?{type:"boolean"}:Sl],postprocess:Ne},{name:"WordOrNumber",symbols:["WordOrKeyword"],postprocess:Ne},{name:"WordOrNumber",symbols:[ie.has("number")?{type:"number"}:zr],postprocess:Ne},{name:"Unit$ebnf$1",symbols:[]},{name:"Unit$ebnf$1",symbols:["Unit$ebnf$1","UnitNumerator"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Unit$ebnf$2",symbols:[]},{name:"Unit$ebnf$2",symbols:["Unit$ebnf$2","UnitDenominator"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"Unit",symbols:["Unit$ebnf$1","Unit$ebnf$2"],postprocess:Ni},{name:"UnitNumerator",symbols:["Words"],postprocess:Ne},{name:"UnitNumerator",symbols:[{literal:"."},"UnitNumerator"],postprocess:Cr},{name:"UnitDenominator$ebnf$1",symbols:[]},{name:"UnitDenominator$ebnf$1$subexpression$1",symbols:[ie.has("space")?{type:"space"}:space]},{name:"UnitDenominator$ebnf$1",symbols:["UnitDenominator$ebnf$1","UnitDenominator$ebnf$1$subexpression$1"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"UnitDenominator$ebnf$2",symbols:["UnitNumerator"]},{name:"UnitDenominator$ebnf$2",symbols:["UnitDenominator$ebnf$2","UnitNumerator"],postprocess:function(t){return t[0].concat([t[1]])}},{name:"UnitDenominator",symbols:["UnitDenominator$ebnf$1",{literal:"/"},"UnitDenominator$ebnf$2"],postprocess:Ni},{name:"AdditionSubstraction",symbols:["AdditionSubstraction",ie.has("space")?{type:"space"}:space,ie.has("additionSubstraction")?{type:"additionSubstraction"}:additionSubstraction,ie.has("space")?{type:"space"}:space,"MultiplicationDivision"],postprocess:Qo},{name:"AdditionSubstraction",symbols:["MultiplicationDivision"],postprocess:Ne},{name:"MultiplicationDivision",symbols:["MultiplicationDivision",ie.has("space")?{type:"space"}:space,ie.has("multiplicationDivision")?{type:"multiplicationDivision"}:multiplicationDivision,ie.has("space")?{type:"space"}:space,"Parentheses"],postprocess:Qo},{name:"MultiplicationDivision",symbols:["Parentheses"],postprocess:Ne},{name:"number",symbols:[ie.has("number")?{type:"number"}:zr],postprocess:zr},{name:"number$ebnf$1$subexpression$1",symbols:[ie.has("space")?{type:"space"}:space]},{name:"number$ebnf$1",symbols:["number$ebnf$1$subexpression$1"],postprocess:Ne},{name:"number$ebnf$1",symbols:[],postprocess:function(e){return null}},{name:"number",symbols:[ie.has("number")?{type:"number"}:zr,"number$ebnf$1","Unit"],postprocess:Kw},{name:"JSONObject",symbols:[ie.has("JSONObject")?{type:"JSONObject"}:ym],postprocess:ym}],tk="main",nk={Lexer:Zw,ParserRules:ek,ParserStart:tk},{Grammar:rk,Parser:ik}=Ww.default,ok=rk.fromCompiled(nk),Bu=new ik(ok),ak=Bu.save();function Tv(e,t){const n=(e+"").replace(/\s*\n\s*/g," ").trim();try{Bu.restore(ak);const[r]=Bu.feed(n).results;if(r==null)throw new K("InternalError",` +Un problème est survenu lors du parsing de l'expression \`${n}\` : + + le parseur Nearley n'a pas réussi à parser l'expression. +`,{dottedName:t});return r}catch(r){throw r instanceof K?r:new K("SyntaxError",`\`${n}\` n'est pas une expression valide`,{dottedName:t},r)}}function sk(e,t){if(!t.dottedName)throw new K("InternalError","Une référence ne peut pas exister en dehors d'une règle (`context.dottedName` est vide)",{dottedName:e});if(!e)throw new K("SyntaxError","Une référence ne peut pas être vide",{dottedName:t.dottedName});return{nodeKind:"reference",name:e,contextDottedName:t.dottedName}}Te("reference",function(t){if(!t.dottedName)throw new bs(t);const n=this.evaluateNode(this.context.parsedRules[t.dottedName]);return delete n.sourceMap,{...n,...t}});function Y(e,t){if(e==null)throw new K("SyntaxError",` + Une des valeurs de la formule est vide. + Vérifiez que tous les champs à droite des deux points sont remplis`,{dottedName:t.dottedName});if(typeof e=="boolean")throw new K("SyntaxError",` +Les valeurs booléennes true / false ne sont acceptées. +Utilisez leur contrepartie française : 'oui' / 'non'`,{dottedName:t.dottedName});const n=typeof e=="object"?e:Tv(e,t.dottedName);return"nodeKind"in n?n:{...lk(n,t),rawNode:e}}function wm(e,t){if(Array.isArray(e))throw new K("SyntaxError",` +Il manque le nom du mécanisme pour le tableau : [${e.map(a=>`'${a}'`).join(", ")}] +Les mécanisme possibles sont : 'somme', 'le maximum de', 'le minimum de', 'toutes ces conditions', 'une de ces conditions'. + `,{dottedName:t.dottedName});const n=Object.keys(e);if(n.length>1)throw new K("SyntaxError",` +Les mécanismes suivants se situent au même niveau : ${n.map(a=>`'${a}'`).join(", ")} +Cela vient probablement d'une erreur dans l'indentation + `,{dottedName:t.dottedName});if(n.length===0)return{nodeKind:"constant",nodeValue:void 0};const r=n[0],i=e[r],o=zv[r];if(!o)throw new K("SyntaxError",`Le mécanisme "${r}" est inconnu. + +Vérifiez qu'il n'y ait pas d'erreur dans l'orthographe du nom.`,{dottedName:t.dottedName});try{return o(i,t)}catch(a){throw a instanceof K?a:new K("SyntaxError",r?`➡️ Dans le mécanisme ${r} +${a.message}`:a.message,{dottedName:t.dottedName})}}var $v=[pd,Ns,Sv,Ab,Pw,Es,Cs,qv,qw,Lw,Iw,zw,Lv,Rb];function lk(e,t){const n=$v.find(o=>o.nom in e);if(!n)return wm(e,t);const{[n.nom]:r,...i}=e;return wm({[n.nom]:{valeur:i,[n.nom]:r}},t)}var zv={...Ow,...$v.reduce((e,t)=>({[t.nom]:t,...e}),{}),"inversion numérique":ww,"le maximum de":kw,"le minimum de":Ew,"taux progressif":Fw,"toutes ces conditions":Dw,"est non défini":Rv,"est non applicable":Av,"est applicable":hw,"est défini":fw,"une de ces conditions":Mw,"une possibilité":jw,condition:Cv,barème:rw,durée:mw,grille:yw,multiplication:gm,produit:gm,somme:Sw,moyenne:Cw,[Du.nom]:Du,valeur:Y,variable:sk,variations:Bw,constant:e=>({type:e.type,fullPrecision:!0,isNullable:e.nodeValue==null,missingVariables:{},nodeValue:e.nodeValue,nodeKind:"constant"})},uk=Object.keys(zv),ck=0,Yo={};function Fv(e,t){return e?(Array.isArray(e)?e:[e]).map(n=>{typeof n=="string"&&(n={"références à":n});const r=Y(n["références à"],t),[i,o]=[n.dans??[],n["sauf dans"]??[]].map(a=>Array.isArray(a)?a:[a]).map(a=>a.map(s=>Y(s,t)));if(n.priorité!=null&&(typeof n.priorité!="number"||n.priorité<0))throw new K("SyntaxError","La priorité du remplacement doit être un nombre positif",t);return{nodeKind:"replacementRule",rawNode:n,priority:n.priorité,definitionRule:Y(t.dottedName,t),replacedReference:r,replaceByNonApplicable:!1,whiteListedNames:i,blackListedNames:o,remplacementRuleId:ck++}}):[]}function dk(e,t){const n=Fv(e,t);return n.forEach(r=>r.replaceByNonApplicable=!0),n}function pk(e){const t={};for(const n in e){const r=e[n];for(const i of r.replacements){if(!i.replacedReference.dottedName)throw new bs(i);const o=i.replacedReference.dottedName;t[o]=[...t[o]??[],i]}}return t}function mk({newRules:e,previousReplacements:t,parsedRules:n,referencesMaps:r}){const i=pk(e),o=new Set([]);for(const c in i){const d=r.rulesThatUse.get(c)??[];for(const m of d)o.add(m)}const a=new Set(Object.keys(e).filter(c=>[...r.referencesIn.get(c)??new Set].some(d=>(t[d]??[]).length))),s=ub(t,i);if(!a.size&&!o.size)return[n,s];const l=km(t,r),u=km(i,r);return a.forEach(c=>{n[c]=l(n[c])}),o.forEach(c=>{n[c]=u(n[c])}),[n,s]}function km(e,t){return po((n,r)=>{if(n.nodeKind==="replacementRule"||n.nodeKind==="inversion"||n.nodeKind==="une possibilité")return!1;if(n.nodeKind==="contexte")return{...n,explanation:{...n.explanation,valeur:r(n.explanation.valeur),contexte:n.explanation.contexte.map(([i,o])=>[i,r(o)])}};if(n.nodeKind==="reference"){if(!n.dottedName)throw new bs(n);const i=fk(n,e[n.dottedName]??[]);return ov(o=>(ud(o,t,n.contextDottedName),"continue"))(i),i}})}function fk(e,t){const n=t.filter(({definitionRule:o})=>o.dottedName!==e.contextDottedName).filter(({whiteListedNames:o})=>!o.length||o.some(a=>e.contextDottedName.startsWith(a.dottedName))).filter(({blackListedNames:o})=>!o.length||o.every(a=>!e.contextDottedName.startsWith(a.dottedName))).reverse().sort((o,a)=>{const s=(a.priority??0)-(o.priority??0);return s!==0?s:a.definitionRule.dottedName.localeCompare(o.definitionRule.dottedName)});if(!n.length)return e;const r=n.map(o=>o.remplacementRuleId).join("-");if(Yo[r])return Yo[r];const i={nodeKind:"variations",explanation:[...n.map(({definitionRule:o,replaceByNonApplicable:a})=>a?{condition:o,consequence:yr}:{condition:hk(o),consequence:o}),{condition:Vv,consequence:e}]};return i.sourceMap={mecanismName:"replacement",args:{applicableReplacements:n,originalNode:e}},Yo[r]=i,Yo[r]}function hk(e){return{nodeKind:"condition",explanation:{si:{nodeKind:"est non applicable",explanation:e},alors:gk,sinon:Vv}}}var Vv=Xt(!0),gk=Xt(!1);function mo(e){return{dottedName:"",logger:console,getUnitKey:t=>t,parsedRules:{},referencesMaps:{referencesIn:new Map,rulesThatUse:new Map},nodesTypes:new WeakMap,rulesReplacements:{},subEngines:new Map,subEngineId:void 0,strict:{situation:!0,noOrphanRule:!0,...e.strict},...e}}function Cl(e){return Object.assign({},e,{parsedRules:Yt(e.parsedRules),referencesMaps:{referencesIn:new Map(e.referencesMaps.referencesIn),rulesThatUse:new Map(e.referencesMaps.rulesThatUse)},subEngines:new Map})}function ga(e,t=mo({})){if(typeof e=="string")throw new K("EngineError","Publicodes does not parse yaml rule sets itself anymore. Please provide a parsed js object. E.g. the `eemeli/yaml` package.",{});const n=Yt(e),r=mo(t),i=r.parsedRules;r.parsedRules={},kv(n,r);let o={};for(const c in i)o[c]=i[c];for(const c in r.parsedRules)o[c]=r.parsedRules[c];const[a,s]=vk(o,r.parsedRules,r.referencesMaps,!r.strict.noOrphanRule);let l;[o,l]=mk({parsedRules:o,newRules:a,referencesMaps:s,previousReplacements:r.rulesReplacements});const u=jb(Object.keys(a),o,r.nodesTypes);return{parsedRules:o,nodesTypes:u,referencesMaps:s,rulesReplacements:l}}function vk(e,t,n,r){const i=po(s=>zu(s,e)),o=po(s=>{const l=zu(s,e);return l&&ud(l,n),l});return[cb(s=>{if(s.nodeKind==="replacementRule")return i(s);if(s.nodeKind==="rule"){const l=s.explanation.parents.find(u=>!(u.dottedName in e));if(!r&&l)throw new K("SyntaxError",`La règle parente "${l.dottedName}" n'existe pas`,{dottedName:s.dottedName})}return o(s)},t),n]}function yk(e,t,n,r,i){var o;if(e!==void 0){if(n!==void 0){(o=n.traversedVariables)==null||o.forEach(a=>{var s;return(s=e[0])==null?void 0:s.add(a)});return}i&&e.unshift(new Set),t.nodeKind==="reference"&&t.dottedName&&t.dottedName in r&&e[0].add(t.dottedName)}}function xk(e,t){return!!e&&(e.length===0||t.nodeKind==="rule")}function bk(e,t,n){e!==void 0&&n&&(t.traversedVariables=Array.from(e.shift()??[]),e.length>0&&t.traversedVariables.forEach(r=>{e[0].add(r)}))}function wk(e,t,n){var o,a,s,l,u;const r=typeof n=="string"?Tv(n,t):void 0,i=e.getParsedRules();return!(r&&"constant"in r&&r.constant.type==="string"&&!(`${t} . ${r.constant.nodeValue}`in i)&&((o=i[t].rawNode)!=null&&o["une possibilité"]||(s=(a=i[t].rawNode)==null?void 0:a.formule)!=null&&s["une possibilité"]||(u=(l=i[t].rawNode)==null?void 0:l.valeur)!=null&&u["une possibilité"]))}var Xo=()=>({_meta:{evaluationRuleStack:[],parentRuleStack:[]},traversedVariablesStack:void 0,nodes:new Map}),kk=class Dv{constructor(t={},n={}){Ce(this,"baseContext");Ce(this,"context");Ce(this,"publicParsedRules");Ce(this,"publicSituation");Ce(this,"cache",Xo());Ce(this,"checkExperimentalRule",ov(t=>(t.nodeKind==="reference"&&$u(this.context.parsedRules,t.dottedName)&&Zp(this.baseContext.logger,t.dottedName),"continue")));const r=n.strict??!0,i={dottedName:"",...n,strict:typeof r=="boolean"?{situation:r,noOrphanRule:n.allowOrphanRules===!0?!1:r}:r};this.baseContext=mo({...i,...ga(t,i)}),this.context=this.baseContext,this.publicParsedRules={};for(const o in this.baseContext.parsedRules){const a=this.baseContext.parsedRules[o];!a.private&&Ss(this.baseContext.parsedRules,"",o)&&(this.publicParsedRules[o]=a)}this.publicSituation={}}resetCache(){this.cache=Xo()}setSituation(t={},n={}){this.resetCache();const r=n.keepPreviousSituation??!1,i=n.strict??this.baseContext.strict.situation??!0;let o=Object.entries(t).filter(([s,l])=>{const u=this.checkSituationRule(s,l);if(!u)return!0;if(i)throw u;return this.baseContext.logger.error(u.message),!1});const a=this.context;if(r||(this.context=Cl(this.baseContext),this.publicSituation={}),i){const s=this.parseSituationRules(o);if(s)throw this.context=a,s}else o=o.filter(s=>{const l=this.parseSituationRules([s]);return l&&this.baseContext.logger.error(l.message),!l});return this.publicSituation=Object.assign(this.publicSituation,Object.fromEntries(o)),Object.keys(this.publicSituation).forEach(s=>{$u(this.context.parsedRules,s)&&Zp(this.baseContext.logger,s),this.checkExperimentalRule(this.context.parsedRules[`${s} . $SITUATION`])}),this}inversionFail(){return!!this.cache.inversionFail}getRule(t){if(!(t in this.baseContext.parsedRules))throw new K("UnknownRule",`La règle '${t}' n'existe pas`,{dottedName:t});if(!(t in this.publicParsedRules))throw new K("PrivateRule",`La règle ${t} est une règle privée.`,{dottedName:t});return this.publicParsedRules[t]}getParsedRules(){return this.publicParsedRules}getSituation(){return this.publicSituation}evaluate(t){const n=this.cache.nodes.get(t);if(n)return n;this.context=Object.assign(this.context,ga({"[privé] $EVALUATION":t&&typeof t=="object"&&"nodeKind"in t?{valeur:t}:t},this.context)),this.checkExperimentalRule(this.context.parsedRules.$EVALUATION),this.cache._meta=Xo()._meta;const r=this.evaluateNode(this.context.parsedRules.$EVALUATION.explanation.valeur);return this.cache.nodes.set(t,r),r}evaluateNode(t){const n=this.cache.nodes.get(t);let r=!1;if(this.cache.traversedVariablesStack&&(r=xk(this.cache.traversedVariablesStack,t),yk(this.cache.traversedVariablesStack,t,n,this.publicParsedRules,r)),n!==void 0)return n;if(!Bi[t.nodeKind])throw new K("EvaluationError",`Unknown "nodeKind": ${t.nodeKind}`,{dottedName:""});const i=Bi[t.nodeKind].call(this,t);return this.cache.traversedVariablesStack&&bk(this.cache.traversedVariablesStack,i,r),this.cache.nodes.set(t,i),i}shallowCopy(){const t=new Dv;return t.baseContext=Cl(this.baseContext),t.context=Cl(this.context),t.publicParsedRules=this.publicParsedRules,t.publicSituation=Yt(this.publicSituation),t.cache={...Xo(),nodes:new Map(this.cache.nodes)},t}checkSituationRule(t,n){if(!(t in this.baseContext.parsedRules)){const r=`'${t}' n'existe pas dans la base de règle.`;return new K("SituationError",r,{dottedName:t})}if(this.baseContext.parsedRules[t].private){const r=`La règle ${t} est une règle privée.`;return new K("SituationError",r,{dottedName:t})}if(!wk(this,t,n)){const r=`La valeur ${n} ne fait pas parti des possibilités listées dans la base de règles.`;return new K("SituationError",r,{dottedName:t})}return!1}parseSituationRules(t){const n=Object.fromEntries(t.map(([r,i])=>[`[privé] ${r} . $SITUATION`,i&&typeof i=="object"&&"nodeKind"in i?{valeur:i}:i]));try{const r=ga(n,this.context);return this.context=Object.assign(this.context,r),!1}catch(r){return new K("SituationError",r.message,{dottedName:r.dottedName})}}},Ek=kk;const Sk="modulepreload",Ck=function(e){return"/"+e},Em={},Nk=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),a=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=Promise.all(n.map(s=>{if(s=Ck(s),s in Em)return;Em[s]=!0;const l=s.endsWith(".css"),u=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${u}`))return;const c=document.createElement("link");if(c.rel=l?"stylesheet":Sk,l||(c.as="script",c.crossOrigin=""),c.href=s,a&&c.setAttribute("nonce",a),document.head.appendChild(c),l)return new Promise((d,m)=>{c.addEventListener("load",d),c.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${s}`)))})}))}return i.then(()=>t()).catch(o=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o})};var it=function(){return it=Object.assign||function(t){for(var n,r=1,i=arguments.length;r0?Ve(di,--_t):0,ri--,Ie===10&&(ri=1,js--),Ie}function Vt(){return Ie=_t2||Wu(Ie)>3?"":" "}function Tk(e,t){for(;--t&&Vt()&&!(Ie<48||Ie>102||Ie>57&&Ie<65||Ie>70&&Ie<97););return Rs(e,ya()+(t<6&&ar()==32&&Vt()==32))}function Hu(e){for(;Vt();)switch(Ie){case e:return _t;case 34:case 39:e!==34&&e!==39&&Hu(Ie);break;case 40:e===41&&Hu(e);break;case 92:Vt();break}return _t}function $k(e,t){for(;Vt()&&e+Ie!==57;)if(e+Ie===84&&ar()===47)break;return"/*"+Rs(t,_t-1)+"*"+hd(e===47?e:Vt())}function zk(e){for(;!Wu(ar());)Vt();return Rs(e,_t)}function Fk(e){return Lk(xa("",null,null,null,[""],e=Ik(e),0,[0],e))}function xa(e,t,n,r,i,o,a,s,l){for(var u=0,c=0,d=a,m=0,p=0,b=0,y=1,E=1,h=1,g=0,v="",C=i,P=o,w=r,N=v;E;)switch(b=g,g=Vt()){case 40:if(b!=108&&Ve(N,d-1)==58){va(N+=Z(Nl(g),"&","&\f"),"&\f",Uv(u?s[u-1]:0))!=-1&&(h=-1);break}case 34:case 39:case 91:N+=Nl(g);break;case 9:case 10:case 13:case 32:N+=qk(b);break;case 92:N+=Tk(ya()-1,7);continue;case 47:switch(ar()){case 42:case 47:Ii(Vk($k(Vt(),ya()),t,n,l),l);break;default:N+="/"}break;case 123*y:s[u++]=Wt(N)*h;case 125*y:case 59:case 0:switch(g){case 0:case 125:E=0;case 59+c:h==-1&&(N=Z(N,/\f/g,"")),p>0&&Wt(N)-d&&Ii(p>32?Nm(N+";",r,n,d-1,l):Nm(Z(N," ","")+";",r,n,d-2,l),l);break;case 59:N+=";";default:if(Ii(w=Cm(N,t,n,u,c,i,s,v,C=[],P=[],d,o),o),g===123)if(c===0)xa(N,t,w,w,C,o,d,s,P);else switch(m===99&&Ve(N,3)===110?100:m){case 100:case 108:case 109:case 115:xa(e,w,w,r&&Ii(Cm(e,w,w,0,0,i,s,v,i,C=[],d,P),P),i,P,d,s,r?C:P);break;default:xa(N,w,w,w,[""],P,0,s,P)}}u=c=p=0,y=h=1,v=N="",d=a;break;case 58:d=1+Wt(N),p=b;default:if(y<1){if(g==123)--y;else if(g==125&&y++==0&&Ok()==125)continue}switch(N+=hd(g),g*y){case 38:h=c>0?1:(N+="\f",-1);break;case 44:s[u++]=(Wt(N)-1)*h,h=1;break;case 64:ar()===45&&(N+=Nl(Vt())),m=ar(),c=d=Wt(v=N+=zk(ya())),g++;break;case 45:b===45&&Wt(N)==2&&(y=0)}}return o}function Cm(e,t,n,r,i,o,a,s,l,u,c,d){for(var m=i-1,p=i===0?o:[""],b=Hv(p),y=0,E=0,h=0;y0?p[g]+" "+v:Z(v,/&\f/g,p[g])))&&(l[h++]=C);return _s(e,t,n,i===0?Ps:s,l,u,c,d)}function Vk(e,t,n,r){return _s(e,t,n,Mv,hd(Ak()),ni(e,2,-2),0,r)}function Nm(e,t,n,r,i){return _s(e,t,n,fd,ni(e,0,r),ni(e,r+1,-1),r,i)}function Gv(e,t,n){switch(_k(e,t)){case 5103:return le+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return le+e+e;case 4789:return Wi+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return le+e+Wi+e+ye+e+e;case 5936:switch(Ve(e,t+11)){case 114:return le+e+ye+Z(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return le+e+ye+Z(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return le+e+ye+Z(e,/[svh]\w+-[tblr]{2}/,"lr")+e}case 6828:case 4268:case 2903:return le+e+ye+e+e;case 6165:return le+e+ye+"flex-"+e+e;case 5187:return le+e+Z(e,/(\w+).+(:[^]+)/,le+"box-$1$2"+ye+"flex-$1$2")+e;case 5443:return le+e+ye+"flex-item-"+Z(e,/flex-|-self/g,"")+(rn(e,/flex-|baseline/)?"":ye+"grid-row-"+Z(e,/flex-|-self/g,""))+e;case 4675:return le+e+ye+"flex-line-pack"+Z(e,/align-content|flex-|-self/g,"")+e;case 5548:return le+e+ye+Z(e,"shrink","negative")+e;case 5292:return le+e+ye+Z(e,"basis","preferred-size")+e;case 6060:return le+"box-"+Z(e,"-grow","")+le+e+ye+Z(e,"grow","positive")+e;case 4554:return le+Z(e,/([^-])(transform)/g,"$1"+le+"$2")+e;case 6187:return Z(Z(Z(e,/(zoom-|grab)/,le+"$1"),/(image-set)/,le+"$1"),e,"")+e;case 5495:case 3959:return Z(e,/(image-set\([^]*)/,le+"$1$`$1");case 4968:return Z(Z(e,/(.+:)(flex-)?(.*)/,le+"box-pack:$3"+ye+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+le+e+e;case 4200:if(!rn(e,/flex-|baseline/))return ye+"grid-column-align"+ni(e,t)+e;break;case 2592:case 3360:return ye+Z(e,"template-","")+e;case 4384:case 3616:return n&&n.some(function(r,i){return t=i,rn(r.props,/grid-\w+-end/)})?~va(e+(n=n[t].value),"span",0)?e:ye+Z(e,"-start","")+e+ye+"grid-row-span:"+(~va(n,"span",0)?rn(n,/\d+/):+rn(n,/\d+/)-+rn(e,/\d+/))+";":ye+Z(e,"-start","")+e;case 4896:case 4128:return n&&n.some(function(r){return rn(r.props,/grid-\w+-start/)})?e:ye+Z(Z(e,"-end","-span"),"span ","")+e;case 4095:case 3583:case 4068:case 2532:return Z(e,/(.+)-inline(.+)/,le+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Wt(e)-1-t>6)switch(Ve(e,t+1)){case 109:if(Ve(e,t+4)!==45)break;case 102:return Z(e,/(.+:)(.+)-([^]+)/,"$1"+le+"$2-$3$1"+Wi+(Ve(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~va(e,"stretch",0)?Gv(Z(e,"stretch","fill-available"),t,n)+e:e}break;case 5152:case 5920:return Z(e,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(r,i,o,a,s,l,u){return ye+i+":"+o+u+(a?ye+i+"-span:"+(s?l:+l-+o)+u:"")+e});case 4949:if(Ve(e,t+6)===121)return Z(e,":",":"+le)+e;break;case 6444:switch(Ve(e,Ve(e,14)===45?18:11)){case 120:return Z(e,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+le+(Ve(e,14)===45?"inline-":"")+"box$3$1"+le+"$2$3$1"+ye+"$2box$3")+e;case 100:return Z(e,":",":"+ye)+e}break;case 5719:case 2647:case 2135:case 3927:case 2391:return Z(e,"scroll-","scroll-snap-")+e}return e}function Ya(e,t){for(var n="",r=0;r-1&&!e.return)switch(e.type){case fd:e.return=Gv(e.value,e.length,n);return;case Bv:return Ya([En(e,{value:Z(e.value,"@","@"+le)})],r);case Ps:if(e.length)return Rk(n=e.props,function(i){switch(rn(i,r=/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":Sr(En(e,{props:[Z(i,/:(read-\w+)/,":"+Wi+"$1")]})),Sr(En(e,{props:[i]})),Uu(e,{props:Sm(n,r)});break;case"::placeholder":Sr(En(e,{props:[Z(i,/:(plac\w+)/,":"+le+"input-$1")]})),Sr(En(e,{props:[Z(i,/:(plac\w+)/,":"+Wi+"$1")]})),Sr(En(e,{props:[Z(i,/:(plac\w+)/,ye+"input-$1")]})),Sr(En(e,{props:[i]})),Uu(e,{props:Sm(n,r)});break}return""})}}var Wk={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},pt={},ii=typeof process<"u"&&pt!==void 0&&(pt.REACT_APP_SC_ATTR||pt.SC_ATTR)||"data-styled",Qv="active",Yv="data-styled-version",As="6.1.8",gd=`/*!sc*/ +`,vd=typeof window<"u"&&"HTMLElement"in window,Hk=!!(typeof SC_DISABLE_SPEEDY=="boolean"?SC_DISABLE_SPEEDY:typeof process<"u"&&pt!==void 0&&pt.REACT_APP_SC_DISABLE_SPEEDY!==void 0&&pt.REACT_APP_SC_DISABLE_SPEEDY!==""?pt.REACT_APP_SC_DISABLE_SPEEDY!=="false"&&pt.REACT_APP_SC_DISABLE_SPEEDY:typeof process<"u"&&pt!==void 0&&pt.SC_DISABLE_SPEEDY!==void 0&&pt.SC_DISABLE_SPEEDY!==""&&pt.SC_DISABLE_SPEEDY!=="false"&&pt.SC_DISABLE_SPEEDY),Os=Object.freeze([]),oi=Object.freeze({});function Kk(e,t,n){return n===void 0&&(n=oi),e.theme!==n.theme&&e.theme||t||n.theme}var Xv=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","use","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"]),Gk=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,Qk=/(^-|-$)/g;function Pm(e){return e.replace(Gk,"-").replace(Qk,"")}var Yk=/(a)(d)/gi,Jo=52,jm=function(e){return String.fromCharCode(e+(e>25?39:97))};function Ku(e){var t,n="";for(t=Math.abs(e);t>Jo;t=t/Jo|0)n=jm(t%Jo)+n;return(jm(t%Jo)+n).replace(Yk,"$1-$2")}var Pl,Jv=5381,Fr=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},Zv=function(e){return Fr(Jv,e)};function Xk(e){return Ku(Zv(e)>>>0)}function Jk(e){return e.displayName||e.name||"Component"}function jl(e){return typeof e=="string"&&!0}var e0=typeof Symbol=="function"&&Symbol.for,t0=e0?Symbol.for("react.memo"):60115,Zk=e0?Symbol.for("react.forward_ref"):60112,eE={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},tE={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},n0={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},nE=((Pl={})[Zk]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},Pl[t0]=n0,Pl);function _m(e){return("type"in(t=e)&&t.type.$$typeof)===t0?n0:"$$typeof"in e?nE[e.$$typeof]:eE;var t}var rE=Object.defineProperty,iE=Object.getOwnPropertyNames,Rm=Object.getOwnPropertySymbols,oE=Object.getOwnPropertyDescriptor,aE=Object.getPrototypeOf,Am=Object.prototype;function r0(e,t,n){if(typeof t!="string"){if(Am){var r=aE(t);r&&r!==Am&&r0(e,r,n)}var i=iE(t);Rm&&(i=i.concat(Rm(t)));for(var o=_m(e),a=_m(t),s=0;s0?" Args: ".concat(t.join(", ")):""))}var sE=function(){function e(t){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=t}return e.prototype.indexOfGroup=function(t){for(var n=0,r=0;r=this.groupSizes.length){for(var r=this.groupSizes,i=r.length,o=i;t>=o;)if((o<<=1)<0)throw So(16,"".concat(t));this.groupSizes=new Uint32Array(o),this.groupSizes.set(r),this.length=o;for(var a=i;a=this.length||this.groupSizes[t]===0)return n;for(var r=this.groupSizes[t],i=this.indexOfGroup(t),o=i+r,a=i;a=0){var r=document.createTextNode(n);return this.element.insertBefore(r,this.nodes[t]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(t){this.element.removeChild(this.nodes[t]),this.length--},e.prototype.getRule=function(t){return t0&&(E+="".concat(h,","))}),l+="".concat(b).concat(y,'{content:"').concat(E,'"}').concat(gd)},c=0;c0?".".concat(t):m},c=l.slice();c.push(function(m){m.type===Ps&&m.value.includes("&")&&(m.props[0]=m.props[0].replace(yE,n).replace(r,u))}),a.prefix&&c.push(Uk),c.push(Dk);var d=function(m,p,b,y){p===void 0&&(p=""),b===void 0&&(b=""),y===void 0&&(y="&"),t=y,n=p,r=new RegExp("\\".concat(n,"\\b"),"g");var E=m.replace(xE,""),h=Fk(b||p?"".concat(b," ").concat(p," { ").concat(E," }"):E);a.namespace&&(h=a0(h,a.namespace));var g=[];return Ya(h,Mk(c.concat(Bk(function(v){return g.push(v)})))),g};return d.hash=l.length?l.reduce(function(m,p){return p.name||So(15),Fr(m,p.name)},Jv).toString():"",d}var wE=new o0,Qu=bE(),s0=gt.createContext({shouldForwardProp:void 0,styleSheet:wE,stylis:Qu});s0.Consumer;gt.createContext(void 0);function Lm(){return O.useContext(s0)}var kE=function(){function e(t,n){var r=this;this.inject=function(i,o){o===void 0&&(o=Qu);var a=r.name+o.hash;i.hasNameForId(r.id,a)||i.insertRules(r.id,a,o(r.rules,a,"@keyframes"))},this.name=t,this.id="sc-keyframes-".concat(t),this.rules=n,xd(this,function(){throw So(12,String(r.name))})}return e.prototype.getName=function(t){return t===void 0&&(t=Qu),this.name+t.hash},e}(),EE=function(e){return e>="A"&&e<="Z"};function qm(e){for(var t="",n=0;n>>0);if(!n.hasNameForId(this.componentId,a)){var s=r(o,".".concat(a),void 0,this.componentId);n.insertRules(this.componentId,a,s)}i=nr(i,a),this.staticRulesId=a}else{for(var l=Fr(this.baseHash,r.hash),u="",c=0;c>>0);n.hasNameForId(this.componentId,p)||n.insertRules(this.componentId,p,r(u,".".concat(p),void 0,this.componentId)),i=nr(i,p)}}return i},e}(),c0=gt.createContext(void 0);c0.Consumer;var _l={};function PE(e,t,n){var r=yd(e),i=e,o=!jl(e),a=t.attrs,s=a===void 0?Os:a,l=t.componentId,u=l===void 0?function(C,P){var w=typeof C!="string"?"sc":Pm(C);_l[w]=(_l[w]||0)+1;var N="".concat(w,"-").concat(Xk(As+w+_l[w]));return P?"".concat(P,"-").concat(N):N}(t.displayName,t.parentComponentId):l,c=t.displayName,d=c===void 0?function(C){return jl(C)?"styled.".concat(C):"Styled(".concat(Jk(C),")")}(e):c,m=t.displayName&&t.componentId?"".concat(Pm(t.displayName),"-").concat(t.componentId):t.componentId||u,p=r&&i.attrs?i.attrs.concat(s).filter(Boolean):s,b=t.shouldForwardProp;if(r&&i.shouldForwardProp){var y=i.shouldForwardProp;if(t.shouldForwardProp){var E=t.shouldForwardProp;b=function(C,P){return y(C,P)&&E(C,P)}}else b=y}var h=new NE(n,m,r?i.componentStyle:void 0);function g(C,P){return function(w,N,R){var U=w.attrs,W=w.componentStyle,V=w.defaultProps,S=w.foldedComponentIds,A=w.styledComponentId,q=w.target,T=gt.useContext(c0),B=Lm(),D=w.shouldForwardProp||B.shouldForwardProp,_=Kk(N,T,V)||oi,$=function(we,te,de){for(var Ae,je=it(it({},te),{className:void 0,theme:de}),We=0;Wef.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:"#000000",className:e,role:"img",children:[f.jsx("path",{d:"M0 0h24v24H0V0z",fill:"none"}),f.jsx("path",{d:"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"})]}),jE=ee.div` + overflow: hidden; + border-radius: 6px; + border: 1px solid #bbb; +`,m0=ee.h4` + font-size: 16px; + font-weight: 700; + margin: 2rem 0px 1rem; + font-size: 1.25rem; + line-height: 1.75rem; + + button { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + align-content: center; + align-items: center; + justify-content: space-between; + text-align: left; + width: 100%; + height: 50px; + border: none; + padding: 1.5rem; + cursor: pointer; + font-size: 1rem; + font-weight: bold; + + &:hover { + text-decoration: underline; + } + } +`,_E=ee.div` + border: 0 solid #bbb; + ${({i:e})=>e>0&&si` + border-top-width: 1px; + `} + + & ${m0} { + margin: 0; + } +`,RE=ee.div` + display: ${({open:e})=>e?"block":"none"}; + margin: 1.5rem; +`,AE=ee(p0)` + display: inline-block; + width: 25px; + transition: transform 0.1s; + height: 25px; + transform: rotate(${({$isOpen:e})=>e?"180deg":"360deg"}); +`,OE=({items:e})=>{const[t,n]=O.useState([]),r=i=>()=>n(o=>(o[i]=!o[i],[...o]));return f.jsx(jE,{children:e.map(({id:i,title:o,children:a},s)=>f.jsxs(_E,{id:i,i:s,children:[f.jsx(m0,{children:f.jsxs("button",{onClick:r(s),children:[f.jsx("span",{children:o}),f.jsx(AE,{$isOpen:t[s]})]})}),f.jsx("div",{children:f.jsx(RE,{open:!!t[s],children:a})})]},i))})},IE=ee.div` + position: relative; + :hover button, + :focus-within button { + opacity: 1; + } +`,LE=ee.div` + position: absolute; + right: 0; + top: 0; + margin: 0.5rem; + line-height: 0; + + & button { + margin: 0; + padding: 1px 3px; + transition: opacity ease-in-out 0.1s; + opacity: 0.25; + + :hover { + cursor: pointer; + } + :not(:last-child) { + margin-right: 0.5rem; + } + } +`,qE=ee.pre` + overflow: auto; + padding: 0.5rem; + background-color: #e6e9ec; + border-radius: 0.25rem; +`,TE=({tabs:e})=>{const[t,n]=O.useState(),r=Object.keys(e),i=t??r[0];return f.jsxs(IE,{children:[f.jsxs(LE,{children:[typeof navigator<"u"&&navigator.clipboard&&f.jsx("button",{onClick:()=>navigator.clipboard.writeText(e[i]),children:"copier"}),r.length>1&&r.filter(o=>o!==i).map(o=>f.jsx("button",{onClick:()=>n(o),children:o},o))]}),f.jsx(qE,{children:f.jsx("code",{children:e[i]})})]})};function $E({references:e}){return e?f.jsx("ul",{children:Object.entries(e).map(([t,n])=>f.jsxs("li",{style:{display:"flex",alignItems:"center"},children:[f.jsx("a",{href:n,target:"_blank",style:{marginRight:"1rem"},rel:"noreferrer",children:vv(t)}),f.jsx("span",{className:"ui__ label",children:n})]},t))}):null}var zE=({children:e})=>f.jsx("p",{children:e}),FE=e=>f.jsx("a",{...e}),f0=(e={})=>{const t={References:$E,Text:zE,Code:TE,Accordion:OE,Link:FE};return Object.fromEntries([...Object.keys(t),...Object.keys(e)].map(n=>[n,e[n]??t[n]]).filter(([,n])=>n))},vn=O.createContext(f0()),h0=O.createContext("/documentation"),bd=O.createContext(void 0),br=O.createContext(void 0),yn=()=>{const e=O.useContext(br);if(!e)throw new Error("Engine expected");return e},{encodeRuleName:VE}=Jt;function DE({dottedName:e,engine:t,currentEngineId:n,documentationPath:r,displayIcon:i=!1,linkComponent:o,children:a,...s}){var b;const l=O.useContext(vn),u=Jt.findCommonAncestor(O.useContext(bd)??e,e),c=o||l.Link;if(!c)throw new Error("You must provide a component.");const d=t.context.parsedRules[e],m=r+"/"+VE(e),p=[...Jt.ruleParents(e).reverse().filter(y=>y.startsWith(`${u} . `)).map(y=>{var E;return(E=t.context.parsedRules[y])==null?void 0:E.title.trim()}),(b=d.title)==null?void 0:b.trim()].join(" › ");if(!d)throw new Error(`Unknown rule: ${e}`);return f.jsxs(c,{...s,"aria-label":s["aria-label"]??(d.title&&d.title+", voir les détails du calcul pour : "+d.title),to:m+(n?`?currentEngineId=${n}`:""),children:[a||p||d.dottedName.split(" . ").slice(-1)[0]," ",i&&d.rawNode.icônes&&f.jsx("span",{children:d.rawNode.icônes})]})}function fn(e){const t=yn(),n=O.useContext(h0),r=typeof window<"u"&&new URLSearchParams(window.location.search).get("currentEngineId"),i=e.useSubEngine!==!1&&(e.currentEngineId||t.context.subEngineId||r&&Number.parseInt(r))||void 0;return f.jsx(DE,{engine:t,currentEngineId:i,documentationPath:n,...e})}var wd=({value:e,prefixed:t,children:n})=>f.jsxs("div",{children:[t&&n,f.jsx("div",{className:"value",style:{position:"relative",margin:"1rem 0"},children:f.jsx(ne,{node:e})}),!t&&n]});function ME(e){return f.jsx(wd,{value:e.explanation.valeur,children:f.jsxs("p",{children:[f.jsx("strong",{children:"Arrondi : "}),f.jsx(ne,{node:e.explanation.arrondi})]})})}var Co=({data:e,unit:t})=>f.jsx(BE,{className:"node-value-pointer",title:e===null?"Non applicable":"","aria-label":e===null?"Valeur non applicable":"",children:e===null?f.jsx("span",{"aria-hidden":!0,children:"-"}):Vn({nodeValue:e,unit:t})}),BE=ee.span` + background: white; + border-bottom: 0 !important; + font-size: 0.875rem; + line-height: 1.25rem; + margin: 0 0.2rem; + flex-shrink: 0; + padding: 0.1rem 0.2rem; + text-decoration: none !important; + box-shadow: + 0px 1px 2px 1px #d9d9d9, + 0 0 0 1px #d9d9d9; + border: 1px solid #f8f9fa; + border-radius: 0.2rem; +`,UE={"applicable si":"#7B1FA2","non applicable si":"#7B1FA2","est applicable":"#00796B","est non applicable":"#00796B","est défini":"#00796B","est non défini":"#00796B",somme:"#18457B",plafond:"#EF6C00",plancher:"#EF6C00",abattement:"#B73731",produit:"#2ecc71","une de ces conditions":"#3498db","toutes ces conditions":"#3498db","le maximum de":"#795548","le minimum de":"#795548",variations:"#FF9800","par défaut":"#00695C","taux progressif":"#795548",barème:"#9B296F",grille:"#AD1457",avec:"#2653ce"},g0=e=>UE[e]||"palevioletred";function xn({name:e,value:t,children:n,unit:r,displayName:i=!0}){return f.jsxs(WE,{mecanismName:e,children:[i&&f.jsx(HE,{name:e,children:e}),f.jsxs("div",{children:[n,t!==void 0&&f.jsxs(GE,{children:[f.jsx("small",{children:" = "}),f.jsx(Co,{data:t,unit:r})]})]})]})}var WE=ee.div` + border: 1px solid; + max-width: 100%; + border-radius: 3px; + padding: 0.5rem 1rem; + position: relative; + flex: 1; + flex-direction: column; + text-align: left; + border-color: ${({mecanismName:e})=>g0(e)}; + .properties > li { + margin: 1rem 0; + } +`,HE=({name:e,inline:t=!1,children:n})=>f.jsx(f.Fragment,{children:f.jsx(KE,{name:e,inline:t,target:"_blank",href:`https://publi.codes/docs/api/mécanismes#${e}`,children:n})}),KE=ee.a` + background-color: ${({name:e})=>g0(e)} !important; + font-size: inherit; + display: inline-block; + font-weight: inherit; + width: fit-content; + font-family: inherit; + padding: 0.4rem 0.6rem !important; + color: white !important; + transition: hover 0.2s; + :hover { + color: white; + } + ${e=>e.inline?si` + border-radius: 0.3rem; + margin-bottom: 0.5rem; + `:si` + top: -0.5rem; + position: relative; + margin-left: -1rem; + border-radius: 0 !important; + border-bottom-right-radius: 0.3rem !important; + ::first-letter { + text-transform: capitalize; + } + `} + :hover { + opacity: 0.8; + } +`,GE=ee.div` + text-align: right; + margin-top: 1rem; + font-weight: bold; +`;function QE({nodeValue:e,explanation:t,unit:n}){return f.jsx(xn,{name:"barème",value:e,unit:n,children:f.jsx(Sd,{children:f.jsxs("ul",{className:"properties",children:[f.jsx(kd,{explanation:t}),f.jsx(Ed,{tranches:t.tranches,multiplicateur:t.multiplicateur}),e!=null&&t.tranches.length>2&&f.jsxs(f.Fragment,{children:[f.jsx("b",{children:"Taux moyen : "}),f.jsx(Co,{data:100*e/(t.assiette.nodeValue??1),unit:ln("%")})]})]})})})}var kd=({explanation:e})=>{const t=e.multiplicateur;return f.jsxs(f.Fragment,{children:[f.jsxs("li",{children:[f.jsx("span",{className:"key",children:"Assiette : "}),f.jsx("span",{className:"value",children:f.jsx(ne,{node:e.assiette})})]},"assiette"),t&&!t.isDefault&&f.jsxs("li",{children:[f.jsx("span",{className:"key",children:"Multiplicateur : "}),f.jsx("span",{className:"value",children:f.jsx(ne,{node:t})})]},"multiplicateur")]})},Ed=({tranches:e,multiplicateur:t})=>{const n=e.find(({isActive:r})=>r);return e.length?f.jsxs("table",{className:"tranches",children:[f.jsx("thead",{children:f.jsxs("tr",{children:[f.jsx("th",{children:"Plafonds des tranches"}),"taux"in e[0]&&f.jsx("th",{children:"Taux"}),("montant"in e[0]||(n==null?void 0:n.nodeValue)!=null)&&f.jsx("th",{children:"Montant"})]})}),f.jsx("tbody",{children:e.map((r,i)=>f.jsx(YE,{tranche:r,multiplicateur:t},i))})]}):null},YE=({tranche:e,multiplicateur:t})=>{const n=e.isActive;return f.jsxs("tr",{className:`tranche ${n?"activated":""}`,children:[f.jsx("td",{children:e.plafond.nodeValue===1/0?"Au-delà du dernier plafond":f.jsxs(f.Fragment,{children:["Inférieur à ",f.jsx(ne,{node:e.plafond}),t&&!t.isDefault&&f.jsxs(f.Fragment,{children:[" × ",f.jsx(ne,{node:t})]})]})},"tranche"),"taux"in e&&f.jsx("td",{children:f.jsx(ne,{node:e.taux})},"taux"),(e.nodeValue!=null||"montant"in e)&&f.jsx("td",{children:"montant"in e?f.jsx(ne,{node:e.montant}):f.jsx(Co,{data:e.nodeValue,unit:e.unit})},"value")]})},Sd=ee.div` + table { + margin: 1em 0; + width: 100%; + text-align: left; + font-weight: 400; + } + table td { + padding: 0.1em 0.4em; + } + table th { + font-weight: 600; + } + table th:first-letter { + text-transform: uppercase; + } + .tranche:nth-child(2n) { + background: var(--lightestColor); + } + .tranche.activated { + background: var(--lighterColor); + font-weight: bold; + } +`;function XE(e){const t=O.useContext(br),{dottedName:n,nodeValue:r,unit:i}=e,o=t==null?void 0:t.context.parsedRules[e.dottedName];if(!o)throw new Error(`Unknown rule: ${n}`);const[a,s]=O.useState(!0),l=O.useContext(Xu);return e.dottedName===e.contextDottedName+" . "+e.name&&!e.name.includes(" . ")&&o.virtualRule?f.jsx(ne,{node:t==null?void 0:t.evaluate(o)}):f.jsxs("div",{style:{display:"flex",flex:l?1:"initial",flexDirection:"column",maxWidth:"100%"},children:[f.jsxs("div",{style:{display:"flex",alignItems:"baseline",flexWrap:"wrap",justifyContent:"space-between"},children:[f.jsx("span",{style:{paddingRight:"0.2rem"},children:f.jsx(fn,{dottedName:n})}),f.jsxs("div",{style:{flex:1,display:"flex",alignItems:"baseline"},children:[l&&f.jsxs(f.Fragment,{children:[f.jsx(JE,{onClick:()=>s(!a),"aria-expanded":!a,className:"publicodes_btn-small","aria-label":a?"Déplier, afficher le détail":"Replier, afficher le détail",children:a?"Déplier":"Replier"}),f.jsx(ZE,{})]}),r!==void 0&&f.jsx(Co,{data:r,unit:i})]})]})," ",!a&&f.jsx("div",{children:f.jsx(Xu.Provider,{value:!1,children:f.jsx(ne,{node:t==null?void 0:t.evaluate(o)})})})]})}var Xu=O.createContext(!1),JE=ee.button` + text-transform: none !important; +`,ZE=ee.div` + @media (max-width: 500px) { + /* border: none; */ + } + margin: 0.5rem; + flex: 1; + border-bottom: 2px dotted lightgray; +`;function No({sourceMap:e,nodeValue:t,unit:n}){const{args:r,mecanismName:i}=e,o="valeur"in r&&i in r&&Object.keys(r).length===2,a="valeur"in r&&Object.keys(r).length===1;return f.jsxs(f.Fragment,{children:[o&&f.jsx(ea,{node:r.valeur}),f.jsx("div",{style:{marginTop:o?"1rem":0},children:f.jsx(xn,{name:i,value:t,unit:n,children:o?f.jsx(ea,{node:r[i],mecanismName:i}):a?f.jsx(ea,{node:r.valeur,mecanismName:i}):f.jsx("ul",{children:Object.entries(r).map(([s,l])=>f.jsxs("li",{style:{display:"flex",alignItems:"baseline",padding:"0.25rem 0"},children:[f.jsxs("span",{children:[s," : "]}),f.jsx("span",{children:f.jsx(ea,{node:l})})]},s))})})})]})}function ea({node:e,mecanismName:t}){if(Array.isArray(e)){const n=t==="produit"?"×":t==="somme"?"+":void 0;return f.jsx(tS,{explanation:e,hideNotApplicable:t!=="produit",sign:n})}return f.jsx(ne,{node:e})}var eS=e=>{var n;const t=(n=O.useContext(br))==null?void 0:n.evaluate(e).nodeValue;return t===null||t===0};function tS({explanation:e,hideNotApplicable:t=!0,sign:n}){const[r,i]=e.reduce((l,u)=>(l[t&&eS(u)?1:0].push(u),l),[[],[]]),[o,a]=O.useState(r.length===0),s=O.useMemo(()=>"notApplicableExplanation"+Math.random().toString(36).substring(7),[]);return f.jsxs(f.Fragment,{children:[f.jsx(zm,{$sign:n,children:r.map((l,u)=>f.jsx(Fm,{node:l},u))}),i.length>0&&r.length!==0&&f.jsx(nS,{style:{textAlign:"right"},children:f.jsx("button",{"aria-expanded":o,"aria-controls":s,className:"publicodes_btn-small",onClick:()=>a(!o),children:o?"Masquer les valeurs non applicable":"Voir toute la liste"})}),o&&f.jsx(zm,{id:s,$sign:n,$showFirst:r.length>0,children:i.map((l,u)=>f.jsx(Fm,{node:l},u))})]})}var nS=ee.div` + margin: 0.5rem 0; + margin-left: 1rem; +`,zm=ee.ul` + margin: 0; + margin-left: 1rem; + + ${({$sign:e,$showFirst:t})=>e&&!t&&si` + & > li:first-child::marker { + content: ''; + } + `} + ${({$sign:e})=>e&&si` + & > li::marker { + font-weight: bold; + content: '${e} '; + } + `} +`;function Fm({node:e}){return f.jsx(rS,{style:{padding:"0.25rem 0"},children:f.jsx(Xu.Provider,{value:!0,children:f.jsx(ne,{node:e})})})}var rS=ee.li` + > * { + width: 100%; + } +`;function iS(e){return f.jsx(No,{...e,sourceMap:{mecanismName:e.nodeKind,args:e.explanation}})}function oS({nodeValue:e,type:t,fullPrecision:n,unit:r}){return e===void 0?null:e===null?f.jsx("span",{className:"value",children:Vn({nodeValue:e})}):n?f.jsx("span",{className:t,children:Vn({nodeValue:e,unit:r},{precision:5})}):f.jsx("span",{className:"value",children:Vn({nodeValue:e,unit:r})})}function aS({explanation:e}){const t=yn(),n=e.subEngineId?t.context.subEngines.get(e.subEngineId)??t:t;return f.jsxs(f.Fragment,{children:[f.jsxs(xn,{name:"contexte",children:[f.jsx("p",{children:"Ce calcul est effectué en changeant les valeurs des règles suivantes :"}),f.jsx(sS,{children:e.contexte.map(([r,i])=>f.jsxs(O.Fragment,{children:[f.jsx("dt",{children:f.jsx(fn,{dottedName:r.dottedName})}),f.jsxs("dd",{children:[f.jsx("span",{"aria-hidden":!0,children:" = "}),f.jsx(ne,{node:i})]})]},r.dottedName))})]}),f.jsx(br.Provider,{value:n,children:f.jsx(ne,{node:e.valeur})})]})}var sS=ee.dl` + display: grid; + grid-template-columns: auto 1fr; + gap: 0.6rem; + line-height: 1.75; + dd { + margin: 0; + display: flex; + gap: 0.5rem; + } + @media (max-width: 600px) { + grid-template-columns: auto; + line-height: initial; + dd { + justify-content: flex-end; + margin-bottom: 0.5rem; + } + } +`;function lS(e){return f.jsx(No,{...e,sourceMap:{mecanismName:e.nodeKind,args:e.explanation}})}function uS(e){return f.jsx(No,{...e,sourceMap:{mecanismName:e.nodeKind,args:{valeur:e.explanation}}})}function cS(e){return f.jsx(No,{...e,sourceMap:{mecanismName:e.nodeKind,args:{valeur:e.explanation}}})}function dS({nodeValue:e,explanation:t,unit:n}){return f.jsx(Sd,{children:f.jsx(xn,{name:"grille",value:e,unit:n,children:f.jsxs("ul",{className:"properties",children:[f.jsx(kd,{explanation:t}),f.jsx(Ed,{tranches:t.tranches,multiplicateur:t.multiplicateur})]})})})}function pS({nodeValue:e,explanation:t}){const n=yn();return f.jsx(xn,{name:"inversion numérique",value:e,children:n.cache.inversionFail&&t.inversionGoal?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Cette valeur devrait pouvoir être estimée à partir d’une autre variable qui possède une formule de calcul et dont la valeur a été fixée dans la simulation :"}),f.jsx(ne,{node:t.inversionGoal}),f.jsx("p",{children:"Malheureusement, il a été impossible de retrouver une valeur pour cette formule qui permette d’atterrir sur la valeur demandée."})]}):t.inversionGoal?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Cette valeur a été estimée à partir d’une autre variable qui possède une formule de calcul et dont la valeur a été fixée dans la simulation :"}),f.jsx(ne,{node:t.inversionGoal})]}):f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Cette formule de calcul n’existe pas, mais on peut la calculer par inversion en utilisant les formules des règles suivantes :"}),f.jsx("ul",{id:"inversionsPossibles",children:t.inversionCandidates.map(r=>f.jsx("li",{children:f.jsx(ne,{node:r})},r.dottedName))})]})})}function mS({nodeValue:e,explanation:t,operator:n,unit:r}){const i=t[0].nodeValue===0&&n==="−"&&t[0].nodeKind==="constant";return f.jsxs(fS,{className:"operation",role:"math",children:[f.jsx("span",{children:"("}),!i&&f.jsxs(f.Fragment,{children:[f.jsx(ne,{node:t[0]})," "]}),n," ",f.jsx(ne,{node:t[1]}),e!=null&&f.jsxs("span",{className:"result",children:[f.jsx("small",{children:" = "}),f.jsx(Co,{data:e,unit:r})]}),f.jsx("span",{children:")"})]})}var fS=ee.div` + display: flex; + flex-wrap: wrap; + gap: 0.125rem; + > .operation ::before, + > .operation ::after { + content: ''; + } + .result { + margin-left: 0.2rem; + } + .operation .result { + display: none; + } +`;function hS(e){const t=yn(),n=e.sourceMap,r=n.args.originalNode,i=n.args.applicableReplacements.find(({definitionRule:l})=>t.evaluate(l).nodeValue===e.nodeValue);if(!i||i.replaceByNonApplicable)return r.nodeValue=e.nodeValue,f.jsx(ne,{node:r});const[o,a]=O.useState(!1),s=O.useId();return f.jsx(f.Fragment,{children:f.jsxs("span",{style:{display:"inline-flex",maxWidth:"100%"},children:[f.jsxs("span",{style:{display:"flex",flexDirection:"column",flex:"1 1 0%"},children:[o&&f.jsx("span",{id:s,style:{opacity:"0.6",textDecoration:"line-through"},children:f.jsx(ne,{node:r})}),f.jsx(ne,{node:i.definitionRule})]}),f.jsx("div",{style:{marginLeft:"0.4rem"},children:f.jsx("button",{onClick:()=>a(!o),type:"button",className:"publicodes_btn-small","aria-expanded":o,"aria-controls":s,title:o?"Cacher la valeur d’origine":"Voir la valeur d’origine",children:"🔄"})})]})})}function gS(e){return f.jsxs("span",{children:["Remplace ",f.jsx(ne,{node:e.replacedReference})," ",e.rawNode.dans&&f.jsxs(f.Fragment,{children:["dans"," ",e.whiteListedNames.map((t,n)=>f.jsx(ne,{node:t},n)).join(", ")]}),e.rawNode["sauf dans"]&&f.jsxs(f.Fragment,{children:["sauf dans"," ",e.blackListedNames.map((t,n)=>f.jsx(ne,{node:t},n)).join(", ")]})]})}function vS({explanation:e,dottedName:t}){return f.jsx(xS,{children:f.jsx(bd.Provider,{value:t,children:f.jsx(yS,{children:f.jsx(ne,{node:e.valeur})})})})}var yS=ee.div` + border-left: 1rem solid hsl(220, 60%, 97.5%); + padding-left: 1rem; + margin-left: -2rem; +`,xS=ee.div` + margin-top: 0.5rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +`;function bS({explanation:e}){return f.jsxs(xn,{name:"résoudre la référence circulaire",value:e.valeur,children:[f.jsxs("p",{children:[" ","Cette valeur a été retrouvé en résolvant la référence circulaire dans la formule ci dessous :"," "]}),f.jsx(ne,{node:e.valeur})]})}function wS({sourceMap:e}){const t=O.useContext(br),n=t==null?void 0:t.evaluate(e.args["dans la situation"]);return(n==null?void 0:n.nodeValue)!==void 0?f.jsx(wd,{prefixed:!0,value:e.args.valeur,children:f.jsxs("p",{children:[f.jsx("strong",{children:"Valeur renseignée dans la simulation : "}),f.jsx(ne,{node:n.explanation.valeur})]})}):f.jsx(ne,{node:e.args.valeur})}function kS({nodeValue:e,explanation:t,unit:n}){return f.jsx(Sd,{children:f.jsx(xn,{name:"taux progressif",value:e,unit:n,children:f.jsxs("ul",{className:"properties",children:[f.jsx(kd,{explanation:t}),f.jsx(Ed,{tranches:t.tranches,multiplicateur:t.multiplicateur})]})})})}function ES({explanation:e}){return f.jsx("p",{children:e.map(t=>typeof t=="string"?t:f.jsx(SS,{children:f.jsx(ne,{node:t})},t.rawNode))})}var SS=ee.span` + border: 1px solid rgba(0, 0, 0, 0.1); + padding: 0.2rem; + position: relative; + border-radius: 0.15rem; + background-color: rgba(0, 0, 0, 0.05); +`;function CS({explanation:e}){return f.jsx(xn,{name:"une possibilité parmi",value:void 0,children:f.jsx("ul",{children:e.map((t,n)=>f.jsx("li",{children:f.jsx(ne,{node:t})},n))})})}function NS({nodeValue:e,explanation:t,unit:n}){return t.nodeKind==="constant"?Vn({nodeValue:e,unit:n}):t.nodeKind==="reference"?f.jsxs(f.Fragment,{children:[f.jsx(ne,{node:t})," ",rt(n)]}):f.jsx(wd,{value:t,children:f.jsxs("p",{children:[f.jsx("strong",{children:"Unité : "}),rt(n)]})})}function PS({nodeValue:e,explanation:t,unit:n}){const r=t.findIndex(({condition:s})=>s.nodeValue===!0);let i;r!==void 0&&(i=t[r],t=[...t.slice(0,r),...t.slice(r+1)]);const[o,a]=O.useState(!i);return f.jsx(xn,{name:"variations",unit:n,value:e,children:f.jsxs("ul",{children:[i&&f.jsxs("li",{children:[f.jsx(Vm,{...i}),f.jsx("span",{style:{paddingLeft:"1rem"},children:f.jsxs("button",{className:"publicodes_btn-small",onClick:()=>a(!o),children:[o?"Masquer":"Afficher"," les autres cas"]})})]}),o&&f.jsx(f.Fragment,{children:t.map((s,l)=>f.jsx("li",{children:f.jsx(Vm,{...s})},l))})]})})}function Vm({condition:e,consequence:t}){return f.jsx(RS,{children:f.jsxs(_S,{children:[f.jsx(jS,{children:e.nodeKind==="constant"&&e.nodeValue===!0?f.jsx(Mm,{children:"Par défaut : "}):f.jsxs(f.Fragment,{children:[f.jsx(Mm,{children:"Condition : "}),f.jsx(Dm,{children:f.jsx(ne,{node:e})})]})}),f.jsx(Dm,{children:f.jsx(ne,{node:t})})]})})}var Dm=ee.div``,Mm=ee.span` + font-weight: bold; +`,jS=ee.div` + padding-bottom: 1rem; + padding-top: 0.5rem; + display: flex; + align-items: baseline; +`,_S=ee.div` + border-left: 1rem solid hsl(36, 60%, 97%); + padding-left: 1rem; + margin-left: -1rem; +`,RS=ee.div` + padding: 1rem 0; +`,AS={constant:oS,arrondi:ME,barème:QE,durée:lS,grille:dS,inversion:pS,operation:mS,texte:ES,reference:XE,"est non applicable":uS,"est non défini":cS,rule:vS,condition:iS,"dans la situation":wS,contexte:aS,replacement:hS,replacementRule:gS,"taux progressif":kS,"une possibilité":CS,"résoudre référence circulaire":bS,unité:NS,"variable manquante":e=>f.jsx(ne,{node:e.explanation}),variations:PS};function ne({node:e}){var a,s;const t=((a=e.sourceMap)==null?void 0:a.mecanismName)??e.nodeKind,n=yn(),i=po(l=>"nodeValue"in l||l.nodeKind==="replacementRule"?!1:n.evaluateNode(l),!1)(e),o=AS[t]??((s=e.sourceMap)!=null&&s.mecanismName?No:void 0);if(!o)throw new Error(`Unknown visualisation: ${t}`);return f.jsx(o,{...i})}var{encodeRuleName:OS}=Jt;function IS({engine:e,dottedName:t}){const n=LS(e,t);if(typeof window<"u"&&window.location.host==="publi.codes")return null;const r="Afficher la règle dans le bac à sable Publicodes";return f.jsx("p",{style:{textAlign:"right"},children:f.jsxs("a",{target:"_blank",href:n,"aria-label":`${r}, nouvelle fenêtre`,rel:"noreferrer",children:[f.jsx("span",{"aria-hidden":!0,children:"✍️"})," ",r]})})}var LS=(e,t)=>{const n=Array.from(e.context.referencesMaps.referencesIn.get(t)??[]),r=e.evaluateNode(e.context.parsedRules[t]),i={[t]:Object.fromEntries(Object.entries(r.rawNode).filter(([l])=>l!=="nom"))},o=Object.fromEntries(n.filter(l=>l!==t&&!l.endsWith(" . $SITUATION")).map(l=>[l,qS(r)])),a=encodeURIComponent(JSON.stringify({rules:i,situation:o}));return`${typeof window<"u"&&location.hostname==="localhost"?"":"https://publi.codes"}/studio/${OS(t)}#${a}`};function qS(e){const t=Vn(e).replace(/\s\/\s/g,"/").replace(/(\d)\s(\d)/g,"$1$2").replace(",",".");return t.match(/^[0-9]/)||t==="Oui"||t==="Non"?t.toLowerCase():t==="-"?"non":`'${t}'`}var Ja=ee.ul` + padding: 0; + max-height: 400px; + overflow: auto; + list-style: none; +`,Za=ee.li` + position: relative; + padding-left: 1.5rem; + + &::before { + content: '●'; + font-size: 80%; + display: inline-block; + position: absolute; + left: 0; + width: 1.5rem; + text-align: center; + color: #b3b3b3; + margin-bottom: 0.5rem; + } +`;function TS({rule:e,engine:t,dottedName:n,situation:r={},apiDocumentationUrl:i,apiEvaluateUrl:o,npmPackage:a}){const{Accordion:s}=O.useContext(vn),l=[{title:"Règle et situation",id:"rule-situation",children:f.jsxs(f.Fragment,{children:[f.jsx($S,{engine:t,dottedName:n}),f.jsx(zS,{situation:r})]})},i&&o||a?{title:"Réutiliser ce calcul ("+[i&&o?"API REST":null,a?"Paquet NPM":null].filter(u=>u!==null).join(" / ")+")",id:"usage",children:f.jsxs(f.Fragment,{children:[Jt.isExperimental(t.baseContext.parsedRules,n)&&f.jsxs(US,{children:[f.jsx("h4",{children:"⚠️ Cette règle est tagguée comme experimentale ⚠️"}),f.jsx("p",{children:"Cela veut dire qu’elle peut être modifiée, renommée, ou supprimée sans qu’il n’y ait de changement de version majeure dans l’API."})]}),a&&f.jsx(FS,{rule:e,situation:r,dottedName:n,npmPackage:a}),i&&o&&f.jsx(VS,{situation:r,dottedName:n,apiDocumentationUrl:i,apiEvaluateUrl:o})]})}:null,{title:"Dépendances et effets de la règle",id:"dependencies-effects",children:f.jsxs(f.Fragment,{children:[f.jsx(DS,{selfMissing:Object.keys(e.missingVariables)}),f.jsx(MS,{engine:t,dottedName:n,ruleIsNotDefined:e.nodeValue===void 0}),f.jsx(BS,{engine:t,dottedName:n,replacements:e.replacements})]})}].filter(u=>u!==null);return f.jsx(s,{items:l})}function $S({engine:e,dottedName:t}){const{Code:n}=O.useContext(vn);return f.jsxs("section",{children:[f.jsx("h4",{children:"Règle actuelle"}),f.jsx(n,{tabs:{dottedName:t}}),f.jsx(IS,{dottedName:t,engine:e})]})}function zS({situation:e}){const{Code:t}=O.useContext(vn),n=Object.keys(e),r={json:JSON.stringify(e,null,2)};return f.jsxs("section",{children:[f.jsx("h4",{children:"Situation actuelle"}),n.length?f.jsx("p",{children:"Voici les données que vous avez saisies dans notre simulateur sous forme de JSON."}):f.jsx("p",{children:"Votre situation est pour l’instant vide, vous n’avez probablement pas encore fait de simulation."}),f.jsx(t,{tabs:r})]})}var Bm="Retrouvez ce paquet sur NPM",Um="moteur Publicodes";function FS({rule:e,situation:t,dottedName:n,npmPackage:r}){const{Code:i,Link:o}=O.useContext(vn),a={npmPackage:`// npm i publicodes ${r} + +import Engine, { formatValue } from 'publicodes' +import rules from '${r}' + +const engine = new Engine(rules) +engine.setSituation(${JSON.stringify(t,null,2)}) + +// ${e.title} +const evaluation = engine.evaluate(${JSON.stringify(n)}) + +console.log(formatValue(evaluation)) +`};return f.jsxs("section",{children:[f.jsx("h4",{children:"Lancer un calcul avec Publicodes"}),f.jsxs("p",{children:["Vous pouvez installer notre package de règles pour l’utiliser avec le"," ",f.jsx(o,{"aria-label":`${Um}, accéder au site publi.codes, nouvelle fenêtre`,href:"https://publi.codes/",children:Um})," ","et ainsi effectuer vos propres calculs. Voici un exemple avec votre situation et la règle actuelle :"]}),f.jsx(i,{tabs:a}),f.jsx("p",{style:{textAlign:"right"},children:f.jsxs(o,{href:"https://www.npmjs.com/package/"+r,"aria-label":`${Bm}, accéder à la page npm du package Publicodes, nouvelle fenêtre`,children:[f.jsx("span",{"aria-hidden":!0,children:"📦"})," ",Bm]})})]})}var Wm="En savoir plus sur notre API REST";function VS({situation:e,dottedName:t,apiDocumentationUrl:n,apiEvaluateUrl:r}){const{Code:i,Link:o}=O.useContext(vn),a={expressions:[t],situation:e},s={curl:`curl '${r}' \\ + -H 'accept: application/json' \\ + -H 'content-type: application/json' \\ + --data-raw $'${JSON.stringify(a).replace(/'/g,"'\\''")}' \\ + --compressed`,"fetch js":`const request = await fetch("${r}", { + "headers": { "content-type": "application/json" }, + "method": "POST", + "body": JSON.stringify(${JSON.stringify(a,null,2)}), +}) +const { evaluate } = await request.json() + +console.log(evaluate)`};return f.jsxs("section",{children:[f.jsx("h4",{children:"Utiliser notre API REST"}),f.jsx("p",{children:"Vous trouverez ici un exemple d’utilisation de notre API REST via curl ou un fetch javascript."}),f.jsx(i,{tabs:s}),n&&f.jsx("p",{style:{textAlign:"right"},children:f.jsxs(o,{to:n,"aria-label":`${Wm}, accéder à la documentation, nouvelle fenêtre`,children:[f.jsx("span",{"aria-hidden":!0,children:"👩‍💻"})," ",Wm]})})]})}function DS({selfMissing:e}){return f.jsxs("section",{children:[f.jsx("h4",{children:"Données manquantes"}),e!=null&&e.length?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Les règles suivantes sont nécessaires pour le calcul mais n’ont pas été saisies dans la situation. Leur valeur par défaut est utilisée."}),f.jsx(Ja,{children:e.map(t=>f.jsx(Za,{children:f.jsx(fn,{dottedName:t})},t))})]}):f.jsx("p",{children:"Il n’y a pas de données manquante."})]})}var v0=(e,t)=>e&&"replacements"in e&&e.replacements.some(({replacedReference:n})=>n.dottedName===t);function MS({engine:e,dottedName:t,ruleIsNotDefined:n=!1}){const r=Array.from(e.context.referencesMaps.rulesThatUse.get(t)??[]).filter(i=>i!=="$EVALUATION"&&i in e.context.parsedRules&&!e.context.parsedRules[i].private&&!v0(e.context.parsedRules[i],t));return f.jsxs("section",{children:[f.jsx("h4",{children:"Règles qui ont besoin de cette valeur"}),r.length?f.jsxs(f.Fragment,{children:[f.jsxs("p",{children:["Les règles suivantes ont besoin de la règle courante pour être calculées :",n&&f.jsxs(f.Fragment,{children:[" ","La règle courante n’étant pas encore définie, c’est sa valeur par défaut qui est utilisée pour déterminer la valeur de ces règles."]})]}),f.jsx(Ja,{children:r.map(i=>f.jsx(Za,{children:f.jsx(fn,{dottedName:i})},i))})]}):f.jsx("p",{children:"Aucune règle n’utilise cette valeur."})]})}function BS({engine:e,dottedName:t,replacements:n}){const r=Array.from(e.context.referencesMaps.rulesThatUse.get(t)??[]).filter(i=>i!=="$EVALUATION"&&i in e.context.parsedRules&&!e.context.parsedRules[i].private&&v0(e.context.parsedRules[i],t));return f.jsxs(f.Fragment,{children:[f.jsxs("section",{children:[f.jsx("h4",{children:"Effets sur d’autres règles"}),n.length?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Une règle peut avoir des effets sur d’autres règles afin de modifier leur comportement."}),f.jsx(Ja,{children:n.map(i=>f.jsx(Za,{style:{marginBottom:"0.5rem"},children:f.jsx(ne,{node:i})},i.replacedReference.dottedName))})]}):f.jsx("p",{children:"Cette règle ne modifie aucune autre règle."})]}),f.jsxs("section",{children:[f.jsx("h4",{children:"Règles qui peuvent avoir un effet sur cette valeur"}),r.length?f.jsxs(f.Fragment,{children:[f.jsx("p",{children:"Les règles suivantes peuvent remplacer la valeur de la règle courante :"}),f.jsx(Ja,{children:r.map(i=>f.jsx(Za,{children:f.jsx(fn,{dottedName:i})},i))})]}):f.jsx("p",{children:"Aucune autre règle n’a d’effets sur cette valeur."})]})]})}var US=ee.div``;function WS({title:e,description:t}){const{Head:n}=O.useContext(vn);return n?f.jsxs(n,{children:[f.jsx("title",{children:e}),f.jsx("meta",{property:"og:type",content:"article"}),f.jsx("meta",{property:"og:title",content:e}),t&&f.jsx("meta",{property:"og:description",content:t}),t&&f.jsx("meta",{name:"description",content:t})]}):null}function HS({dottedName:e}){const t=yn(),{title:n,rawNode:{description:r,question:i,icônes:o}}=t.context.parsedRules[e],a=o?n+" "+o:n;return f.jsxs("header",{children:[f.jsx(WS,{title:a,description:r||i}),f.jsxs("div",{children:[f.jsx("span",{id:"rules-nav-open-nav-button"}),Jt.ruleParents(e).reverse().map(s=>f.jsxs("span",{children:[f.jsx(fn,{dottedName:s,displayIcon:!0}),f.jsx("span",{"aria-hidden":!0,children:" › "})]},s))]}),f.jsx("h1",{children:f.jsx(fn,{dottedName:e,displayIcon:!0})})]})}var KS=O.lazy(()=>Nk(()=>import("./RulesSearch-AGDNDU76-DIaJs7Ds.js"),[])),GS=({dottedName:e,searchBar:t,mobileMenuPortalId:n,openNavButtonPortalId:r})=>{const o=yn().getParsedRules(),a=Object.keys(o),[s,l]=O.useState(!1),u=h=>Object.fromEntries([[h,!0],...Jt.ruleParents(h).map(g=>[g,!0])]),[c,d]=O.useState(u(e));O.useEffect(()=>{d(h=>({...h,...u(e)}))},[e]);const m=O.useCallback(h=>{d(g=>g[h]?Object.fromEntries(Object.entries(g).map(([v,C])=>v.startsWith(h)?[v,!1]:[v,C])):{...g,[h]:!g[h]})},[]),p=typeof window>"u"?null:r&&window.document.getElementById(r)||window.document.getElementById("rules-nav-open-nav-button"),b=f.jsxs(XS,{$open:s,children:[f.jsx(JS,{$open:s,onClick:()=>{l(h=>!h)}}),p&&Xp.createPortal(f.jsx(ZS,{onClick:()=>l(!0),children:"Toutes les règles"}),p),f.jsxs(eC,{$open:s,children:[t?f.jsx(O.Suspense,{fallback:f.jsx("p",{children:"Chargement..."}),children:f.jsx(KS,{})}):null,f.jsx("ul",{children:a.sort((h,g)=>h.localeCompare(g)).map(h=>{const g=Jt.ruleParent(h);if(h.split(" . ").length>1&&!c[g])return null;const v=h in c&&c[h];return f.jsx(YS,{ruleDottedName:h,open:v,active:e===h,onClickDropdown:m},h)})})]})]}),y=typeof window<"u"&&window.matchMedia(`(max-width: ${Un.lg})`).matches,E=typeof window<"u"&&n?window.document.getElementById(n):null;return y&&E?Xp.createPortal(b,E):b},QS=({ruleDottedName:e,open:t,active:n,onClickDropdown:r})=>{const o=yn().getParsedRules(),a=Object.keys(o).reduce((u,c)=>c.startsWith(e+" . ")&&c.split(" . ").length===e.split(" . ").length+1?u+1:u,0),s=O.useRef(!0),l=O.useRef(null);return O.useEffect(()=>{var u,c;if(s.current){s.current=!1;return}(c=(u=l.current)==null?void 0:u.scrollIntoView)==null||c.call(u,{behavior:"auto",block:"nearest",inline:"start"})},[n]),f.jsx("li",{ref:n?l:void 0,style:{paddingLeft:(e.split(" . ").length-1)*16},className:(a>0?"dropdown ":"")+(n?"active ":""),children:f.jsxs("span",{className:"content",children:[a>0&&f.jsx(tC,{"aria-label":t?"Replier le sous-menu":"Déplier le sous-menu","aria-expanded":t,onClick:()=>r(e),children:f.jsx(nC,{$open:t})}),f.jsx(fn,{dottedName:e,displayIcon:!0})]})},e)},YS=O.memo(QS),Un={sm:"576px",md:"768px",lg:"992px",xl:"1200px"},XS=ee.div` + z-index: 200; + overflow: auto; + position: sticky; + top: 0; + + @media (min-width: ${Un.lg}) { + max-width: 50%; + flex-shrink: 0; + } +`,JS=ee.div` + background: rgb(0 0 0 / 25%); + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 200; + transition: ease-in-out 0.25s; + transition-property: visibility, opacity; + visibility: ${({$open:e})=>e?"visible":"hidden"}; + opacity: ${({$open:e})=>e?"1":"0"}; + + @media (min-width: ${Un.lg}) { + display: none; + } +`,ZS=ee.button` + margin: 0.25rem 0; + margin-right: 0.5rem; + background: none; + border: 1px solid rgb(29, 66, 140); + border-radius: 3px; + color: rgb(29, 66, 140); + padding: 0.5rem; + display: inline-block; + + &:hover { + background-color: rgb(219, 231, 255); + } + @media (min-width: ${Un.lg}) { + display: none; + } +`,eC=ee.nav` + @media (min-width: ${Un.lg}) { + flex-shrink: 0; + } + border-right: 1px solid #e6e6e6; + overflow: auto; + max-height: calc(100vh - 2rem); + position: sticky; + top: 0; + @media (max-width: ${Un.lg}) { + position: fixed; + top: 0; + left: 0; + padding-top: 1rem; + bottom: 0; + z-index: 200; + max-height: initial; + background: white; + max-width: 80vw; + height: 100%; + + transition: all ease-in-out 0.25s; + ${({$open:e})=>e?"":"transform: translateX(-100%);"} + } + + ul { + flex-wrap: nowrap; + margin: 0; + + padding: 0; + list-style: none; + li { + margin-bottom: 3px; + max-width: 350px; + .content { + border-radius: 3px; + padding: 3px 1rem; + display: flex; + width: fit-content; + align-items: center; + flex-direction: row; + flex-wrap: nowrap; + } + + &.active .content { + background-color: #e6e6e6; + } + &:not(.active) a { + font-weight: normal; + } + &:not(.dropdown) .content:before { + content: ' '; + display: inline-block; + background-color: #b3b3b3; + min-width: 0.5rem; + min-height: 0.5rem; + border-radius: 0.5rem; + margin-left: 0.5rem; + margin-right: 1.25rem; + pointer-events: none; + } + } + } +`,tC=ee.button` + margin-right: 0.75rem; + flex-shrink: 0; + background: none; + border: 1px solid #b3b3b3; + border-radius: 2rem; + width: 1.5rem; + height: 1.5rem; + color: #999; + padding: 0; + display: inline-block; +`,nC=ee(p0)` + width: 100%; + transition: transform 0.1s; + height: 100%; + transform: rotate(${({$open:e})=>e?"0deg":"-90deg"}); +`;function rC({documentationPath:e,rulePath:t,engine:n,renderers:r,searchBar:i,language:o,apiDocumentationUrl:a,apiEvaluateUrl:s,npmPackage:l,mobileMenuPortalId:u,openNavButtonPortalId:c,showDevSection:d=!0}){const m=typeof window<"u"&&new URLSearchParams(window.location.search).get("currentEngineId"),p=O.useRef(r);return O.useEffect(()=>{p.current!==r&&(p.current=r)},[r]),f.jsx(br.Provider,{value:n,children:f.jsx(h0.Provider,{value:e,children:f.jsx(vn.Provider,{value:f0(r),children:f.jsx(iC,{dottedName:Jt.decodeRuleName(t),subEngineId:m?parseInt(m,10):void 0,language:o,apiDocumentationUrl:a,apiEvaluateUrl:s,npmPackage:l,mobileMenuPortalId:u,openNavButtonPortalId:c,showDevSection:d,searchBar:i})})})})}function iC({dottedName:e,language:t,subEngineId:n,searchBar:r=!1,apiDocumentationUrl:i,apiEvaluateUrl:o,npmPackage:a,mobileMenuPortalId:s,openNavButtonPortalId:l,showDevSection:u}){const c=yn(),{References:d,Text:m}=O.useContext(vn),p=c.context.subEngines,b=n&&p.has(n),y=b?p.get(n):c;if(!(e in y.context.parsedRules))return f.jsx("p",{children:"Cette règle est introuvable dans la base"});y.resetCache(),y.cache.traversedVariablesStack=[];const E=y.evaluateNode(y.context.parsedRules[e]),{description:h,question:g}=E.rawNode,{valeur:v,nullableParent:C,ruleDisabledByItsParent:P}=E.explanation,w=sC(y,E),N=d==null?void 0:d({references:E.rawNode.références,dottedName:E.dottedName});return f.jsx(br.Provider,{value:y,children:f.jsxs(oC,{id:"documentation-rule-root",children:[f.jsx(GS,{dottedName:e,mobileMenuPortalId:s,openNavButtonPortalId:l,searchBar:r}),f.jsx(aC,{children:f.jsxs(bd.Provider,{value:e,children:[f.jsx(HS,{dottedName:e}),f.jsx("section",{children:f.jsx(m,{children:h||g||""})}),f.jsxs("p",{style:{fontSize:"1.25rem",lineHeight:"2rem"},children:["Valeur : ",Vn(E,{language:t}),E.nodeValue===void 0&&E.unit&&f.jsxs(f.Fragment,{children:[f.jsx("br",{}),"Unité : ",rt(E.unit)]})]}),P&&C&&f.jsx(f.Fragment,{children:f.jsxs("blockquote",{children:["Cette règle est ",f.jsx("strong",{children:"non applicable"})," car elle appartient à l’espace de nom :"," ",f.jsx(ne,{node:C})]})}),b&&f.jsxs("div",{style:{margin:"1rem 0",padding:"0rem 1rem",display:"flex",justifyContent:"flex-end",columnGap:"1rem",alignItems:"baseline",flexWrap:"wrap",background:"hsl(220, 60%, 97.5%)",borderRadius:"0.25rem"},children:[f.jsxs("p",{children:["Vous naviguez la documentation avec un"," ",f.jsx("strong",{children:"contexte"})," d’évaluation"," ",f.jsx("strong",{children:"spécifique"}),"."]}),f.jsx("div",{style:{flex:1}}),f.jsx("p",{style:{textAlign:"right",marginTop:0},children:f.jsx(fn,{dottedName:e,useSubEngine:!1,children:"Retourner à la version de base"})})]}),f.jsx("h2",{children:"Comment cette donnée est-elle calculée ?"}),f.jsx("div",{id:"documentation-rule-explanation",children:f.jsx(ne,{node:v})}),E.rawNode.note&&f.jsxs(f.Fragment,{children:[f.jsx("h3",{children:"Note"}),f.jsx("div",{children:f.jsx(m,{children:E.rawNode.note})})]}),N&&f.jsxs(f.Fragment,{children:[f.jsx("h3",{children:"Références"}),N]}),f.jsx("br",{}),u&&f.jsxs(f.Fragment,{children:[f.jsx("h3",{children:"Informations techniques"}),f.jsx(m,{children:"Si vous êtes développeur/euse vous trouverez ci-dessous des informations techniques utiles pour l’intégration de cette règle dans votre application."}),f.jsx(TS,{engine:y,situation:w,dottedName:e,rule:E,apiDocumentationUrl:i,apiEvaluateUrl:o,npmPackage:a})]})]})})]})})}var oC=ee.div` + display: flex; + flex-wrap: nowrap; + align-items: flex-start; + @media (max-width: ${Un.lg}) { + flex-direction: column; + } +`,aC=ee.article` + flex-shrink: 1; + max-width: 100%; + @media (min-width: ${Un.lg}) { + min-width: 0; + padding-left: 1rem; + border-left: 1px solid #e6e6e6; + margin-left: -1px; + } +`;function sC(e,t){const n=e.getSituation();return Object.fromEntries(Object.entries(n).filter(([i])=>{var o;return i===t.dottedName?!0:(o=t.traversedVariables)==null?void 0:o.includes(i)}))}/** + * @remix-run/router v1.15.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function y0(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function uC(){return Math.random().toString(36).substr(2,8)}function Km(e,t){return{usr:e.state,key:e.key,idx:t}}function Ju(e,t,n,r){return n===void 0&&(n=null),ho({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?pi(t):t,{state:n,key:t&&t.key||r||uC()})}function es(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function pi(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function cC(e,t,n,r){r===void 0&&(r={});let{window:i=document.defaultView,v5Compat:o=!1}=r,a=i.history,s=An.Pop,l=null,u=c();u==null&&(u=0,a.replaceState(ho({},a.state,{idx:u}),""));function c(){return(a.state||{idx:null}).idx}function d(){s=An.Pop;let E=c(),h=E==null?null:E-u;u=E,l&&l({action:s,location:y.location,delta:h})}function m(E,h){s=An.Push;let g=Ju(y.location,E,h);u=c()+1;let v=Km(g,u),C=y.createHref(g);try{a.pushState(v,"",C)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;i.location.assign(C)}o&&l&&l({action:s,location:y.location,delta:1})}function p(E,h){s=An.Replace;let g=Ju(y.location,E,h);u=c();let v=Km(g,u),C=y.createHref(g);a.replaceState(v,"",C),o&&l&&l({action:s,location:y.location,delta:0})}function b(E){let h=i.location.origin!=="null"?i.location.origin:i.location.href,g=typeof E=="string"?E:es(E);return g=g.replace(/ $/,"%20"),qe(h,"No window.location.(origin|href) available to create URL for href: "+g),new URL(g,h)}let y={get action(){return s},get location(){return e(i,a)},listen(E){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(Hm,d),l=E,()=>{i.removeEventListener(Hm,d),l=null}},createHref(E){return t(i,E)},createURL:b,encodeLocation(E){let h=b(E);return{pathname:h.pathname,search:h.search,hash:h.hash}},push:m,replace:p,go(E){return a.go(E)}};return y}var Gm;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Gm||(Gm={}));function dC(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?pi(t):t,i=Cd(r.pathname||"/",n);if(i==null)return null;let o=x0(e);pC(o);let a=null;for(let s=0;a==null&&s{let l={relativePath:s===void 0?o.path||"":s,caseSensitive:o.caseSensitive===!0,childrenIndex:a,route:o};l.relativePath.startsWith("/")&&(qe(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(r.length));let u=Dn([r,l.relativePath]),c=n.concat(l);o.children&&o.children.length>0&&(qe(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),x0(o.children,t,c,u)),!(o.path==null&&!o.index)&&t.push({path:u,score:xC(u,o.index),routesMeta:c})};return e.forEach((o,a)=>{var s;if(o.path===""||!((s=o.path)!=null&&s.includes("?")))i(o,a);else for(let l of b0(o.path))i(o,a,l)}),t}function b0(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return i?[o,""]:[o];let a=b0(r.join("/")),s=[];return s.push(...a.map(l=>l===""?o:[o,l].join("/"))),i&&s.push(...a),s.map(l=>e.startsWith("/")&&l===""?"/":l)}function pC(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:bC(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const mC=/^:[\w-]+$/,fC=3,hC=2,gC=1,vC=10,yC=-2,Qm=e=>e==="*";function xC(e,t){let n=e.split("/"),r=n.length;return n.some(Qm)&&(r+=yC),t&&(r+=hC),n.filter(i=>!Qm(i)).reduce((i,o)=>i+(mC.test(o)?fC:o===""?gC:vC),r)}function bC(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function wC(e,t){let{routesMeta:n}=e,r={},i="/",o=[];for(let a=0;a{let{paramName:m,isOptional:p}=c;if(m==="*"){let y=s[d]||"";a=o.slice(0,o.length-y.length).replace(/(.)\/+$/,"$1")}const b=s[d];return p&&!b?u[m]=void 0:u[m]=(b||"").replace(/%2F/g,"/"),u},{}),pathname:o,pathnameBase:a,pattern:e}}function EC(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),y0(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,s,l)=>(r.push({paramName:s,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function SC(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return y0(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Cd(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function CC(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?pi(e):e;return{pathname:n?n.startsWith("/")?n:NC(n,t):t,search:_C(r),hash:RC(i)}}function NC(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function Rl(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function PC(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function w0(e,t){let n=PC(e);return t?n.map((r,i)=>i===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function k0(e,t,n,r){r===void 0&&(r=!1);let i;typeof e=="string"?i=pi(e):(i=ho({},e),qe(!i.pathname||!i.pathname.includes("?"),Rl("?","pathname","search",i)),qe(!i.pathname||!i.pathname.includes("#"),Rl("#","pathname","hash",i)),qe(!i.search||!i.search.includes("#"),Rl("#","search","hash",i)));let o=e===""||i.pathname==="",a=o?"/":i.pathname,s;if(a==null)s=n;else{let d=t.length-1;if(!r&&a.startsWith("..")){let m=a.split("/");for(;m[0]==="..";)m.shift(),d-=1;i.pathname=m.join("/")}s=d>=0?t[d]:"/"}let l=CC(i,s),u=a&&a!=="/"&&a.endsWith("/"),c=(o||a===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(u||c)&&(l.pathname+="/"),l}const Dn=e=>e.join("/").replace(/\/\/+/g,"/"),jC=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),_C=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,RC=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function AC(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const E0=["post","put","patch","delete"];new Set(E0);const OC=["get",...E0];new Set(OC);/** + * React Router v6.22.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function go(){return go=Object.assign?Object.assign.bind():function(e){for(var t=1;t{s.current=!0}),O.useCallback(function(u,c){if(c===void 0&&(c={}),!s.current)return;if(typeof u=="number"){r.go(u);return}let d=k0(u,JSON.parse(a),o,c.relative==="path");e==null&&t!=="/"&&(d.pathname=d.pathname==="/"?t:Dn([t,d.pathname])),(c.replace?r.replace:r.push)(d,c.state,c)},[t,r,a,o,e])}function $C(){let{matches:e}=O.useContext(Gn),t=e[e.length-1];return t?t.params:{}}function N0(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=O.useContext(wr),{matches:i}=O.useContext(Gn),{pathname:o}=Ls(),a=JSON.stringify(w0(i,r.v7_relativeSplatPath));return O.useMemo(()=>k0(e,JSON.parse(a),o,n==="path"),[e,a,o,n])}function zC(e,t){return FC(e,t)}function FC(e,t,n,r){Po()||qe(!1);let{navigator:i}=O.useContext(wr),{matches:o}=O.useContext(Gn),a=o[o.length-1],s=a?a.params:{};a&&a.pathname;let l=a?a.pathnameBase:"/";a&&a.route;let u=Ls(),c;if(t){var d;let E=typeof t=="string"?pi(t):t;l==="/"||(d=E.pathname)!=null&&d.startsWith(l)||qe(!1),c=E}else c=u;let m=c.pathname||"/",p=m;if(l!=="/"){let E=l.replace(/^\//,"").split("/");p="/"+m.replace(/^\//,"").split("/").slice(E.length).join("/")}let b=dC(e,{pathname:p}),y=UC(b&&b.map(E=>Object.assign({},E,{params:Object.assign({},s,E.params),pathname:Dn([l,i.encodeLocation?i.encodeLocation(E.pathname).pathname:E.pathname]),pathnameBase:E.pathnameBase==="/"?l:Dn([l,i.encodeLocation?i.encodeLocation(E.pathnameBase).pathname:E.pathnameBase])})),o,n,r);return t&&y?O.createElement(Is.Provider,{value:{location:go({pathname:"/",search:"",hash:"",state:null,key:"default"},c),navigationType:An.Pop}},y):y}function VC(){let e=GC(),t=AC(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return O.createElement(O.Fragment,null,O.createElement("h2",null,"Unexpected Application Error!"),O.createElement("h3",{style:{fontStyle:"italic"}},t),n?O.createElement("pre",{style:i},n):null,null)}const DC=O.createElement(VC,null);class MC extends O.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?O.createElement(Gn.Provider,{value:this.props.routeContext},O.createElement(S0.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function BC(e){let{routeContext:t,match:n,children:r}=e,i=O.useContext(Nd);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),O.createElement(Gn.Provider,{value:t},r)}function UC(e,t,n,r){var i;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if((o=n)!=null&&o.errors)e=n.matches;else return null}let a=e,s=(i=n)==null?void 0:i.errors;if(s!=null){let c=a.findIndex(d=>d.route.id&&(s==null?void 0:s[d.route.id]));c>=0||qe(!1),a=a.slice(0,Math.min(a.length,c+1))}let l=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let c=0;c=0?a=a.slice(0,u+1):a=[a[0]];break}}}return a.reduceRight((c,d,m)=>{let p,b=!1,y=null,E=null;n&&(p=s&&d.route.id?s[d.route.id]:void 0,y=d.route.errorElement||DC,l&&(u<0&&m===0?(b=!0,E=null):u===m&&(b=!0,E=d.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,m+1)),g=()=>{let v;return p?v=y:b?v=E:d.route.Component?v=O.createElement(d.route.Component,null):d.route.element?v=d.route.element:v=c,O.createElement(BC,{match:d,routeContext:{outlet:c,matches:h,isDataRoute:n!=null},children:v})};return n&&(d.route.ErrorBoundary||d.route.errorElement||m===0)?O.createElement(MC,{location:n.location,revalidation:n.revalidation,component:y,error:p,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):g()},null)}var P0=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(P0||{}),ts=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(ts||{});function WC(e){let t=O.useContext(Nd);return t||qe(!1),t}function HC(e){let t=O.useContext(IC);return t||qe(!1),t}function KC(e){let t=O.useContext(Gn);return t||qe(!1),t}function j0(e){let t=KC(),n=t.matches[t.matches.length-1];return n.route.id||qe(!1),n.route.id}function GC(){var e;let t=O.useContext(S0),n=HC(ts.UseRouteError),r=j0(ts.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function QC(){let{router:e}=WC(P0.UseNavigateStable),t=j0(ts.UseNavigateStable),n=O.useRef(!1);return C0(()=>{n.current=!0}),O.useCallback(function(i,o){o===void 0&&(o={}),n.current&&(typeof i=="number"?e.navigate(i):e.navigate(i,go({fromRouteId:t},o)))},[e,t])}function Zu(e){qe(!1)}function YC(e){let{basename:t="/",children:n=null,location:r,navigationType:i=An.Pop,navigator:o,static:a=!1,future:s}=e;Po()&&qe(!1);let l=t.replace(/^\/*/,"/"),u=O.useMemo(()=>({basename:l,navigator:o,static:a,future:go({v7_relativeSplatPath:!1},s)}),[l,s,o,a]);typeof r=="string"&&(r=pi(r));let{pathname:c="/",search:d="",hash:m="",state:p=null,key:b="default"}=r,y=O.useMemo(()=>{let E=Cd(c,l);return E==null?null:{location:{pathname:E,search:d,hash:m,state:p,key:b},navigationType:i}},[l,c,d,m,p,b,i]);return y==null?null:O.createElement(wr.Provider,{value:u},O.createElement(Is.Provider,{children:n,value:y}))}function XC(e){let{children:t,location:n}=e;return zC(ec(t),n)}new Promise(()=>{});function ec(e,t){t===void 0&&(t=[]);let n=[];return O.Children.forEach(e,(r,i)=>{if(!O.isValidElement(r))return;let o=[...t,i];if(r.type===O.Fragment){n.push.apply(n,ec(r.props.children,o));return}r.type!==Zu&&qe(!1),!r.props.index||!r.props.children||qe(!1);let a={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(a.children=ec(r.props.children,o)),n.push(a)}),n}/** + * React Router DOM v6.22.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function tc(){return tc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}function ZC(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function e2(e,t){return e.button===0&&(!t||t==="_self")&&!ZC(e)}const t2=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],n2="6";try{window.__reactRouterVersion=n2}catch{}const r2="startTransition",Ym=Uy[r2];function i2(e){let{basename:t,children:n,future:r,window:i}=e,o=O.useRef();o.current==null&&(o.current=lC({window:i,v5Compat:!0}));let a=o.current,[s,l]=O.useState({action:a.action,location:a.location}),{v7_startTransition:u}=r||{},c=O.useCallback(d=>{u&&Ym?Ym(()=>l(d)):l(d)},[l,u]);return O.useLayoutEffect(()=>a.listen(c),[a,c]),O.createElement(YC,{basename:t,children:n,location:s.location,navigationType:s.action,navigator:a,future:r})}const o2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",a2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,_0=O.forwardRef(function(t,n){let{onClick:r,relative:i,reloadDocument:o,replace:a,state:s,target:l,to:u,preventScrollReset:c,unstable_viewTransition:d}=t,m=JC(t,t2),{basename:p}=O.useContext(wr),b,y=!1;if(typeof u=="string"&&a2.test(u)&&(b=u,o2))try{let v=new URL(window.location.href),C=u.startsWith("//")?new URL(v.protocol+u):new URL(u),P=Cd(C.pathname,p);C.origin===v.origin&&P!=null?u=P+C.search+C.hash:y=!0}catch{}let E=LC(u,{relative:i}),h=s2(u,{replace:a,state:s,target:l,preventScrollReset:c,relative:i,unstable_viewTransition:d});function g(v){r&&r(v),v.defaultPrevented||h(v)}return O.createElement("a",tc({},m,{href:b||E,onClick:y||o?r:g,ref:n,target:l}))});var Xm;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Xm||(Xm={}));var Jm;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Jm||(Jm={}));function s2(e,t){let{target:n,replace:r,state:i,preventScrollReset:o,relative:a,unstable_viewTransition:s}=t===void 0?{}:t,l=qC(),u=Ls(),c=N0(e,{relative:a});return O.useCallback(d=>{if(e2(d,n)){d.preventDefault();let m=r!==void 0?r:es(u)===es(c);l(e,{replace:m,state:i,preventScrollReset:o,relative:a,unstable_viewTransition:s})}},[u,l,c,r,i,n,e,o,a,s])}const Zm=["http","https","mailto","tel"];function l2(e){const t=(e||"").trim(),n=t.charAt(0);if(n==="#"||n==="/")return t;const r=t.indexOf(":");if(r===-1)return t;let i=-1;for(;++ii||(i=t.indexOf("#"),i!==-1&&r>i)?t:"javascript:void(0)"}/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */var u2=function(t){return t!=null&&t.constructor!=null&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)};const R0=hr(u2);function Hi(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?ef(e.position):"start"in e||"end"in e?ef(e):"line"in e||"column"in e?nc(e):""}function nc(e){return tf(e&&e.line)+":"+tf(e&&e.column)}function ef(e){return nc(e&&e.start)+"-"+nc(e&&e.end)}function tf(e){return e&&typeof e=="number"?e:1}class Rt extends Error{constructor(t,n,r){const i=[null,null];let o={start:{line:null,column:null},end:{line:null,column:null}};if(super(),typeof n=="string"&&(r=n,n=void 0),typeof r=="string"){const a=r.indexOf(":");a===-1?i[1]=r:(i[0]=r.slice(0,a),i[1]=r.slice(a+1))}n&&("type"in n||"position"in n?n.position&&(o=n.position):"start"in n||"end"in n?o=n:("line"in n||"column"in n)&&(o.start=n)),this.name=Hi(n)||"1:1",this.message=typeof t=="object"?t.message:t,this.stack="",typeof t=="object"&&t.stack&&(this.stack=t.stack),this.reason=this.message,this.fatal,this.line=o.start.line,this.column=o.start.column,this.position=o,this.source=i[0],this.ruleId=i[1],this.file,this.actual,this.expected,this.url,this.note}}Rt.prototype.file="";Rt.prototype.name="";Rt.prototype.reason="";Rt.prototype.message="";Rt.prototype.stack="";Rt.prototype.fatal=null;Rt.prototype.column=null;Rt.prototype.line=null;Rt.prototype.source=null;Rt.prototype.ruleId=null;Rt.prototype.position=null;const Ut={basename:c2,dirname:d2,extname:p2,join:m2,sep:"/"};function c2(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');jo(e);let n=0,r=-1,i=e.length,o;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.charCodeAt(i)===47){if(o){n=i+1;break}}else r<0&&(o=!0,r=i+1);return r<0?"":e.slice(n,r)}if(t===e)return"";let a=-1,s=t.length-1;for(;i--;)if(e.charCodeAt(i)===47){if(o){n=i+1;break}}else a<0&&(o=!0,a=i+1),s>-1&&(e.charCodeAt(i)===t.charCodeAt(s--)?s<0&&(r=i):(s=-1,r=a));return n===r?r=a:r<0&&(r=e.length),e.slice(n,r)}function d2(e){if(jo(e),e.length===0)return".";let t=-1,n=e.length,r;for(;--n;)if(e.charCodeAt(n)===47){if(r){t=n;break}}else r||(r=!0);return t<0?e.charCodeAt(0)===47?"/":".":t===1&&e.charCodeAt(0)===47?"//":e.slice(0,t)}function p2(e){jo(e);let t=e.length,n=-1,r=0,i=-1,o=0,a;for(;t--;){const s=e.charCodeAt(t);if(s===47){if(a){r=t+1;break}continue}n<0&&(a=!0,n=t+1),s===46?i<0?i=t:o!==1&&(o=1):i>-1&&(o=-1)}return i<0||n<0||o===0||o===1&&i===n-1&&i===r+1?"":e.slice(i,n)}function m2(...e){let t=-1,n;for(;++t0&&e.charCodeAt(e.length-1)===47&&(n+="/"),t?"/"+n:n}function h2(e,t){let n="",r=0,i=-1,o=0,a=-1,s,l;for(;++a<=e.length;){if(a2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",r=0):(n=n.slice(0,l),r=n.length-1-n.lastIndexOf("/")),i=a,o=0;continue}}else if(n.length>0){n="",r=0,i=a,o=0;continue}}t&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+e.slice(i+1,a):n=e.slice(i+1,a),r=a-i-1;i=a,o=0}else s===46&&o>-1?o++:o=-1}return n}function jo(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const g2={cwd:v2};function v2(){return"/"}function rc(e){return e!==null&&typeof e=="object"&&e.href&&e.origin}function y2(e){if(typeof e=="string")e=new URL(e);else if(!rc(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return x2(e)}function x2(e){if(e.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const t=e.pathname;let n=-1;for(;++n"u"||ka.call(t,i)},uf=function(t,n){of&&n.name==="__proto__"?of(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},cf=function(t,n){if(n==="__proto__")if(ka.call(t,n)){if(af)return af(t,n).value}else return;return t[n]},w2=function e(){var t,n,r,i,o,a,s=arguments[0],l=1,u=arguments.length,c=!1;for(typeof s=="boolean"&&(c=s,s=arguments[1]||{},l=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});la.length;let l;s&&a.push(i);try{l=e.apply(this,a)}catch(u){const c=u;if(s&&n)throw c;return i(c)}s||(l&&l.then&&typeof l.then=="function"?l.then(o,i):l instanceof Error?i(l):o(l))}function i(a,...s){n||(n=!0,t(a,...s))}function o(a){i(null,a)}}const S2=L0().freeze(),I0={}.hasOwnProperty;function L0(){const e=k2(),t=[];let n={},r,i=-1;return o.data=a,o.Parser=void 0,o.Compiler=void 0,o.freeze=s,o.attachers=t,o.use=l,o.parse=u,o.stringify=c,o.run=d,o.runSync=m,o.process=p,o.processSync=b,o;function o(){const y=L0();let E=-1;for(;++E{if(w||!N||!R)P(w);else{const U=o.stringify(N,R);U==null||(P2(U)?R.value=U:R.result=U),P(w,R)}});function P(w,N){w||!N?v(w):g?g(N):E(null,N)}}}function b(y){let E;o.freeze(),Ll("processSync",o.Parser),ql("processSync",o.Compiler);const h=Pi(y);return o.process(h,g),ff("processSync","process",E),h;function g(v){E=!0,rf(v)}}}function pf(e,t){return typeof e=="function"&&e.prototype&&(C2(e.prototype)||t in e.prototype)}function C2(e){let t;for(t in e)if(I0.call(e,t))return!0;return!1}function Ll(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `Parser`")}function ql(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `Compiler`")}function Tl(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function mf(e){if(!ic(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function ff(e,t,n){if(!n)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Pi(e){return N2(e)?e:new A0(e)}function N2(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function P2(e){return typeof e=="string"||R0(e)}const j2={};function _2(e,t){const n=j2,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,i=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return q0(e,r,i)}function q0(e,t,n){if(R2(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 hf(e.children,t,n)}return Array.isArray(e)?hf(e,t,n):""}function hf(e,t,n){const r=[];let i=-1;for(;++ii?0:i+t:t=t>i?i:t,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(t,n),e.splice(...a);else for(n&&e.splice(t,n);o0?(Zt(e,e.length,0,t),e):t}const gf={}.hasOwnProperty;function A2(e){const t={};let n=-1;for(;++na))return;const N=t.events.length;let R=N,U,W;for(;R--;)if(t.events[R][0]==="exit"&&t.events[R][1].type==="chunkFlow"){if(U){W=t.events[R][1].end;break}U=!0}for(h(r),w=N;wv;){const P=n[C];t.containerState=P[1],P[0].exit.call(t,e)}n.length=v}function g(){i.write([null]),o=void 0,i=void 0,t.containerState._closeFlow=void 0}}function U2(e,t,n){return ge(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function yf(e){if(e===null||lt(e)||F2(e))return 1;if(z2(e))return 2}function Pd(e,t,n){const r=[];let i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;const d=Object.assign({},e[r][1].end),m=Object.assign({},e[n][1].start);xf(d,-l),xf(m,l),a={type:l>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[r][1].end)},s={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[n][1].start),end:m},o={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},i={type:l>1?"strong":"emphasis",start:Object.assign({},a.start),end:Object.assign({},s.end)},e[r][1].end=Object.assign({},a.start),e[n][1].start=Object.assign({},s.end),u=[],e[r][1].end.offset-e[r][1].start.offset&&(u=Et(u,[["enter",e[r][1],t],["exit",e[r][1],t]])),u=Et(u,[["enter",i,t],["enter",a,t],["exit",a,t],["enter",o,t]]),u=Et(u,Pd(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),u=Et(u,[["exit",o,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[n][1].end.offset-e[n][1].start.offset?(c=2,u=Et(u,[["enter",e[n][1],t],["exit",e[n][1],t]])):c=0,Zt(e,r-1,n-r+3,u),n=r+u.length-c-2;break}}for(n=-1;++n0&&se(w)?ge(e,g,"linePrefix",o+1)(w):g(w)}function g(w){return w===null||Q(w)?e.check(wf,y,C)(w):(e.enter("codeFlowValue"),v(w))}function v(w){return w===null||Q(w)?(e.exit("codeFlowValue"),g(w)):(e.consume(w),v)}function C(w){return e.exit("codeFenced"),t(w)}function P(w,N,R){let U=0;return W;function W(T){return w.enter("lineEnding"),w.consume(T),w.exit("lineEnding"),V}function V(T){return w.enter("codeFencedFence"),se(T)?ge(w,S,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(T):S(T)}function S(T){return T===s?(w.enter("codeFencedFenceSequence"),A(T)):R(T)}function A(T){return T===s?(U++,w.consume(T),A):U>=a?(w.exit("codeFencedFenceSequence"),se(T)?ge(w,q,"whitespace")(T):q(T)):R(T)}function q(T){return T===null||Q(T)?(w.exit("codeFencedFence"),N(T)):R(T)}}}function nN(e,t,n){const r=this;return i;function i(a){return a===null?n(a):(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),o)}function o(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}const $l={name:"codeIndented",tokenize:iN},rN={tokenize:oN,partial:!0};function iN(e,t,n){const r=this;return i;function i(u){return e.enter("codeIndented"),ge(e,o,"linePrefix",5)(u)}function o(u){const c=r.events[r.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?a(u):n(u)}function a(u){return u===null?l(u):Q(u)?e.attempt(rN,a,l)(u):(e.enter("codeFlowValue"),s(u))}function s(u){return u===null||Q(u)?(e.exit("codeFlowValue"),a(u)):(e.consume(u),s)}function l(u){return e.exit("codeIndented"),t(u)}}function oN(e,t,n){const r=this;return i;function i(a){return r.parser.lazy[r.now().line]?n(a):Q(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),i):ge(e,o,"linePrefix",5)(a)}function o(a){const s=r.events[r.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(a):Q(a)?i(a):n(a)}}const aN={name:"codeText",tokenize:uN,resolve:sN,previous:lN};function sN(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=4?t(a):e.interrupt(r.parser.constructs.flow,n,t)(a)}}function V0(e,t,n,r,i,o,a,s,l){const u=l||Number.POSITIVE_INFINITY;let c=0;return d;function d(h){return h===60?(e.enter(r),e.enter(i),e.enter(o),e.consume(h),e.exit(o),m):h===null||h===32||h===41||oc(h)?n(h):(e.enter(r),e.enter(a),e.enter(s),e.enter("chunkString",{contentType:"string"}),y(h))}function m(h){return h===62?(e.enter(o),e.consume(h),e.exit(o),e.exit(i),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(h))}function p(h){return h===62?(e.exit("chunkString"),e.exit(s),m(h)):h===null||h===60||Q(h)?n(h):(e.consume(h),h===92?b:p)}function b(h){return h===60||h===62||h===92?(e.consume(h),p):p(h)}function y(h){return!c&&(h===null||h===41||lt(h))?(e.exit("chunkString"),e.exit(s),e.exit(a),e.exit(r),t(h)):c999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in a.parser.constructs?n(p):p===93?(e.exit(o),e.enter(i),e.consume(p),e.exit(i),e.exit(r),t):Q(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||Q(p)||s++>999?(e.exit("chunkString"),c(p)):(e.consume(p),l||(l=!se(p)),p===92?m:d)}function m(p){return p===91||p===92||p===93?(e.consume(p),s++,d):d(p)}}function M0(e,t,n,r,i,o){let a;return s;function s(m){return m===34||m===39||m===40?(e.enter(r),e.enter(i),e.consume(m),e.exit(i),a=m===40?41:m,l):n(m)}function l(m){return m===a?(e.enter(i),e.consume(m),e.exit(i),e.exit(r),t):(e.enter(o),u(m))}function u(m){return m===a?(e.exit(o),l(a)):m===null?n(m):Q(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),ge(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===a||m===null||Q(m)?(e.exit("chunkString"),u(m)):(e.consume(m),m===92?d:c)}function d(m){return m===a||m===92?(e.consume(m),c):c(m)}}function Ki(e,t){let n;return r;function r(i){return Q(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n=!0,r):se(i)?ge(e,r,n?"linePrefix":"lineSuffix")(i):t(i)}}function Hr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const gN={name:"definition",tokenize:yN},vN={tokenize:xN,partial:!0};function yN(e,t,n){const r=this;let i;return o;function o(p){return e.enter("definition"),a(p)}function a(p){return D0.call(r,e,s,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return i=Hr(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):n(p)}function l(p){return lt(p)?Ki(e,u)(p):u(p)}function u(p){return V0(e,c,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function c(p){return e.attempt(vN,d,d)(p)}function d(p){return se(p)?ge(e,m,"whitespace")(p):m(p)}function m(p){return p===null||Q(p)?(e.exit("definition"),r.parser.defined.push(i),t(p)):n(p)}}function xN(e,t,n){return r;function r(s){return lt(s)?Ki(e,i)(s):n(s)}function i(s){return M0(e,o,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function o(s){return se(s)?ge(e,a,"whitespace")(s):a(s)}function a(s){return s===null||Q(s)?t(s):n(s)}}const bN={name:"hardBreakEscape",tokenize:wN};function wN(e,t,n){return r;function r(o){return e.enter("hardBreakEscape"),e.consume(o),i}function i(o){return Q(o)?(e.exit("hardBreakEscape"),t(o)):n(o)}}const kN={name:"headingAtx",tokenize:SN,resolve:EN};function EN(e,t){let n=e.length-2,r=3,i,o;return 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&&(i={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},o={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},Zt(e,r,n-r+1,[["enter",i,t],["enter",o,t],["exit",o,t],["exit",i,t]])),e}function SN(e,t,n){let r=0;return i;function i(c){return e.enter("atxHeading"),o(c)}function o(c){return e.enter("atxHeadingSequence"),a(c)}function a(c){return c===35&&r++<6?(e.consume(c),a):c===null||lt(c)?(e.exit("atxHeadingSequence"),s(c)):n(c)}function s(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||Q(c)?(e.exit("atxHeading"),t(c)):se(c)?ge(e,s,"whitespace")(c):(e.enter("atxHeadingText"),u(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),s(c))}function u(c){return c===null||c===35||lt(c)?(e.exit("atxHeadingText"),s(c)):(e.consume(c),u)}}const CN=["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"],Ef=["pre","script","style","textarea"],NN={name:"htmlFlow",tokenize:RN,resolveTo:_N,concrete:!0},PN={tokenize:ON,partial:!0},jN={tokenize:AN,partial:!0};function _N(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 RN(e,t,n){const r=this;let i,o,a,s,l;return u;function u(k){return c(k)}function c(k){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(k),d}function d(k){return k===33?(e.consume(k),m):k===47?(e.consume(k),o=!0,y):k===63?(e.consume(k),i=3,r.interrupt?t:x):Kt(k)?(e.consume(k),a=String.fromCharCode(k),E):n(k)}function m(k){return k===45?(e.consume(k),i=2,p):k===91?(e.consume(k),i=5,s=0,b):Kt(k)?(e.consume(k),i=4,r.interrupt?t:x):n(k)}function p(k){return k===45?(e.consume(k),r.interrupt?t:x):n(k)}function b(k){const ae="CDATA[";return k===ae.charCodeAt(s++)?(e.consume(k),s===ae.length?r.interrupt?t:S:b):n(k)}function y(k){return Kt(k)?(e.consume(k),a=String.fromCharCode(k),E):n(k)}function E(k){if(k===null||k===47||k===62||lt(k)){const ae=k===47,we=a.toLowerCase();return!ae&&!o&&Ef.includes(we)?(i=1,r.interrupt?t(k):S(k)):CN.includes(a.toLowerCase())?(i=6,ae?(e.consume(k),h):r.interrupt?t(k):S(k)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(k):o?g(k):v(k))}return k===45||ht(k)?(e.consume(k),a+=String.fromCharCode(k),E):n(k)}function h(k){return k===62?(e.consume(k),r.interrupt?t:S):n(k)}function g(k){return se(k)?(e.consume(k),g):W(k)}function v(k){return k===47?(e.consume(k),W):k===58||k===95||Kt(k)?(e.consume(k),C):se(k)?(e.consume(k),v):W(k)}function C(k){return k===45||k===46||k===58||k===95||ht(k)?(e.consume(k),C):P(k)}function P(k){return k===61?(e.consume(k),w):se(k)?(e.consume(k),P):v(k)}function w(k){return k===null||k===60||k===61||k===62||k===96?n(k):k===34||k===39?(e.consume(k),l=k,N):se(k)?(e.consume(k),w):R(k)}function N(k){return k===l?(e.consume(k),l=null,U):k===null||Q(k)?n(k):(e.consume(k),N)}function R(k){return k===null||k===34||k===39||k===47||k===60||k===61||k===62||k===96||lt(k)?P(k):(e.consume(k),R)}function U(k){return k===47||k===62||se(k)?v(k):n(k)}function W(k){return k===62?(e.consume(k),V):n(k)}function V(k){return k===null||Q(k)?S(k):se(k)?(e.consume(k),V):n(k)}function S(k){return k===45&&i===2?(e.consume(k),B):k===60&&i===1?(e.consume(k),D):k===62&&i===4?(e.consume(k),z):k===63&&i===3?(e.consume(k),x):k===93&&i===5?(e.consume(k),$):Q(k)&&(i===6||i===7)?(e.exit("htmlFlowData"),e.check(PN,H,A)(k)):k===null||Q(k)?(e.exit("htmlFlowData"),A(k)):(e.consume(k),S)}function A(k){return e.check(jN,q,H)(k)}function q(k){return e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),T}function T(k){return k===null||Q(k)?A(k):(e.enter("htmlFlowData"),S(k))}function B(k){return k===45?(e.consume(k),x):S(k)}function D(k){return k===47?(e.consume(k),a="",_):S(k)}function _(k){if(k===62){const ae=a.toLowerCase();return Ef.includes(ae)?(e.consume(k),z):S(k)}return Kt(k)&&a.length<8?(e.consume(k),a+=String.fromCharCode(k),_):S(k)}function $(k){return k===93?(e.consume(k),x):S(k)}function x(k){return k===62?(e.consume(k),z):k===45&&i===2?(e.consume(k),x):S(k)}function z(k){return k===null||Q(k)?(e.exit("htmlFlowData"),H(k)):(e.consume(k),z)}function H(k){return e.exit("htmlFlow"),t(k)}}function AN(e,t,n){const r=this;return i;function i(a){return Q(a)?(e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),o):n(a)}function o(a){return r.parser.lazy[r.now().line]?n(a):t(a)}}function ON(e,t,n){return r;function r(i){return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),e.attempt(qs,t,n)}}const IN={name:"htmlText",tokenize:LN};function LN(e,t,n){const r=this;let i,o,a;return s;function s(x){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(x),l}function l(x){return x===33?(e.consume(x),u):x===47?(e.consume(x),P):x===63?(e.consume(x),v):Kt(x)?(e.consume(x),R):n(x)}function u(x){return x===45?(e.consume(x),c):x===91?(e.consume(x),o=0,b):Kt(x)?(e.consume(x),g):n(x)}function c(x){return x===45?(e.consume(x),p):n(x)}function d(x){return x===null?n(x):x===45?(e.consume(x),m):Q(x)?(a=d,D(x)):(e.consume(x),d)}function m(x){return x===45?(e.consume(x),p):d(x)}function p(x){return x===62?B(x):x===45?m(x):d(x)}function b(x){const z="CDATA[";return x===z.charCodeAt(o++)?(e.consume(x),o===z.length?y:b):n(x)}function y(x){return x===null?n(x):x===93?(e.consume(x),E):Q(x)?(a=y,D(x)):(e.consume(x),y)}function E(x){return x===93?(e.consume(x),h):y(x)}function h(x){return x===62?B(x):x===93?(e.consume(x),h):y(x)}function g(x){return x===null||x===62?B(x):Q(x)?(a=g,D(x)):(e.consume(x),g)}function v(x){return x===null?n(x):x===63?(e.consume(x),C):Q(x)?(a=v,D(x)):(e.consume(x),v)}function C(x){return x===62?B(x):v(x)}function P(x){return Kt(x)?(e.consume(x),w):n(x)}function w(x){return x===45||ht(x)?(e.consume(x),w):N(x)}function N(x){return Q(x)?(a=N,D(x)):se(x)?(e.consume(x),N):B(x)}function R(x){return x===45||ht(x)?(e.consume(x),R):x===47||x===62||lt(x)?U(x):n(x)}function U(x){return x===47?(e.consume(x),B):x===58||x===95||Kt(x)?(e.consume(x),W):Q(x)?(a=U,D(x)):se(x)?(e.consume(x),U):B(x)}function W(x){return x===45||x===46||x===58||x===95||ht(x)?(e.consume(x),W):V(x)}function V(x){return x===61?(e.consume(x),S):Q(x)?(a=V,D(x)):se(x)?(e.consume(x),V):U(x)}function S(x){return x===null||x===60||x===61||x===62||x===96?n(x):x===34||x===39?(e.consume(x),i=x,A):Q(x)?(a=S,D(x)):se(x)?(e.consume(x),S):(e.consume(x),q)}function A(x){return x===i?(e.consume(x),i=void 0,T):x===null?n(x):Q(x)?(a=A,D(x)):(e.consume(x),A)}function q(x){return x===null||x===34||x===39||x===60||x===61||x===96?n(x):x===47||x===62||lt(x)?U(x):(e.consume(x),q)}function T(x){return x===47||x===62||lt(x)?U(x):n(x)}function B(x){return x===62?(e.consume(x),e.exit("htmlTextData"),e.exit("htmlText"),t):n(x)}function D(x){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(x),e.exit("lineEnding"),_}function _(x){return se(x)?ge(e,$,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(x):$(x)}function $(x){return e.enter("htmlTextData"),a(x)}}const _d={name:"labelEnd",tokenize:VN,resolveTo:FN,resolveAll:zN},qN={tokenize:DN},TN={tokenize:MN},$N={tokenize:BN};function zN(e){let t=-1;for(;++t=3&&(u===null||Q(u))?(e.exit("thematicBreak"),t(u)):n(u)}function l(u){return u===i?(e.consume(u),r++,l):(e.exit("thematicBreakSequence"),se(u)?ge(e,s,"whitespace")(u):s(u))}}const et={name:"list",tokenize:JN,continuation:{tokenize:ZN},exit:tP},YN={tokenize:nP,partial:!0},XN={tokenize:eP,partial:!0};function JN(e,t,n){const r=this,i=r.events[r.events.length-1];let o=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,a=0;return s;function s(p){const b=r.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(b==="listUnordered"?!r.containerState.marker||p===r.containerState.marker:ac(p)){if(r.containerState.type||(r.containerState.type=b,e.enter(b,{_container:!0})),b==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Ea,n,u)(p):u(p);if(!r.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return n(p)}function l(p){return ac(p)&&++a<10?(e.consume(p),l):(!r.interrupt||a<2)&&(r.containerState.marker?p===r.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),u(p)):n(p)}function u(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||p,e.check(qs,r.interrupt?n:c,e.attempt(YN,m,d))}function c(p){return r.containerState.initialBlankLine=!0,o++,m(p)}function d(p){return se(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),m):n(p)}function m(p){return r.containerState.size=o+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function ZN(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(qs,i,o);function i(s){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,ge(e,t,"listItemIndent",r.containerState.size+1)(s)}function o(s){return r.containerState.furtherBlankLines||!se(s)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(s)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(XN,t,a)(s))}function a(s){return r.containerState._closeFlow=!0,r.interrupt=void 0,ge(e,e.attempt(et,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function eP(e,t,n){const r=this;return ge(e,i,"listItemIndent",r.containerState.size+1);function i(o){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?t(o):n(o)}}function tP(e){e.exit(this.containerState.type)}function nP(e,t,n){const r=this;return ge(e,i,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(o){const a=r.events[r.events.length-1];return!se(o)&&a&&a[1].type==="listItemPrefixWhitespace"?t(o):n(o)}}const Sf={name:"setextUnderline",tokenize:iP,resolveTo:rP};function rP(e,t){let n=e.length,r,i,o;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(i=n)}else e[n][1].type==="content"&&e.splice(n,1),!o&&e[n][1].type==="definition"&&(o=n);const a={type:"setextHeading",start:Object.assign({},e[i][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[i][1].type="setextHeadingText",o?(e.splice(i,0,["enter",a,t]),e.splice(o+1,0,["exit",e[r][1],t]),e[r][1].end=Object.assign({},e[o][1].end)):e[r][1]=a,e.push(["exit",a,t]),e}function iP(e,t,n){const r=this;let i;return o;function o(u){let c=r.events.length,d;for(;c--;)if(r.events[c][1].type!=="lineEnding"&&r.events[c][1].type!=="linePrefix"&&r.events[c][1].type!=="content"){d=r.events[c][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||d)?(e.enter("setextHeadingLine"),i=u,a(u)):n(u)}function a(u){return e.enter("setextHeadingLineSequence"),s(u)}function s(u){return u===i?(e.consume(u),s):(e.exit("setextHeadingLineSequence"),se(u)?ge(e,l,"lineSuffix")(u):l(u))}function l(u){return u===null||Q(u)?(e.exit("setextHeadingLine"),t(u)):n(u)}}const oP={tokenize:aP};function aP(e){const t=this,n=e.attempt(qs,r,e.attempt(this.parser.constructs.flowInitial,i,ge(e,e.attempt(this.parser.constructs.flow,i,e.attempt(dN,i)),"linePrefix")));return n;function r(o){if(o===null){e.consume(o);return}return e.enter("lineEndingBlank"),e.consume(o),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function i(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),t.currentConstruct=void 0,n}}const sP={resolveAll:U0()},lP=B0("string"),uP=B0("text");function B0(e){return{tokenize:t,resolveAll:U0(e==="text"?cP:void 0)};function t(n){const r=this,i=this.parser.constructs[e],o=n.attempt(i,a,s);return a;function a(c){return u(c)?o(c):s(c)}function s(c){if(c===null){n.consume(c);return}return n.enter("data"),n.consume(c),l}function l(c){return u(c)?(n.exit("data"),o(c)):(n.consume(c),l)}function u(c){if(c===null)return!0;const d=i[c];let m=-1;if(d)for(;++m-1){const s=a[0];typeof s=="string"?a[0]=s.slice(r):a.shift()}o>0&&a.push(e[i].slice(0,o))}return a}function mP(e,t){let n=-1;const r=[];let i;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCharCode(n)}const PP=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function jP(e){return e.replace(PP,_P)}function _P(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){const i=n.charCodeAt(1),o=i===120||i===88;return W0(n.slice(o?2:1),o?16:10)}return jd(n)||e}const H0={}.hasOwnProperty,RP=function(e,t,n){return typeof t!="string"&&(n=t,t=void 0),AP(n)(NP(SP(n).document().write(CP()(e,t,!0))))};function AP(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:s(Dd),autolinkProtocol:V,autolinkEmail:V,atxHeading:s(zd),blockQuote:s(ut),characterEscape:V,characterReference:V,codeFenced:s(ct),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:s(ct,l),codeText:s(vy,l),codeTextData:V,data:V,codeFlowValue:V,definition:s(yy),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:s(xy),hardBreakEscape:s(Fd),hardBreakTrailing:s(Fd),htmlFlow:s(Vd,l),htmlFlowData:V,htmlText:s(Vd,l),htmlTextData:V,image:s(by),label:l,link:s(Dd),listItem:s(wy),listItemValue:b,listOrdered:s(Md,p),listUnordered:s(Md),paragraph:s(ky),reference:we,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:s(zd),strong:s(Ey),thematicBreak:s(Cy)},exit:{atxHeading:c(),atxHeadingSequence:N,autolink:c(),autolinkEmail:We,autolinkProtocol:je,blockQuote:c(),characterEscapeValue:S,characterReferenceMarkerHexadecimal:de,characterReferenceMarkerNumeric:de,characterReferenceValue:Ae,codeFenced:c(g),codeFencedFence:h,codeFencedFenceInfo:y,codeFencedFenceMeta:E,codeFlowValue:S,codeIndented:c(v),codeText:c(D),codeTextData:S,data:S,definition:c(),definitionDestinationString:w,definitionLabelString:C,definitionTitleString:P,emphasis:c(),hardBreakEscape:c(q),hardBreakTrailing:c(q),htmlFlow:c(T),htmlFlowData:S,htmlText:c(B),htmlTextData:S,image:c($),label:z,labelText:x,lineEnding:A,link:c(_),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:te,resourceDestinationString:H,resourceTitleString:k,resource:ae,setextHeading:c(W),setextHeadingLineSequence:U,setextHeadingText:R,strong:c(),thematicBreak:c()}};K0(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(j){let F={type:"root",children:[]};const G={stack:[F],tokenStack:[],config:t,enter:u,exit:d,buffer:l,resume:m,setData:o,getData:a},pe=[];let me=-1;for(;++me0){const It=G.tokenStack[G.tokenStack.length-1];(It[1]||Nf).call(G,void 0,It[0])}for(F.position={start:kn(j.length>0?j[0][1].start:{line:1,column:1,offset:0}),end:kn(j.length>0?j[j.length-2][1].end:{line:1,column:1,offset:0})},me=-1;++me{const r=this.data("settings");return RP(n,Object.assign({},r,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}function LP(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function qP(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:` +`}]}function TP(e,t){const n=t.value?t.value+` +`:"",r=t.lang?t.lang.match(/^[^ \t]+(?=[ \t]|$)/):null,i={};r&&(i.className=["language-"+r]);let o={type:"element",tagName:"code",properties:i,children:[{type:"text",value:n}]};return t.meta&&(o.data={meta:t.meta}),e.patch(t,o),o=e.applyData(t,o),o={type:"element",tagName:"pre",properties:{},children:[o]},e.patch(t,o),o}function $P(e,t){const n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function zP(e,t){const n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function mi(e){const t=[];let n=-1,r=0,i=0;for(;++n55295&&o<57344){const s=e.charCodeAt(n+1);o<56320&&s>56319&&s<57344?(a=String.fromCharCode(o,s),i=1):a="�"}else a=String.fromCharCode(o);a&&(t.push(e.slice(r,n),encodeURIComponent(a)),r=n+i+1,a=""),i&&(n+=i,i=0)}return t.join("")+e.slice(r)}function G0(e,t){const n=String(t.identifier).toUpperCase(),r=mi(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let o;i===-1?(e.footnoteOrder.push(n),e.footnoteCounts[n]=1,o=e.footnoteOrder.length):(e.footnoteCounts[n]++,o=i+1);const a=e.footnoteCounts[n],s={type:"element",tagName:"a",properties:{href:"#"+e.clobberPrefix+"fn-"+r,id:e.clobberPrefix+"fnref-"+r+(a>1?"-"+a:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(o)}]};e.patch(t,s);const l={type:"element",tagName:"sup",properties:{},children:[s]};return e.patch(t,l),e.applyData(t,l)}function FP(e,t){const n=e.footnoteById;let r=1;for(;r in n;)r++;const i=String(r);return n[i]={type:"footnoteDefinition",identifier:i,children:[{type:"paragraph",children:t.children}],position:t.position},G0(e,{type:"footnoteReference",identifier:i,position:t.position})}function VP(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function DP(e,t){if(e.dangerous){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}return null}function Q0(e,t){const n=t.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return{type:"text",value:"!["+t.alt+r};const i=e.all(t),o=i[0];o&&o.type==="text"?o.value="["+o.value:i.unshift({type:"text",value:"["});const a=i[i.length-1];return a&&a.type==="text"?a.value+=r:i.push({type:"text",value:r}),i}function MP(e,t){const n=e.definition(t.identifier);if(!n)return Q0(e,t);const r={src:mi(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(r.title=n.title);const i={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,i),e.applyData(t,i)}function BP(e,t){const n={src:mi(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function UP(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function WP(e,t){const n=e.definition(t.identifier);if(!n)return Q0(e,t);const r={href:mi(n.url||"")};n.title!==null&&n.title!==void 0&&(r.title=n.title);const i={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function HP(e,t){const n={href:mi(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function KP(e,t,n){const r=e.all(t),i=n?GP(n):Y0(t),o={},a=[];if(typeof t.checked=="boolean"){const c=r[0];let d;c&&c.type==="element"&&c.tagName==="p"?d=c:(d={type:"element",tagName:"p",properties:{},children:[]},r.unshift(d)),d.children.length>0&&d.children.unshift({type:"text",value:" "}),d.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),o.className=["task-list-item"]}let s=-1;for(;++s1}function QP(e,t){const n={},r=e.all(t);let i=-1;for(typeof t.start=="number"&&t.start!==1&&(n.start=t.start);++i-1?r.offset:null}}}function ej(e,t){const n=e.all(t),r=n.shift(),i=[];if(r){const a={type:"element",tagName:"thead",properties:{},children:e.wrap([r],!0)};e.patch(t.children[0],a),i.push(a)}if(n.length>0){const a={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},s=Rd(t.children[1]),l=Ad(t.children[t.children.length-1]);s.line&&l.line&&(a.position={start:s,end:l}),i.push(a)}const o={type:"element",tagName:"table",properties:{},children:e.wrap(i,!0)};return e.patch(t,o),e.applyData(t,o)}function tj(e,t,n){const r=n?n.children:void 0,o=(r?r.indexOf(t):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,s=a?a.length:t.children.length;let l=-1;const u=[];for(;++l0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return o.push(_f(t.slice(i),i>0,!1)),o.join("")}function _f(e,t,n){let r=0,i=e.length;if(t){let o=e.codePointAt(r);for(;o===Pf||o===jf;)r++,o=e.codePointAt(r)}if(n){let o=e.codePointAt(i-1);for(;o===Pf||o===jf;)i--,o=e.codePointAt(i-1)}return i>r?e.slice(r,i):""}function ij(e,t){const n={type:"text",value:rj(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function oj(e,t){const n={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}const aj={blockquote:LP,break:qP,code:TP,delete:$P,emphasis:zP,footnoteReference:G0,footnote:FP,heading:VP,html:DP,imageReference:MP,image:BP,inlineCode:UP,linkReference:WP,link:HP,listItem:KP,list:QP,paragraph:YP,root:XP,strong:JP,table:ej,tableCell:nj,tableRow:tj,text:ij,thematicBreak:oj,toml:ta,yaml:ta,definition:ta,footnoteDefinition:ta};function ta(){return null}const J0=function(e){if(e==null)return cj;if(typeof e=="string")return uj(e);if(typeof e=="object")return Array.isArray(e)?sj(e):lj(e);if(typeof e=="function")return Ts(e);throw new Error("Expected function, string, or object as test")};function sj(e){const t=[];let n=-1;for(;++n":""))+")"})}return d;function d(){let m=[],p,b,y;if((!t||i(s,l,u[u.length-1]||null))&&(m=fj(n(s,u)),m[0]===Rf))return m;if(s.children&&m[0]!==pj)for(b=(r?s.children.length:-1)+o,y=u.concat(s);b>-1&&b{const i=Of(r.identifier);i&&!Af.call(t,i)&&(t[i]=r)}),n;function n(r){const i=Of(r);return i&&Af.call(t,i)?t[i]:null}}function Of(e){return String(e||"").toUpperCase()}const ns={}.hasOwnProperty;function vj(e,t){const n=t||{},r=n.allowDangerousHtml||!1,i={};return a.dangerous=r,a.clobberPrefix=n.clobberPrefix===void 0||n.clobberPrefix===null?"user-content-":n.clobberPrefix,a.footnoteLabel=n.footnoteLabel||"Footnotes",a.footnoteLabelTagName=n.footnoteLabelTagName||"h2",a.footnoteLabelProperties=n.footnoteLabelProperties||{className:["sr-only"]},a.footnoteBackLabel=n.footnoteBackLabel||"Back to content",a.unknownHandler=n.unknownHandler,a.passThrough=n.passThrough,a.handlers={...aj,...n.handlers},a.definition=gj(e),a.footnoteById=i,a.footnoteOrder=[],a.footnoteCounts={},a.patch=yj,a.applyData=xj,a.one=s,a.all=l,a.wrap=wj,a.augment=o,Od(e,"footnoteDefinition",u=>{const c=String(u.identifier).toUpperCase();ns.call(i,c)||(i[c]=u)}),a;function o(u,c){if(u&&"data"in u&&u.data){const d=u.data;d.hName&&(c.type!=="element"&&(c={type:"element",tagName:"",properties:{},children:[]}),c.tagName=d.hName),c.type==="element"&&d.hProperties&&(c.properties={...c.properties,...d.hProperties}),"children"in c&&c.children&&d.hChildren&&(c.children=d.hChildren)}if(u){const d="type"in u?u:{position:u};hj(d)||(c.position={start:Rd(d),end:Ad(d)})}return c}function a(u,c,d,m){return Array.isArray(d)&&(m=d,d={}),o(u,{type:"element",tagName:c,properties:d||{},children:m||[]})}function s(u,c){return Z0(a,u,c)}function l(u){return Id(a,u)}}function yj(e,t){e.position&&(t.position=ZP(e))}function xj(e,t){let n=t;if(e&&e.data){const r=e.data.hName,i=e.data.hChildren,o=e.data.hProperties;typeof r=="string"&&(n.type==="element"?n.tagName=r:n={type:"element",tagName:r,properties:{},children:[]}),n.type==="element"&&o&&(n.properties={...n.properties,...o}),"children"in n&&n.children&&i!==null&&i!==void 0&&(n.children=i)}return n}function Z0(e,t,n){const r=t&&t.type;if(!r)throw new Error("Expected node, got `"+t+"`");return ns.call(e.handlers,r)?e.handlers[r](e,t,n):e.passThrough&&e.passThrough.includes(r)?"children"in t?{...t,children:Id(e,t)}:t:e.unknownHandler?e.unknownHandler(e,t,n):bj(e,t)}function Id(e,t){const n=[];if("children"in t){const r=t.children;let i=-1;for(;++i0&&n.push({type:"text",value:` +`}),n}function kj(e){const t=[];let n=-1;for(;++n1?"-"+s:""),dataFootnoteBackref:!0,className:["data-footnote-backref"],ariaLabel:e.footnoteBackLabel},children:[{type:"text",value:"↩"}]};s>1&&d.children.push({type:"element",tagName:"sup",children:[{type:"text",value:String(s)}]}),l.length>0&&l.push({type:"text",value:" "}),l.push(d)}const u=i[i.length-1];if(u&&u.type==="element"&&u.tagName==="p"){const d=u.children[u.children.length-1];d&&d.type==="text"?d.value+=" ":u.children.push({type:"text",value:" "}),u.children.push(...l)}else i.push(...l);const c={type:"element",tagName:"li",properties:{id:e.clobberPrefix+"fn-"+a},children:e.wrap(i,!0)};e.patch(r,c),t.push(c)}if(t.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:e.footnoteLabelTagName,properties:{...JSON.parse(JSON.stringify(e.footnoteLabelProperties)),id:"footnote-label"},children:[{type:"text",value:e.footnoteLabel}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(t,!0)},{type:"text",value:` +`}]}}function ey(e,t){const n=vj(e,t),r=n.one(e,null),i=kj(n);return i&&r.children.push({type:"text",value:` +`},i),Array.isArray(r)?{type:"root",children:r}:r}const Ej=function(e,t){return e&&"run"in e?Sj(e,t):Cj(e||t)};function Sj(e,t){return(n,r,i)=>{e.run(ey(n,t),r,o=>{i(o)})}}function Cj(e){return t=>ey(t,e)}var ty={exports:{}},Nj="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Pj=Nj,jj=Pj;function ny(){}function ry(){}ry.resetWarningCache=ny;var _j=function(){function e(r,i,o,a,s,l){if(l!==jj){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:ry,resetWarningCache:ny};return n.PropTypes=n,n};ty.exports=_j();var Rj=ty.exports;const X=hr(Rj);class _o{constructor(t,n,r){this.property=t,this.normal=n,r&&(this.space=r)}}_o.prototype.property={};_o.prototype.normal={};_o.prototype.space=null;function iy(e,t){const n={},r={};let i=-1;for(;++i4&&n.slice(0,4)==="data"&&qj.test(t)){if(t.charAt(4)==="-"){const o=t.slice(5).replace(Lf,Fj);r="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=t.slice(4);if(!Lf.test(o)){let a=o.replace(Tj,zj);a.charAt(0)!=="-"&&(a="-"+a),t="data"+a}}i=Ld}return new i(r,t)}function zj(e){return"-"+e.toLowerCase()}function Fj(e){return e.charAt(1).toUpperCase()}const qf={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"},Vj=iy([sy,ay,cy,dy,Ij],"html"),Dj=iy([sy,ay,cy,dy,Lj],"svg");function Mj(e){if(e.allowedElements&&e.disallowedElements)throw new TypeError("Only one of `allowedElements` and `disallowedElements` should be defined");if(e.allowedElements||e.disallowedElements||e.allowElement)return t=>{Od(t,"element",(n,r,i)=>{const o=i;let a;if(e.allowedElements?a=!e.allowedElements.includes(n.tagName):e.disallowedElements&&(a=e.disallowedElements.includes(n.tagName)),!a&&e.allowElement&&typeof r=="number"&&(a=!e.allowElement(n,r,o)),a&&typeof r=="number")return e.unwrapDisallowed&&n.children?o.children.splice(r,1,...n.children):o.children.splice(r,1),r})}}var py={exports:{}},ce={};/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var qd=Symbol.for("react.element"),Td=Symbol.for("react.portal"),$s=Symbol.for("react.fragment"),zs=Symbol.for("react.strict_mode"),Fs=Symbol.for("react.profiler"),Vs=Symbol.for("react.provider"),Ds=Symbol.for("react.context"),Bj=Symbol.for("react.server_context"),Ms=Symbol.for("react.forward_ref"),Bs=Symbol.for("react.suspense"),Us=Symbol.for("react.suspense_list"),Ws=Symbol.for("react.memo"),Hs=Symbol.for("react.lazy"),Uj=Symbol.for("react.offscreen"),my;my=Symbol.for("react.module.reference");function Ot(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case qd:switch(e=e.type,e){case $s:case Fs:case zs:case Bs:case Us:return e;default:switch(e=e&&e.$$typeof,e){case Bj:case Ds:case Ms:case Hs:case Ws:case Vs:return e;default:return t}}case Td:return t}}}ce.ContextConsumer=Ds;ce.ContextProvider=Vs;ce.Element=qd;ce.ForwardRef=Ms;ce.Fragment=$s;ce.Lazy=Hs;ce.Memo=Ws;ce.Portal=Td;ce.Profiler=Fs;ce.StrictMode=zs;ce.Suspense=Bs;ce.SuspenseList=Us;ce.isAsyncMode=function(){return!1};ce.isConcurrentMode=function(){return!1};ce.isContextConsumer=function(e){return Ot(e)===Ds};ce.isContextProvider=function(e){return Ot(e)===Vs};ce.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===qd};ce.isForwardRef=function(e){return Ot(e)===Ms};ce.isFragment=function(e){return Ot(e)===$s};ce.isLazy=function(e){return Ot(e)===Hs};ce.isMemo=function(e){return Ot(e)===Ws};ce.isPortal=function(e){return Ot(e)===Td};ce.isProfiler=function(e){return Ot(e)===Fs};ce.isStrictMode=function(e){return Ot(e)===zs};ce.isSuspense=function(e){return Ot(e)===Bs};ce.isSuspenseList=function(e){return Ot(e)===Us};ce.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===$s||e===Fs||e===zs||e===Bs||e===Us||e===Uj||typeof e=="object"&&e!==null&&(e.$$typeof===Hs||e.$$typeof===Ws||e.$$typeof===Vs||e.$$typeof===Ds||e.$$typeof===Ms||e.$$typeof===my||e.getModuleId!==void 0)};ce.typeOf=Ot;py.exports=ce;var Wj=py.exports;const Hj=hr(Wj);function Kj(e){const t=e&&typeof e=="object"&&e.type==="text"?e.value||"":e;return typeof t=="string"&&t.replace(/[ \t\n\f\r]/g,"")===""}function Gj(e){return e.join(" ").trim()}function Qj(e,t){const n={};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}var $d={exports:{}},Tf=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,Yj=/\n/g,Xj=/^\s*/,Jj=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,Zj=/^:\s*/,e_=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,t_=/^[;\s]*/,n_=/^\s+|\s+$/g,r_=` +`,$f="/",zf="*",Jn="",i_="comment",o_="declaration",a_=function(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function i(b){var y=b.match(Yj);y&&(n+=y.length);var E=b.lastIndexOf(r_);r=~E?b.length-E:r+b.length}function o(){var b={line:n,column:r};return function(y){return y.position=new a(b),u(),y}}function a(b){this.start=b,this.end={line:n,column:r},this.source=t.source}a.prototype.content=e;function s(b){var y=new Error(t.source+":"+n+":"+r+": "+b);if(y.reason=b,y.filename=t.source,y.line=n,y.column=r,y.source=e,!t.silent)throw y}function l(b){var y=b.exec(e);if(y){var E=y[0];return i(E),e=e.slice(E.length),y}}function u(){l(Xj)}function c(b){var y;for(b=b||[];y=d();)y!==!1&&b.push(y);return b}function d(){var b=o();if(!($f!=e.charAt(0)||zf!=e.charAt(1))){for(var y=2;Jn!=e.charAt(y)&&(zf!=e.charAt(y)||$f!=e.charAt(y+1));)++y;if(y+=2,Jn===e.charAt(y-1))return s("End of comment missing");var E=e.slice(2,y-2);return r+=2,i(E),e=e.slice(y),r+=2,b({type:i_,comment:E})}}function m(){var b=o(),y=l(Jj);if(y){if(d(),!l(Zj))return s("property missing ':'");var E=l(e_),h=b({type:o_,property:Ff(y[0].replace(Tf,Jn)),value:E?Ff(E[0].replace(Tf,Jn)):Jn});return l(t_),h}}function p(){var b=[];c(b);for(var y;y=m();)y!==!1&&(b.push(y),c(b));return b}return u(),p()};function Ff(e){return e?e.replace(n_,Jn):Jn}var s_=a_;function fy(e,t){var n=null;if(!e||typeof e!="string")return n;for(var r,i=s_(e),o=typeof t=="function",a,s,l=0,u=i.length;l0?gt.createElement(p,l,d):gt.createElement(p,l)}function p_(e){let t=-1;for(;++t for more info)`),delete na[o]}const t=S2().use(IP).use(e.remarkPlugins||[]).use(Ej,{...e.remarkRehypeOptions,allowDangerousHtml:!0}).use(e.rehypePlugins||[]).use(Mj,e),n=new A0;typeof e.children=="string"?n.value=e.children:e.children!==void 0&&e.children!==null&&console.warn(`[react-markdown] Warning: please pass a string as \`children\` (not: \`${e.children}\`)`);const r=t.runSync(t.parse(n),n);if(r.type!=="root")throw new TypeError("Expected a `root` node");let i=gt.createElement(gt.Fragment,{},hy({options:e,schema:Vj,listDepth:0},r));return e.className&&(i=gt.createElement("div",{className:e.className},i)),i}gy.propTypes={children:X.string,className:X.string,allowElement:X.func,allowedElements:X.arrayOf(X.string),disallowedElements:X.arrayOf(X.string),unwrapDisallowed:X.bool,remarkPlugins:X.arrayOf(X.oneOfType([X.object,X.func,X.arrayOf(X.oneOfType([X.bool,X.string,X.object,X.func,X.arrayOf(X.any)]))])),rehypePlugins:X.arrayOf(X.oneOfType([X.object,X.func,X.arrayOf(X.oneOfType([X.bool,X.string,X.object,X.func,X.arrayOf(X.any)]))])),sourcePos:X.bool,rawSourcePos:X.bool,skipHtml:X.bool,includeElementIndex:X.bool,transformLinkUri:X.oneOfType([X.func,X.bool]),linkTarget:X.oneOfType([X.func,X.string]),transformImageUri:X.func,components:X.object};const y_={titre:"Informations sur la voiture",description:`Par défaut, tous les champs sont pré-remplis avec des valeurs moyennes. +Ainsi si vous ne savez pas répondre à une question, vous pouvez laisser la +valeur par défaut et quand même obtenir une estimation de votre empreinte +carbone. + +Cependant, plus vous renseignerez de champs, plus l'estimation sera précise. +`},x_={titre:"Usage de la voiture",description:`Pour affiner le calcul, il est nécessaire de préciser l'usage que vous +avez de votre voiture. + +Si vous connaissez la distance totale parcourue à l'année, vous pouvez +renseigner cette information. Sinon, vous pouvez renseigner la distance +parcourue au quotidien et pour les vacances qui seront ensuite cumulées. +`},b_={titre:"Nos Gestes Climat",description:`Ce modèle utilise une partie des règles de calcul du modèle de [Nos +Gestes Climat](https://nosgestesclimat.fr) pour calculer l'empreinte +CO2e. +`},w_={titre:"Empreinte carbone annuelle de votre voiture",description:`Nous utilisons le modèle de [Nos Gestes Climat](https://nosgestesclimat.fr) +pour calculer l'empreinte carbone de votre voiture. +`,unité:"kgCO2e/an",valeur:"ngc . transport . voiture"},k_=null,E_={voiture:y_,"voiture . prix d'achat":{question:"Quel est le prix d'achat de votre voiture ?","par défaut":{variations:[{si:"voiture . occasion",alors:"prix d'achat . estimé * (100 % - décote)"},{sinon:"prix d'achat . estimé"}]},plancher:1,unité:"€",description:`Renseignez le montant que vous avez payé pour l'achat de votre voiture +(hors primes ou aides à l'achat) qu'elle soit neuve ou d'occasion. +`},"voiture . occasion":{titre:"Achat d'occasion",question:"Est-ce une voiture d'occasion ?","par défaut":"non"},"voiture . prix d'achat . estimé":{titre:"Prix d'achat estimé par défaut",decription:`Prix d'achat moyen d'une voiture neuve en fonction du gabarit et de sa +motorisation. +`,unité:"€",note:`La valeur du prix d'achat moyen d'une voiture neuve est importante pour le +calcul des coûts des alternatives et pas vraiment pour le calcul de la +voiture actuelle. En effet, le prix d'achat de la voiture actuelle pourra +facilement être renseigné par l'utilisateurice. C'est **pourquoi nous avons +choisi de nous baser sur des valeurs d'achat de voitures récentes**, car ce +seront elles qui seront les plus susceptibles d'être achetées en +remplacement de la voiture actuelle. + +Il est **très difficile de trouver une valeur moyenne pour le prix d'achat +car il y a de grand écarts entre les gammes de voitures**, les valeurs sont +donc à prendre avec du recul et pose un problème sur la précision de +l'estimation notamment pour les alternatives. + +### Sources + +Pour déterminer un prix d'achat moyen, nous avons utilisé le +[script](https://github.com/betagouv/publicodes-voiture/blob/main/scripts/prix-voiture.js) +avec les données récupérées sur le comparateur [Que +Choisir](https://www.quechoisir.org/comparatif-voiture-citadine-n3). + +Autres sources utilisées: +- [_Le tarif des autos neuves par segment_ (Kidioui)](https://voiture.kidioui.fr/voiture-neuve/3.html) +- [L'Argus](https://www.largus.fr) +- [Caroom](https://www.caroom.fr/guide/voiture-propre/electrique/carrosserie/suv) + +#### Pistes d'amélioration + +Nous pourrions aller plus loin en prenant en compte les différents +carburants. Il faudrait alors trouver une source le détaillant. Cependant, +l'écart de prix n'est peut-être pas assez significatif pour justifier la +complexité supplémentaire. + +Il serait également **nécessaire de trouver un moyen d'affiner l'estimation +du prix d'achat pour les alternatives** en se basant sur d'autres critères, +comme par exemple la **gamme du véhicule envisagée** (entré de gamme, +milieu de gamme, haut de gamme). Il faudra là aussi trouver une source +permettant de préciser le prix d'achat en fonction de ce critère. + +##### Utilisation des données de Car Labelling + +L'ADEME publie des [données](https://data.ademe.fr/datasets/ademe-car-labelling) (prix d'achat, consommation au 100, etc...) sur un ensemble de véhicules neufs +vendus en France. Ces données pourraient être utilisées comme source +de confiance pour déterminer le prix d'achat moyen d'une voiture neuve. +Cependant, il faudrait trouver un moyen de faire correspondre +les type de carrosserie de Car Labelling avec les gabarits de Nos Gestes Climat. + +La solution qui parait la plus pertinent serait de plutôt établir la même +correspondance entre les gabarits et le +[poids](https://nosgestesclimat.fr/documentation/transport/voiture/bar%C3%A8me-construction/bar%C3%A8me-thermique) +des véhicules. + +En utilisant les données de Car Labelling et en ignorant les modèles de la gamme \`LUXE\` +nous obtenons les résultats suivants : + +| Poids (kg) | Motorisation | Prix moyen (€) | Nombre de véhicules | +| ---------- | ------------ | -------------- | ------------------- | +| < 1250 | thermique | 24 670 | 452 | +| < 1250 | électrique | 27 228 | 12 | +| < 1250 | hybride | 22 101 | 172 | +| 1250-1500 | thermique | 38 078 | 1021 | +| 1250-1500 | électrique | 35 564 | 18 | +| 1250-1500 | hybride | 33 268 | 191 | +| 1500-1750 | thermique | 47 512 | 444 | +| 1500-1750 | électrique | 40 162 | 56 | +| 1500-1750 | hybride | 49 298 | 270 | +| 1750-2000 | thermique | 56 769 | 83 | +| 1750-2000 | électrique | 51 102 | 8 | +| 1750-2000 | hybride | 61 374 | 399 | +| > 2000 | thermique | 53 250 | 67 | +| > 2000 | électrique | 55 443 | 14 | +| > 2000 | hybride | 76 385 | 56 | + +Cependant, il semblerait qu'il n'y ait pas assez de modèles électriques +pour obtenir une valeur significative. Nous nous attendons, en effet, à +ce que les modèles électriques soient plus chers que les modèles +thermiques pour un même gabarit. + +C'est pourquoi nous avons choisi de ne pas utiliser ces données pour +l'instant. +`,variations:[{si:"voiture . gabarit = 'petite'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:19e3},{si:"voiture . motorisation = 'hybride'",alors:22e3},{si:"voiture . motorisation = 'électrique'",alors:32e3}]}},{si:"voiture . gabarit = 'moyenne'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:31e3},{si:"voiture . motorisation = 'hybride'",alors:34e3},{si:"voiture . motorisation = 'électrique'",alors:4e4}]}},{si:"voiture . gabarit = 'berline'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:38e3},{si:"voiture . motorisation = 'hybride'",alors:42e3},{si:"voiture . motorisation = 'électrique'",alors:48e3}]}},{si:"voiture . gabarit = 'SUV'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:4e4},{si:"voiture . motorisation = 'hybride'",alors:44e3},{si:"voiture . motorisation = 'électrique'",alors:5e4}]}},{si:"voiture . gabarit = 'VUL'",alors:{variations:[{si:"voiture . motorisation = 'thermique'",alors:3e4},{si:"voiture . motorisation = 'hybride'",alors:38e3},{si:"voiture . motorisation = 'électrique'",alors:45e3}]}}]},"voiture . thermique . consommation carburant":{question:"Quelle est sa consommation moyenne ?","applicable si":{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"par défaut":"consommation estimée",unité:"l/100km",plancher:1,description:`Renseignez la consommation réelle de votre voiture en litre aux 100 km. Si +vous ne la connaissez pas, vous pouvez utiliser la valeur fournie par le +constructeur ou laisser la valeur par défaut. +`},"voiture . thermique . consommation estimée":{titre:"Consommation estimée par défaut",unité:"l/100km",valeur:"ngc . transport . voiture . thermique . consommation estimée",contexte:{"ngc . transport . voiture . gabarit":"voiture . gabarit","ngc . transport . voiture . motorisation":"voiture . motorisation","ngc . transport . voiture . thermique . carburant":"voiture . thermique . carburant","ngc . transport . voiture . utilisateur":"'propriétaire'"}},"voiture . électrique":{titre:"Voiture électrique"},"voiture . électrique . consommation électricité":{question:"Quelle est sa consommation électrique moyenne ?","applicable si":{"une de ces conditions":["motorisation = 'électrique'","motorisation = 'hybride'"]},"par défaut":"consommation estimée",unité:"kWh/100km",plancher:1,description:`Renseignez la consommation réelle de votre voiture en kWh aux 100 km. Si +vous ne la connaissez pas, vous pouvez utiliser la valeur fournie par le +constructeur ou laisser la valeur par défaut. +`},"voiture . électrique . consommation estimée":{titre:"Consommation estimée par défaut",unité:"kWh/100km",valeur:"ngc . transport . voiture . électrique . consommation estimée",contexte:{"ngc . transport . voiture . gabarit":"voiture . gabarit","ngc . transport . voiture . utilisateur":"'propriétaire'"}},"voiture . électrique . prix kWh":{question:"Quel est le prix du kWh ?","applicable si":{"une de ces conditions":["motorisation = 'électrique'","motorisation = 'hybride'"]},"par défaut":"estimé",unité:"€/kWh",description:`Cette question n'est pas évidente sachant que les lieux de recharges sont +nombreux et que les tarifs varient. + +Cela dit, il se peut que vous la rechargiez en grand majorité à un +endroit précis, souvent votre maison, ce qui simplifie la saisie. + +Si vous ne savez pas, vous pouvez laisser la valeur par défaut. +`},"voiture . électrique . prix kWh . estimé":{titre:"Prix du kWh estimé par défaut",unité:"€/kWh",note:`On fait ici la même hypothèse que celle faite dans la note d'analyse +[_Voiture électrique : à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie : l'essentiel des recharges à domicile est effectuée la +nuit. +`,somme:["prix électricité . TRV HC * 85 %","prix électricité . TRV HP * 15 %"]},"voiture . motorisation":{question:"Quel type de voiture possédez-vous ?","par défaut":"'thermique'","une possibilité":["thermique","hybride","électrique"]},"voiture . motorisation . thermique":{titre:"Thermique"},"voiture . motorisation . électrique":{titre:"Électrique"},"voiture . motorisation . hybride":{titre:"Hybride"},"voiture . thermique":{titre:"Voiture thermique"},"voiture . thermique . carburant":{question:"Quel type de carburant utilise-t-elle ?","applicable si":{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"une possibilité":["gazole B7 ou B10","essence E5 ou E10","essence E85","GPL"],"par défaut":"'essence E5 ou E10'",note:`Pour comprendre les différents types de carburants, [cet article +pédagogique](https://www.francetvinfo.fr/economie/automobile/essence/les-carburants-changent-de-nom-a-la-pompe-voici-comment-vous-y-retrouver_2967013.html) +est très utile. + +[Cet +article](https://www.ecologie.gouv.fr/carburants-et-combustibles-autorises-en-france) +du ministère de l'Écologie explique plus en détail les carburants légaux +en France. + +> Attention, si le type de carburant fait varier de façon significative +> l'empreinte climat au litre, la consommation en litre par 100km elle +> aussi varie. Veillez à saisir une consommation au litre basée sur votre +> moyenne réelle. + +--- + +La domination du couple gazole-essence est écrasante +[source](https://www.leprogres.fr/magazine-automobile/2021/03/27/quels-sont-les-carburants-les-plus-utilises-dans-votre-commune). + +Par contre, parmi les véhicules neufs, l'essence domine aujourd'hui. + +Le facteur d'émission associé au biocarburant E85 n'est pas représentatif +des conséquences environnementales liées à l'utilisation des biocarburants. +En effet, au vu des problématiques liées au changement d'affectation des +sols et autres impacts environnementaux liés à la culture du maïs par +exemple, les **biocarburants** ne sont pas pris en compte (le facteur +d'émission de la base carbone étant particulièrement incertain). Voir nos +discussions +[ici](https://github.com/incubateur-ademe/nosgestesclimat/pull/1324). + +Le GPL (Gaz de Pétrole Liquéfiés) est un [résidu de l'extraction du pétrole +qui était autrefois +brûlé](https://fr.wikipedia.org/wiki/Gaz_de_p%C3%A9trole_liqu%C3%A9fi%C3%A9). +Il a une empreinte carbone par litre moins importante que les véhicules +essence ou diesel, par contre sa consommation est légèrement supérieure, ce +qui compense légèrement le gain. Mais si les rejets de CO2e sont au final +presque équivalents entre le GPL et les autres carburants, c'est [du côté +de l'émission de particules +nocives](https://agirpourlatransition.ademe.fr/particuliers/conso/conso-responsable/comment-choisir-voiture-deux-roues-moins-polluant) +que le GPL est un bien meilleur élève que les autres carburants thermiques. +`},"voiture . thermique . carburant . gazole B7 ou B10":{titre:"Diesel",description:"Gazole B7 ou B10"},"voiture . thermique . carburant . essence E5 ou E10":{titre:"Essence",description:"Essence E5 ou E10"},"voiture . thermique . carburant . essence E85":{titre:"Essence (E85)",description:"Essence E85"},"voiture . thermique . carburant . GPL":{titre:"GPL",description:"GPL (Gaz de Pétrole Liquéfié)"},"voiture . gabarit":{question:"Quel est son gabarit ?","une possibilité":["petite","moyenne","berline","SUV","VUL"],"par défaut":"'berline'",description:`Si vous ne savez pas quel gabarit choisir, vous pouvez penser à la taille +comme (petite, moyenne, grande, 4x4 urbain, camionnette). +`,note:`### Sur le choix des gabarits + +Nous avons choisi de distinguer les types de voiture par leur gabarit. Cela +fait référence aux [segments +automobiles](https://fr.wikipedia.org/wiki/Classification_des_automobiles) +définis par des lettres en Europe (A, B, etc...). + +Ne semblant pas y avoir de dénomination faisant consensus entre les +différents acteurs du secteur automobile (concessionnaires, site +constructeur, journalisme auto, Car Labelling, etc...), nous avons fait le +choix de garder la même division en 5 catégories et valeur par défaut que +celle utilisée par [Nos Gestes +Climat](https://nosgestesclimat.fr/documentation/transport/voiture/gabarit) +pour plus de compatibilité et de simplicité. + +Nous avons tout de même choisit de les renommer pour facilité la +compréhension des utilisateurices. +`},"voiture . gabarit . petite":{titre:"Citadine",description:"Citadine type Zoé, Fiat 500, Clio"},"voiture . gabarit . moyenne":{titre:"Monospace",description:"Modèle au dessus de la petite citadine, type Mégane, Golf"},"voiture . gabarit . berline":{titre:"Berline",description:"Une voiture longue, type 308, Tesla Model 3, Audi A3"},"voiture . gabarit . SUV":{titre:"SUV",description:'Sport utility vehicle", type 4x4 urbain'},"voiture . gabarit . VUL":{titre:"Véhicule utilitaire",description:"Camionette de type Kangoo ou Partner jusqu'au Trafic et Vito"},"voiture . thermique . prix carburant":{question:"Quel est le prix du carburant ?","applicable si":{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"par défaut":"prix carburant moyen",plancher:0,description:`Renseignez le prix moyen du carburant que vous avez dû payer cette année. +Si vous ne le connaissez pas, vous pouvez laisser la valeur par défaut. +`,unité:"€/l"},"voiture . thermique . prix carburant moyen":{titre:"Prix du carburant moyen (août 2024)",unité:"€/l",note:`### Source + +Données récupérées sur +[prix-carburants-info.fr](https://prix-carburants-info.fr/) le 15 août +2024. +Le site utilise les données de +[prix-carburant.gouv.fr](https://www.prix-carburants.gouv.fr/). +`,variations:[{si:"carburant = 'gazole B7 ou B10'",alors:1.631},{si:"carburant = 'essence E5 ou E10'",alors:1.733},{si:"carburant = 'essence E85'",alors:.837},{si:"carburant = 'GPL'",alors:.959}]},"voiture . âge":{titre:"Âge de la voiture",description:`Âge de la voiture depuis sa première mise en circulation. + +Cette valeur permet de calculer la décote de la voiture qui a un impact +important sur le prix d'achat. +`,valeur:"commun . année courante - année de fabrication"},"voiture . année de fabrication":{titre:"Année de fabrication de la voiture",question:"Quelle est son année de fabrication ?",description:`Renseignez l'année de fabrication de votre voiture. +`,"par défaut":{variations:[{si:"occasion",alors:"commun . année courante - âge moyen d'une voiture d'occasion"},{sinon:"commun . année courante - durée de détention moyenne"}]},plafond:"commun . année courante",plancher:1900,arrondi:"oui"},"voiture . année de fabrication . âge moyen d'une voiture d'occasion":{description:`Âge moyen des véhicules échangés sur le marché de l'occasion en 2023 +estimé à 10,5 ans selon [cette publication du +SDES](https://www.statistiques.developpement-durable.gouv.fr/immatriculations-des-voitures-particulieres-en-2023-rebond-dans-le-neuf-mais-un-marche-de-loccasion). +`,valeur:"10.5 an"},"voiture . durée de détention totale":{question:"Combien de temps envisagez-vous de garder votre voiture au total ?",description:`Renseignez la durée totale de détention de votre voiture. Si vous la +possédez depuis 5 ans et que vous comptez encore la garder 4 ans, +renseignez 9 ans. +`,"par défaut":"durée de détention moyenne",plancher:0,unité:"an",note:`La durée de détention défini la durée sur la quelle amortir le prix +d'achat. +`},"voiture . durée de détention moyenne":{description:`Durée de détention moyenne d'une voiture en France en 2022. +`,note:`### Source + +Nous utilisons une valeur par défaut de 5,5 ans correspondant à la durée +de détention moyenne en 2020 (valeur relativement stable depuis 2015) +selon [_La sécurité routière en France - bilan de l'année 2021_ (ONISR +2022)](https://www.onisr.securite-routiere.gouv.fr/sites/default/files/2022-09/74-75%20Le%20parc%20automobile%20des%20m%C3%A9nages%20V5.pdf). +`,valeur:"5.5 an"},"voiture . cible":{titre:"Voiture envisagée",description:`Afin de vous proposer des alternatives en cohérence avec votre projet de +mobilité, nous avons besoin de connaître quelques informations sur la +voiture que vous envisagez d'acquérir. +`},"voiture . cible . achat envisagé":{question:"Envisagez-vous d'acheter une voiture ?","par défaut":{variations:[{si:"usage . km annuels < 1000",alors:"non"},{sinon:"oui"}]},description:`La voiture la plus écologique et économique est celle que l'on n'achète +pas. + +Nous considérons qu'avec un usage inférieur à 1000 km/an (arbitraire pour +l'instant), il est plus intéressant de recourir à des solutions de mobilité +alternatives. +`},"voiture . cible . borne de recharge":{question:"Avez-vous la possibilité de recharger une voiture électrique au quotidien ?","applicable si":"achat envisagé","par défaut":"oui",description:`Répondez "non" uniquement si vous vous êtes déjà renseigné sur la +possibilité de pouvoir recharger une voiture électrique au quotidien. +Par exemple, en installant une borne de recharge chez vous ou en utilisant +une borne en libre service. +`},"voiture . cible . gabarit":{"applicable si":"achat envisagé",question:"Quel gabarit de voiture envisagez-vous ?",description:`Renseignez le gabarit de voiture que vous envisagez d'acheter afin de vous +proposer des alternatives en cohérence avec votre projet de mobilité. +`,"une possibilité":["petite","moyenne","berline","SUV","VUL"],"par défaut":"voiture . gabarit"},"voiture . cible . gabarit . petite":{titre:"Citadine",description:"Citadine type Zoé, Fiat 500"},"voiture . cible . gabarit . moyenne":{titre:"Monospace",description:"Modèle au dessus de la petite citadine, type Mégane, Golf"},"voiture . cible . gabarit . berline":{titre:"Berline",description:"Une voiture longue, type 308, Tesla Model 3, Audi A3"},"voiture . cible . gabarit . SUV":{titre:"SUV",description:'Sport utility vehicle", type 4x4 urbain'},"voiture . cible . gabarit . VUL":{titre:"Véhicule utilitaire",description:"Camionette de type Kangoo ou Partner jusqu'au Trafic et Vito"},usage:x_,"usage . km annuels":{titre:"Distance totale parcourue à l'année",variations:[{si:"km annuels . connus",alors:"km annuels . renseignés"},{sinon:"km annuels . calculés"}]},"usage . km annuels . connus":{question:"Connaissez-vous la distance totale que vous parcourez à l'année ?","par défaut":"oui",description:`Répondez "non" pour renseigner la distance parcourue au quotidien et pour +les vacances. +`},"usage . km annuels . renseignés":{"applicable si":"km annuels . connus",question:"Kilomètres parcourus à l'année","par défaut":"estimés",unité:"km/an",plancher:0},"usage . km annuels . estimés":{titre:"Distance moyenne parcourue à l'année",unité:"km/an",note:`### Source + +Selon le [_Bilan annuel des transports en 2022_ +(SDES)](https://www.statistiques.developpement-durable.gouv.fr/media/6822/download?inline) + +### Pistes d'amélioration + +Il serait intéressant de trouver une source détaillant les distances +moyennes pour les voitures électriques et hybrides. +`,variations:[{si:"voiture . thermique . carburant = 'gazole B7 ou B10'",alors:9535},{si:"voiture . thermique . carburant = 'essence E5 ou E10'",alors:13975},{sinon:"(13975 km/an + 9535 km/an) / 2"}]},"usage . km annuels . calculés":{titre:"Cumul des distances parcourues au quotidien et pour les vacances","non applicable si":"km annuels . connus",unité:"km/an",somme:["quotidien","vacances"]},"usage . km annuels . calculés . quotidien":{question:"Kilomètres parcourus en moyenne par jours","par défaut":33,unité:"km/jour",plancher:0,suggestions:{jamais:"0 km/jour",régulièrement:"10 km/jour","de temps en temps":"30 km/semaine","pour les courses":"5 km/semaine"},description:`Renseignez les informations concernant l'usage au quotidien de votre +voiture (ex: aller au travail, faire les courses ou transporter vos enfants +à l'école). +`,note:`D'après [cette article du +Monde](https://www.lemonde.fr/les-decodeurs/article/2023/01/22/qui-pourrait-se-passer-de-sa-voiture-six-graphiques-pour-analyser-nos-trajets-du-quotidien_6158829_4355770.html) +s'appuyant sur la +[thèse](https://chair-energy-prosperity.org/publications/travail-de-these-decarboner-transports-dici-2050/) +d'Aurélien Bigo, les trajets du quotidien sont en moyenne de 33km/jour en +2019. +`},"usage . km annuels . calculés . vacances":{titre:"Usage pour les vacances",question:"Kilomètres parcourus en moyenne pour vos vacances à l'année","par défaut":500,plancher:0,unité:"km/an",suggestions:{jamais:"0 km/an","Pour les vacances d'été":"500 km/an","Toutes les vacances":"1000 km/an","Tous les week-ends":"1000 km/an"},description:`Renseignez les informations concernant l'usage de votre voiture pour les +vacances (ex: trajets pour les vacances d'été ou d'hiver ou encore pour les +week-ends). +`},"usage . km annuels . part autoroute":{titre:"Moyenne de la part des kilomètres parcourus à l'année sur autoroute",notes:`Selon la figure G1-1 du [_Bilan annuel des transports en 2022_ +(SDES)](https://www.statistiques.developpement-durable.gouv.fr/media/6822/download?inline), +la cirulation routière par réseau routier. +`,valeur:"30 %"},"commun . jours par an":{titre:"Nombre de jours par an",unité:"jour",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/publicodes-commun`](https://github.com/incubateur-ademe/publicodes-commun).",valeur:365},"commun . voiture":null,"commun . voiture . parc français 2022":{titre:"Nombre de voiture en circulation en France au 1er janvier 2022",valeur:"38.7 millions de voiture"},"commun . année courante":{titre:"Année courante",valeur:2024},"ngc . transport . voiture":{titre:"voiture",icônes:"🚘",unité:"kgCO2e",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +![](https://upload.wikimedia.org/wikipedia/commons/9/9a/Congestion_caused_by_a_road_accident%2C_Algarve%2C_Portugal.jpg) + +La voiture est aujourd'hui en France essentiellement thermique (essence, diesel), bien que l'électrique progresse lentement. + +Pourtant, électrique ou thermique, elle reste un moyen de déplacement très peu efficient : +**il s'agit en moyenne de déplacer un humain de 80kg dans une boîte en métal de 1200kg**. + +Un peu comme si chaque midi, nous faisions à manger pour 10 avant de jeter 90% de la nourriture, ou que nous décidions de chauffer tout le pâté de maisons plutôt que l'intérieur de chacune des 10 maisons. + +Notons finalement qu'il est important de prendre en compte à la fois l'usage (les km parcourus) et la construction de ce véhicule de plus d'une tonne de matériaux divers. +`,variations:[{si:"km = 0",alors:0},{sinon:{variations:[{si:{"est défini":"utilisateur"},alors:{variations:[{si:{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},alors:"empreinte calculée"},{si:"utilisateur = 'non régulier'",alors:"empreinte moyenne non régulier"}]}},{sinon:"empreinte moyenne"}]}}]},"ngc . transport . voiture . empreinte calculée":{unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(usage + construction) / voyageurs"},"ngc . transport . voiture . empreinte moyenne non régulier":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'régulier non propriétaire'"}},"voiture . utilisateur":"'régulier non propriétaire'"}},"ngc . transport . voiture . empreinte moyenne":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'propriétaire'"}},"voiture . utilisateur":"'propriétaire'"}},"ngc . transport . voiture . utilisateur . propriétaire":{titre:"Oui et j'en suis propriétaire",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . utilisateur . régulier non propriétaire":{titre:"Oui mais c'est celle d'un proche",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . utilisateur . non régulier":{titre:"Non, je change souvent (autopartage, proches, taxi...)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . usage":{titre:"Usage de la voiture",unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"usage au kilomètre * km"},"ngc . transport . voiture . construction":{titre:"Construction de la voiture",unité:"kgCO2e",note:`Pour le moment, nous ne considérons pas l'amortissement complet d'une voiture (c'est-à-dire que nous n'avons pas l'info de l'âge ou le kilométrage complet de la voiture donc sa contruction ne sera jamais nulle). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:{"toutes ces conditions":["voiture . utilisateur = 'propriétaire'","km < seuil km"]},alors:"construction au kilomètre * seuil km"},{sinon:"construction au kilomètre * km"}]},"ngc . transport . voiture . usage au kilomètre":{unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"empreinte au kilomètre + base au kilomètre"},"ngc . transport . voiture . empreinte au kilomètre":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:{"est défini":"utilisateur"},alors:{variations:[{si:{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},alors:"empreinte au kilomètre calculée"},{si:"utilisateur = 'non régulier'",alors:"empreinte au kilomètre non régulier"}]}},{sinon:"empreinte au kilomètre moyenne"}]},"ngc . transport . voiture . base au kilomètre":{"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]}]},titre:"Entretien et climatisation au kilomètre",unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"entretien pondéré + climatisation"},"ngc . transport . voiture . empreinte au kilomètre calculée":{unité:"kgCO2e/km",note:`Pour la voiture hybride, nous n'avons pour l'instant pas utilisé les valeurs de la base bilan-GES, car elles sont compliquées à interpréter : + - la catégorie "hybride rechargeable" a une empreinte étonnamment faible (du niveau de l'électrique), mais surtout 0 émission à la combustion. Ce serait donc un véhicule essence qui n'utilise pas d'essence à l'usage ? [Un sujet récent] sur le forum de bilan-GES n'explique pas l'incohérence. + - la différence entre Hybride full Prius et Hybride full P2 n'est pas expliquée + - dans ces 2 catégories, il n'y a pas l'entrée de gamme. + +L'étude FNH-Carbone4 pourrait être utilisée pour l'empreinte au km des véhicules hybrides rechargeables. Voici l'hypothèse structurante retenue : + +> Répartition des modes de roulage (thermique / électrique) pour les hybrides : 50% / 50% en 2016 + +Mais on notera la controverse récente sur l'empreinte des véhicules hybrides rechargeable suite à [une étude](https://www.transportenvironment.org/press/les-hybrides-rechargeables-au-cœur-d’un-nouveau-scandale-d’émissions-des-tests-révèlent-des) de Transport & Environnement faisant état d'une empreinte réelle incomparable à l'empreinte annoncée par les constructeurs. + +Nous avons donc pour l'instant retenu le calcul du calculateur MicMac qui est la base de Nos Gestes Climat, dont la source est malheureusement inaccessible : + +> Hybride : enlever 15% aux consommations ci-dessus (source ADEME: http://www2.ademe.fr/servlet/KBaseShow?catid=13655) +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"motorisation = 'thermique'",alors:"thermique . empreinte au kilomètre"},{si:"motorisation = 'hybride'",alors:"thermique . empreinte au kilomètre * 0.85"},{si:"motorisation = 'électrique'",alors:"électrique . empreinte au kilomètre"}]},"ngc . transport . voiture . empreinte au kilomètre non régulier":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte au kilomètre calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'régulier non propriétaire'"}},"voiture . utilisateur":"'régulier non propriétaire'"}},"ngc . transport . voiture . empreinte au kilomètre moyenne":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . empreinte au kilomètre calculée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . thermique . consommation aux 100":{valeur:"voiture . thermique . consommation estimée",contexte:{"voiture . gabarit":"'berline'","voiture . motorisation":"'thermique'","voiture . thermique . carburant":"'essence E5 ou E10'","voiture . utilisateur":"'propriétaire'"}},"voiture . utilisateur":"'propriétaire'"}},"ngc . transport . voiture . thermique . empreinte au kilomètre":{titre:"empreinte au km thermique",note:"Cette méthode de calcul, plutôt qu'un barème gabarit -> empreinte au km, permet à l'utilisateur qui connait la consommation moyenne réelle de sa voiture de la saisir pour plus de précision.",unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation au kilomètre * empreinte au litre"},"ngc . transport . voiture . électrique . empreinte au kilomètre":{titre:"empreinte au km électrique",unité:"kgCO2e/km",note:`Nous considérons ici le mix électrique moyen français. La majorité des possesseurs de voitures électriques rechargent leur véhicule chez eux avec une tarification heure creuses, qui est plus avantageuse financièrement et correspond d'ailleurs aux moments où la demande en électricité est moins forte et le mix électrique moins carboné (les centrales gaz ne sont pas sollicitées). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation au kilomètre * logement . électricité . empreinte au kWh"},"ngc . transport . voiture . motorisation . thermique":{titre:"Thermique (diesel/essence/GPL)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . motorisation . hybride":{titre:"Hybride",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . motorisation . électrique":{titre:"Électrique",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . consommation au kilomètre":{unité:"l/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation aux 100 / 100 km/centkm"},"ngc . transport . voiture . thermique . empreinte au litre":{description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Les empreintes sont disponibles de façon assez détaillée sur [la base carbone](https://bilans-ges.ademe.fr/fr/basecarbone/donnees-consulter/liste-element?recherche=diesel), ici par exemple pour le "diesel". Idem pour "essence". +Pour les retrouver facilement, filtrez par unité "kgCO2e/litre" et par géographie "France continentale". + +À noter que pour le gazole, le FE choisi est la moyenne entre le gazole B7 et le gazole B10. +`,unité:"kgCO2e/l",variations:[{si:"carburant = 'gazole B7 ou B10'",alors:{moyenne:["3.1 kgCO2e/l","3.04 kgCO2e/l"]}},{si:"carburant = 'essence E5 ou E10'",alors:2.7},{si:"carburant = 'essence E85'",alors:1.11},{si:"carburant = 'GPL'",alors:1.86}]},"ngc . transport . voiture . thermique . consommation estimée":{titre:"Consommation estimée voiture",note:`> Si nous avons travaillé les propositions de consommation moyenne, l'idéal au vu de l'impact de cette donnée est bien que l'utilisateur ou l'utilisatrice saisisse sa propre consommation réelle, moyennée sur son usage. + +Pour obtenir nos propositions pour les voitures individuelles, nous avons croisé deux sources de données : + +- Les données moyennes de consommation des véhicules essence et diesel, [fournies par l'ADEME](https://carlabelling.ademe.fr/chiffrescles/r/evolutionConsoMoyenne) +- Les données des "meilleures consommations" par gabarit et par carburant, fournies par [cet article de CAROOM](https://www.caroom.fr/guide/voiture-neuve/comment-choisir/carburant/faible-consommation): + +Nous n'avons pas trouvé d'autre source pour obtenir la consommation moyenne par type de véhicule. Dans l'article de CAROOM, sont donnés les chiffres des meilleures performances par véhicule: + + | | E5 ou E10 | Diesel | % circulation | + |------------------|-----------|--------|---------------| + | Petite | 5,07 | 3,65 | 25,29% | + | Moyenne | 4,70 | 3,75 | 10,30% | + | Berline | 4,70 | 3,75 | 49,81% | + | SUV | 5,08 | 4,14 | 14,60% | + | Moyenne pondérée | 4,85 | 3,78 | | + +D'un autre côté, nous avons les données fournies par l'ADEME qui donnent des consommations moyennes de 6,8 L/100km pour une essence, 5 L/100km pour un diesel. +On remarque bien que les consommations moyennes calculées via les données de CAROOM (4,85 L/100km et 3,78 L/100km) sont bien plus basses que celles +de l'ADEME, ce sont les voitures les plus performantes. + +Nous avons donc retravaillé les chiffres via un ratio (conso moyenne / conso moyenne performante) pour mettre à jour les consommations moyennes par véhicules : +A titre d'exemple, pour une citadine essence, on obtient le chiffre de 7,11 L/100km via la formule suivante : 5,07 / 4,85 * 6,8. + +- Moyennes corrigées (et utilisées dans NGC): + + | | E5 ou E10 | Diesel | % circulation | + |------------------|-----------|--------|---------------| + | Petite | 7,11 | 4,83 | 25,29% | + | Moyenne | 6,59 | 4,96 | 10,30% | + | Berline | 6,59 | 4,96 | 49,81% | + | SUV | 7,13 | 5,48 | 14,60% | + | Moyenne pondérée | 6,80 | 5,00 | | + +Pour les véhicules utilitaires légers, nous avons utilisé cette source : +- [Consommation des véhicules utilitaires légers](https://www.webfleet.com/fr_fr/webfleet/blog/consommation-utilitaire/) + +> Nous avons bien noté que la consomation d'une citadine essence est plus élevée que celle d'une berline, ce qui semble contre-intuitif mais nous n'avons pas d'autres sources pour l'instant. + +Enfin, pour obtenir les consommations des véhicules roulant à l'essence E85, nous avons appliqué une **surconsommation de 25%** par rapport aux véhicules essence, chiffre qui semble faire consensus. + +De même, pour obtenir les consommations des véhicules roulant au GPL, nous avons appliqué une **surconsommation de 15%** par rapport aux véhicules essence, sauf pour le GPL, véhicule pour lequel nous avons déjà la données. +`,unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"gabarit = 'petite'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"petite diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"petite essence"},{si:"thermique . carburant = 'essence E85'",alors:"petite essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"petite essence * 1.15"}]}},{si:"gabarit = 'moyenne'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"moyenne diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"moyenne essence"},{si:"thermique . carburant = 'essence E85'",alors:"moyenne essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"moyenne essence * 1.15"}]}},{si:"gabarit = 'VUL'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"VUL diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"VUL essence"},{si:"thermique . carburant = 'essence E85'",alors:"VUL essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:13}]}},{si:"gabarit = 'berline'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"moyenne diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"moyenne essence"},{si:"thermique . carburant = 'essence E85'",alors:"moyenne essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"moyenne essence * 1.15"}]}},{si:"gabarit = 'SUV'",alors:{variations:[{si:"thermique . carburant = 'gazole B7 ou B10'",alors:"SUV diesel"},{si:"thermique . carburant = 'essence E5 ou E10'",alors:"SUV essence"},{si:"thermique . carburant = 'essence E85'",alors:"SUV essence * 1.25"},{si:"thermique . carburant = 'GPL'",alors:"SUV essence * 1.15"}]}}]},"ngc . transport . voiture . thermique . consommation estimée . petite diesel":{titre:"Consommation moyenne petite voiture diesel",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:4.83},"ngc . transport . voiture . thermique . consommation estimée . petite essence":{titre:"Consommation moyenne petite voiture essence",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:7.11},"ngc . transport . voiture . thermique . consommation estimée . moyenne diesel":{titre:'Consommation moyenne voiture "moyenne" diesel',unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:4.96},"ngc . transport . voiture . thermique . consommation estimée . moyenne essence":{titre:'Consommation moyenne voiture "moyenne" essence',unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:6.59},"ngc . transport . voiture . thermique . consommation estimée . VUL diesel":{titre:"Consommation moyenne VUL diesel",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:7.7},"ngc . transport . voiture . thermique . consommation estimée . VUL essence":{titre:"Consommation moyenne VUL essence",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:9},"ngc . transport . voiture . thermique . consommation estimée . SUV diesel":{titre:"Consommation moyenne SUV diesel",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:5.48},"ngc . transport . voiture . thermique . consommation estimée . SUV essence":{titre:"Consommation moyenne SUV essence",unité:"l/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:7.13},"ngc . transport . voiture . gabarit . petite":{titre:"Petite",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Citadine type Zoé, Fiat 500`},"ngc . transport . voiture . gabarit . moyenne":{titre:"Moyenne",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Modèle au dessus de la petite citadine, type Mégane, Golf`},"ngc . transport . voiture . gabarit . VUL":{titre:"Véhicule utilitaire",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Camionette de type Kangoo ou Partner jusqu'au Trafic et Vito`},"ngc . transport . voiture . gabarit . berline":{titre:"Berline",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Une voiture longue, type 308, Tesla Model 3, Audi A3`},"ngc . transport . voiture . gabarit . SUV":{titre:"SUV",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +"Sport utility vehicle", type 4x4 urbain +`},"ngc . transport . voiture . thermique . carburant . gazole B7 ou B10":{titre:"Gazole (B7 ou B10)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . carburant . essence E5 ou E10":{titre:"Essence (E5 ou E10)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . carburant . essence E85":{titre:"Essence E85 (biocarburants)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . thermique . carburant . GPL":{titre:"GPL (Gaz de Pétrole Liquéfiés)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . transport . voiture . électrique . consommation au kilomètre":{unité:"kWh/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation aux 100 / 100 km/centkm"},"ngc . logement . électricité . empreinte au kWh":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"métrique = 'carbone'",alors:"intensité carbone équivalente"},{si:"métrique = 'eau'",alors:"empreinte eau mix électrique"}]},"ngc . transport . voiture . électrique . consommation estimée":{variations:[{si:"gabarit = 'petite'",alors:15},{si:"gabarit = 'moyenne'",alors:17},{si:"gabarit = 'berline'",alors:25},{si:"gabarit = 'SUV'",alors:25},{si:"gabarit = 'VUL'",alors:25}],unité:"kWh/centkm",note:"Données moyennes fournies par le service Transport et Mobilité de l'ADEME.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . métrique":{"par défaut":"'carbone'",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . intensité carbone équivalente":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"photovoltaique . présent",alors:{variations:[{si:"photovoltaique . production >= consommation totale",alors:"photovoltaique . intensité carbone"},{si:"photovoltaique . production < consommation totale",alors:{somme:["(photovoltaique . production / consommation totale) * photovoltaique . intensité carbone","((consommation totale - photovoltaique . production) / consommation totale) * réseau . intensité carbone"]}}]}},{sinon:"réseau . intensité carbone"}]},"ngc . logement . électricité . empreinte eau mix électrique":{unité:"l/kWh",note:`On tente ici une approche pour estimer l'empreinte eau du mix électrique français en utilisant le papier [Water footprint of bio-energy and other primary energy carriers](https://www.waterfootprint.org/resources/Report29-WaterFootprintBioenergy.pdf) (Gerbens-Leenes, Winnie & Hoekstra, Arjen & Meer, Th.H., 2008) qui donne l'équivalent eau (eau verte, bleue, grise) pour chaque source d'énergie. + +Nous utilisons les données de [Electricity map](https://app.electricitymaps.com/map) (affichage par année, 2023) pour obtenir la composition du mix Français. +Curieusement, la composition n'atteint pas 100% ..? + +| | part | m3/GJ | l/kWh | | +| --------- | ----------- | ----- | ------- | ------------- | +| Nucléaire | 63,65% | 0,086 | 0,31 | | +| Biomasse | 1,24% | 24,2 | 87,12 | (Netherlands) | +| Charbon | 0,17% | 0,164 | 0,59 | | +| Eolien | 9,56% | 0 | 0,00 | | +| Solaire | 4,29% | 0,265 | 0,95 | | +| Hydro | 10,11% | 22,3 | 80,28 | | +| Gaz | 5,58% | 0,109 | 0,39 | | +| Fioul | 0,33% | 1,058 | 3,81 | | +| | **94,93%** | | **9,47** | | + + +Néanmoins, l'utilisation de cette étude pour le calcul de l'empreinte eau dans Nos Gestes Climat est discutable dans la mesure ou cette étude n'utilise pas la méthode AWARE pour le calcul de l'empreinte eau. Ce résultat est donc à mettre à jour dès que possible. + +Par ailleurs, nous avons eu accès, par l'intermédiaire d'Ecobalyse, à des données d'empreinte eau du mix électrique plus récentes (Ecoinvent) mais les accords de publication de données non aggrégées telles que celle-ci ne nous permettent pas de les utiliser pour le moment. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:9.47},"ngc . métrique . carbone":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . métrique . eau":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . consommation totale":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",somme:["photovoltaique . autoconsommation","réseau . consommation"]},"ngc . logement . électricité . photovoltaique . intensité carbone":{unité:"kgCO2e/kWh",note:"D'après l'ADEME, nous considérons que la zone H1C (est de la France) est représentative d'un logement moyen standard en France, ce qui correspond à une empreinte moyenne de 29,1 gCO2e / kWh produit.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:.0291},"ngc . logement . électricité . réseau . intensité carbone":{unité:"kgCO2e/kWh",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Nous utilisons ici l'empreinte moyenne du mix de la région de simulation. + +Nous pourrions faire mieux, en séparant la partie chauffage de l'air et le reste de la consommation du logement, car le chauffage est utilisé principalement l'hiver, au moment où les centrales à charbon et gaz tournent davantage et empirent l'empreinte du mix. Mais cela demanderait pour les foyers chauffés à l'électricité de trouver ces deux valeurs et les renseigner, chose peu évidente. + +> A titre d'exemple, l'intensité carbone du chauffage résidentiel est ainsi définie à 80gCO2e/kWh en France par la RE2020, [source](https://www.batiactu.com/edito/facteur-energie-primaire-contenu-carbone-electricite-58485.php). +`,valeur:"commun . intensité électricité"},"ngc . logement . type . maison":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . type . appartement":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . photovoltaique . production estimée via la puissance installée . facteur":{unité:"kWh/Wc",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1.3},"ngc . parc français . surface moyenne appartement":{titre:"Surface moyenne par appartement",unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale appartements / nombre appartements"},"ngc . parc français . surface moyenne maison":{titre:"Surface moyenne par maison",unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale maisons / nombre maisons"},"ngc . parc français . surface moyenne":{titre:"Surface moyenne par logement",unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale / nombre logements"},"ngc . parc français . surface totale appartements":{unité:"m2",note:"Surface totale habitable en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:819081251},"ngc . parc français . nombre appartements":{titre:"Nombre d'appartements en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:13142142},"ngc . parc français . surface totale maisons":{unité:"m2",note:"Surface totale habitable en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1887756548},"ngc . parc français . nombre maisons":{titre:"Nombre de maisons en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:16699885},"ngc . parc français . surface totale":{unité:"m2",note:"Surface totale habitable en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface totale appartements + surface totale maisons"},"ngc . parc français . nombre logements":{titre:"Nombre de logements en France",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"nombre appartements + nombre maisons"},"ngc . logement . électricité . photovoltaique . autoconsommation":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"production * part autoconsommation"},"ngc . logement . électricité . réseau . consommation par défaut":{titre:"Consommation par défaut électricité",note:`Dans l'état actuel du test NGC, la question du chauffage est posée après la question de la consommation d'électricité. Or, la valeur par défaut de cette question dépend du mode de chauffage. Si l'utilisateur répond "Je ne sais pas" à cette question, il y a des chances que la valeur attribuée change après coup. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"logement . chauffage . choix utilisateur = non",alors:"surface * (parc français . consommation électricité autre par m2 + (parc français . surface . part électricité * parc français . chauffage . consommation électricité par m2))"},{si:{"toutes ces conditions":["logement . chauffage . choix utilisateur = oui",{"est défini":"logement . chauffage . électricité . présent"},{"est défini":"logement . chauffage . PAC . présent"},"logement . chauffage . électricité . présent","logement . chauffage . PAC . présent"]},alors:"surface * (parc français . consommation électricité autre par m2 + parc français . chauffage . consommation électricité par m2)"},{si:{"toutes ces conditions":["logement . chauffage . choix utilisateur = oui",{"est défini":"logement . chauffage . électricité . présent"},{"est défini":"logement . chauffage . PAC . présent"},"logement . chauffage . électricité . présent","logement . chauffage . PAC . présent = non"]},alors:"surface * (parc français . consommation électricité autre par m2 + parc français . chauffage . consommation électricité hors PAC par m2)"},{si:{"toutes ces conditions":["logement . chauffage . choix utilisateur = oui",{"est défini":"logement . chauffage . électricité . présent"},{"est défini":"logement . chauffage . PAC . présent"},"logement . chauffage . électricité . présent = non","logement . chauffage . PAC . présent"]},alors:"surface * (parc français . consommation électricité autre par m2 + parc français . chauffage . consommation électricité PAC par m2)"},{sinon:"surface * parc français . consommation électricité autre par m2"}]},"ngc . logement . chauffage . choix utilisateur":{titre:"Choix utilisateur pour le chauffage",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).","une de ces conditions":[{"est défini":"électricité . présent"},{"est défini":"PAC . présent"},{"est défini":"gaz . présent"},{"est défini":"réseau de chaleur . présent"},{"est défini":"bouteille gaz . présent"},{"est défini":"citerne propane . présent"},{"est défini":"fioul . présent"},{"est défini":"bois . présent"}]},"ngc . parc français . consommation électricité autre par m2":{unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité autre / surface totale"},"ngc . parc français . surface . part électricité":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"électricité / surface"},"ngc . parc français . chauffage . consommation électricité par m2":{note:"électricité + pompe à chaleur",unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité / surface . électricité"},"ngc . parc français . chauffage . consommation électricité hors PAC par m2":{unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité hors PAC / surface . électricité hors PAC"},"ngc . parc français . chauffage . consommation électricité PAC par m2":{unité:"kWh/m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité PAC / surface . électricité PAC"},"ngc . parc français . consommation électricité autre":{note:"spécifique + climatisation",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"74810546534 + 2000000000"},"ngc . parc français . surface . électricité":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:980364088},"ngc . parc français . surface":{titre:"Surface totale par somme des énergies",note:"on considère ici toutes les sources d'énergie servant à chauffer le parc français.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",somme:["électricité","gaz","fioul","bois","réseau de chaleur","GPL"]},"ngc . parc français . surface . gaz":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:957251338},"ngc . parc français . surface . fioul":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:296898719},"ngc . parc français . surface . bois":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:319546177},"ngc . parc français . surface . réseau de chaleur":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:97385759},"ngc . parc français . surface . GPL":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:47600352},"ngc . parc français . chauffage . consommation électricité":{note:"électricité et pompe à chaleur",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(chauffage + ecs) + cuisson"},"ngc . parc français . chauffage . consommation électricité . chauffage":{titre:"conso électrique liée au chauffage",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:54859667824},"ngc . parc français . chauffage . consommation électricité . ecs":{titre:"conso électrique liée à l'eau chaude sanitaire",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:23584851016},"ngc . parc français . chauffage . consommation électricité . cuisson":{titre:"conso électrique liée à la cuisson",unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:11416870555},"ngc . parc français . chauffage . consommation électricité hors PAC":{unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité hors PAC . chauffage + (surface . part hors PAC électricité * (consommation électricité . ecs + consommation électricité . cuisson))"},"ngc . parc français . surface . électricité hors PAC":{unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface . électricité - surface . électricité PAC"},"ngc . parc français . chauffage . consommation électricité hors PAC . chauffage":{titre:"conso électrique hors PAC liée au chauffage",unité:"kWh",note:"Cette consommation est compris dans `consommation électricité . chauffage`.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité . chauffage - consommation électricité PAC . chauffage"},"ngc . parc français . surface . part hors PAC électricité":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface . électricité hors PAC / surface . électricité"},"ngc . parc français . chauffage . consommation électricité PAC . chauffage":{titre:"conso électrique via PAC liée au chauffage",unité:"kWh",note:"Cette consommation est compris dans `consommation électricité . chauffage`.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:14077969585},"ngc . parc français . surface . électricité PAC":{unité:"m2",note:"Cette surface est compris dans `surface . électricité`.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:301589218},"ngc . parc français . chauffage . consommation électricité PAC":{unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"consommation électricité PAC . chauffage + (surface . part PAC électricité * (consommation électricité . ecs + consommation électricité . cuisson))"},"ngc . parc français . surface . part PAC électricité":{description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"surface . électricité PAC / surface . électricité"},"ngc . commun . intensité électricité":{titre:"Intensité carbone du mix électrique français",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + + +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/publicodes-commun\`](https://github.com/incubateur-ademe/publicodes-commun). + + +Intensité moyenne, tous types de consommations confondues, année 2022.`,unité:"kgCO2e/kWh",note:`Ici, on parle du mix électrique de consommation. +Le chiffre est issu de la Base Empreinte (Electricité/2022 - mix moyen/consommation) dont la méthodologie est décrite dans la [documentation](https://prod-basecarbonesolo.ademe-dri.fr/documentation/UPLOAD_DOC_FR/). +La v2.6 de MicMac donnait une valeur de 12.4gCO2e/kWh pour les fournisseurs d'électricité "verte", mais cette valeur semble correspondre à un calcul théorique sur l'année, et non pas à un calcul réel, minute par minute. +`,valeur:.052},"ngc . transport . voiture . entretien pondéré":{unité:"kgCO2e/km",note:`Plusieurs sources s'accordent pour dire que l'entretien d'un véhicule électrique est inférieur à celui d'un véhicule thermique de 25%. Comme [celle-ci](https://izi-by-edf.fr/blog/voiture-hybride-entretien/). + +Pour ce qui est d'un véhicule hybride, son entretien se situe entre celui d'un véhicule électrique et celui d'un véhicule thermique. Cela dépend de l'utilisation du moteur électrique ou thermique. +Nous choisissons de partir sur une hypothèse conservatrice de -10% de coût d'entretien par rapport aux véhicules thermiques. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"motorisation = 'thermique'",alors:"entretien"},{si:"motorisation = 'hybride'",alors:"entretien * 0.9"},{si:"motorisation = 'électrique'",alors:"entretien * 0.75"}]},"ngc . transport . voiture . climatisation":{unité:"kgCO2e/km",note:`L'idée ici est de prendre en compte une part des émissions liées aux gaz fluorés issus des climatisations des véhicules +en France via le total des émissions dues à ces gaz sur le secteur du transport (voitures et VUL diesel, essence, GNV, GPL, électrique). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(émissions gaz fluorés transport / nombre véhicules circulation) / transport . voiture . km annuels moyen"},"ngc . transport . voiture . entretien":{unité:"kgCO2e/km",note:`Dans le poste G45, nous prenons la part Entretien et réparation de véhicules automobiles (7%). +Nous le divisons par le nombre de véhicules en circulation, puis par 12200 km (la moyenne de km effectués par véhicule) pour obtenir une empreinte en kgCO2e / km. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"(((empreinte branche . G45 * 1000000 kgCO2e/ktCO2e) * 0.07) / nombre véhicules circulation) / transport . voiture . km annuels moyen"},"ngc . empreinte branche . G45":{description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Commerce et réparation d'automobiles et de motocycles + +> La description ci-dessous correspond à la part de chaque sous-classe de la branche G45 (en % de chiffre d'affaire) + +- **Commerce de véhicules automobiles (67%)** + - Commerce de voitures et de véhicules automobiles légers (94%) + - Commerce d'autres véhicules automobiles (6%) +- **Entretien et réparation de véhicules automobiles (8%)** +- **Commerce d'équipements automobiles (24%)** + - Commerce de gros d'équipements automobiles (67%) + - Commerce de détail d'équipements automobiles (33%) +- **Commerce et réparation de motocycles (2%)**`,titre:"Commerce et réparation d'automobiles et de motocycles (France)",unité:"ktCO2e",valeur:6988},"ngc . transport . voiture . nombre véhicules circulation":{note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. + +Nous avons choisi de ne pas prendre en compte la catégorisation pro/perso dans de nombreux véhicules professionels sont utilisés également pour les trajets perso et domicile travail (que nous prenons en compte dans le calculateur). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"véhicules légers + VUL"},"ngc . transport . voiture . km annuels moyen":{unité:"km",note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. + +Nous avons choisi de ne pas prendre en compte la catégorisation pro/perso dans de nombreux véhicules professionels sont utilisés également pour les trajets perso et domicile travail (que nous prenons en compte dans le calculateur). +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",somme:["(km annuels moyen . véhicules légers * nombre véhicules circulation . véhicules légers) / nombre véhicules circulation","(km annuels moyen . VUL * nombre véhicules circulation . VUL) / nombre véhicules circulation"]},"ngc . transport . voiture . nombre véhicules circulation . véhicules légers":{note:`Ce chiffre est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:38814659},"ngc . transport . voiture . nombre véhicules circulation . VUL":{note:`Ce chiffre est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:6384963},"ngc . transport . voiture . km annuels moyen . véhicules légers":{unité:"km",note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:11957},"ngc . transport . voiture . km annuels moyen . VUL":{unité:"km",note:`Ce chiffre concerne les véhicules en circulation (voitures et VUL). +Il est issu des [Données sur le parc automobile français au 1er janvier 2023](https://www.statistiques.developpement-durable.gouv.fr/donnees-sur-le-parc-automobile-francais-au-1er-janvier-2023?rubrique=&dossier=1348). + +Nous considérons néanmoins les données pour l'année 2022 car la distance moyenne parcourue par véhicule n'est dispo que pour 2022. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:13793},"ngc . transport . voiture . climatisation . émissions gaz fluorés transport":{titre:"Emissions nationales dûes aux climatisations des voitures et VUL",unité:"kgCO2e",note:`Ce chiffre provient de l'étude [SECTEN](https://www.citepa.org/fr/secten/) (le rapport de référence sur les émissions de gaz à effet de serre et de polluants atmosphériques en France). + +D'après l'excel [Données par substance de gaz à effet de serre (GES) édition 2023, onglet "GF-UE_total"](https://www.citepa.org/wp-content/uploads/publications/secten/2023/Citepa_gaz_a_effet_de_serre_v2.zip), +les émissions de gaz fluorés pour le secteur du transport (provenant des équipements de réfrigération et d'air conditionné, utilisant des halocarbures ou du SF6), sont de 1374 ktCO₂e. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1374e6},"ngc . transport . voiture . construction . seuil km":{plafond:"voiture . km annuels moyen",unité:"km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"voiture . durée de vie en km / durée de vie moyenne"},"ngc . transport . voiture . construction au kilomètre":{unité:"kgCO2e/km",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"barème construction * amortissement"},"ngc . transport . voiture . durée de vie en km":{unité:"km",note:`Nous nous appuyons sur le référentiel (durée de vie, kilométrage) que reprend la [plateforme automobile de préconisations européennes](https://pfa-auto.fr/wp-content/uploads/2023/04/DT_Me%CC%81thodologie_2023_V15_FRANCAIS.pdf), avec les segments suivants : + +- Gabarit "petit" : correspondant au segment A, soit 150000 km +- Gabarit "moyen" : correspondant au segment B ou C, soit 225000 km +- Gabarit "VUL" : correspondant au segment CDV (Car-Derived Vehicle), soit 270000 km +- Gabarit "berline" : correspondant au segment B ou C, soit 225000 km +- Gabarit "SUV" : correspondant au segment E ou F, soit 270000 km + +Pour le moment, nous ne faisons pas la différence entre thermique et électrique. C'est une hypothèse très forte. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"gabarit = 'petite'",alors:15e4},{si:{"une de ces conditions":["gabarit = 'moyenne'","gabarit = 'berline'"]},alors:225e3},{sinon:27e4}]},"ngc . transport . voiture . durée de vie moyenne":{note:`On considère que l'âge moyen d'une voiture qui part à la casse est de 20 ans. Néanmoins, c'est une hypothèse forte car on peut légitimement penser qu'une voiture électrique possède une durée de vie plus longue qu'une voiture thermique. Il faudrait cependant considérer une valeur plus importante également pour la durée de vie en km. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:20},"ngc . transport . voiture . barème construction":{unité:"kgCO2e",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +![](https://i.imgur.com/uIlZcEjl.jpg) + +Une voiture est un gros, très gros objet, qui pèse souvent plus d'une tonne et demie. En conséquence, sa construction a une empreinte importante. + +En particulier, la construction d'une voiture électrique de gamme équivalente à une thermique émet plus de gaz à effet de serre. C'est notamment dû à la batterie et son poids important. + +Malgré cela, en France, sur la durée de vie de la voiture et donc les km parcourus, le choix de la voiture électrique est nettement mieux pour le climat. + +Mieux, mais loin d'être faible ! Aujourd'hui, il ne s'agit plus seulement de comparer des solutions techniques entre elles, il s'agit d'évaluer ses achats par rapport aux objectifs climat. +`,note:`Les données autour des émissions liées à la fabrication de véhicules sont nombreuses et variées. La première approche utilisait l'étude [FNH-Carbone4](https://github.com/betagouv/ecolab-data/files/5945898/vehicule_electrique_rapport.pdf) qui propose des facteurs d'émissions pour la construction pour 2 gabarits, en distinguant les véhicules thermiques, électriques et hybrides. Certaines données pour le véhicules paraissaient incohérentes, et nous avions besoin, d'un point de vue méthodologique, de plus de finesse dans le calcul de l'empreinte des véhicules électriques. + +C'est pouquoi, désormais, nous adoptons l'approche suivante: + +- Pour les véhicules thermiques, nous utilisons les données de la Base Empreinte de l'ADEME donnant une valeur de 4,5 kgCO2e/kg pour la construction d'une voiture. Nous appliquons ce facteur à la masse de la voiture pour obtenir l'empreinte de la construction, masse étant déterminée par le gabarit du véhicule. +- Pour les véhicules électriques, nous calculons l'empreinte de la batterie en fonction de sa capacité, puis nous ajoutons l'empreinte de la construction d'une voiture thermique de gamme équivalente. +- Pour les véhicules hybrides, nous utilisons les mêmes données que pour les véhicules électriques (hypothèse forte, voir note sur le barème hybride). +`,variations:[{si:"motorisation = 'thermique'",alors:"barème thermique"},{si:"motorisation = 'électrique'",alors:"barème électrique"},{si:"motorisation = 'hybride'",alors:"barème hybride"}]},"ngc . transport . voiture . amortissement":{description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Les discussions ont été animées sur l'amortissement de la voiture. Précédemment, dans le but de décourager l'achat neuf, un amortissement non linéaire avait été imaginé, fortement dégressif dans le temps, sur 10 ans. +Cet amortissement non linéaire avait le mérite de décourager l'achat, et de bien faire comprendre à l'utilisateur qu'une grande partie de l'empreinte du véhicule est liée à sa production, donc à l'achat neuf. + +Mais cet amortissement non linéaire n'était pas évident à comprendre pour les utilisateurs, et manquait son objectif pédagogique. +Par ailleurs, il occasionnait un double-discours dans Nos Gestes Climat, car dans les actions proposées aux propriétaires de voitures, nous proposons l'achat d'un véhicule électrique, or celui-ci est fortement pénalisant s'il est acheté neuf dans l'empreinte carbone individuelle. + +Enfin, il était, dans le simulateur Nos Gestes Climat, une exception : tous les autres biens amortis le sont de manière linéaire (l'empreinte de construction est divisée par la durée de vie du bien). + +Nous avions donc fait le choix de revenir pour la voiture à un amortissement linéaire sur la durée de vie de la voiture, une durée de vie en années. + +Mais ce fonctionnement ne nous convenait toujours pas : en effet, elle pénalisait beaucoup les petits rouleurs, et ne paraissait pas très juste par rapport à la réalité d'un véhicule, dont la durée de vie s'exprime plutôt en km. + +C'est donc, finalement, ce choix-là que nous avons fait : l'amortissement du véhicule est fonction du nombre de km parcourus, au regard du nombre de km maximal correspondant au gabarit du véhicule. +`,valeur:"1 / durée de vie en km"},"ngc . transport . voiture . barème construction . barème thermique":{unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"gabarit = 'petite'",alors:"empreinte par kg * gabarit . petite . poids"},{si:"gabarit = 'moyenne'",alors:"empreinte par kg * gabarit . moyenne . poids"},{si:"gabarit = 'VUL'",alors:"empreinte par kg * gabarit . VUL . poids"},{si:"gabarit = 'berline'",alors:"empreinte par kg * gabarit . berline . poids"},{si:"gabarit = 'SUV'",alors:"empreinte par kg * gabarit . SUV . poids"}]},"ngc . transport . voiture . barème construction . barème électrique":{unité:"kgCO2e",note:`La construction d'une voiture électrique émet plus de gaz à effet de serre qu'une voiture thermique de gamme équivalente. +Cela est dû à la production de la batterie, qui est très énergivore et à une empreinte carbone importante. + +> Ce surplus d'émissions est d'environ +50% (mais varie d'environ +20% à plus d'une multiplication par 2 selon les études). +https://bonpote.com/la-voiture-electrique-solution-ideale-pour-le-climat/ +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"barème thermique + batterie"},"ngc . transport . voiture . barème construction . barème hybride":{unité:"kgCO2e",note:`On fait l'hypothèse forte que la construction d'un véhicule hybride correspond à l'empreinte d'un véhicule électrique équipé d'une petite batterie. Néanmoins, le calcul est plus complexe, notamment car le type de véhicule hybride (rechargeable ou non) sur la composition de la voiture. On a également 2 moteurs... +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"barème thermique + batterie"},"ngc . transport . voiture . barème construction . barème thermique . empreinte par kg":{unité:"kgCO2e/kg",note:"Facteur d'émission issu de la Base Empreinte.",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:4.5},"ngc . transport . voiture . gabarit . petite . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1e3},"ngc . transport . voiture . gabarit . moyenne . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1500},"ngc . transport . voiture . gabarit . VUL . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1750},"ngc . transport . voiture . gabarit . berline . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:1750},"ngc . transport . voiture . gabarit . SUV . poids":{unité:"kg",note:"Les valeurs de poids sont tirées du simulateur [carculator](https://carculator.readthedocs.io/en/latest/modeling.html#size-classes) qui utilise le papier [Cost and well-to-wheel implications of the vehicle fleet CO2 emission regulation in the European Union, Christian and others, 2014](https://www.sciencedirect.com/science/article/abs/pii/S0965856414000494?via%3Dihub)",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:2e3},"ngc . transport . voiture . barème construction . barème électrique . batterie":{unité:"kgCO2e",note:`L'empreinte carbone d'une batterie augmente avec sa capacité, car une capacité plus élevée nécessite l'utilisation d'un plus grand nombre de cellules lithium-ion. + +La capacité de la batterie est exprimée en kWh, elle peut varier considérablement selon les modèles de voitures électriques. +Pour réduire l'impact de la voiture électrique il faut privilégier les modèles avec une batterie de petite capacité. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"capacité * barème construction . batterie . empreinte par kWh"},"ngc . transport . voiture . barème construction . barème électrique . batterie . capacité":{"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"motorisation = 'électrique'"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +La capacité de la batterie est exprimée en kWh, elle varie considérablement selon les modèles de véhicules. + +Les constructeurs distinguent parfois une capacité brute et une capacité nette, réellement disponible. Si vous avez les deux valeurs, choisissez la capacité brute. +`,unité:"kWh","par défaut":{variations:[{si:{"une de ces conditions":["gabarit = 'petite'","gabarit = 'moyenne'"]},alors:40},{si:{"une de ces conditions":["gabarit = 'berline'","gabarit = 'SUV'","gabarit = 'VUL'"]},alors:65}]},suggestions:{"petite autonomie":40,"autonomie moyenne":65,"grande autonomie":100}},"ngc . transport . voiture . barème construction . batterie . empreinte par kWh":{unité:"kgCO2e/kWh",note:`Les études académiques sur l'empreinte carbone des batteries des véhicules électriques sont nombreuses, mais leurs résultats sont très variables. + +Les valeurs varient de 60 kgCO2e/kWh à 150 kgCO2e/kWh. Une [méta-étude de l'IFPEN](https://www.sciencedirect.com/science/article/abs/pii/S0959652622006291) +(Institut Français du Pétrole et des Énergies Nouvelles) calcule une valeur médiane de 83 kgCO2e/kWh, en précisant que les résultats différent selons les chimies de batteries, +les pays de productions, le pays des auteurs de l'étude, et que même ces facteurs intégrés il reste une grande variabilité des résultats. + +Compte tenu de l'incertitude et des variations observées dans les études, nous adoptons une valeur prudente de 100 kgCO2e/kWh pour l'empreinte carbone des batteries. + +[Étude Carbone 4 sur l'empreinte des batteries (en)](https://www.carbone4.com/publication-liion-battery-carbon-footprint) +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:100},"ngc . transport . voiture . barème construction . barème hybride . batterie":{unité:"kgCO2e",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"capacité * barème construction . batterie . empreinte par kWh"},"ngc . transport . voiture . barème construction . barème hybride . capacité":{unité:"kWh",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:40},"ngc . transport . voiture . km":{titre:"Km en voiture",question:"Quelle distance parcourez-vous à l'année en voiture ?",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Ne comptez que les kilomètres de déplacement personnel (courses, loisirs, famille, etc.) et de déplacement domicile-travail. + +Si une mission professionnelle vous amène à vous déplacer plus loin que votre lieu de travail habituel, ne comptez pas ici les km concernés. +`,"par défaut":8210,unité:"km/an",plancher:0,plafond:99999,suggestions:{zéro:0,vacances:2e3,"10km / jour":3600,"1000km / mois":12e3,"20 000km / an":2e4},valeur:"usage . km annuels"},"ngc . transport . voiture . utilisateur":{question:"Quel est l'utilisateur de la voiture ? DEBUG","applicable si":"km > 0",note:`Deux données sont importantes dans le cadre du calcul de l'empreinte liée à la construction : + +- L'usage ou non d'un même véhicule pour tous les kilomètres parcourus (si non : on vous attribue un véhicule "moyen") +- La propriété ou non dudit véhicule s'il s'agit toujours du même + +Nous avons fait le choix d'attribuer l'empreinte de construction au pro-rata des kilomètres parcourus. Mais cette approche avait deux défauts : + +- Elle était extrêmement avantageuse pour les petits rouleurs, alors que leur véhicule qui roule moins peut s'user plus vite (un moteur a besoin de tourner régulièrement) et donc avoir une durée de vie inférieure. +- Elle ne permettait pas de valoriser l'engagement de ne pas disposer de son propre véhicule, et de pratiquer à la place l'autopartage, ou la location ponctuelle (car l'empreinte de construction était la même, que l'on soit propriétaire ou non). + +> Pour pallier ces deux problèmes, et mieux représenter qu'un véhicule possédé mais sous-utilisé s'use plus vite et mérite une empreinte de construction plus importante, **nous appliquons un seuil pour la partie construction de l'empreinte, pour les propriétaires**. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",valeur:"'propriétaire'"},"ngc . transport . voiture . voyageurs":{titre:"Nombre de voyageurs",question:null,"applicable si":"km > 0",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +🤔 Il est fort probable que vos trajets ne se ressemblent pas, et que vous rouliez parfois seul, parfois à plusieurs. + +Sachez qu'en moyenne en France, le taux de remplissage d'une voiture est de 1,4 personnes sur des trajets courts, et 2,25 personnes sur des trajets longs. Ce taux augmente légèrement pour les familles, particulièrement les foyers monoparentaux. +`,plancher:1,plafond:9,avertissement:`Le nombre de voyageurs est compris entre 1 (vous) et 9 (8 passagers au plus). +`,note:`On considère que le nombre maximal de voyageurs est de 9 (limite du permis B). + +Néanmoins, cette question est souvent mal répondue car les utilisateurs.rices ne considèrent pas le nombre de voyageurs moyen : ils répondront 3 s'ils emmènent leurs enfants à l'école sans prendre en compte qu'ils sont seuls dans leur voiture la majorité du temps. +`,"par défaut":1.2,suggestions:{"je suis seul":1,deux:2,cinq:5},valeur:1},"ngc . transport . voiture . motorisation":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +💡 **Si vous utilisez plusieurs voitures (par exemple dans le cas où vous n'en possédez pas une), choisissez la réponse la plus représentative de votre usage.**`,"par défaut":"'thermique'",valeur:"voiture . motorisation"},"ngc . transport . voiture . thermique . consommation aux 100":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +**💡 Si vous utilisez plusieurs voitures (par exemple dans le cas où vous n'en possédez pas une), choisissez la réponse la plus représentative de votre usage.** +`,suggestions:{"5 l/100km":5,"7 l/100km":7,"9 l/100km":9},"par défaut":"consommation estimée",unité:"l/centkm",note:"Les suggestions de réponse sont à la louche, à préciser et sourcer.",variations:[{si:"voiture . thermique . consommation carburant > 1",alors:"voiture . thermique . consommation carburant"},{sinon:"voiture . thermique . consommation estimée"}]},"ngc . transport . voiture . gabarit":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +**💡 Si vous utilisez plusieurs voitures (par exemple dans le cas où vous n'en possédez pas une), choisissez la réponse la plus représentative de votre usage.** +`,"par défaut":"'berline'",note:`Nous considérons que la voiture par défaut est une "Berline", en témoigne [une étude menée par AAA Data](https://www.alphabet.com/fr-fr/parc-automobile-roulant-les-donnees-cles) +qui indique que "Si les SUV ont représenté 38 % des ventes de véhicules en 2019, ils ne représentent que 16 % de la totalité des véhicules en circulation, loin derrière les berlines qui comptent pour 58 %, soit 23 millions de véhicules." +`,valeur:"voiture . gabarit"},"ngc . transport . voiture . thermique . carburant":{question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},{"une de ces conditions":["motorisation = 'thermique'","motorisation = 'hybride'"]},"km > 0"]},description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +> Attention, si le type de carburant fait varier de façon significative l'empreinte climat au litre, la consommation en litre par 100km elle aussi varie. Veillez à saisir une consommation au litre basée sur votre moyenne réelle. +`,"par défaut":"'essence E5 ou E10'",note:`La domination du couple gazole-essence est écrasante [source](https://www.leprogres.fr/magazine-automobile/2021/03/27/quels-sont-les-carburants-les-plus-utilises-dans-votre-commune). + +Par contre, parmi les véhicules neufs, l'essence domine aujourd'hui. + +Le facteur d'émission associé au biocarburant E85 n'est pas représentatif des conséquences environnementales liées à l'utilisation des biocarburants. +En effet, au vu des problématiques liées au changement d'affectation des sols et autres impacts environnementaux liés à la culture du maïs par exemple, les **biocarburants** ne sont pas pris en compte +(le facteur d'émission de la base carbone étant particulièrement incertain). Voir nos discussions [ici](https://github.com/incubateur-ademe/nosgestesclimat/pull/1324). + +Le GPL (Gaz de Pétrole Liquéfiés) est un [résidu de l'extraction du pétrole qui était autrefois brûlé](https://fr.wikipedia.org/wiki/Gaz_de_p%C3%A9trole_liqu%C3%A9fi%C3%A9). +Il a une empreinte carbone par litre moins importante que les véhicules essence ou diesel, par contre sa consommation est légèrement supérieure, ce qui compense légèrement le gain. +Mais si les rejets de CO2e sont au final presque équivalents entre le GPL et les autres carburants, c'est [du côté de l'émission de particules nocives](https://agirpourlatransition.ademe.fr/particuliers/conso/conso-responsable/comment-choisir-voiture-deux-roues-moins-polluant) que le GPL est un bien meilleur élève que les autres carburants thermiques. + +Pour comprendre les différents types de carburants, [cet article pédagogique](https://www.francetvinfo.fr/economie/automobile/essence/les-carburants-changent-de-nom-a-la-pompe-voici-comment-vous-y-retrouver_2967013.html) est très utile. + +[Cet article](https://www.ecologie.gouv.fr/carburants-et-combustibles-autorises-en-france) du ministère de l'Écologie explique plus en détail les carburants légaux en France. +`,valeur:"voiture . thermique . carburant"},"ngc . transport . voiture . électrique . consommation aux 100":{titre:"Consommation électrique au km",question:null,"applicable si":{"toutes ces conditions":[{"est défini":"utilisateur"},{"une de ces conditions":["utilisateur = 'propriétaire'","utilisateur = 'régulier non propriétaire'"]},"motorisation = 'électrique'","km > 0"]},suggestions:{"15 kWh/100km":15,"20 kWh/100km":20,"25 kWh/100km":25},"par défaut":"consommation estimée",unité:"kWh/centkm",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat).",variations:[{si:"voiture . électrique . consommation électricité > 1",alors:"voiture . électrique . consommation électricité"},{sinon:"voiture . électrique . consommation estimée"}]},"ngc . logement . électricité . photovoltaique . présent":{"non applicable si":"logement . type = 'appartement'",question:null,"par défaut":"non",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . photovoltaique . production":{"applicable si":"photovoltaique . présent",icônes:"🌞⚡️",question:null,plancher:0,plafond:4e4,"par défaut":"(logement . surface * 30 Wc/m2) * logement . électricité . photovoltaique . production estimée via la puissance installée . facteur",unité:"kWh",suggestions:{"1000 kWh":1e3,"2000 kWh":2e3,"4000 kWh":4e3,"6000 kWh":6e3},aide:"logement . électricité . photovoltaique . production estimée via la puissance installée . saisie",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Nous parlons bien ici de toute l'énergie produite par vos panneaux, que vous la consommiez ou non. +La façon de disposer de ce chiffre varie selon votre installation. La plupart des installations présentes disposent d'une application de suivi de production qui devrait vous fournir cette donnée. + +> Nous proposons des suggestions via le nombre de panneaux en considérant que la puissance moyenne d'un panneau solaire est de 400 Wc environ, avec une production de 1300 kWh/kWc. +`,note:`Par défaut, on propose une production qui varie selon la surface du logement en considèrant qu'un logement de 100 m² possède une installation de 3 kWc, soit une puissance installée de 0,03 kWc/m². +`},"ngc . logement . type":{question:null,"par défaut":"'moyen'",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +L'augmentation de l'habitat en appartements peut nous faire oublier que la maison reste le logement majoritaire des foyers français en 2018. + +Cette information influence notamment l'empreinte de construction, mais aussi les possibilités de travaux d'isolation par exemple. + +> Si vous vivez dans un habitat original, par exemple un camping-car / un camion / une péniche, pas de problème : choisissez "appartement" et saisissez les m² de ce qui constitue quand même votre logement. +`,note:`En 2018, l’habitat individuel représente 56 % des logements ([Source INSEE](https://www.insee.fr/fr/statistiques/3676693?sommaire=3696937)) : il est majoritaire parmi les résidences principales comme parmi les résidences secondaires et logements occasionnels. Après avoir progressé entre 1999 et 2008 sa part recule légèrement, car le nombre de logements collectifs augmente plus vite que celui des logements individuels du fait des évolutions récentes de la construction neuve. +Notons qu'il s'agit d'une proportion de logements ; or on peut s'attendre (à vérifier) à ce que les maisons contiennent davantage de gens en moyenne que les appartements, ce qui renforce le choix de la valeur par défaut. +`},"ngc . logement . surface":{titre:"Surface",question:null,plancher:1,plafond:999,avertissement:`La surface de votre logement ne peut-être nulle et ne pas être supérieure à 1000 m². +`,"par défaut":{variations:[{si:"logement . type = 'appartement'",alors:"parc français . surface moyenne appartement"},{si:"logement . type = 'maison'",alors:"parc français . surface moyenne maison"},{sinon:"parc français . surface moyenne"}]},note:`Valeur par défaut obtenue dans [ce jeu de données du Ceren et SDES](https://www.statistiques.developpement-durable.gouv.fr/consommation-denergie-par-usage-du-residentiel). + +> Les logements ont une surface moyenne d’environ 91 m2. + +> Si vous vivez dans un logement original, par exemple un camping-car / un camion / une péniche, renseignez simplement les m² de ce logement. +`,suggestions:{studio:25,"3 pièces":70,"6 pièces":130,"Château 🏰":500},unité:"m2",description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . électricité . réseau . consommation":{question:null,aide:"logement . électricité . réseau . consommation estimée via le coût . saisie",plancher:0,plafond:99999,unité:"kWh","par défaut":"consommation par défaut",note:"on considère que seule la consommation d'électricité liée au chauffage est dépendante de la surface du logement",description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Astuce : vous trouverez la consommation annuelle d'électricité sur vos factures ou sur votre compte en ligne sur le site de votre fournisseur. +`},"ngc . logement . électricité . photovoltaique . part autoconsommation":{"applicable si":{"toutes ces conditions":["photovoltaique . présent","photovoltaique . production > 0"]},question:null,description:` +> ℹ️ Cette règle provient du modèle [\`@incubateur-ademe/nosgestesclimat\`](https://github.com/incubateur-ademe/nosgestesclimat). + + +Si vous consommez toute votre production (typiquement si vous n'y êtes pas raccordé), renseignez 100%. Si vous revendez toute votre production, mettez 0. + +Les compteurs récents sont en capacité de vous fournir votre part d'auto-consommation. +`,"par défaut":30,plancher:0,plafond:100,unité:"%",suggestions:{"je réinjecte tout dans le réseau":0,"le quart de ma production":25,"la moitié de ma production":50,"je consomme 100% de ce que je produis":100}},"ngc . logement . chauffage . électricité . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . PAC . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . gaz . présent":{question:null,note:`Bien que le chauffage majoritaire en France soit électrique [source](https://fr.statista.com/statistiques/856283/types-chauffage-logement-principal-france), nous mettons ici la valeur par défaut à oui pour se rapprocher de la moyenne d'empreinte du logement. + +On touche aux limites actuelles de ce système de situation par défaut. +`,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . réseau de chaleur . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . bouteille gaz . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . citerne propane . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . fioul . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},"ngc . logement . chauffage . bois . présent":{question:null,description:"> ℹ️ Cette règle provient du modèle [`@incubateur-ademe/nosgestesclimat`](https://github.com/incubateur-ademe/nosgestesclimat)."},ngc:b_,empreinte:w_,décote:{titre:"Calcul de la décote d'une voiture",description:`Ce modèle permet de calculer la décote moyenne d'une voiture en fonction de +son âge. + +La décote est une estimation de la perte de valeur d'un bien, ici d'une +voiture, au fil du temps. Elle s'explique par l'usure du véhicule, son +obsolescence, l'évolution des normes environnementales, etc... + +A noter que le prix d'une voiture peut grandement varier en fonction du +modèle, de l'état du véhicule et que seul une comparaison avec les prix du +marché à un instant donné permettra de déterminer le prix de vente réel. +Par conséquent, **la décote calculée ici est une estimation moyenne**. +`,plafond:"80 %",unité:"%",note:`Nous avons choisi un plafond de 80% pour la décote. Cette valeur est +arbitraire mais nous considérons que la valeur de revente d'une voiture +ne peut pas descendre en dessous de 20% de sa valeur d'achat. Nous +n'avons pas trouvé de sources fiables pour justifier ce choix, cela +pourrait être un point d'amélioration pour ce modèle. + +### Sources + +Selon cet +[article](https://www.carizy.com/blog/article/decote-voiture-impacts) ou +[celui-ci](https://www.fiches-auto.fr/articles-auto/argent-economie/s-2952-decote-d-une-voiture-variables-et-estimation.php), +on peut estimer une valeur moyenne de décote dégressive au fur et à mesure +de sa mise en circulation : + +| Temps écoulé depuis la mise en circulation | Décote moyenne | +|---------------------------------------------|----------------| +| 1 an | 20-25% | +| 2 ans | 15% | +| 3 ans | 10-12% | +| 4 ans | 10% | +| 5 ans et plus | 5-7% | + +### Pistes d'amélioration + +Le taux de décote varie d'un type de motorisation à un autre. Il serait +pertinent de prendre en compte ce critère pour affiner le calcul. +Cependant, il n'existe pas réellement de sources pour le faire. +`,variations:[{si:"durée décote <= 1",alors:"20 %"},{si:"durée décote <= 2",alors:"35 %"},{si:"durée décote <= 3",alors:"45 %"},{si:"durée décote <= 4",alors:"55 %"},{sinon:"60 + (5 %/an * (durée décote - 5))"}]},"décote . durée décote":{description:"Durée sur laquelle la décote est appliquée.","par défaut":"voiture . âge",unité:"an"},"prix électricité":{description:`Prix de l'électricité en France en août 2024 selon le tarif réglementé de +vente (TRV) d'EDF. +`},"prix électricité . TRV base":{titre:"Tarif réglementé de vente (TRV) (Tarif Bleu d'EDF - Base)",note:`Tarif réglementé de vente (TRV) de l'électricité au 14 août 2024 selon la +grille tarifaire renseignée sur [hello +watt](https://www.hellowatt.fr/contrat-electricit%C3%A9/prix-trv-electricite). +`,valeur:"0.2516 €/kWh"},"prix électricité . TRV HC":{titre:"Tarif réglementé de vente (TRV) (Tarif Bleu d'EDF - Heures Creuses)",note:`Tarif réglementé de vente (TRV) de l'électricité au 14 août 2024 selon la +grille tarifaire renseignée sur [hello +watt](https://www.hellowatt.fr/contrat-electricit%C3%A9/prix-trv-electricite). +`,valeur:"0.2068 €/kWh"},"prix électricité . TRV HP":{titre:"Tarif réglementé de vente (TRV) (Tarif Bleu d'EDF - Heures Pleines)",note:`Tarif réglementé de vente (TRV) de l'électricité au 14 août 2024 selon la +grille tarifaire renseignée sur [hello +watt](https://www.hellowatt.fr/contrat-electricit%C3%A9/prix-trv-electricite). +`,valeur:"0.27 €/kWh"},coûts:{titre:"Coûts annuels de votre voiture",description:`Coûts répartis entre les coûts liés à la possession d'une voiture (achat, +assurance, etc...) et les coûts liés à son utilisation (carburant, +entretien, etc...). +`,unité:"€/an",note:`### Historique + +Ce modèle de calcul des coûts d'une voiture utilisait dans sa première version +le modèle de [futur.eco](https://futur.eco/cout-voiture) permettant de calculer +le coût au km d'un trajet en voiture. Cependant, des limitations sont apparues +et le modèle a été réécrit en changeant notamment de fonction d'amortissement. + +Une partie des valeurs ont été reprises du modèle de +[futur.eco](https://futur.eco/cout-voiture) et le modèle reste une source +d'inspiration. +`,somme:["coûts de possession","coûts d'utilisation"]},"coûts . coûts de possession":{titre:"Coûts de possession annuels",description:`Ensemble des coûts liés à la possession d'une voiture et qui peuvent par +conséquent, être négligés dans le calcul des coûts d'une voiture louée par +exemple. +`,unité:"€/an",somme:["achat amorti","contrôle technique","entretien","assurance","certificat d'immatriculation amorti"]},"coûts . coûts de possession . contrôle technique":{titre:"Coût annuel du contrôle technique",note:`Le contrôle technique est obligatoire tous les deux ans pour les voitures +de plus de 4 ans (voir +[economie.gouv.fr](https://www.economie.gouv.fr/dgccrf/Publications/Vie-pratique/Fiches-pratiques/Vehicule-automobile-controle-technique)). + +### Sources + +La valeur moyenne du contrôle technique est estimée à 85 € en 2024 à +partir des données de l'API +[data.economie.gouv.fr/explore/embed/dataset/prix-controle-technique/](https://data.economie.gouv.fr/explore/embed/dataset/prix-controle-technique/analyze/?dataChart=eyJxdWVyaWVzIjpbeyJjb25maWciOnsiZGF0YXNldCI6InByaXgtY29udHJvbGUtdGVjaG5pcXVlIiwib3B0aW9ucyI6e319LCJjaGFydHMiOlt7ImFsaWduTW9udGgiOnRydWUsInR5cGUiOiJiYXIiLCJmdW5jIjoiQVZHIiwieUF4aXMiOiJwcml4X3Zpc2l0ZSIsInNjaWVudGlmaWNEaXNwbGF5Ijp0cnVlLCJjb2xvciI6IiM0NDcwNDkifV0sInhBeGlzIjoiY2F0X2VuZXJnaWVfaWQiLCJtYXhwb2ludHMiOm51bGwsInRpbWVzY2FsZSI6IiIsInNvcnQiOiIiLCJzZXJpZXNCcmVha2Rvd25UaW1lc2NhbGUiOiIifV0sImRpc3BsYXlMZWdlbmQiOnRydWUsImFsaWduTW9udGgiOnRydWUsInRpbWVzY2FsZSI6IiJ9) : +`,valeur:"85 € / 2 an"},"coûts . coûts de possession . entretien":{question:"Combien coûte l'entretien de votre voiture ?",description:`Renseignez le coût annuel moyen de l'entretien de votre voiture hors +contrôle technique. Cela comprend les réparations occasionnelles, +changement de batterie, etc... +Si vous ne connaissez pas ce coût, vous pouvez laisser la valeur par +défaut. +`,"par défaut":"entretien estimé",plancher:0,unité:"€/an"},"coûts . coûts de possession . entretien estimé":{titre:"Estimation du coût d'entretien moyen",description:`Estimation du coût d'entretien moyen de votre voiture par an en prenant +en compte les révisions annuelles et les réparations occasionnelles. +`,note:`Il n'existe pour l'instant pas de sources détaillées sur le coût +d'entretien. Pour une première estimation, nous avons considéré un coût +d'entretien moyen et appliqué un ratio en fonction de la motorisation du +véhicule comme cela est fait dans la note d'analyse [_Voiture électrique : +à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie. + +### Pistes d'amélioration + +De nombreux articles estiment le coût d'entretien en fonction des km +parcourus. Par exemple, la fréquence recommandée pour effectuer une +vidange varie entre 7000 et 30 000 km parcourus en fonction des sources +et du type de véhicule. Se pose donc la question des sources à utiliser +et de la façon de répartir ces coûts en fonction des km annuels +parcourus. + +Le modèle de +[Futur.eco](https://futur.eco/documentation/voyage/voiture/co%C3%BBt-de-possession/entretien?lu=oui) +prend en compte un ratio d'usage pour diminuer les coûts d'entretien pour +les voitures roulant peu. Pour l'instant, nous utilisons des coûts fixes +pour l'entretien basé sur la note d'analyse [_Voiture électrique : à quel +coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie afin de simplifier le calcul. + +Dans une future version, nous pourrions essayer de rentrer dans le détail +et de proposer une modélisation plus fine des coûts d'entretien en fonction +des km parcourus et avoir une division plus fine des coûts d'entretien en +sous-postes. +`,variations:[{si:"voiture . motorisation = 'hybride'",alors:"entretien thermique moyen * 90 %"},{si:"voiture . motorisation = 'électrique'",alors:"entretien thermique moyen * 80 %"},{sinon:"entretien thermique moyen"}]},"coûts . coûts de possession . entretien thermique moyen":{titre:"Coût d'entretien moyen d'une voiture thermique",note:`Valeur moyenne retenue dans la note d'analyse [_Voiture électrique : à quel +coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie (en retranchant le coût du contrôle technique qui est +comptabilisé à part). +`,valeur:"1250 €/an"},"coûts . coûts de possession . assurance":{question:"Quel est le coût de l'assurance de votre voiture ?",description:`Renseignez le coût annuel de l'assurance de votre voiture. Si vous ne +connaissez pas ce coût, vous pouvez laisser la valeur par défaut. +`,"par défaut":"assurance estimée",plancher:0,unité:"€/an"},"coûts . coûts de possession . assurance estimée":{titre:"Coût annuel estimé de l'assurance",note:`Estimation du coût annuel de l'assurance de votre voiture en fonction de +sa motorisation. Les primes d'assurance peuvent varier en fonction de +plusieurs critères (âge, lieu de résidence, etc...). Nous avons pris en +compte une prime moyenne pour une voiture thermique et une prime moyenne +pour une voiture électrique. + +### Sources + +- [LesFurets.com](https://www.lesfurets.com/assurance-auto/types-vehicules/voiture-propre/electrique) +`,variations:[{si:"voiture . motorisation = 'électrique'",alors:"520 €/an"},{sinon:"640 €/an"}]},"coûts . coûts de possession . achat amorti":{titre:"Coût annuel de l'achat de votre voiture",note:`Le prix d'achat d'une voiture qu'elle soit neuve ou d'occasion représente un facteur important du coût total du véhicule. Le choix de la fonction d'amortissement est par conséquent crucial pour le calcul du coût annuel. + +De nombreuses méthodes existe pour définir cette fonction : amortissement linéaire sur toute la durée de vie ou sur la durée d'utilisation, non-linéaire en _payant_ plus les premières années, amorti en retranchant le prix de revente. L'amortissement sur la durée de vie peut se faire en années ou bien en km parcourus. + +Nous avons donc du faire un choix et avons décidé de choisir un **amortissement linéaire sur la durée de détention**. + +#### Historique de ce choix + +La première version du modèle pour le calcul des coûts d'une voiture était basée sur le modèle de [futur.eco](https://futur.eco/cout-voiture) qui utilise un amortissement linéaire sur la durée de vie en années de la voiture, en faisant l'hypothèse qu'en moyenne la voiture est gardée jusqu'au bout de sa vie. + +Si à l'échelle d'une voiture, il est probable qu'elle roule jusqu'à la fin de sa vie, (c'est-à-dire qu'elle ne soit plus en état de fonctionner), à l'échelle d'un.e conducteurice cela semble peu probable. En effet, selon le [bilan de 2021 de l'ONSIR](https://www.onisr.securite-routiere.gouv.fr/sites/default/files/2022-09/74-75%20Le%20parc%20automobile%20des%20m%C3%A9nages%20V5.pdf), la durée de détention n'est que de 5,5 ans alors que l'âge moyen des voitures hors d'usage (VHU) est de 19 ans (voir cet [article](https://www.ecologie.gouv.fr/politiques-publiques/vehicules-hors-dusage-vhu)). + +De plus, ce choix d'amortissement peut se justifier dans le contexte du calcul du coût d'un trajet arbitraire (comme c'est le cas pour futur.eco). Contexte qui ne permet de savoir facilement à ce moment là qu'elle sera la durée de détention du véhicule. Or, dans le contexte d'un questionnement sur le remplacement d'un véhicule, il est plus probable que la durée de détention soit connue. +`,valeur:"(voiture . prix d'achat - valeur résiduelle) / voiture . durée de détention totale"},"coûts . coûts de possession . achat amorti . valeur résiduelle":{titre:"Valeur résiduelle du véhicule à la revente",description:`Prix estimé de revente de votre voiture à la fin de son utilisation, +permettant ainsi d'amortir uniquement la différence entre le prix +d'achat et la valeur résiduelle. +`,valeur:"voiture . prix d'achat * décote",contexte:{"décote . durée décote":"voiture . durée de détention totale"}},"coûts . coûts de possession . certificat d'immatriculation amorti":{titre:"Coût annuel du certificat d'immatriculation",valeur:"certificat d'immatriculation / voiture . durée de détention totale"},"coûts . coûts de possession . certificat d'immatriculation":{titre:"Coût du certificat d'immatriculation (ex-carte grise)",note:`En attendant la remise en service du [simulateur de +l'État](https://www.service-public.fr/simulateur/calcul/cout-certificat-immatriculation), +nous utilisons la règle récupérée du modèle de +[Futur.eco](https://futur.eco/documentation/voyage/voiture/carte-grise/immatriculation). + +### Améliorations futur + +A terme, il serait intéressant d'utiliser l'API du simulateur pour +récupérer et calculer le coût moyen du certificat d'immatriculation en +fonction du type de véhicule et si il est d'occasion. +`,variations:[{si:"voiture . motorisation = 'électrique'",alors:"15 €"},{sinon:"300 €"}]},"coûts . coûts d'utilisation":{titre:"Coûts d'utilisation annuels",description:`Ensemble des coûts liés à l'utilisation d'une voiture et qui peuvent par +conséquent, être pris en compte dans le calcul des coûts d'une voiture +louée ou partagée. +`,unité:"€/an",somme:["consommation","stationnement","péage","contraventions","permis de conduire"]},"coûts . coûts d'utilisation . consommation":{titre:"Coût de la consommation annuelle",valeur:"consommation au km * usage . km annuels"},"coûts . coûts d'utilisation . consommation . consommation au km":{titre:"Coût de la consommation au km",unité:"€/km",note:`Pour les voitures hybrides nous faisons la même hypothèse que pour la +note d'analyse [_Voiture électrique : à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie. +`,variations:[{si:"voiture . motorisation = 'électrique'",alors:"électrique"},{si:"voiture . motorisation = 'thermique'",alors:"thermique"},{si:"voiture . motorisation = 'hybride'",alors:"hybride"}]},"coûts . coûts d'utilisation . consommation . consommation au km . thermique":{unité:"€/km",valeur:"(voiture . thermique . consommation carburant * voiture . thermique . prix carburant) / 100"},"coûts . coûts d'utilisation . consommation . consommation au km . électrique":{unité:"€/km",valeur:"(voiture . électrique . consommation électricité * voiture . électrique . prix kWh) / 100"},"coûts . coûts d'utilisation . consommation . consommation au km . hybride":{unité:"€/km",note:`Pour les voitures hybrides nous faisons la même hypothèse que pour la +note d'analyse [_Voiture électrique : à quel coût +?_](https://www.strategie.gouv.fr/sites/strategie.gouv.fr/files/atoms/files/fs-2022-na-115-voiture_electrique-annexe_methodo-novembre.pdf) +de France Stratégie. +`,somme:["consommation au km . thermique * 75 %","consommation au km . électrique * 25 %"]},"coûts . coûts d'utilisation . stationnement":{question:"Combien coûte le stationnement de votre voiture ?",description:`Renseignez le coût annuel associé au stationnement de votre voiture +(parking, garage, place payante, etc...). +`,"par défaut":"50 €/mois",plancher:0,unité:"€/an",note:`Valeur par défaut basée sur le [baromètre de +Yespark](https://www.yespark.fr/prix-parking?k=car). + +### Pistes d'amélioration + +Peut de données sont disponibles sur le coût moyen qu'un.e conducteurice +dépense pour le stationnement de sa voiture. Il serait intéressant de +trouver des informations plus précises. + +_A priori_, le coût de stationnement peut être plus élevé pour une +voiture électrique souhaitant bénéficier d'une borne de recharge, mais +nous n'avons pas encore de données pour le confirmer. +`},"coûts . coûts d'utilisation . péage":{titre:"Coût annuel lié aux péages",question:"Combien payez-vous en moyenne pour les péages ?","par défaut":{valeur:"estimé",arrondi:"oui"},plancher:0,unité:"€/an"},"coûts . coûts d'utilisation . péage . estimé":{titre:"Coût annuel estimé des péages",produit:["prix au km","usage . km annuels","usage . km annuels . part autoroute"]},"coûts . coûts d'utilisation . péage . prix au km":{titre:"Prix moyen du péage au km",note:`Valeur moyenne calculée à l'aide du script +[\`cout-autoroute.js\`](https://github.com/betagouv/publicodes-voiture/blob/main/scripts/cout-autoroute.js) +utilisant lui-même les données de [France +Infos](https://www.francetvinfo.fr/economie/automobile/infographies-prix-des-peages-visualisez-l-augmentation-des-tarifs-en-2023-autoroute-par-autoroute_5917970.html) +comparant l'évolution des tarifs des autoroutes entre 2022 et 2023. +`,valeur:"0.17194424757025703 €/km"},"coûts . coûts d'utilisation . contraventions":{question:"Combien payez-vous en moyenne pour les contraventions ?",description:`Il s'agit ici de toutes les contraventions qui surviennent : parking, +vitesse, ivresse, feu cassé, stop grillé, etc. + +Bien sûr, le respect du code de la route varie énormément d'une personne à +l'autre, à vous d'estimer la votre. +`,"par défaut":{valeur:"recettes annuelles 2022 / parc français 2022",arrondi:"oui"},unité:"€/an",plancher:0,note:`Cette question n'est pas évidente, mais elle est néanmoins non négligeable. +Les recettes des amendes diverses de circulation [ont atteint 1,8 milliards +d'euros en +[2022](https://www.ccomptes.fr/system/files/2023-04/NEB-2022-Controle-circulation-et-stationnement-routiers.pdf?page=15), +dont 1 milliard pour les seuls radars (excès de vitesse). Ce qui donne 46€ +par voiture et par an ! + +### Source + +Règle récupérée du modèle de calcul de [futur.eco](https://futur.eco/cout-voiture). + +### Piste d'amélioration + +Idéalement, il faudrait trouver le montant moyen payé par français par an. +`},"coûts . coûts d'utilisation . contraventions . recettes annuelles 2022":{description:`Montant prévisionnel des recettes des amendes en circulation en 2022 +selon un [rapport de la Cour des +comptes](https://www.ccomptes.fr/system/files/2023-04/NEB-2022-Controle-circulation-et-stationnement-routiers.pdf?page=15) +`,valeur:"1784 millions de voiture.€/an"},"coûts . coûts d'utilisation . contraventions . parc français 2022":{description:`Nombre de voiture en circulation en France au 1er janvier 2022 selon le +[SDES](https://www.statistiques.developpement-durable.gouv.fr/387-millions-de-voitures-en-circulation-en-france-au-1er-janvier-2022). +`,valeur:"38.7 millions de voiture"},"coûts . coûts d'utilisation . permis de conduire":{unité:"€/an",note:`### Source + +Règle récupérée du modèle de [futur.eco](https://futur.eco/cout-voiture). +`,valeur:"coût d'obtention / durée d'utilisation"},"coûts . coûts d'utilisation . permis de conduire . durée d'utilisation":{valeur:"durée de vie en bonne santé - âge d'obtention"},"coûts . coûts d'utilisation . permis de conduire . âge d'obtention":{valeur:"19 an"},"coûts . coûts d'utilisation . permis de conduire . durée de vie en bonne santé":{note:`### Source +- [_Espérance de vie en bonne santé : 67 ans pour les femmes, 65,6 ans + pour les hommes_ + (vie-publique.fr)](https://www.vie-publique.fr/en-bref/288403-esperance-de-vie-en-bonne-sante-67-ans-femmes-656-ans-hommes) +`,valeur:"66 an"},"coûts . coûts d'utilisation . permis de conduire . coût d'obtention":{description:`Sans conducteur avec permis, pas de km parcourus en voiture individuelle +! + +Bien sûr, on peut se dire "Non mais tous les Français passent le permis +de toutes façon". Certes, une majorité le passe, mais avec le même +raisonnement, on prétend que tous les Français ont une voiture de toute +façon... et on en revient à un coût totalement sous-estimé. +`,note:`### Source + +Le prix est tiré d'une [étude de l'UFC-Que Choisir de +2016](https://www.bfmtv.com/auto/combien-coute-le-permis-de-conduire-en-france_AV-202303270437.html) +qui semble rester encore réaliste selon +[BFMTV](https://www.bfmtv.com/auto/combien-coute-le-permis-de-conduire-en-france_AV-202303270437.html). +`,valeur:"1804 €"},commun:k_,"ngc . transport":null,"ngc . transport . voiture . thermique":null,"ngc . transport . voiture . électrique":null,"ngc . logement . électricité":null,"ngc . logement":null,"ngc . logement . électricité . photovoltaique":null,"ngc . logement . électricité . réseau":null,"ngc . logement . électricité . photovoltaique . production estimée via la puissance installée":null,"ngc . parc français":null,"ngc . logement . chauffage":null,"ngc . parc français . chauffage":null,"ngc . commun":null,"ngc . empreinte branche":null,"ngc . transport . voiture . barème construction . batterie":null,"ngc . logement . chauffage . électricité":null,"ngc . logement . chauffage . PAC":null,"ngc . logement . chauffage . gaz":null,"ngc . logement . chauffage . réseau de chaleur":null,"ngc . logement . chauffage . bouteille gaz":null,"ngc . logement . chauffage . citerne propane":null,"ngc . logement . chauffage . fioul":null,"ngc . logement . chauffage . bois":null},S_=new Ek(E_);console.log("Engine instantiated");const rs="/publicodes-voiture",dc="empreinte";function C_(){const e=$C()["*"],{current:t}=O.useRef({Link:_0,Text:({children:n})=>f.jsx(gy,{children:n})});return console.log(`Rendering rule ${e??dc}`),f.jsx("div",{children:f.jsx(rC,{documentationPath:`${rs}/doc`,rulePath:e??dc,searchBar:!0,engine:S_,renderers:t,language:"fr",npmPackage:"publicodes-voiture"})})}function N_(){return f.jsxs("div",{children:[f.jsx("h1",{children:"Documentation"}),f.jsx("ul",{children:f.jsx("li",{children:f.jsx(_0,{to:`${rs}/doc/${dc}`,children:"Accéder à la documentation"})})})]})}function P_(){return f.jsx("div",{className:"App",children:f.jsxs(XC,{children:[f.jsx(Zu,{path:`${rs}/`,element:f.jsx(N_,{})}),f.jsx(Zu,{path:`${rs}/doc/*`,element:f.jsx(C_,{})})]})})}const j_=Dl.createRoot(document.getElementById("root"));j_.render(f.jsx(gt.StrictMode,{children:f.jsx(i2,{children:f.jsx(P_,{})})}));export{bd as D,fn as R,ee as a,f as j,O as r,yn as u}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..3f22c6f --- /dev/null +++ b/index.html @@ -0,0 +1,49 @@ + + + + + + + + + + publicodes-voiture - Documentation + + + + + +
+ +