// ==UserScript== // @name bangumi wiki 批量更新工具 // @namespace http://tampermonkey.net/ // @version 1.1.0 // @description 支持两种提交方式,可在设置页面选择,支持编辑Wcode、标签和系列状态 // @author You // @match https://next.bgm.tv/ // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM.xmlHttpRequest // @grant GM_deleteValue // @grant GM_openInTab // @connect bgm.tv // @connect github.com // @connect api.github.com // @license MIT // ==/UserScript== "use strict";(()=>{var _m=Object.create;var Kf=Object.defineProperty;var $m=Object.getOwnPropertyDescriptor;var eg=Object.getOwnPropertyNames;var tg=Object.getPrototypeOf,rg=Object.prototype.hasOwnProperty;var og=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}};var ig=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of eg(e))!rg.call(r,i)&&i!==t&&Kf(r,i,{get:()=>e[i],enumerable:!(o=$m(e,i))||o.enumerable});return r};var sg=(r,e,t)=>(t=r!=null?_m(tg(r)):{},ig(e||!r||!r.__esModule?Kf(t,"default",{value:r,enumerable:!0}):t,r));var ym=og((zf,Uf)=>{((r,e)=>{typeof define=="function"&&define.amd?define([],e):typeof Uf=="object"&&typeof zf<"u"?Uf.exports=e():r.Papa=e()})(zf,function r(){var e=typeof self<"u"?self:typeof window<"u"?window:e!==void 0?e:{},t=!e.document&&!!e.postMessage,o=e.IS_PAPA_WORKER||!1,i={},s=0,n={};function a(x){return x.charCodeAt(0)===65279?x.slice(1):x}function l(x){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(g){var C=w(g);C.chunkSize=parseInt(C.chunkSize),g.step||g.chunk||(C.chunkSize=null),this._handle=new d(C),(this._handle.streamer=this)._config=C}.call(this,x),this.parseChunk=function(g,C){var M=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0=this._config.preview),o)e.postMessage({results:B,workerId:n.WORKER_ID,finished:M});else if(k(this._config.chunk)&&!C){if(this._config.chunk(B,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=B=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(B.data),this._completeResults.errors=this._completeResults.errors.concat(B.errors),this._completeResults.meta=B.meta),this._completed||!M||!k(this._config.complete)||B&&B.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),M||B&&B.meta.paused||this._nextChunk(),B}this._halted=!0},this._sendError=function(g){k(this._config.error)?this._config.error(g):o&&this._config.error&&e.postMessage({workerId:n.WORKER_ID,error:g,finished:!1})}}function f(x){var g;(x=x||{}).chunkSize||(x.chunkSize=n.RemoteChunkSize),l.call(this,x),this._nextChunk=t?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(C){this._input=C,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(g=new XMLHttpRequest,this._config.withCredentials&&(g.withCredentials=this._config.withCredentials),t||(g.onload=A(this._chunkLoaded,this),g.onerror=A(this._chunkError,this)),g.ontimeout=A(this._chunkTimeout,this),g.open(this._config.downloadRequestBody?"POST":"GET",this._input,!t),this._config.downloadTimeout&&!t&&(g.timeout=this._config.downloadTimeout),this._config.downloadRequestHeaders){var C,M=this._config.downloadRequestHeaders;for(C in M)g.setRequestHeader(C,M[C])}var B;this._config.chunkSize&&(B=this._start+this._config.chunkSize-1,g.setRequestHeader("Range","bytes="+this._start+"-"+B));try{g.send(this._config.downloadRequestBody)}catch(D){this._chunkError(D.message)}t&&g.status===0&&this._chunkError()}},this._chunkLoaded=function(){g.readyState===4&&(g.status<200||400<=g.status?this._chunkError():(this._start+=this._config.chunkSize||g.responseText.length,this._finished=!this._config.chunkSize||this._start>=(C=>(C=C.getResponseHeader("Content-Range"))!==null?parseInt(C.substring(C.lastIndexOf("/")+1)):-1)(g),this.parseChunk(g.responseText)))},this._chunkError=function(C){C=g.statusText||C,this._sendError(new Error(C))},this._chunkTimeout=function(){this._chunkError("Request timed out after "+this._config.downloadTimeout+"ms")}}function u(x){(x=x||{}).chunkSize||(x.chunkSize=n.LocalChunkSize),l.call(this,x);var g,C,M=typeof FileReader<"u";this.stream=function(B){this._input=B,C=B.slice||B.webkitSlice||B.mozSlice,M?((g=new FileReader).onload=A(this._chunkLoaded,this),g.onerror=A(this._chunkError,this)):g=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(B.target.result)},this._chunkError=function(){this._sendError(g.error)}}function c(x){var g;l.call(this,x=x||{}),this.stream=function(C){return g=C,this._nextChunk()},this._nextChunk=function(){var C,M;if(!this._finished)return C=this._config.chunkSize,g=C?(M=g.substring(0,C),g.substring(C)):(M=g,""),this._finished=!g,this.parseChunk(M)}}function h(x){l.call(this,x=x||{});var g=[],C=!0,M=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(B){this._input=B,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){M&&g.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),g.length?this.parseChunk(g.shift()):C=!0},this._streamData=A(function(B){try{g.push(typeof B=="string"?B:B.toString(this._config.encoding)),C&&(C=!1,this._checkIsFinished(),this.parseChunk(g.shift()))}catch(D){this._streamError(D)}},this),this._streamError=A(function(B){this._streamCleanUp(),this._sendError(B)},this),this._streamEnd=A(function(){this._streamCleanUp(),M=!0,this._streamData("")},this),this._streamCleanUp=A(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function d(x){var g,C,M,B,D=Math.pow(2,53),E=-D,z=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,W=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,U=this,K=0,F=0,ne=!1,N=!1,V=[],H={data:[],errors:[],meta:{}};function ae(Q){return x.skipEmptyLines==="greedy"?Q.join("").trim()==="":Q.length===1&&Q[0].length===0}function Z(){if(H&&M&&(be("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+n.DefaultDelimiter+"'"),M=!1),x.skipEmptyLines&&(H.data=H.data.filter(function(ue){return!ae(ue)})),te()){let ue=function(Be){V.push(Be)};var J=ue;if(H)if(Array.isArray(H.data[0])){for(var Q=0;te()&&Q(ye=>(x.dynamicTypingFunction&&x.dynamicTyping[ye]===void 0&&(x.dynamicTyping[ye]=x.dynamicTypingFunction(ye)),(x.dynamicTyping[ye]||x.dynamicTyping)===!0))(ee)?le==="true"||le==="TRUE"||le!=="false"&&le!=="FALSE"&&((ye=>{if(z.test(ye)&&(ye=parseFloat(ye),E=V.length?"__parsed_extra":V[ie]:X,$=x.transform?x.transform($,X):$);X==="__parsed_extra"?(he[X]=he[X]||[],he[X].push($)):he[X]=$}return x.header&&(ie>V.length?be("FieldMismatch","TooManyFields","Too many fields: expected "+V.length+" fields but parsed "+ie,F+Be):iex.preview?C.abort():(H.data=H.data[0],B(H,U))))}),this.parse=function(Q,j,me){var J=x.quoteChar||'"',J=(x.newline||(x.newline=this.guessLineEndings(Q,J)),M=!1,x.delimiter?k(x.delimiter)&&(x.delimiter=x.delimiter(Q),H.meta.delimiter=x.delimiter):((J=((ue,Be,he,ie,X)=>{var $,ee,le,ye;X=X||[","," ","|",";",n.RECORD_SEP,n.UNIT_SEP];for(var Or=0;Or=me.length/2?`\r `:"\r"}}function p(x){return x.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function m(x){var g=(x=x||{}).delimiter,C=x.newline,M=x.comments,B=x.step,D=x.preview,E=x.fastMode,z=null,W=!1,U=x.quoteChar==null?'"':x.quoteChar,K=U;if(x.escapeChar!==void 0&&(K=x.escapeChar),(typeof g!="string"||-1=D)return Le(!0);break}me.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:j.length,index:F}),ee++}}else if(M&&J.length===0&&N.substring(F,F+be)===M){if(X===-1)return Le();F=X+te,X=N.indexOf(C,F),ie=N.indexOf(g,F)}else if(ie!==-1&&(ie=D)return Le(!0)}return wt();function ye(De){j.push(De),ue=F}function Or(De){var Ge=0;return Ge=De!==-1&&(De=N.substring(ee+1,De))&&De.trim()===""?De.length:Ge}function wt(De){return H||(De===void 0&&(De=N.substring(F)),J.push(De),F=ae,ye(J),Q&&vt()),Le()}function ko(De){F=De,ye(J),J=[],X=N.indexOf(C,F)}function Le(De){if(x.header&&!V&&j.length&&!W){var Ge=j[0],Ot=Object.create(null),Ln=new Set(Ge);let jf=!1;for(let Rr=0;Rr{var M;return!!n.WORKERS_SUPPORTED&&(M=(()=>{var B=e.URL||e.webkitURL||null,D=r.toString();return n.BLOB_URL||(n.BLOB_URL=B.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",D,")();"],{type:"text/javascript"})))})(),(M=new e.Worker(M)).onmessage=b,M.id=s++,i[M.id]=M)})()).userStep=g.step,C.userChunk=g.chunk,C.userComplete=g.complete,C.userError=g.error,g.step=k(g.step),g.chunk=k(g.chunk),g.complete=k(g.complete),g.error=k(g.error),delete g.worker,C.postMessage({input:x,config:g,workerId:C.id})},n.unparse=function(x,g){var C=!1,M=!0,B=",",D=`\r `,E='"',z=E+E,W=!1,U=null,K=!1,F=((()=>{if(typeof g=="object"){if(typeof g.delimiter!="string"||n.BAD_DELIMITERS.filter(function(V){return g.delimiter.indexOf(V)!==-1}).length||(B=g.delimiter),typeof g.quotes!="boolean"&&typeof g.quotes!="function"&&!Array.isArray(g.quotes)||(C=g.quotes),typeof g.skipEmptyLines!="boolean"&&typeof g.skipEmptyLines!="string"||(W=g.skipEmptyLines),typeof g.newline=="string"&&(D=g.newline),typeof g.quoteChar=="string"&&(E=g.quoteChar,z=E+E),typeof g.header=="boolean"&&(M=g.header),Array.isArray(g.columns)){if(g.columns.length===0)throw new Error("Option columns is empty");U=g.columns}g.escapeChar!==void 0&&(z=g.escapeChar+E),g.escapeFormulae instanceof RegExp?K=g.escapeFormulae:typeof g.escapeFormulae=="boolean"&&g.escapeFormulae&&(K=/^[=+\-@\t\r].*$/)}})(),new RegExp(p(E),"g"));if(typeof x=="string"&&(x=JSON.parse(x)),Array.isArray(x)){if(!x.length||Array.isArray(x[0]))return ne(null,x,W);if(typeof x[0]=="object")return ne(U||Object.keys(x[0]),x,W)}else if(typeof x=="object")return typeof x.data=="string"&&(x.data=JSON.parse(x.data)),Array.isArray(x.data)&&(x.fields||(x.fields=x.meta&&x.meta.fields||U),x.fields||(x.fields=Array.isArray(x.data[0])?x.fields:typeof x.data[0]=="object"?Object.keys(x.data[0]):[]),Array.isArray(x.data[0])||typeof x.data[0]=="object"||(x.data=[x.data])),ne(x.fields||[],x.data||[],W);throw new Error("Unable to serialize unrecognized input");function ne(V,H,ae){var Z="",te=(typeof V=="string"&&(V=JSON.parse(V)),typeof H=="string"&&(H=JSON.parse(H)),Array.isArray(V)&&0{for(var j=0;j0?r/e*100:0;o&&(o.style.width=`${i}%`)}function Jf(){let r=document.getElementById("bgm-tool-progress");r&&(r.style.display="none")}function nr(r){let e=document.getElementById("bgm-loading-overlay"),t=document.getElementById("loading-text");t&&(t.textContent=r),e&&e.classList.add("active")}function qe(){let r=document.getElementById("bgm-loading-overlay");r&&r.classList.remove("active")}function je(r){let e=document.getElementById("bgm-status-message");e&&(e.classList.remove("show"),e.offsetWidth,e.textContent=r,e.classList.add("show"),setTimeout(()=>{e.classList.remove("show")},3e3))}function Xf(){let r=document.getElementById("bgm-status-message");r&&r.classList.remove("show")}var Mo=/mac|iphone|ipad|ipod/i.test(navigator.userAgentData?.platform||navigator.platform||navigator.userAgent||""),Hr=Mo?"⌘↵":"Ctrl↵",Yf=`焦点在批量更新面板时按 ${Hr} 直接确认更新`,Bo="Shift↵",wi=`焦点在批量更新面板时按 ${Bo} 直接跳过`,Pn=`焦点在批量更新面板时按 ${Hr} 直接重试`;function Zf(r){let e=/[.*+?^${}()|[\]\\]/g;return r.replace(e,"\\$&")}function _f(r,e){if(r.length!==e.length)return!1;for(let t=0;te}function Rt(){let r=y;r.currentSubjectData=null,r.currentItemId=null,r.currentWcode=null,r.currentTags=null,r.currentSeries=null,r.currentCommitMessage=null,r.currentFieldUpdates=null,r.currentTagUpdates=null,r.currentSeriesUpdate=null}var Rn=[],ou=[];(()=>{let r="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(r=ou[o])e=o+1;else return!0;if(e==t)return!1}}function eu(r){return r>=127462&&r<=127487}var tu=8205;function iu(r,e,t=!0,o=!0){return(t?su:ag)(r,e,o)}function su(r,e,t){if(e==r.length)return e;e&&nu(r.charCodeAt(e))&&au(r.charCodeAt(e-1))&&e--;let o=On(r,e);for(e+=ru(o);e=0&&eu(On(r,n));)s++,n-=2;if(s%2==0)break;e+=2}else break}return e}function ag(r,e,t){for(;e>1;){let o=su(r,e-2,t);if(o=56320&&r<57344}function au(r){return r>=55296&&r<56320}function ru(r){return r<65536?1:2}var _=class r{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,o){[e,t]=Vr(this,e,t);let i=[];return this.decompose(0,e,i,2),o.length&&o.decompose(0,o.length,i,3),this.decompose(t,this.length,i,1),Nr.from(i,this.length-(t-e)+o.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Vr(this,e,t);let o=[];return this.decompose(e,t,o,0),Nr.from(o,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),o=this.length-this.scanIdentical(e,-1),i=new ur(this),s=new ur(e);for(let n=t,a=t;;){if(i.next(n),s.next(n),n=0,i.lineBreak!=s.lineBreak||i.done!=s.done||i.value!=s.value)return!1;if(a+=i.value.length,i.done||a>=o)return!0}}iter(e=1){return new ur(this,e)}iterRange(e,t=this.length){return new Si(this,e,t)}iterLines(e,t){let o;if(e==null)o=this.iter();else{t==null&&(t=this.lines+1);let i=this.line(e).from;o=this.iterRange(i,Math.max(i,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new Mi(o)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?r.empty:e.length<=32?new Ye(e):Nr.from(Ye.split(e,[]))}},Ye=class r extends _{constructor(e,t=lg(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,o,i){for(let s=0;;s++){let n=this.text[s],a=i+n.length;if((t?o:a)>=e)return new Fn(i,a,o,n);i=a+1,o++}}decompose(e,t,o,i){let s=e<=0&&t>=this.length?this:new r(lu(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(i&1){let n=o.pop(),a=Ai(s.text,n.text.slice(),0,s.length);if(a.length<=32)o.push(new r(a,n.length+s.length));else{let l=a.length>>1;o.push(new r(a.slice(0,l)),new r(a.slice(l)))}}else o.push(s)}replace(e,t,o){if(!(o instanceof r))return super.replace(e,t,o);[e,t]=Vr(this,e,t);let i=Ai(this.text,Ai(o.text,lu(this.text,0,e)),t),s=this.length+o.length-(t-e);return i.length<=32?new r(i,s):Nr.from(r.split(i,[]),s)}sliceString(e,t=this.length,o=` `){[e,t]=Vr(this,e,t);let i="";for(let s=0,n=0;s<=t&&ne&&n&&(i+=o),es&&(i+=a.slice(Math.max(0,e-s),t-s)),s=l+1}return i}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let o=[],i=-1;for(let s of e)o.push(s),i+=s.length+1,o.length==32&&(t.push(new r(o,i)),o=[],i=-1);return i>-1&&t.push(new r(o,i)),t}},Nr=class r extends _{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let o of e)this.lines+=o.lines}lineInner(e,t,o,i){for(let s=0;;s++){let n=this.children[s],a=i+n.length,l=o+n.lines-1;if((t?l:a)>=e)return n.lineInner(e,t,o,i);i=a+1,o=l+1}}decompose(e,t,o,i){for(let s=0,n=0;n<=t&&s=n){let f=i&((n<=e?1:0)|(l>=t?2:0));n>=e&&l<=t&&!f?o.push(a):a.decompose(e-n,t-n,o,f)}n=l+1}}replace(e,t,o){if([e,t]=Vr(this,e,t),o.lines=s&&t<=a){let l=n.replace(e-s,t-s,o),f=this.lines-n.lines+l.lines;if(l.lines>4&&l.lines>f>>6){let u=this.children.slice();return u[i]=l,new r(u,this.length-(t-e)+o.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,o)}sliceString(e,t=this.length,o=` `){[e,t]=Vr(this,e,t);let i="";for(let s=0,n=0;se&&s&&(i+=o),en&&(i+=a.sliceString(e-n,t-n,o)),n=l+1}return i}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof r))return 0;let o=0,[i,s,n,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;i+=t,s+=t){if(i==n||s==a)return o;let l=this.children[i],f=e.children[s];if(l!=f)return o+l.scanIdentical(f,t);o+=l.length+1}}static from(e,t=e.reduce((o,i)=>o+i.length+1,-1)){let o=0;for(let d of e)o+=d.lines;if(o<32){let d=[];for(let p of e)p.flatten(d);return new Ye(d,t)}let i=Math.max(32,o>>5),s=i<<1,n=i>>1,a=[],l=0,f=-1,u=[];function c(d){let p;if(d.lines>s&&d instanceof r)for(let m of d.children)c(m);else d.lines>n&&(l>n||!l)?(h(),a.push(d)):d instanceof Ye&&l&&(p=u[u.length-1])instanceof Ye&&d.lines+p.lines<=32?(l+=d.lines,f+=d.length+1,u[u.length-1]=new Ye(p.text.concat(d.text),p.length+1+d.length)):(l+d.lines>i&&h(),l+=d.lines,f+=d.length+1,u.push(d))}function h(){l!=0&&(a.push(u.length==1?u[0]:r.from(u,f)),f=-1,l=u.length=0)}for(let d of e)c(d);return h(),a.length==1?a[0]:new r(a,t)}};_.empty=new Ye([""],0);function lg(r){let e=-1;for(let t of r)e+=t.length+1;return e}function Ai(r,e,t=0,o=1e9){for(let i=0,s=0,n=!0;s=t&&(l>o&&(a=a.slice(0,o-i)),i0?1:(e instanceof Ye?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let o=this.nodes.length-1,i=this.nodes[o],s=this.offsets[o],n=s>>1,a=i instanceof Ye?i.text.length:i.children.length;if(n==(t>0?a:0)){if(o==0)return this.done=!0,this.value="",this;t>0&&this.offsets[o-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[o]+=t,e==0)return this.lineBreak=!0,this.value=` `,this;e--}else if(i instanceof Ye){let l=i.text[n+(t<0?-1:0)];if(this.offsets[o]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=i.children[n+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[o]+=t):(t<0&&this.offsets[o]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Ye?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Si=class{constructor(e,t,o){this.value="",this.done=!1,this.cursor=new ur(e,t>o?-1:1),this.pos=t>o?e.length:0,this.from=Math.min(t,o),this.to=Math.max(t,o)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let o=t<0?this.pos-this.from:this.to-this.pos;e>o&&(e=o),o-=e;let{value:i}=this.cursor.next(e);return this.pos+=(i.length+e)*t,this.value=i.length<=o?i:t<0?i.slice(i.length-o):i.slice(0,o),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Mi=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:o,value:i}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):o?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=i,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(_.prototype[Symbol.iterator]=function(){return this.iter()},ur.prototype[Symbol.iterator]=Si.prototype[Symbol.iterator]=Mi.prototype[Symbol.iterator]=function(){return this});var Fn=class{constructor(e,t,o,i){this.from=e,this.to=t,this.number=o,this.text=i}get length(){return this.to-this.from}};function Vr(r,e,t){return e=Math.max(0,Math.min(r.length,e)),[e,Math.max(e,Math.min(r.length,t))]}function ve(r,e,t=!0,o=!0){return iu(r,e,t,o)}function fg(r){return r>=56320&&r<57344}function ug(r){return r>=55296&&r<56320}function Po(r,e){let t=r.charCodeAt(e);if(!ug(t)||e+1==r.length)return t;let o=r.charCodeAt(e+1);return fg(o)?(t-55296<<10)+(o-56320)+65536:t}function du(r){return r<=65535?String.fromCharCode(r):(r-=65536,String.fromCharCode((r>>10)+55296,(r&1023)+56320))}function Li(r){return r<65536?1:2}var Nn=/\r\n?|\n/,Fe=(function(r){return r[r.Simple=0]="Simple",r[r.TrackDel=1]="TrackDel",r[r.TrackBefore=2]="TrackBefore",r[r.TrackAfter=3]="TrackAfter",r})(Fe||(Fe={})),Ht=class r{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return s+(e-i);s+=a}else{if(o!=Fe.Simple&&f>=e&&(o==Fe.TrackDel&&ie||o==Fe.TrackBefore&&ie))return null;if(f>e||f==e&&t<0&&!a)return e==i||t<0?s:s+l;s+=l}i=f}if(e>i)throw new RangeError(`Position ${e} is out of range for changeset of length ${i}`);return s}touchesRange(e,t=e){for(let o=0,i=0;o=0&&i<=t&&a>=e)return it?"cover":!0;i=a}return!1}toString(){let e="";for(let t=0;t=0?":"+i:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new r(e)}static create(e){return new r(e)}},Ee=class r extends Ht{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return zn(this,(t,o,i,s,n)=>e=e.replace(i,i+(o-t),n),!1),e}mapDesc(e,t=!1){return Un(this,e,t,!0)}invert(e){let t=this.sections.slice(),o=[];for(let i=0,s=0;i=0){t[i]=a,t[i+1]=n;let l=i>>1;for(;o.length0&&qt(o,t,s.text),s.forward(u),a+=u}let f=e[n++];for(;a>1].toJSON()))}return e}static of(e,t,o){let i=[],s=[],n=0,a=null;function l(u=!1){if(!u&&!i.length)return;nh||c<0||h>t)throw new RangeError(`Invalid change range ${c} to ${h} (in doc of length ${t})`);let p=d?typeof d=="string"?_.of(d.split(o||Nn)):d:_.empty,m=p.length;if(c==h&&m==0)return;cn&&Oe(i,c-n,-1),Oe(i,h-c,m),qt(s,i,p),n=h}}return f(e),l(!a),a}static empty(e){return new r(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],o=[];for(let i=0;ia&&typeof n!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;o.length=0&&t<=0&&t==r[i+1]?r[i]+=e:i>=0&&e==0&&r[i]==0?r[i+1]+=t:o?(r[i]+=e,r[i+1]+=t):r.push(e,t)}function qt(r,e,t){if(t.length==0)return;let o=e.length-2>>1;if(o>1])),!(t||n==r.sections.length||r.sections[n+1]<0);)a=r.sections[n++],l=r.sections[n++];e(i,f,s,u,c),i=f,s=u}}}function Un(r,e,t,o=!1){let i=[],s=o?[]:null,n=new cr(r),a=new cr(e);for(let l=-1;;){if(n.done&&a.len||a.done&&n.len)throw new Error("Mismatched change set lengths");if(n.ins==-1&&a.ins==-1){let f=Math.min(n.len,a.len);Oe(i,f,-1),n.forward(f),a.forward(f)}else if(a.ins>=0&&(n.ins<0||l==n.i||n.off==0&&(a.len=0&&l=0){let f=0,u=n.len;for(;u;)if(a.ins==-1){let c=Math.min(u,a.len);f+=c,u-=c,a.forward(c)}else if(a.ins==0&&a.lenl||n.ins>=0&&n.len>l)&&(a||o.length>f),s.forward2(l),n.forward(l)}}}}var cr=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?_.empty:e[t]}textBit(e){let{inserted:t}=this.set,o=this.i-2>>1;return o>=t.length&&!e?_.empty:t[o].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},ar=class r{constructor(e,t,o,i){this.from=e,this.to=t,this.flags=o,this.goalColumn=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let o,i;return this.empty?o=i=e.mapPos(this.from,t):(o=e.mapPos(this.from,1),i=e.mapPos(this.to,-1)),o==this.from&&i==this.to?this:new r(o,i,this.flags,this.goalColumn)}extend(e,t=e,o=0){if(e<=this.anchor&&t>=this.anchor)return T.range(e,t,void 0,void 0,o);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return T.range(this.anchor,i,void 0,void 0,o)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return T.range(e.anchor,e.head)}static create(e,t,o,i){return new r(e,t,o,i)}},T=class r{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:r.create(this.ranges.map(o=>o.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let o=0;oe.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new r(e.ranges.map(t=>ar.fromJSON(t)),e.main)}static single(e,t=e){return new r([r.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let o=0,i=0;ii.from-s.from),t=e.indexOf(o);for(let i=1;is.head?r.range(l,a):r.range(a,l))}}return new r(e,t)}};function mu(r,e){for(let t of r.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var Yn=0,R=class r{constructor(e,t,o,i,s){this.combine=e,this.compareInput=t,this.compare=o,this.isStatic=i,this.id=Yn++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new r(e.combine||(t=>t),e.compareInput||((t,o)=>t===o),e.compare||(e.combine?(t,o)=>t===o:Zn),!!e.static,e.enables)}of(e){return new zr([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new zr(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new zr(e,this,2,t)}from(e,t){return t||(t=o=>o),this.compute([e],o=>t(o.field(e)))}};function Zn(r,e){return r==e||r.length==e.length&&r.every((t,o)=>t===e[o])}var zr=class{constructor(e,t,o,i){this.dependencies=e,this.facet=t,this.type=o,this.value=i,this.id=Yn++}dynamicSlot(e){var t;let o=this.value,i=this.facet.compareInput,s=this.id,n=e[s]>>1,a=this.type==2,l=!1,f=!1,u=[];for(let c of this.dependencies)c=="doc"?l=!0:c=="selection"?f=!0:(((t=e[c.id])!==null&&t!==void 0?t:1)&1)==0&&u.push(e[c.id]);return{create(c){return c.values[n]=o(c),1},update(c,h){if(l&&h.docChanged||f&&(h.docChanged||h.selection)||Vn(c,u)){let d=o(c);if(a?!fu(d,c.values[n],i):!i(d,c.values[n]))return c.values[n]=d,1}return 0},reconfigure:(c,h)=>{let d,p=h.config.address[s];if(p!=null){let m=Ti(h,p);if(this.dependencies.every(b=>b instanceof R?h.facet(b)===c.facet(b):b instanceof pe?h.field(b,!1)==c.field(b,!1):!0)||(a?fu(d=o(c),m,i):i(d=o(c),m)))return c.values[n]=m,0}else d=o(c);return c.values[n]=d,1}}}get extension(){return this}};function fu(r,e,t){if(r.length!=e.length)return!1;for(let o=0;or[l.id]),i=t.map(l=>l.type),s=o.filter(l=>!(l&1)),n=r[e.id]>>1;function a(l){let f=[];for(let u=0;uo===i),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(vi).find(o=>o.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:o=>(o.values[t]=this.create(o),1),update:(o,i)=>{let s=o.values[t],n=this.updateF(s,i);return this.compareF(s,n)?0:(o.values[t]=n,1)},reconfigure:(o,i)=>{let s=o.facet(vi),n=i.facet(vi),a;return(a=s.find(l=>l.field==this))&&a!=n.find(l=>l.field==this)?(o.values[t]=a.create(o),1):i.config.address[this.id]!=null?(o.values[t]=i.field(this),0):(o.values[t]=this.create(o),1)}}}init(e){return[this,vi.of({field:this,create:e})]}get extension(){return this}},lr={lowest:4,low:3,default:2,high:1,highest:0};function Do(r){return e=>new Bi(e,r)}var Ze={highest:Do(lr.highest),high:Do(lr.high),default:Do(lr.default),low:Do(lr.low),lowest:Do(lr.lowest)},Bi=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Ft=class r{of(e){return new Eo(this,e)}reconfigure(e){return r.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Eo=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Di=class r{constructor(e,t,o,i,s,n){for(this.base=e,this.compartments=t,this.dynamicSlots=o,this.address=i,this.staticValues=s,this.facets=n,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,o){let i=[],s=Object.create(null),n=new Map;for(let h of hg(e,t,n))h instanceof pe?i.push(h):(s[h.facet.id]||(s[h.facet.id]=[])).push(h);let a=Object.create(null),l=[],f=[];for(let h of i)a[h.id]=f.length<<1,f.push(d=>h.slot(d));let u=o?.config.facets;for(let h in s){let d=s[h],p=d[0].facet,m=u&&u[h]||[];if(d.every(b=>b.type==0))if(a[p.id]=l.length<<1|1,Zn(m,d))l.push(o.facet(p));else{let b=p.combine(d.map(v=>v.value));l.push(o&&p.compare(b,o.facet(p))?o.facet(p):b)}else{for(let b of d)b.type==0?(a[b.id]=l.length<<1|1,l.push(b.value)):(a[b.id]=f.length<<1,f.push(v=>b.dynamicSlot(v)));a[p.id]=f.length<<1,f.push(b=>cg(b,p,d))}}let c=f.map(h=>h(a));return new r(e,n,c,a,l,s)}};function hg(r,e,t){let o=[[],[],[],[],[]],i=new Map;function s(n,a){let l=i.get(n);if(l!=null){if(l<=a)return;let f=o[l].indexOf(n);f>-1&&o[l].splice(f,1),n instanceof Eo&&t.delete(n.compartment)}if(i.set(n,a),Array.isArray(n))for(let f of n)s(f,a);else if(n instanceof Eo){if(t.has(n.compartment))throw new RangeError("Duplicate use of compartment in extensions");let f=e.get(n.compartment)||n.inner;t.set(n.compartment,f),s(f,a)}else if(n instanceof Bi)s(n.inner,n.prec);else if(n instanceof pe)o[a].push(n),n.provides&&s(n.provides,a);else if(n instanceof zr)o[a].push(n),n.facet.extensions&&s(n.facet.extensions,lr.default);else{let f=n.extension;if(!f)throw new Error(`Unrecognized extension value in extension set (${n}).`);if(f==n)throw new Error(`Unrecognized extension value in extension set (${n}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(f,a)}}return s(r,lr.default),o.reduce((n,a)=>n.concat(a))}function To(r,e){if(e&1)return 2;let t=e>>1,o=r.status[t];if(o==4)throw new Error("Cyclic dependency between fields and/or facets");if(o&2)return o;r.status[t]=4;let i=r.computeSlot(r,r.config.dynamicSlots[t]);return r.status[t]=2|i}function Ti(r,e){return e&1?r.config.staticValues[e>>1]:r.values[e>>1]}var gu=R.define(),Wn=R.define({combine:r=>r.some(e=>e),static:!0}),xu=R.define({combine:r=>r.length?r[0]:void 0,static:!0}),bu=R.define(),yu=R.define(),wu=R.define(),vu=R.define({combine:r=>r.length?r[0]:!1}),rt=class{constructor(e,t){this.type=e,this.value=t}static define(){return new Gn}},Gn=class{of(e){return new rt(this,e)}},qn=class{constructor(e){this.map=e}of(e){return new q(this,e)}},q=class r{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new r(this.type,t)}is(e){return this.type==e}static define(e={}){return new qn(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let o=[];for(let i of e){let s=i.map(t);s&&o.push(s)}return o}};q.reconfigure=q.define();q.appendConfig=q.define();var Te=class r{constructor(e,t,o,i,s,n){this.startState=e,this.changes=t,this.selection=o,this.effects=i,this.annotations=s,this.scrollIntoView=n,this._doc=null,this._state=null,o&&mu(o,t.newLength),s.some(a=>a.type==r.time)||(this.annotations=s.concat(r.time.of(Date.now())))}static create(e,t,o,i,s,n){return new r(e,t,o,i,s,n)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(r.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};Te.time=rt.define();Te.userEvent=rt.define();Te.addToHistory=rt.define();Te.remote=rt.define();function dg(r,e){let t=[];for(let o=0,i=0;;){let s,n;if(o=r[o]))s=r[o++],n=r[o++];else if(i=0;i--){let s=o[i](r);s instanceof Te?r=s:Array.isArray(s)&&s.length==1&&s[0]instanceof Te?r=s[0]:r=ku(e,Ur(s),!1)}return r}function mg(r){let e=r.startState,t=e.facet(wu),o=r;for(let i=t.length-1;i>=0;i--){let s=t[i](r);s&&Object.keys(s).length&&(o=Cu(o,jn(e,s,r.changes.newLength),!0))}return o==r?r:Te.create(e,r.changes,r.selection,o.effects,o.annotations,o.scrollIntoView)}var gg=[];function Ur(r){return r==null?gg:Array.isArray(r)?r:[r]}var Ce=(function(r){return r[r.Word=0]="Word",r[r.Space=1]="Space",r[r.Other=2]="Other",r})(Ce||(Ce={})),xg=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Qn;try{Qn=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function bg(r){if(Qn)return Qn.test(r);for(let e=0;e"€"&&(t.toUpperCase()!=t.toLowerCase()||xg.test(t)))return!0}return!1}function yg(r){return e=>{if(!/\S/.test(e))return Ce.Space;if(bg(e))return Ce.Word;for(let t=0;t-1)return Ce.Word;return Ce.Other}}var se=class r{constructor(e,t,o,i,s,n){this.config=e,this.doc=t,this.selection=o,this.values=i,this.status=e.statusTemplate.slice(),this.computeSlot=s,n&&(n._state=this);for(let a=0;ai.set(f,l)),t=null),i.set(a.value.compartment,a.value.extension)):a.is(q.reconfigure)?(t=null,o=a.value):a.is(q.appendConfig)&&(t=null,o=Ur(o).concat(a.value));let s;t?s=e.startState.values.slice():(t=Di.resolve(o,i,this),s=new r(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(l,f)=>f.reconfigure(l,this),null).values);let n=e.startState.facet(Wn)?e.newSelection:e.newSelection.asSingle();new r(t,e.newDoc,n,s,(a,l)=>l.update(a,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:T.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,o=e(t.ranges[0]),i=this.changes(o.changes),s=[o.range],n=Ur(o.effects);for(let a=1;an.spec.fromJSON(a,l)))}}return r.create({doc:e.doc,selection:T.fromJSON(e.selection),extensions:t.extensions?i.concat([t.extensions]):i})}static create(e={}){let t=Di.resolve(e.extensions||[],new Map),o=e.doc instanceof _?e.doc:_.of((e.doc||"").split(t.staticFacet(r.lineSeparator)||Nn)),i=e.selection?e.selection instanceof T?e.selection:T.single(e.selection.anchor,e.selection.head):T.single(0);return mu(i,o.length),t.staticFacet(Wn)||(i=i.asSingle()),new r(t,o,i,t.dynamicSlots.map(()=>null),(s,n)=>n.create(s),null)}get tabSize(){return this.facet(r.tabSize)}get lineBreak(){return this.facet(r.lineSeparator)||` `}get readOnly(){return this.facet(vu)}phrase(e,...t){for(let o of this.facet(r.phrases))if(Object.prototype.hasOwnProperty.call(o,e)){e=o[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(o,i)=>{if(i=="$")return"$";let s=+(i||1);return!s||s>t.length?o:t[s-1]})),e}languageDataAt(e,t,o=-1){let i=[];for(let s of this.facet(gu))for(let n of s(this,t,o))Object.prototype.hasOwnProperty.call(n,e)&&i.push(n[e]);return i}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return yg(t.length?t[0]:"")}wordAt(e){let{text:t,from:o,length:i}=this.doc.lineAt(e),s=this.charCategorizer(e),n=e-o,a=e-o;for(;n>0;){let l=ve(t,n,!1);if(s(t.slice(l,n))!=Ce.Word)break;n=l}for(;ar.length?r[0]:4});se.lineSeparator=xu;se.readOnly=vu;se.phrases=R.define({compare(r,e){let t=Object.keys(r),o=Object.keys(e);return t.length==o.length&&t.every(i=>r[i]==e[i])}});se.languageData=gu;se.changeFilter=bu;se.transactionFilter=yu;se.transactionExtender=wu;Ft.reconfigure=q.define();function ft(r,e,t={}){let o={};for(let i of r)for(let s of Object.keys(i)){let n=i[s],a=o[s];if(a===void 0)o[s]=n;else if(!(a===n||n===void 0))if(Object.hasOwnProperty.call(t,s))o[s]=t[s](a,n);else throw new Error("Config merge conflict for field "+s)}for(let i in e)o[i]===void 0&&(o[i]=e[i]);return o}var kt=class{eq(e){return this==e}range(e,t=e){return Lo.create(e,t,this)}};kt.prototype.startSide=kt.prototype.endSide=0;kt.prototype.point=!1;kt.prototype.mapMode=Fe.TrackDel;function _n(r,e){return r==e||r.constructor==e.constructor&&r.eq(e)}var Lo=class r{constructor(e,t,o){this.from=e,this.to=t,this.value=o}static create(e,t,o){return new r(e,t,o)}};function Kn(r,e){return r.from-e.from||r.value.startSide-e.value.startSide}var Jn=class r{constructor(e,t,o,i){this.from=e,this.to=t,this.value=o,this.maxPoint=i}get length(){return Fr(this.to)}findIndex(e,t,o,i=0){let s=o?this.to:this.from;for(let n=i,a=s.length;;){if(n==a)return n;let l=n+a>>1,f=s[l]-e||(o?this.value[l].endSide:this.value[l].startSide)-t;if(l==n)return f>=0?n:a;f>=0?a=l:n=l+1}}between(e,t,o,i){for(let s=this.findIndex(t,-1e9,!0),n=this.findIndex(o,1e9,!1,s);sb||m==b&&h.startSide>0&&h.endSide<=0)continue;if(!((b-m||h.endSide-h.startSide)<0))if(f<0&&(f=m),h.point&&(u=Math.max(u,b-m)),(m-o||h.startSide-i)>=0)n.push(h),a.push(m-f),l.push(b-f),o=b,i=h.endSide;else{if(m==b)for(let v=n.length;v>0;v--){if((m-(l[v-1]+f)||h.startSide-n[v-1].endSide)>=0){n.splice(v,0,h),a.splice(v,0,m-f),l.splice(v,0,b-f);continue e}if((m-(a[v-1]+f)||h.endSide-n[v-1].startSide)>0)break}s(m,b,h)}}return{mapped:n.length?new r(a,l,n,u):null,pos:f}}},re=class r{constructor(e,t,o,i){this.chunkPos=e,this.chunk=t,this.nextLayer=o,this.maxPoint=i}static create(e,t,o,i){return new r(e,t,o,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:o=!1,filterFrom:i=0,filterTo:s=this.length}=e,n=e.filter;if(t.length==0&&!n)return this;if(o&&(t=t.slice().sort(Kn)),this.isEmpty)return t.length?r.of(t):this;let a=new Ei(this,null,-1).goto(0),l=0,f=[],u=new ke;for(;a.value||l=0){let c=t[l++];u.addInner(c.from,c.to,c.value,!1)||f.push(c)}else a.rangeIndex==1&&a.chunkIndexthis.chunkEnd(a.chunkIndex)||sa.to||s{s||(s=new ke),s.addRange(l,f,u,!1)};for(let l=0;l=s&&e<=s+n.length&&n.between(s,e-s,t-s,o)===!1)return}this.nextLayer.between(e,t,o)}}iter(e=0){return Io.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Io.from(e).goto(t)}static compare(e,t,o,i,s=-1){let n=e.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=s),a=t.filter(c=>c.maxPoint>0||!c.isEmpty&&c.maxPoint>=s),l=uu(n,a,o),f=new fr(n,l,s),u=new fr(a,l,s);o.iterGaps((c,h,d)=>cu(f,c,u,h,d,i)),o.empty&&o.length==0&&cu(f,0,u,0,0,i)}static eq(e,t,o=0,i){i==null&&(i=999999999);let s=e.filter(u=>!u.isEmpty&&t.indexOf(u)<0),n=t.filter(u=>!u.isEmpty&&e.indexOf(u)<0);if(s.length!=n.length)return!1;if(!s.length)return!0;let a=uu(s,n),l=new fr(s,a,0).goto(o),f=new fr(n,a,0).goto(o);for(;;){if(l.to!=f.to||!Xn(l.active,f.active)||l.point&&(!f.point||!_n(l.point,f.point)))return!1;if(l.to>i)return!0;l.next(),f.next()}}static spans(e,t,o,i,s=-1){let n=new fr(e,null,s).goto(t),a=t,l=n.openStart;for(;;){let f=Math.min(n.to,o);if(n.point){let u=n.activeForPoint(n.to),c=n.pointFroma&&(i.span(a,f,n.active,l),l=n.openEnd(f));if(n.to>o)return l+(n.point&&n.to>o?1:0);a=n.to,n.next()}}static of(e,t=!1){let o=new ke;for(let i of e instanceof Lo?[e]:t?wg(e):e)o.add(i.from,i.to,i.value);return o.finish()}static join(e){if(!e.length)return r.empty;let t=Fr(e);for(let o=e.length-2;o>=0;o--)for(let i=e[o];i!=r.empty;i=i.nextLayer)t=new r(i.chunkPos,i.chunk,t,Math.max(i.maxPoint,t.maxPoint));return t}};re.empty=new re([],[],null,-1);function Fr(r){return r[r.length-1]}function wg(r){if(r.length>1)for(let e=r[0],t=1;t0)return r.slice().sort(Kn);e=o}return r}re.empty.nextLayer=re.empty;var ke=class r{finishChunk(e){this.chunks.push(new Jn(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,o){this.addRange(e,t,o,!0)}addRange(e,t,o,i){this.addInner(e,t,o,i)||(this.nextLayer||(this.nextLayer=new r)).addRange(e,t,o,i)}addInner(e,t,o,i){let s=e-this.lastTo||o.startSide-this.last.endSide;if(i&&s<=0&&(e-this.lastFrom||o.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=o,this.lastFrom=e,this.lastTo=t,this.value.push(o),o.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let o=t.value.length-1;return this.last=t.value[o],this.lastFrom=t.from[o]+e,this.lastTo=t.to[o]+e,!0}finish(){return this.finishInner(re.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=re.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function uu(r,e,t){let o=new Map;for(let s of r)for(let n=0;n=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=o&&i.push(new Ei(n,t,o,s));return i.length==1?i[0]:new r(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let o of this.heap)o.goto(e,t);for(let o=this.heap.length>>1;o>=0;o--)Hn(this.heap,o);return this.next(),this}forward(e,t){for(let o of this.heap)o.forward(e,t);for(let o=this.heap.length>>1;o>=0;o--)Hn(this.heap,o);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Hn(this.heap,0)}}};function Hn(r,e){for(let t=r[e];;){let o=(e<<1)+1;if(o>=r.length)break;let i=r[o];if(o+1=0&&(i=r[o+1],o++),t.compare(i)<0)break;r[o]=t,r[e]=i,e=o}}var fr=class{constructor(e,t,o){this.minPoint=o,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Io.from(e,t,o)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){Ci(this.active,e),Ci(this.activeTo,e),Ci(this.activeRank,e),this.minActive=hu(this.active,this.activeTo)}addActive(e){let t=0,{value:o,to:i,rank:s}=this.cursor;for(;t0;)t++;ki(this.active,t,o),ki(this.activeTo,t,i),ki(this.activeRank,t,s),e&&ki(e,t,this.cursor.from),this.minActive=hu(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let o=this.openStart<0?[]:null;for(;;){let i=this.minActive;if(i>-1&&(this.activeTo[i]-this.cursor.from||this.active[i].endSide-this.cursor.startSide)<0){if(this.activeTo[i]>e){this.to=this.activeTo[i],this.endSide=this.active[i].endSide;break}this.removeActive(i),o&&Ci(o,i)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(o),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&o[i]=0&&!(this.activeRank[o]e||this.activeTo[o]==e&&this.active[o].endSide>=this.point.endSide)&&t.push(this.active[o]);return t.reverse()}openEnd(e){let t=0;for(let o=this.activeTo.length-1;o>=0&&this.activeTo[o]>e;o--)t++;return t}};function cu(r,e,t,o,i,s){r.goto(e),t.goto(o);let n=o+i,a=o,l=o-e,f=!!s.boundChange;for(let u=!1;;){let c=r.to+l-t.to,h=c||r.endSide-t.endSide,d=h<0?r.to+l:t.to,p=Math.min(d,n);if(r.point||t.point?(r.point&&t.point&&_n(r.point,t.point)&&Xn(r.activeForPoint(r.to),t.activeForPoint(t.to))||s.comparePoint(a,p,r.point,t.point),u=!1):(u&&(s.boundChange(a),u=!1),p>a&&!Xn(r.active,t.active)&&s.compareRange(a,p,r.active,t.active),f&&pn)break;a=d,h<=0&&r.next(),h>=0&&t.next()}}function Xn(r,e){if(r.length!=e.length)return!1;for(let t=0;t=e;o--)r[o+1]=r[o];r[e]=t}function hu(r,e){let t=-1,o=1e9;for(let i=0;i=e)return i;if(i==r.length)break;s+=r.charCodeAt(i)==9?t-s%t:1,i=ve(r,i)}return o===!0?-1:r.length}var Su=typeof Symbol>"u"?"__ͼ":Symbol.for("ͼ"),$n=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Mu=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},Qe=class{constructor(e,t){this.rules=[];let{finish:o}=t||{};function i(n){return/^@/.test(n)?[n]:n.split(/,\s*/)}function s(n,a,l,f){let u=[],c=/^@(\w+)\b/.exec(n[0]),h=c&&c[1]=="keyframes";if(c&&a==null)return l.push(n[0]+";");for(let d in a){let p=a[d];if(/&/.test(d))s(d.split(/,\s*/).map(m=>n.map(b=>m.replace(/&/,b))).reduce((m,b)=>m.concat(b)),p,l);else if(p&&typeof p=="object"){if(!c)throw new RangeError("The value of a property ("+d+") should be a primitive value.");s(i(d),p,u,h)}else p!=null&&u.push(d.replace(/_.*/,"").replace(/[A-Z]/g,m=>"-"+m.toLowerCase())+": "+p+";")}(u.length||h)&&l.push((o&&!c&&!f?n.map(o):n).join(", ")+" {"+u.join(" ")+"}")}for(let n in e)s(i(n),e[n],this.rules)}getRules(){return this.rules.join(` `)}static newName(){let e=Mu[Su]||1;return Mu[Su]=e+1,"ͼ"+e.toString(36)}static mount(e,t,o){let i=e[$n],s=o&&o.nonce;i?s&&i.setNonce(s):i=new ea(e,s),i.mount(Array.isArray(t)?t:[t],e)}},Bu=new Map,ea=class{constructor(e,t){let o=e.ownerDocument||e,i=o.defaultView;if(!e.head&&e.adoptedStyleSheets&&i.CSSStyleSheet){let s=Bu.get(o);if(s)return e[$n]=s;this.sheet=new i.CSSStyleSheet,Bu.set(o,this)}else this.styleTag=o.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[$n]=this}mount(e,t){let o=this.sheet,i=0,s=0,n=!1;for(let a=0;a-1&&(this.modules.splice(f,1),n=!0,s--,f=-1),f==-1){if(this.modules.splice(s++,0,l),n=!0,o)for(let u=0;u",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},vg=typeof navigator<"u"&&/Mac/.test(navigator.platform),Cg=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Ae=0;Ae<10;Ae++)Nt[48+Ae]=Nt[96+Ae]=String(Ae);var Ae;for(Ae=1;Ae<=24;Ae++)Nt[Ae+111]="F"+Ae;var Ae;for(Ae=65;Ae<=90;Ae++)Nt[Ae]=String.fromCharCode(Ae+32),Wr[Ae]=String.fromCharCode(Ae);var Ae;for(Ii in Nt)Wr.hasOwnProperty(Ii)||(Wr[Ii]=Nt[Ii]);var Ii;function Du(r){var e=vg&&r.metaKey&&r.shiftKey&&!r.ctrlKey&&!r.altKey||Cg&&r.shiftKey&&r.key&&r.key.length==1||r.key=="Unidentified",t=!e&&r.key||(r.shiftKey?Wr:Nt)[r.keyCode]||r.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function oe(){var r=arguments[0];typeof r=="string"&&(r=document.createElement(r));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var i=t[o];typeof i=="string"?r.setAttribute(o,i):i!=null&&(r[o]=i)}e++}for(;e2),O={mac:Iu||/Mac/.test(Ne.platform),windows:/Win/.test(Ne.platform),linux:/Linux|X11/.test(Ne.platform),ie:hs,ie_version:hc?fa.documentMode||6:ca?+ca[1]:ua?+ua[1]:0,gecko:Eu,gecko_version:Eu?+(/Firefox\/(\d+)/.exec(Ne.userAgent)||[0,0])[1]:0,chrome:!!ta,chrome_version:ta?+ta[1]:0,ios:Iu,android:/Android\b/.test(Ne.userAgent),webkit:Lu,webkit_version:Lu?+(/\bAppleWebKit\/(\d+)/.exec(Ne.userAgent)||[0,0])[1]:0,safari:ha,safari_version:ha?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Ne.userAgent)||[0,0])[1]:0,tabSize:fa.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function ol(r,e){for(let t in r)t=="class"&&e.class?e.class+=" "+r.class:t=="style"&&e.style?e.style+=";"+r.style:e[t]=r[t];return e}var Ji=Object.create(null);function il(r,e,t){if(r==e)return!0;r||(r=Ji),e||(e=Ji);let o=Object.keys(r),i=Object.keys(e);if(o.length-(t&&o.indexOf(t)>-1?1:0)!=i.length-(t&&i.indexOf(t)>-1?1:0))return!1;for(let s of o)if(s!=t&&(i.indexOf(s)==-1||r[s]!==e[s]))return!1;return!0}function kg(r,e){for(let t=r.attributes.length-1;t>=0;t--){let o=r.attributes[t].name;e[o]==null&&r.removeAttribute(o)}for(let t in e){let o=e[t];t=="style"?r.style.cssText=o:r.getAttribute(t)!=o&&r.setAttribute(t,o)}}function Pu(r,e,t){let o=!1;if(e)for(let i in e)t&&i in t||(o=!0,i=="style"?r.style.cssText="":r.removeAttribute(i));if(t)for(let i in t)e&&e[i]==t[i]||(o=!0,i=="style"?r.style.cssText=t[i]:r.setAttribute(i,t[i]));return o}function Ag(r){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new mr(e,t,t,o,e.widget||null,!1)}static replace(e){let t=!!e.block,o,i;if(e.isBlockGap)o=-5e8,i=4e8;else{let{start:s,end:n}=dc(e,t);o=(s?t?-3e8:-1:5e8)-1,i=(n?t?2e8:1:-6e8)+1}return new mr(e,o,i,t,e.widget||null,!0)}static line(e){return new qo(e)}static set(e,t=!1){return re.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};G.none=re.empty;var Go=class r extends G{constructor(e){let{start:t,end:o}=dc(e);super(t?-1:5e8,o?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?ol(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||Ji}eq(e){return this==e||e instanceof r&&this.tagName==e.tagName&&il(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};Go.prototype.point=!1;var qo=class r extends G{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof r&&this.spec.class==e.spec.class&&il(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};qo.prototype.mapMode=Fe.TrackBefore;qo.prototype.point=!0;var mr=class r extends G{constructor(e,t,o,i,s,n){super(t,o,s,e),this.block=i,this.isReplace=n,this.mapMode=i?t<=0?Fe.TrackBefore:Fe.TrackAfter:Fe.TrackDel}get type(){return this.startSide!=this.endSide?Ie.WidgetRange:this.startSide<=0?Ie.WidgetBefore:Ie.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof r&&Sg(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};mr.prototype.point=!0;function dc(r,e=!1){let{inclusiveStart:t,inclusiveEnd:o}=r;return t==null&&(t=r.inclusive),o==null&&(o=r.inclusive),{start:t??e,end:o??e}}function Sg(r,e){return r==e||!!(r&&e&&r.compare(e))}function Kr(r,e,t,o=0){let i=t.length-1;i>=0&&t[i]+o>=r?t[i]=Math.max(t[i],e):t.push(r,e)}var Xi=class r extends kt{constructor(e,t,o){super(),this.tagName=e,this.attributes=t,this.rank=o}eq(e){return e==this||e instanceof r&&this.tagName==e.tagName&&il(this.attributes,e.attributes)}static create(e){return new r(e.tagName,e.attributes||Ji,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,t=!1){return re.of(e,t)}};Xi.prototype.startSide=Xi.prototype.endSide=-1;function jo(r){let e;return r.nodeType==11?e=r.getSelection?r:r.ownerDocument:e=r,e.getSelection()}function da(r,e){return e?r==e||r.contains(e.nodeType!=1?e.parentNode:e):!1}function Ho(r,e){if(!e.anchorNode)return!1;try{return da(r,e.anchorNode)}catch{return!1}}function Wi(r){return r.nodeType==3?Qo(r,0,r.nodeValue.length).getClientRects():r.nodeType==1?r.getClientRects():[]}function Fo(r,e,t,o){return t?Ou(r,e,t,o,-1)||Ou(r,e,t,o,1):!1}function Jt(r){for(var e=0;;e++)if(r=r.previousSibling,!r)return e}function Yi(r){return r.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(r.nodeName)}function Ou(r,e,t,o,i){for(;;){if(r==t&&e==o)return!0;if(e==(i<0?0:Vt(r))){if(r.nodeName=="DIV")return!1;let s=r.parentNode;if(!s||s.nodeType!=1)return!1;e=Jt(r)+(i<0?0:1),r=s}else if(r.nodeType==1){if(r=r.childNodes[e+(i<0?-1:0)],r.nodeType==1&&r.contentEditable=="false")return!1;e=i<0?Vt(r):0}else return!1}}function Vt(r){return r.nodeType==3?r.nodeValue.length:r.childNodes.length}function Zi(r,e){let{left:t,right:o}=r;if(t==o)return r;let i=e?t:o;return{left:i,right:i,top:r.top,bottom:r.bottom}}function Mg(r){let e=r.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:r.innerWidth,top:0,bottom:r.innerHeight}}function pc(r,e){let t=e.width/r.offsetWidth,o=e.height/r.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-r.offsetWidth)<1)&&(t=1),(o>.995&&o<1.005||!isFinite(o)||Math.abs(e.height-r.offsetHeight)<1)&&(o=1),{scaleX:t,scaleY:o}}function Bg(r,e,t,o,i,s,n,a){let l=r.ownerDocument,f=l.defaultView||window;for(let u=r,c=!1;u&&!c;)if(u.nodeType==1){let h,d=u==l.body,p=1,m=1;if(d)h=Mg(f);else{if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(c=!0),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let S=u.getBoundingClientRect();({scaleX:p,scaleY:m}=pc(u,S)),h={left:S.left,right:S.left+u.clientWidth*p,top:S.top,bottom:S.top+u.clientHeight*m}}let b=0,v=0;if(i=="nearest")e.top0&&e.bottom>h.bottom+v&&(v=e.bottom-h.bottom+n)):e.bottom>h.bottom-n&&(v=e.bottom-h.bottom+n,t<0&&e.top-v0&&e.right>h.right+b&&(b=e.right-h.right+s)):e.right>h.right-s&&(b=e.right-h.right+s,t<0&&e.lefth.bottom||e.lefth.right)&&(e={left:Math.max(e.left,h.left),right:Math.min(e.right,h.right),top:Math.max(e.top,h.top),bottom:Math.min(e.bottom,h.bottom)}),u=u.assignedSlot||u.parentNode}else if(u.nodeType==11)u=u.host;else break}function mc(r,e=!0){let t=r.ownerDocument,o=null,i=null;for(let s=r.parentNode;s&&!(s==t.body||(!e||o)&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),e&&!o&&s.scrollWidth>s.clientWidth&&(o=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:o,y:i}}var pa=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:o}=e;this.set(t,Math.min(e.anchorOffset,t?Vt(t):0),o,Math.min(e.focusOffset,o?Vt(o):0))}set(e,t,o,i){this.anchorNode=e,this.anchorOffset=t,this.focusNode=o,this.focusOffset=i}};function gc(r){let e=[];for(let t=r;t;t=t.nodeType==11?t.host:t.parentNode)t.nodeType==1&&e.push({node:t,left:t.scrollLeft,top:t.scrollTop});return e}function xc(r,e=!0){for(let{node:t,left:o,top:i}of r)e&&t.scrollTop!=i&&(t.scrollTop=i),t.scrollLeft!=o&&(t.scrollLeft=o)}var hr=null;O.safari&&O.safari_version>=26&&(hr=!1);function bc(r){if(r.setActive)return r.setActive();if(hr)return r.focus(hr);let e=gc(r);r.focus(hr==null?{get preventScroll(){return hr={preventScroll:!0},!0}}:void 0),hr||(hr=!1,xc(e))}var Ru;function Qo(r,e,t=e){let o=Ru||(Ru=document.createRange());return o.setEnd(r,t),o.setStart(r,e),o}function Jr(r,e,t,o){let i={key:e,code:e,keyCode:t,which:t,cancelable:!0};o&&({altKey:i.altKey,ctrlKey:i.ctrlKey,shiftKey:i.shiftKey,metaKey:i.metaKey}=o);let s=new KeyboardEvent("keydown",i);s.synthetic=!0,r.dispatchEvent(s);let n=new KeyboardEvent("keyup",i);return n.synthetic=!0,r.dispatchEvent(n),s.defaultPrevented||n.defaultPrevented}function Dg(r){for(;r;){if(r&&(r.nodeType==9||r.nodeType==11&&r.host))return r;r=r.assignedSlot||r.parentNode}return null}function Tg(r,e){let t=e.focusNode,o=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=o)return!1;for(o=Math.min(o,Vt(t));;)if(o){if(t.nodeType!=1)return!1;let i=t.childNodes[o-1];i.contentEditable=="false"?o--:(t=i,o=Vt(t))}else{if(t==r)return!0;o=Jt(t),t=t.parentNode}}function yc(r){return r instanceof Window?r.pageYOffset>Math.max(0,r.document.documentElement.scrollHeight-r.innerHeight-4):r.scrollTop>Math.max(1,r.scrollHeight-r.clientHeight-4)}function wc(r,e){for(let t=r,o=e;;){if(t.nodeType==3&&o>0)return{node:t,offset:o};if(t.nodeType==1&&o>0){if(t.contentEditable=="false")return null;t=t.childNodes[o-1],o=Vt(t)}else if(t.parentNode&&!Yi(t))o=Jt(t),t=t.parentNode;else return null}}function vc(r,e){for(let t=r,o=e;;){if(t.nodeType==3&&o=t){if(a.level==o)return n;(s<0||(i!=0?i<0?a.fromt:e[s].level>a.level))&&(s=n)}}if(s<0)throw new RangeError("Index out of range");return s}};function Ac(r,e){if(r.length!=e.length)return!1;for(let t=0;t=0;m-=3)if(At[m+1]==-d){let b=At[m+2],v=b&2?i:b&4?b&1?s:i:0;v&&(ce[c]=ce[At[m]]=v),a=m;break}}else{if(At.length==189)break;At[a++]=c,At[a++]=h,At[a++]=l}else if((p=ce[c])==2||p==1){let m=p==i;l=m?0:1;for(let b=a-3;b>=0;b-=3){let v=At[b+2];if(v&2)break;if(m)At[b+2]|=2;else{if(v&4)break;At[b+2]|=4}}}}}function Rg(r,e,t,o){for(let i=0,s=o;i<=t.length;i++){let n=i?t[i-1].to:r,a=il;)p==b&&(p=t[--m].from,b=m?t[m-1].to:r),ce[--p]=d;l=u}else s=f,l++}}}function ga(r,e,t,o,i,s,n){let a=o%2?2:1;if(o%2==i%2)for(let l=e,f=0;ll&&n.push(new st(l,m.from,d));let b=m.direction==gr!=!(d%2);xa(r,b?o+1:o,i,m.inner,m.from,m.to,n),l=m.to}p=m.to}else{if(p==t||(u?ce[p]!=a:ce[p]==a))break;p++}h?ga(r,l,p,o+1,i,h,n):le;){let u=!0,c=!1;if(!f||l>s[f-1].to){let m=ce[l-1];m!=a&&(u=!1,c=m==16)}let h=!u&&a==1?[]:null,d=u?o:o+1,p=l;e:for(;;)if(f&&p==s[f-1].to){if(c)break e;let m=s[--f];if(!u)for(let b=m.from,v=f;;){if(b==e)break e;if(v&&s[v-1].to==b)b=s[--v].from;else{if(ce[b-1]==a)break e;break}}if(h)h.push(m);else{m.toce.length;)ce[ce.length]=256;let o=[],i=e==gr?0:1;return xa(r,i,i,t,0,r.length,o),o}function Sc(r){return[new st(0,r,0)]}var Mc="";function Fg(r,e,t,o,i){var s;let n=o.head-r.from,a=st.find(e,n,(s=o.bidiLevel)!==null&&s!==void 0?s:-1,o.assoc),l=e[a],f=l.side(i,t);if(n==f){let h=a+=i?1:-1;if(h<0||h>=e.length)return null;l=e[a=h],n=l.side(!i,t),f=l.side(i,t)}let u=ve(r.text,n,l.forward(i,t));(ul.to)&&(u=f),Mc=r.text.slice(Math.min(n,u),Math.max(n,u));let c=a==(i?e.length-1:0)?null:e[a+(i?1:-1)];return c&&u==f&&c.level+(i?0:1)r.some(e=>e)}),Oc=R.define({combine:r=>r.some(e=>e)}),Rc=R.define(),No=class r{constructor(e,t,o,i,s,n=!1){this.range=e,this.y=t,this.x=o,this.yMargin=i,this.xMargin=s,this.isSnapshot=n}map(e){return e.empty?this:new r(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new r(T.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Pi=q.define({map:(r,e)=>r.map(e)}),Hc=q.define();function Je(r,e,t){let o=r.facet(Ec);o.length?o[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var zt=R.define({combine:r=>r.length?r[0]:!0}),zg=0,qr=R.define({combine(r){return r.filter((e,t)=>{for(let o=0;o{let l=[];return n&&l.push(ds.of(f=>{let u=f.plugin(a);return u?n(u):G.none})),s&&l.push(s(a)),l})}static fromClass(e,t){return r.define((o,i)=>new e(o,i),t)}},zo=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(o){if(Je(t.state,o,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){Je(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(o){Je(e.state,o,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Fc=R.define(),ll=R.define(),ds=R.define(),Nc=R.define(),fl=R.define(),Ko=R.define(),zc=R.define();function Hu(r,e){let t=r.state.facet(zc);if(!t.length)return t;let o=t.map(s=>s instanceof Function?s(r):s),i=[];return re.spans(o,e.from,e.to,{point(){},span(s,n,a,l){let f=s-e.from,u=n-e.from,c=i;for(let h=a.length-1;h>=0;h--,l--){let d=a[h].spec.bidiIsolate,p;if(d==null&&(d=Ng(e.text,f,u)),l>0&&c.length&&(p=c[c.length-1]).to==f&&p.direction==d)p.to=u,c=p.inner;else{let m={from:f,to:u,direction:d,inner:[]};c.push(m),c=m.inner}}}}),i}var Uc=R.define();function ul(r){let e=0,t=0,o=0,i=0;for(let s of r.state.facet(Uc)){let n=s(r);n&&(n.left!=null&&(e=Math.max(e,n.left)),n.right!=null&&(t=Math.max(t,n.right)),n.top!=null&&(o=Math.max(o,n.top)),n.bottom!=null&&(i=Math.max(i,n.bottom)))}return{left:e,right:t,top:o,bottom:i}}var Oo=R.define(),ct=class r{constructor(e,t,o,i){this.fromA=e,this.toA=t,this.fromB=o,this.toB=i}join(e){return new r(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,o=this;for(;t>0;t--){let i=e[t-1];if(!(i.fromA>o.toA)){if(i.toAi.push(new ct(s,n,a,l))),this.changedRanges=i}static create(e,t,o){return new r(e,t,o)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Ug=[],ge=class{constructor(e,t,o=0){this.dom=e,this.length=t,this.flags=o,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Ug}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&kg(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let o=t;for(let i of this.children){if(i==e)return o;o+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t,o){return null}domPosFor(e,t){let o=Jt(this.dom),i=this.length?e>0:t>0;return new St(this.parent.dom,o+(i?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Yr)return e;return null}static get(e){return e.cmTile}},Xr=class extends ge{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,o=null,i,s=e?.node==t?e:null,n=0;for(let a of this.children){if(a.sync(e),n+=a.length+a.breakAfter,i=o?o.nextSibling:t.firstChild,s&&i!=a.dom&&(s.written=!0),a.dom.parentNode==t)for(;i&&i!=a.dom;)i=Fu(i);else t.insertBefore(a.dom,i);o=a.dom}for(i=o?o.nextSibling:t.firstChild,s&&i&&(s.written=!0);i;)i=Fu(i);this.length=n}};function Fu(r){let e=r.nextSibling;return r.parentNode.removeChild(r),e}var Yr=class extends Xr{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=ge.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],o=this,i=0,s=0;;)if(i==o.children.length){if(!t.length)return;o=o.parent,o.breakAfter&&s++,i=t.pop()}else{let n=o.children[i++];if(n instanceof Ut)t.push(i),o=n,i=0;else{let a=s+n.length,l=e(n,s);if(l!==void 0)return l;s=a+n.breakAfter}}}resolveBlock(e,t){let o,i=-1,s,n=-1;if(this.blockTiles((a,l)=>{let f=l+a.length;if(e>=l&&e<=f){if(a.isWidget()&&t>=-1&&t<=1){if(a.flags&32)return!0;a.flags&16&&(o=void 0)}(le||e==l&&(t>1?a.length:a.covers(-1)))&&(!s||!a.isWidget()&&s.isWidget())&&(s=a,n=e-l)}}),!o&&!s)throw new Error("No tile at position "+e);return o&&t<0||!s?{tile:o,offset:i}:{tile:s,offset:n}}},Ut=class r extends Xr{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let o=new r(t||document.createElement(e.tagName),e);return t||(o.flags|=4),o}},Zr=class r extends Xr{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,o){let i=new r(t||document.createElement("div"),e);return(!t||!o)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,o){let i=null,s=-1,n=null,a=-1;function l(u,c){for(let h=0,d=0;h=c&&(p.isComposite()?l(p,c-d):(!n||n.isHidden&&(t>0&&!(n.flags&32)||o&&Wg(n,p)))&&(m>c||p.flags&32&&t<=1)?(n=p,a=c-d):(d=-1)&&(i=p,s=c-d)),d=m}}l(this,e);let f=(t<0?i:n)||i||n;return f?{tile:f,offset:f==i?s:a}:null}coordsIn(e,t,o){let i=this.resolveInline(e,t,!0);return i?i.tile.coordsIn(Math.max(0,i.offset),t,o):Vg(this)}domIn(e,t){let o=this.resolveInline(e,t);if(o){let{tile:i,offset:s}=o;if(this.dom.contains(i.dom))return i.isText()?new St(i.dom,Math.min(i.dom.nodeValue.length,s)):i.domPosFor(s,i.flags&16?1:i.flags&32?-1:t);let n=o.tile.parent,a=!1;for(let l of n.children){if(a)return new St(l.dom,0);l==o.tile&&(a=!0)}}return new St(this.dom,0)}};function Vg(r){let e=r.dom.lastChild;if(!e)return r.dom.getBoundingClientRect();let t=Wi(e);return t[t.length-1]||null}function Wg(r,e){let t=r.coordsIn(0,1),o=e.coordsIn(0,1);return t&&o&&o.topi&&(e=i);let s=e,n=e,a=0;e==0&&t<0||e==i&&t>=0?O.chrome||O.gecko||(e?(s--,a=1):n=0)?0:l.length-1];return O.safari&&!a&&f.width==0&&(f=Array.prototype.find.call(l,u=>u.width)||f),o==null?f:Zi(f,(a?a>0:t<0)==o)}static of(e,t){let o=new r(t||document.createTextNode(e),e);return t||(o.flags|=2),o}},xr=class r extends ge{constructor(e,t,o,i){super(e,t,i),this.widget=o}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,o){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;if(o)return Zi(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let s=this.dom.getClientRects(),n=null;if(!s.length)return null;let a=this.flags&16?!0:this.flags&32?!1:e>0;for(let l=a?s.length-1:0;n=s[l],!(e>0?l==0:l==s.length-1||n.top0==o)}},ya=class{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,o){let{tile:i,index:s,beforeBreak:n,parents:a}=this;for(;e||t>0;)if(i.isComposite())if(n){if(!e)break;o&&o.break(),e--,n=!1}else if(s==i.children.length){if(!e&&!a.length)break;o&&o.leave(i),n=!!i.breakAfter,{tile:i,index:s}=a.pop(),s++}else{let l=i.children[s],f=l.breakAfter;(t>0?l.length<=e:l.length=0;a--){let l=t.marks[a],f=i.lastChild;if(f instanceof Ke&&f.mark.eq(l.mark))f.dom!=l.dom&&f.setDOM(ra(l.dom)),i=f;else{let{dom:u}=l;this.cache.reused.get(l)&&ge.get(l.dom)&&(u=ra(l.dom));let c=Ke.of(l.mark,u);i.append(c),i=c}this.cache.reused.set(l,2)}let s=ge.get(e.text);s&&this.cache.reused.set(s,2);let n=new dr(e.text,e.text.nodeValue);n.flags|=8,this.pos=e.range.toB,i.append(n)}addInlineWidget(e,t,o){let i=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);i||this.flushBuffer();let s=this.ensureMarks(t,o);!i&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,o){this.flushBuffer(),this.ensureMarks(t,o).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var o;e||(e=Vc);let i=Zr.start(e,t||((o=this.cache.find(Zr))===null||o===void 0?void 0:o.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=i)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var o;let i=this.curLine;for(let s=e.length-1;s>=0;s--){let n=e[s],a;if(t>0&&(a=i.lastChild)&&a instanceof Ke&&a.mark.eq(n))i=a,t--;else{let l=Ke.of(n,(o=this.cache.find(Ke,f=>f.mark.eq(n)))===null||o===void 0?void 0:o.dom);i.append(l),i=l,t=0}}return i}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Nu(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(O.ios&&Nu(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(oa,0,32)||new xr(oa.toDOM(),0,oa,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=e.rank*102+e.value.rank,o=new wa(e.from,e.to,e.value,t),i=this.wrappers.length;for(;i>0&&(this.wrappers[i-1].rank-o.rank||this.wrappers[i-1].to-o.to)<0;)i--;this.wrappers.splice(i,0,o)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let o of this.wrappers){let i=t.lastChild;if(o.fromn.wrapper.eq(o.wrapper)))===null||e===void 0?void 0:e.dom);t.append(s),t=s}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),o=this.cache.find(_r,void 0,1);return o&&(o.flags=t),o||new _r(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Ca=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:i,lineBreak:s,done:n}=this.cursor.next(this.skipCount);if(this.skipCount=0,n)throw new Error("Ran out of text content when drawing inline views");this.text=i;let a=this.textOff=Math.min(e,i.length);return s?null:i.slice(0,a)}let t=Math.min(this.text.length,this.textOff+e),o=this.text.slice(this.textOff,t);return this.textOff=t,o}},$i=[xr,Zr,dr,Ke,_r,Ut,Yr];for(let r=0;r<$i.length;r++)$i[r].bucket=r;var ka=class{constructor(e){this.view=e,this.buckets=$i.map(()=>[]),this.index=$i.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,o=this.buckets[t];o.length<6?o.push(e):o[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,o=2){let i=e.bucket,s=this.buckets[i],n=this.index[i];for(let a=0;a{if(this.cache.add(n),n.isComposite())return!1},enter:n=>this.cache.add(n),leave:()=>{},break:()=>{}}}run(e,t){let o=t&&this.getCompositionContext(t.text);for(let i=0,s=0,n=0;;){let a=ni){let f=l-i;this.preserve(f,!n,!a),i=l,s+=f}if(!a)break;t&&a.fromA<=t.range.fromA&&a.toA>=t.range.toA?(this.forward(a.fromA,t.range.fromA,t.range.fromA{if(n.isWidget())if(this.openWidget)this.builder.continueWidget(l-a);else{let f=l>0||a{n.isLine()?this.builder.addLineStart(n.attrs,this.cache.maybeReuse(n)):(this.cache.add(n),n instanceof Ke&&i.unshift(n.mark)),this.openWidget=!1},leave:n=>{n.isLine()?i.length&&(i.length=s=0):n instanceof Ke&&(i.shift(),s=Math.min(s,i.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let o=null,i=this.builder,s=-1,n=re.spans(this.decorations,e,t,{point:(a,l,f,u,c,h)=>{if(f instanceof mr){if(this.disallowBlockEffectsFor[h]){if(f.block)throw new RangeError("Block decorations may not be specified via plugins");if(l>this.view.state.doc.lineAt(a).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(s=u.length,c>u.length)i.continueWidget(l-a);else{let d=f.widget||(f.block?Xt.block:Xt.inline),p=Gg(f),m=this.cache.findWidget(d,l-a,p)||xr.of(d,this.view,l-a,p);f.block?(f.startSide>0&&i.addLineStartIfNotCovered(o),i.addBlockWidget(m)):(i.ensureLine(o),i.addInlineWidget(m,u,c))}o=null}else o=qg(o,f);l>a&&this.text.skip(l-a)},span:(a,l,f,u)=>{for(let c=a;c-1&&(this.openWidget=n>s),this.openWidget||i.addLineStartIfNotCovered(o),this.openMarks=n}forward(e,t,o=1){t-e<=10?this.old.advance(t-e,o,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,o,this.reuseWalker))}getCompositionContext(e){let t=[],o=null;for(let i=e.parentNode;;i=i.parentNode){let s=ge.get(i);if(i==this.view.contentDOM)break;s instanceof Ke?t.push(s):s?.isLine()?o=s:s instanceof Ut||(i.nodeName=="DIV"&&!o?o=new Zr(i,Vc):o||t.push(Ke.of(new Go({tagName:i.nodeName.toLowerCase(),attributes:Ag(i)}),i)))}return o?{line:o,marks:t}:null}};function Nu(r,e){let t=o=>{for(let i of o.children)if((e?i.isText():i.length)||t(i))return!0;return!1};return t(r)}function Gg(r){let e=r.isReplace?(r.startSide<0?64:0)|(r.endSide>0?128:0):r.startSide>0?32:16;return r.block&&(e|=256),e}var Vc={class:"cm-line"};function qg(r,e){let t=e.spec.attributes,o=e.spec.class;return!t&&!o||(r||(r={class:"cm-line"}),t&&ol(t,r),o&&(r.class+=" "+o)),r}function jg(r){let e=[];for(let t=r.parents.length;t>1;t--){let o=t==r.parents.length?r.tile:r.parents[t].tile;o instanceof Ke&&e.push(o.mark)}return e}function ra(r){let e=ge.get(r);return e&&e.setDOM(r.cloneNode()),r}var Xt=class extends Re{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};Xt.inline=new Xt("span");Xt.block=new Xt("div");var oa=new class extends Re{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},es=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=G.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Yr(e,e.contentDOM),this.updateInner([new ct(0,0,0,e.state.doc.length)],null)}update(e){var t;let o=e.changedRanges;this.minWidth>0&&o.length&&(o.every(({fromA:u,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let i=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?i=this.domChanged.newSel.head:!$g(e.changes,this.hasComposition)&&!e.selectionSet&&(i=e.state.selection.main.head));let s=i>-1?Kg(this.view,e.changes,i):null;if(this.domChanged=null,this.hasComposition){let{from:u,to:c}=this.hasComposition;o=new ct(u,c,e.changes.mapPos(u,-1),e.changes.mapPos(c,1)).addToSet(o.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(O.ie||O.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let n=this.decorations,a=this.blockWrappers;this.updateDeco();let l=Yg(n,this.decorations,e.changes);l.length&&(o=ct.extendWithRanges(o,l));let f=Zg(a,this.blockWrappers,e.changes);return f.length&&(o=ct.extendWithRanges(o,f)),s&&!o.some(u=>u.fromA<=s.range.fromA&&u.toA>=s.range.toA)&&(o=s.range.addToSet(o.slice())),this.tile.flags&2&&o.length==0?!1:(this.updateInner(o,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:o}=this.view;o.ignore(()=>{if(t||e.length){let n=this.tile,a=new Aa(this.view,n,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&ge.get(t.text)&&a.cache.reused.set(ge.get(t.text),2),this.tile=a.run(e,t),Sa(n,a.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let s=O.chrome||O.ios?{node:o.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||o.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let i=[];if(this.view.viewport.from||this.view.viewport.to-1)&&Ho(o,this.view.observer.selectionRange)&&!(i&&o.contains(i));if(!(s||t||n))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,f,u;if(l.empty?u=f=this.inlineDOMNearPos(l.anchor,l.assoc||1):(u=this.inlineDOMNearPos(l.head,l.head==l.from?1:-1),f=this.inlineDOMNearPos(l.anchor,l.anchor==l.from?1:-1)),O.gecko&&l.empty&&!this.hasComposition&&Qg(f)){let h=document.createTextNode("");this.view.observer.ignore(()=>f.node.insertBefore(h,f.node.childNodes[f.offset]||null)),f=u=new St(h,0),a=!0}let c=this.view.observer.selectionRange;(a||!c.focusNode||(!Fo(f.node,f.offset,c.anchorNode,c.anchorOffset)||!Fo(u.node,u.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,l))&&(this.view.observer.ignore(()=>{O.android&&O.chrome&&o.contains(c.focusNode)&&_g(c.focusNode,o)&&(o.blur(),o.focus({preventScroll:!0}));let h=jo(this.view.root);if(h)if(l.empty){if(O.gecko){let d=Jg(f.node,f.offset);if(d&&d!=3){let p=(d==1?wc:vc)(f.node,f.offset);p&&(f=new St(p.node,p.offset))}}h.collapse(f.node,f.offset),l.bidiLevel!=null&&h.caretBidiLevel!==void 0&&(h.caretBidiLevel=l.bidiLevel)}else if(h.extend){h.collapse(f.node,f.offset);try{h.extend(u.node,u.offset)}catch{}}else{let d=document.createRange();l.anchor>l.head&&([f,u]=[u,f]),d.setEnd(u.node,u.offset),d.setStart(f.node,f.offset),h.removeAllRanges(),h.addRange(d)}n&&this.view.root.activeElement==o&&(o.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(f,u)),this.impreciseAnchor=f.precise?null:new St(c.anchorNode,c.anchorOffset),this.impreciseHead=u.precise?null:new St(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Fo(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,o=jo(e.root),{anchorNode:i,anchorOffset:s}=e.observer.selectionRange;if(!o||!t.empty||!t.assoc||!o.modify)return;let n=this.lineAt(t.head,t.assoc);if(!n)return;let a=n.posAtStart;if(t.head==a||t.head==a+n.length)return;let l=this.coordsAt(t.head,-1),f=this.coordsAt(t.head,1);if(!l||!f||l.bottom>f.top)return;let u=this.domAtPos(t.head+t.assoc,t.assoc);o.collapse(u.node,u.offset),o.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let c=e.observer.selectionRange;e.docView.posFromDOM(c.anchorNode,c.anchorOffset)!=t.from&&o.collapse(i,s)}posFromDOM(e,t){let o=this.tile.nearest(e);if(!o)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let i=o.posAtStart;if(o.isComposite()){let s;if(e==o.dom)s=o.dom.childNodes[t];else{let n=Vt(e)==0?0:t==0?-1:1;for(;;){let a=e.parentNode;if(a==o.dom)break;n==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?n=-1:n=1),e=a}n<0?s=e:s=e.nextSibling}if(s==o.dom.firstChild)return i;for(;s&&!ge.get(s);)s=s.nextSibling;if(!s)return i+o.length;for(let n=0,a=i;;n++){let l=o.children[n];if(l.dom==s)return a;a+=l.length+l.breakAfter}}else return o.isText()?e==o.dom?i+t:i+(t?o.length:0):i}domAtPos(e,t){let{tile:o,offset:i}=this.tile.resolveBlock(e,t);return o.isWidget()?o.domPosFor(i,t):o.domIn(i,t)}inlineDOMNearPos(e,t){let o,i=-1,s=!1,n,a=-1,l=!1;return this.tile.blockTiles((f,u)=>{if(f.isWidget()){if(f.flags&32&&u>=e)return!0;f.flags&16&&(s=!0)}else{let c=u+f.length;if(u<=e&&(o=f,i=e-u,s=c=e&&!n&&(n=f,a=e-u,l=u>e),u>e&&n)return!0}}),!o&&!n?this.domAtPos(e,t):(s&&n?o=null:l&&o&&(n=null),o&&t<0||!n?o.domIn(i,t):n.domIn(a,t))}coordsAt(e,t,o){let{tile:i,offset:s}=this.tile.resolveBlock(e,t);return i.isWidget()?i.widget instanceof Uo?null:i.coordsInWidget(s,t,!0):i.coordsIn(s,t,o)}lineAt(e,t){let{tile:o}=this.tile.resolveBlock(e,t);return o.isLine()?o:null}coordsForChar(e){let{tile:t,offset:o}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function i(s,n){if(s.isComposite())for(let a of s.children){if(a.length>=n){let l=i(a,n);if(l)return l}if(n-=a.length,n<0)break}else if(s.isText()&&nMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,a=-1,l=this.view.textDirection==fe.LTR,f=0,u=(c,h,d)=>{for(let p=0;pi);p++){let m=c.children[p],b=h+m.length,v=m.dom.getBoundingClientRect(),{height:S}=v;if(d&&!p&&(f+=v.top-d.top),m instanceof Ut)b>o&&u(m,h,v);else if(h>=o&&(f>0&&t.push(-f),t.push(S+f),f=0,n)){let w=m.dom.lastChild,A=w?Wi(w):[];if(A.length){let k=A[A.length-1],x=l?k.right-v.left:v.right-k.left;x>a&&(a=x,this.minWidth=s,this.minWidthFrom=h,this.minWidthTo=b)}}d&&p==c.children.length-1&&(f+=d.bottom-v.bottom),h=b+m.breakAfter}};return u(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?fe.RTL:fe.LTR}measureTextSize(){let e=this.tile.blockTiles(n=>{if(n.isLine()&&n.children.length&&n.length<=20){let a=0,l;for(let f of n.children){if(!f.isText()||/[^ -~]/.test(f.text))return;let u=Wi(f.dom);if(u.length!=1)return;a+=u[0].width,l=u[0].height}if(a)return{lineHeight:n.dom.getBoundingClientRect().height,charWidth:a/n.length,textHeight:l}}});if(e)return e;let t=document.createElement("div"),o,i,s;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let n=Wi(t.firstChild)[0];o=t.getBoundingClientRect().height,i=n&&n.width?n.width/27:7,s=n&&n.height?n.height:o,t.remove()}),{lineHeight:o,charWidth:i,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let o=0,i=0;;i++){let s=i==t.viewports.length?null:t.viewports[i],n=s?s.from-1:this.view.state.doc.length;if(n>o){let a=(t.lineBlockAt(n).bottom-t.lineBlockAt(o).top)/this.view.scaleY;e.push(G.replace({widget:new Uo(a),block:!0,inclusive:!0,isBlockGap:!0}).range(o,n))}if(!s)break;o=s.to+1}return G.set(e)}updateDeco(){let e=1,t=this.view.state.facet(ds).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),o=!1,i=this.view.state.facet(fl).map((s,n)=>{let a=typeof s=="function";return a&&(o=!0),a?s(this.view):s});for(i.length&&(this.dynamicDecorationMap[e++]=o,t.push(re.join(i))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let f=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=f.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let f of this.view.state.facet(Rc))try{if(f(this.view,e.range,e))return!0}catch(u){Je(this.view.state,u,"scroll handler")}let{range:t}=e,o=this.coordsAt(t.head,t.assoc||(t.head>t.anchor?-1:1)),i;if(!o)return;!t.empty&&(i=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(o={left:Math.min(o.left,i.left),top:Math.min(o.top,i.top),right:Math.max(o.right,i.right),bottom:Math.max(o.bottom,i.bottom)});let s=ul(this.view),n={left:o.left-s.left,top:o.top-s.top,right:o.right+s.right,bottom:o.bottom+s.bottom},{offsetWidth:a,offsetHeight:l}=this.view.scrollDOM;if(Bg(this.view.scrollDOM,n,t.head1&&(o.top>window.visualViewport.offsetTop+window.visualViewport.height||o.bottomo.isWidget()||o.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){Sa(this.tile)}};function Sa(r,e){let t=e?.get(r);if(t!=1){t==null&&r.destroy();for(let o of r.children)Sa(o,e)}}function Qg(r){return r.node.nodeType==1&&r.node.firstChild&&(r.offset==0||r.node.childNodes[r.offset-1].contentEditable=="false")&&(r.offset==r.node.childNodes.length||r.node.childNodes[r.offset].contentEditable=="false")}function Wc(r,e){let t=r.observer.selectionRange;if(!t.focusNode)return null;let o=wc(t.focusNode,t.focusOffset),i=vc(t.focusNode,t.focusOffset),s=o||i;if(i&&o&&i.node!=o.node){let a=ge.get(i.node);if(!a||a.isText()&&a.text!=i.node.nodeValue)s=i;else if(r.docView.lastCompositionAfterCursor){let l=ge.get(o.node);!l||l.isText()&&l.text!=o.node.nodeValue||(s=i)}}if(r.docView.lastCompositionAfterCursor=s!=o,!s)return null;let n=e-s.offset;return{from:n,to:n+s.node.nodeValue.length,node:s.node}}function Kg(r,e,t){let o=Wc(r,t);if(!o)return null;let{node:i,from:s,to:n}=o,a=i.nodeValue;if(/[\n\r]/.test(a)||r.state.doc.sliceString(o.from,o.to)!=a)return null;let l=e.invertedDesc;return{range:new ct(l.mapPos(s),l.mapPos(n),s,n),text:i}}function Jg(r,e){return r.nodeType!=1?0:(e&&r.childNodes[e-1].contentEditable=="false"?1:0)|(e{oe.from&&(t=!0)}),t}var Uo=class extends Re{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function ex(r,e,t=1){let o=r.charCategorizer(e),i=r.doc.lineAt(e),s=e-i.from;if(i.length==0)return T.cursor(e);s==0?t=1:s==i.length&&(t=-1);let n=s,a=s;t<0?n=ve(i.text,s,!1):a=ve(i.text,s);let l=o(i.text.slice(n,a));for(;n>0;){let f=ve(i.text,n,!1);if(o(i.text.slice(f,n))!=l)break;n=f}for(;ar.defaultLineHeight*1.5){let a=r.viewState.heightOracle.textHeight,l=Math.floor((i-t.top-(r.defaultLineHeight-a)*.5)/a);s+=l*r.viewState.heightOracle.lineLength}let n=r.state.sliceDoc(t.from,t.to);return t.from+Au(n,s,r.state.tabSize)}function Ba(r,e,t){let o=r.lineBlockAt(e);if(Array.isArray(o.type)){let i;for(let s of o.type){if(s.from>e)break;if(!(s.toe)return s;(!i||s.type==Ie.Text&&(i.type!=s.type||(t<0?s.frome)))&&(i=s)}}return i||o}return o}function rx(r,e,t,o){let i=Ba(r,e.head,e.assoc||-1),s=!o||i.type!=Ie.Text||!(r.lineWrapping||i.widgetLineBreaks)?null:r.coordsAtPos(e.assoc<0&&e.head>i.from?e.head-1:e.head);if(s){let a=r.dom.getBoundingClientRect(),l=r.textDirectionAt(i.from),f=r.posAtCoords({x:t==(l==fe.LTR)?a.right-1:a.left+1,y:(s.top+s.bottom)/2});if(f!=null)return T.cursor(f,t?-1:1)}let n=r.state.doc.lineAt(e.head);return(t?n.to==i.to:n.from==i.from)?r.visualLineSide(n,t):T.cursor(t?i.to:i.from,t?-1:1)}function zu(r,e,t,o){let i=r.state.doc.lineAt(e.head),s=r.bidiSpans(i),n=r.textDirectionAt(i.from);for(let a=e,l=null;;){let f=Fg(i,s,n,a,t),u=Mc;if(!f){if(i.number==(t?r.state.doc.lines:1))return a;u=` `,i=r.state.doc.line(i.number+(t?1:-1)),s=r.bidiSpans(i),f=r.visualLineSide(i,!t)}if(l){if(!l(u))return a}else{if(!o)return f;l=o(u)}a=f}}function ox(r,e,t){let o=r.state.charCategorizer(e),i=o(t);return s=>{let n=o(s);return i==Ce.Space&&(i=n),i==n}}function ix(r,e,t,o){let i=e.head,s=t?1:-1;if(i==(t?r.state.doc.length:0))return T.cursor(i,e.assoc);let n=e.goalColumn,a,l=r.contentDOM.getBoundingClientRect(),f=r.coordsAtPos(i,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),u=r.documentTop;if(f)n==null&&(n=f.left-l.left),a=s<0?f.top:f.bottom;else{let p=r.viewState.lineBlockAt(i);n==null&&(n=Math.min(l.right-l.left,r.defaultCharacterWidth*(i-p.from))),a=(s<0?p.top:p.bottom)+u}let c=l.left+n,h=r.viewState.heightOracle.textHeight>>1,d=o??h;for(let p=0;;p+=h){let m=a+(d+p)*s,b=Da(r,{x:c,y:m},!1,s);if(t?m>l.bottom:ma:S{if(e>s&&ei(r)),t.from,e.head>t.from?-1:1);return o==t.from?t:T.cursor(o,or.viewState.docHeight)return new it(r.state.doc.length,-1);if(f=r.elementAtHeight(l),o==null)break;if(f.type==Ie.Text){if(o<0?f.tor.viewport.to)break;let h=r.docView.coordsAt(o<0?f.from:f.to,o>0?-1:1);if(h&&(o<0?h.top<=l+s:h.bottom>=l+s))break}let c=r.viewState.heightOracle.textHeight/2;l=o>0?f.bottom+c:f.top-c}if(r.viewport.from>=f.to||r.viewport.to<=f.from){if(t)return null;if(f.type==Ie.Text){let c=tx(r,i,f,n,a);return new it(c,c==f.from?1:-1)}}if(f.type!=Ie.Text)return l<(f.top+f.bottom)/2?new it(f.from,1):new it(f.to,-1);let u=r.docView.lineAt(f.from,2);return(!u||u.length!=f.length)&&(u=r.docView.lineAt(f.from,-2)),new Ta(r,n,a,r.textDirectionAt(f.from)).scanTile(u,f.from)}var Ta=class{constructor(e,t,o,i){this.view=e,this.x=t,this.y=o,this.baseDir=i,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||o.length&&(o[0].level!=this.baseDir||o[0].to+i.from>1;t:if(n.has(m)){for(let S=1;S=s&&(w-=p),!n.has(w)){m=w;break t}}break e}n.add(m);let b=t(m),v=0;if(b)for(let S=0;S1))if(w.bottomthis.y)(!f||f.top>w.top)&&(f=w),v=-1;else{let A=w.left>this.x?this.x-w.left:w.right(p+p+m)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(f&&f.top<(p+m+m)/3)return this.y=f.top+1,this.scan(e,t,!0)}let d=(a?this.dirAt(e[u],1):this.baseDir)==fe.LTR;return{i:u,after:this.x>(h.left+h.right)/2==d}}scanText(e,t){let o=[];for(let s=0;s{let n=o[s]-t,a=o[s+1]-t;return Qo(e.dom,n,a).getClientRects()});return i.after?new it(o[i.i+1],-1):new it(o[i.i],1)}scanTile(e,t){if(!e.length)return new it(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let o=[t];for(let a=0,l=t;a{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:Qo(l.dom,0,l.length)).getClientRects()}),s=e.children[i.i],n=o[i.i];return s.isText()?this.scanText(s,n):s.isComposite()?this.scanTile(s,n):i.after?new it(o[i.i+1],-1):new it(n,1)}},Gr="￿",Ea=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(se.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Gr}readRange(e,t){if(!e)return this;let o=e.parentNode;for(let i=e;;){this.findPointBefore(o,i);let s=this.text.length;this.readNode(i);let n=ge.get(i),a=i.nextSibling;if(a==t){n?.breakAfter&&!a&&o!=this.view.contentDOM&&this.lineBreak();break}let l=ge.get(a);(n&&l?n.breakAfter:(n?n.breakAfter:Yi(i))||Yi(a)&&(i.nodeName!="BR"||n?.isWidget())&&this.text.length>s)&&!nx(a,t)&&this.lineBreak(),i=a}return this.findPointBefore(o,t),this}readTextNode(e){let t=e.nodeValue;for(let o of this.points)o.node==e&&(o.pos=this.text.length+Math.min(o.offset,t.length));for(let o=0,i=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,n=1,a;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,o),n=this.lineSeparator.length):(a=i.exec(t))&&(s=a.index,n=a[0].length),this.append(t.slice(o,s<0?t.length:s)),s<0)break;if(this.lineBreak(),n>1)for(let l of this.points)l.node==e&&l.pos>this.text.length&&(l.pos-=n-1);o=s+n}}readNode(e){let t=ge.get(e),o=t&&t.overrideDOMText;if(o!=null){this.findPointInside(e,o.length);for(let i=o.iter();!i.next().done;)i.lineBreak?this.lineBreak():this.append(i.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let o of this.points)o.node==e&&e.childNodes[o.offset]==t&&(o.pos=this.text.length)}findPointInside(e,t){for(let o of this.points)(e.nodeType==3?o.node==e:e.contains(o.node))&&(o.pos=this.text.length+(sx(e,o.node,o.offset)?t:0))}};function sx(r,e,t){for(;;){if(!e||t-1;let{impreciseHead:s,impreciseAnchor:n}=e.docView,a=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=qc(e.docView.tile,t,o,0))){let l=s||n?[]:lx(e),f=new Ea(l,e);f.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=f.text,this.newSel=fx(l,this.bounds.from)}else{let l=e.observer.selectionRange,f=s&&s.node==l.focusNode&&s.offset==l.focusOffset||!da(e.contentDOM,l.focusNode)?a.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),u=n&&n.node==l.anchorNode&&n.offset==l.anchorOffset||!da(e.contentDOM,l.anchorNode)?a.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),c=e.viewport;if((O.ios||O.chrome)&&f!=u&&Math.min(f,u)<=a.main.from&&Math.max(f,u)>=a.main.to&&(c.from>0||c.to-1&&a.ranges.length>1)this.newSel=a.replaceRange(T.range(u,f));else if(e.lineWrapping&&u==f&&!(a.main.empty&&a.main.head==f)&&e.inputState.lastTouchTime>Date.now()-100){let h=e.coordsAtPos(f,-1),d=0;h&&(d=e.inputState.lastTouchY<=h.bottom?-1:1),this.newSel=T.create([T.cursor(f,d)])}else this.newSel=T.single(u,f)}}};function qc(r,e,t,o){if(r.isComposite()){let i=-1,s=-1,n=-1,a=-1;for(let l=0,f=o,u=o;lt)return qc(c,e,t,f);if(h>=e&&i==-1&&(i=l,s=f),f>t&&c.dom.parentNode==r.dom){n=l,a=u;break}u=h,f=h+c.breakAfter}return{from:s,to:a<0?o+r.length:a,startDOM:(i?r.children[i-1].dom.nextSibling:null)||r.dom.firstChild,endDOM:n=0?r.children[n].dom:null}}else return r.isText()?{from:o,to:o+r.length,startDOM:r.dom,endDOM:r.dom.nextSibling}:null}function jc(r,e){let t,{newSel:o}=e,{state:i}=r,s=i.selection.main,n=r.inputState.lastKeyTime>Date.now()-100?r.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,f=s.from,u=null;(n===8||O.android&&e.text.length=a&&s.to<=l&&(e.typeOver||c!=e.text)&&c.slice(0,s.from-a)==e.text.slice(0,s.from-a)&&c.slice(s.to-a)==e.text.slice(h=e.text.length-(c.length-(s.to-a)))?t={from:s.from,to:s.to,insert:_.of(e.text.slice(s.from-a,h).split(Gr))}:(d=Qc(c,e.text,f-a,u))&&(O.chrome&&n==13&&d.toB==d.from+2&&e.text.slice(d.from,d.toB)==Gr+Gr&&d.toB--,t={from:a+d.from,to:a+d.toA,insert:_.of(e.text.slice(d.from,d.toB).split(Gr))})}else o&&(!r.hasFocus&&i.facet(zt)||rs(o,s))&&(o=null);if(!t&&!o)return!1;if((O.mac||O.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&r.contentDOM.getAttribute("autocorrect")=="off"?(o&&t.insert.length==2&&(o=T.single(o.main.anchor-1,o.main.head-1)),t={from:t.from,to:t.to,insert:_.of([t.insert.toString().replace("."," ")])}):i.doc.lineAt(s.from).toDate.now()-50?t={from:s.from,to:s.to,insert:i.toText(r.inputState.insertingText)}:O.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` `&&r.lineWrapping&&(o&&(o=T.single(o.main.anchor-1,o.main.head-1)),t={from:s.from,to:s.to,insert:_.of([" "])}),t)return cl(r,t,o,n);if(o&&!rs(o,s)){let a=!1,l="select";return r.inputState.lastSelectionTime>Date.now()-50&&(r.inputState.lastSelectionOrigin=="select"&&(a=!0),l=r.inputState.lastSelectionOrigin,l=="select.pointer"&&(o=Gc(i.facet(Ko).map(f=>f(r)),o))),r.dispatch({selection:o,scrollIntoView:a,userEvent:l}),!0}else return!1}function cl(r,e,t,o=-1){if(O.ios&&r.inputState.flushIOSKey(e))return!0;let i=r.state.selection.main;if(O.android&&(e.to==i.to&&(e.from==i.from||e.from==i.from-1&&r.state.sliceDoc(e.from,i.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Jr(r.contentDOM,"Enter",13)||(e.from==i.from-1&&e.to==i.to&&e.insert.length==0||o==8&&e.insert.lengthi.head)&&Jr(r.contentDOM,"Backspace",8)||e.from==i.from&&e.to==i.to+1&&e.insert.length==0&&Jr(r.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();r.inputState.composing>=0&&r.inputState.composing++;let n,a=()=>n||(n=ax(r,e,t));return r.state.facet(Lc).some(l=>l(r,e.from,e.to,s,a))||r.dispatch(a()),!0}function ax(r,e,t){let o,i=r.state,s=i.selection.main,n=-1;if(e.from==e.to&&e.froms.to){let l=e.fromc(r)),f,l);e.from==u&&(n=u)}if(n>-1)o={changes:e,selection:T.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&r.inputState.composing<0){let l=s.frome.to?i.sliceDoc(e.to,s.to):"";o=i.replaceSelection(r.state.toText(l+e.insert.sliceString(0,void 0,r.state.lineBreak)+f))}else{let l=i.changes(e),f=t&&t.main.to<=l.newLength?t.main:void 0;if(i.selection.ranges.length>1&&(r.inputState.composing>=0||r.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let u=r.state.sliceDoc(e.from,e.to),c,h=t&&Wc(r,t.main.head);if(h){let p=e.insert.length-(e.to-e.from);c={from:h.from,to:h.to-p}}else c=r.state.doc.lineAt(s.head);let d=s.to-e.to;o=i.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:l,range:f||p.map(l)};let m=p.to-d,b=m-u.length;if(r.state.sliceDoc(b,m)!=u||m>=c.from&&b<=c.to)return{range:p};let v=i.changes({from:b,to:m,insert:e.insert}),S=p.to-s.to;return{changes:v,range:f?T.range(Math.max(0,f.anchor+S),Math.max(0,f.head+S)):p.map(v)}})}else o={changes:l,selection:f&&i.selection.replaceRange(f)}}let a="input.type";return(r.composing||r.inputState.compositionPendingChange&&r.inputState.compositionEndedAt>Date.now()-50)&&(r.inputState.compositionPendingChange=!1,a+=".compose",r.inputState.compositionFirstChange&&(a+=".start",r.inputState.compositionFirstChange=!1)),i.update(o,{userEvent:a,scrollIntoView:!0})}function Qc(r,e,t,o){let i=Math.min(r.length,e.length),s=0;for(;s0&&a>0&&r.charCodeAt(n-1)==e.charCodeAt(a-1);)n--,a--;if(o=="end"){let l=Math.max(0,s-Math.min(n,a));t-=n+l-s}if(n=n?s-t:0;s-=l,a=s+(a-n),n=s}else if(a=a?s-t:0;s-=l,n=s+(n-a),a=s}return{from:s,toA:n,toB:a}}function lx(r){let e=[];if(r.root.activeElement!=r.contentDOM)return e;let{anchorNode:t,anchorOffset:o,focusNode:i,focusOffset:s}=r.observer.selectionRange;return t&&(e.push(new ts(t,o)),(i!=t||s!=o)&&e.push(new ts(i,s))),e}function fx(r,e){if(r.length==0)return null;let t=r[0].pos,o=r.length==2?r[1].pos:t;return t>-1&&o>-1?T.single(t+e,o+e):null}function rs(r,e){return e.head==r.main.head&&e.anchor==r.main.anchor}var Ia=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,O.safari&&e.contentDOM.addEventListener("input",()=>null),O.gecko&&Ax(e.contentDOM.ownerDocument)}handleEvent(e){!xx(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let o=this.handlers[e];if(o){for(let i of o.observers)i(this.view,t);for(let i of o.handlers){if(t.defaultPrevented)break;if(i(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=cx(e),o=this.handlers,i=this.view.contentDOM;for(let s in t)if(s!="scroll"){let n=!t[s].handlers.length,a=o[s];a&&n!=!a.handlers.length&&(i.removeEventListener(s,this.handleEvent),a=null),a||i.addEventListener(s,this.handleEvent,{passive:n})}for(let s in o)s!="scroll"&&!t[s]&&i.removeEventListener(s,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&Jc.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),O.android&&O.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(O.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(Kc.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||hx.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};return t.shiftKey&&O.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&ux(this.view.win)&&(t.shiftKey=!1),this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:t},setTimeout(()=>this.flushIOSKey(),50),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let t=this.pendingIOSKey;return!t||this.view.observer.pendingRecords().length||t.key=="Enter"&&e&&e.from0?!0:O.safari&&!O.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function ux(r){return r.visualViewport?r.visualViewport.height*r.visualViewport.scale/r.document.documentElement.clientHeight<.85:!1}function Uu(r,e){return(t,o)=>{try{return e.call(r,o,t)}catch(i){Je(t.state,i)}}}function cx(r){let e=Object.create(null);function t(o){return e[o]||(e[o]={observers:[],handlers:[]})}for(let o of r){let i=o.spec,s=i&&i.plugin.domEventHandlers,n=i&&i.plugin.domEventObservers;if(s)for(let a in s){let l=s[a];l&&t(a).handlers.push(Uu(o.value,l))}if(n)for(let a in n){let l=n[a];l&&t(a).observers.push(Uu(o.value,l))}}for(let o in ht)t(o).handlers.push(ht[o]);for(let o in ze)t(o).observers.push(ze[o]);return e}var Kc=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],hx="dthko",Jc=[16,17,18,20,91,92,224,225],Oi=6;function Ri(r){return Math.max(0,r)*.7+8}function dx(r,e){return Math.max(Math.abs(r.clientX-e.clientX),Math.abs(r.clientY-e.clientY))}var Pa=class{constructor(e,t,o,i){this.view=e,this.startEvent=t,this.style=o,this.mustSelect=i,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=mc(e.contentDOM),this.atoms=e.state.facet(Ko).map(n=>n(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(se.allowMultipleSelections)&&px(e,t),this.dragging=gx(e,t)&&Zc(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&dx(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,o=0,i=0,s=0,n=this.view.win.innerWidth,a=this.view.win.innerHeight;this.scrollParents.x&&({left:i,right:n}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:a}=this.scrollParents.y.getBoundingClientRect());let l=ul(this.view);e.clientX-l.left<=i+Oi?t=-Ri(i-e.clientX):e.clientX+l.right>=n-Oi&&(t=Ri(e.clientX-n)),e.clientY-l.top<=s+Oi?o=-Ri(s-e.clientY):e.clientY+l.bottom>=a-Oi&&(o=Ri(e.clientY-a)),this.setScrollSpeed(t,o)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,o=Gc(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!o.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:o,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function px(r,e){let t=r.state.facet(Bc);return t.length?t[0](e):O.mac?e.metaKey:e.ctrlKey}function mx(r,e){let t=r.state.facet(Dc);return t.length?t[0](e):O.mac?!e.altKey:!e.ctrlKey}function gx(r,e){let{main:t}=r.state.selection;if(t.empty)return!1;let o=jo(r.root);if(!o||o.rangeCount==0)return!0;let i=o.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&n.top<=e.clientY&&n.bottom>=e.clientY)return!0}return!1}function xx(r,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,o;t!=r.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(o=ge.get(t))&&o.isWidget()&&!o.isHidden&&o.widget.ignoreEvent(e))return!1;return!0}var ht=Object.create(null),ze=Object.create(null),Xc=O.ie&&O.ie_version<15||O.ios&&O.webkit_version<604;function bx(r){let e=r.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{r.focus(),t.remove(),Yc(r,t.value)},50)}function ps(r,e,t){for(let o of r.facet(e))t=o(t,r);return t}function Yc(r,e){e=ps(r.state,nl,e);let{state:t}=r,o,i=1,s=t.toText(e),n=s.lines==t.selection.ranges.length;if(Oa!=null&&t.selection.ranges.every(l=>l.empty)&&Oa==s.toString()){let l=-1;o=t.changeByRange(f=>{let u=t.doc.lineAt(f.from);if(u.from==l)return{range:f};l=u.from;let c=t.toText((n?s.line(i++).text:e)+t.lineBreak);return{changes:{from:u.from,insert:c},range:T.cursor(f.from+c.length)}})}else n?o=t.changeByRange(l=>{let f=s.line(i++);return{changes:{from:l.from,to:l.to,insert:f.text},range:T.cursor(l.from+f.length)}}):o=t.replaceSelection(s);r.dispatch(o,{userEvent:"input.paste",scrollIntoView:!0})}ze.scroll=r=>{let e=r.inputState;e.lastScrollTop=r.scrollDOM.scrollTop,e.lastScrollLeft=r.scrollDOM.scrollLeft,O.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};ze.wheel=ze.mousewheel=r=>{r.inputState.lastWheelEvent=Date.now()};ht.keydown=(r,e)=>(r.inputState.setSelectionOrigin("select"),e.keyCode==27&&r.inputState.tabFocusMode!=0&&(r.inputState.tabFocusMode=Date.now()+2e3),!1);ze.touchstart=(r,e)=>{let t=r.inputState,o=e.targetTouches[0];t.touchActive=!0,t.lastTouchTime=Date.now(),o&&(t.lastTouchX=o.clientX,t.lastTouchY=o.clientY),t.setSelectionOrigin("select.pointer")};ze.touchmove=r=>{r.inputState.setSelectionOrigin("select.pointer")};ze.touchend=(r,e)=>{r.inputState.touchActive=!1};ht.mousedown=(r,e)=>{if(r.observer.flush(),r.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let o of r.state.facet(Tc))if(t=o(r,e),t)break;if(!t&&e.button==0&&(t=wx(r,e)),t){let o=!r.hasFocus;r.inputState.startMouseSelection(new Pa(r,e,t,o)),o&&r.observer.ignore(()=>{bc(r.contentDOM);let s=r.root.activeElement;s&&!s.contains(r.contentDOM)&&s.blur()});let i=r.inputState.mouseSelection;if(i)return i.start(e),i.dragging===!1}else r.inputState.setSelectionOrigin("select.pointer");return!1};function Vu(r,e,t,o){if(o==1)return T.cursor(e,t);if(o==2)return ex(r.state,e,t);{let i=r.docView.lineAt(e,t),s=r.state.doc.lineAt(i?i.posAtEnd:e),n=i?i.posAtStart:s.from,a=i?i.posAtEnd:s.to;return aDate.now()-400&&Math.abs(e.clientX-r.clientX)<2&&Math.abs(e.clientY-r.clientY)<2?(Gu+1)%3:1}function wx(r,e){let t=r.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),o=Zc(e),i=r.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),i=i.map(s.changes))},get(s,n,a){let l=r.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),f,u=Vu(r,l.pos,l.assoc,o);if(t.pos!=l.pos&&!n){let c=Vu(r,t.pos,t.assoc,o),h=Math.min(c.from,u.from),d=Math.max(c.to,u.to);u=h1&&(f=vx(i,l.pos))?f:a?i.addRange(u):T.create([u])}}}function vx(r,e){for(let t=0;t=e)return T.create(r.ranges.slice(0,t).concat(r.ranges.slice(t+1)),r.mainIndex==t?0:r.mainIndex-(r.mainIndex>t?1:0))}return null}ht.dragstart=(r,e)=>{let{selection:{main:t}}=r.state;if(e.target.draggable){let i=r.docView.tile.nearest(e.target);if(i&&i.isWidget()){let s=i.posAtStart,n=s+i.length;(s>=t.to||n<=t.from)&&(t=T.undirectionalRange(s,n))}}let{inputState:o}=r;return o.mouseSelection&&(o.mouseSelection.dragging=!0),o.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",ps(r.state,al,r.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};ht.dragend=r=>(r.inputState.draggedContent=null,!1);function ju(r,e,t,o){if(t=ps(r.state,nl,t),!t)return;let i=r.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=r.inputState,n=o&&s&&mx(r,e)?{from:s.from,to:s.to}:null,a={from:i,insert:t},l=r.state.changes(n?[n,a]:a);r.focus(),r.dispatch({changes:l,selection:{anchor:l.mapPos(i,-1),head:l.mapPos(i,1)},userEvent:n?"move.drop":"input.drop"}),r.inputState.draggedContent=null}ht.drop=(r,e)=>{if(!e.dataTransfer)return!1;if(r.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let o=Array(t.length),i=0,s=()=>{++i==t.length&&ju(r,e,o.filter(n=>n!=null).join(r.state.lineBreak),!1)};for(let n=0;n{/[\x00-\x08\x0e-\x1f]{2}/.test(a.result)||(o[n]=a.result),s()},a.readAsText(t[n])}return!0}else{let o=e.dataTransfer.getData("Text");if(o)return ju(r,e,o,!0),!0}return!1};ht.paste=(r,e)=>{if(r.state.readOnly)return!0;r.observer.flush();let t=Xc?null:e.clipboardData;return t?(Yc(r,t.getData("text/plain")||t.getData("text/uri-list")),!0):(bx(r),!1)};function Cx(r,e){let t=r.dom.parentNode;if(!t)return;let o=t.appendChild(document.createElement("textarea"));o.style.cssText="position: fixed; left: -10000px; top: 10px",o.value=e,o.focus(),o.selectionEnd=e.length,o.selectionStart=0,setTimeout(()=>{o.remove(),r.focus()},50)}function kx(r){let e=[],t=[],o=!1;for(let i of r.selection.ranges)i.empty||(e.push(r.sliceDoc(i.from,i.to)),t.push(i));if(!e.length){let i=-1;for(let{from:s}of r.selection.ranges){let n=r.doc.lineAt(s);n.number>i&&(e.push(n.text),t.push({from:n.from,to:Math.min(r.doc.length,n.to+1)})),i=n.number}o=!0}return{text:ps(r,al,e.join(r.lineBreak)),ranges:t,linewise:o}}var Oa=null;ht.copy=ht.cut=(r,e)=>{if(!Ho(r.contentDOM,r.observer.selectionRange))return!1;let{text:t,ranges:o,linewise:i}=kx(r.state);if(!t&&!i)return!1;Oa=i?t:null,e.type=="cut"&&!r.state.readOnly&&r.dispatch({changes:o,scrollIntoView:!0,userEvent:"delete.cut"});let s=Xc?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(Cx(r,t),!1)};var _c=rt.define();function $c(r,e){let t=[];for(let o of r.facet(Ic)){let i=o(r,e);i&&t.push(i)}return t.length?r.update({effects:t,annotations:_c.of(!0)}):null}function eh(r){setTimeout(()=>{let e=r.hasFocus;if(e!=r.inputState.notifiedFocused){let t=$c(r.state,e);t?r.dispatch(t):r.update([])}},10)}ze.focus=r=>{r.inputState.lastFocusTime=Date.now(),!r.scrollDOM.scrollTop&&(r.inputState.lastScrollTop||r.inputState.lastScrollLeft)&&(r.scrollDOM.scrollTop=r.inputState.lastScrollTop,r.scrollDOM.scrollLeft=r.inputState.lastScrollLeft),eh(r)};ze.blur=r=>{r.observer.clearSelectionRange(),eh(r)};ze.compositionstart=ze.compositionupdate=r=>{if(!r.observer.editContext&&(r.inputState.compositionFirstChange==null&&(r.inputState.compositionFirstChange=!0),r.inputState.composing<0)){let{main:e}=r.state.selection;!e.empty&&r.lineBlockAt(e.from).from!=r.lineBlockAt(e.to).from&&r.dispatch({changes:r.state.selection.ranges.filter(t=>!t.empty).map(t=>({from:t.from,to:t.to})),userEvent:"input"}),r.inputState.composing=0}};ze.compositionend=r=>{r.observer.editContext||(r.inputState.composing=-1,r.inputState.compositionEndedAt=Date.now(),r.inputState.compositionPendingKey=!0,r.inputState.compositionPendingChange=r.observer.pendingRecords().length>0,r.inputState.compositionFirstChange=null,O.chrome&&O.android?r.observer.flushSoon():r.inputState.compositionPendingChange?Promise.resolve().then(()=>r.observer.flush()):setTimeout(()=>{r.inputState.composing<0&&r.docView.hasComposition&&r.update([])},50))};ze.contextmenu=r=>{r.inputState.lastContextMenu=Date.now()};ht.beforeinput=(r,e)=>{var t,o;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(r.inputState.insertingText=e.data,r.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&r.observer.editContext){let s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),n=e.getTargetRanges();if(s&&n.length){let a=n[0],l=r.posAtDOM(a.startContainer,a.startOffset),f=r.posAtDOM(a.endContainer,a.endOffset);return cl(r,{from:l,to:f,insert:r.state.toText(s)},null),!0}}let i;if(O.chrome&&O.android&&(i=Kc.find(s=>s.inputType==e.inputType))&&(r.observer.delayAndroidKey(i.key,i.keyCode),i.key=="Backspace"||i.key=="Delete")){let s=((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0;setTimeout(()=>{var n;(((n=window.visualViewport)===null||n===void 0?void 0:n.height)||0)>s+10&&r.hasFocus&&(r.contentDOM.blur(),r.focus())},100)}return O.ios&&e.inputType=="deleteContentForward"&&r.observer.flushSoon(),O.safari&&e.inputType=="insertText"&&r.inputState.composing>=0&&setTimeout(()=>ze.compositionend(r,e),20),!1};var Qu=new Set;function Ax(r){Qu.has(r)||(Qu.add(r),r.addEventListener("copy",()=>{}),r.addEventListener("cut",()=>{}))}var Ku=["pre-wrap","normal","pre-line","break-spaces"],$r=!1;function Ju(){$r=!1}var Ra=class{constructor(e){this.lineWrapping=e,this.doc=_.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let o=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(o+=Math.max(0,Math.ceil((t-e-o*this.lineLength*.5)/this.lineLength))),this.lineHeight*o}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Ku.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let o=0;o-1,l=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=a;if(this.lineWrapping=a,this.lineHeight=t,this.charWidth=o,this.textHeight=i,this.lineLength=s,l){this.heightSamples={};for(let f=0;f0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>Gi&&($r=!0),this.height=e)}replace(e,t,o){return r.of(o)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,o,i){let s=this,n=o.doc;for(let a=i.length-1;a>=0;a--){let{fromA:l,toA:f,fromB:u,toB:c}=i[a],h=s.lineAt(l,de.ByPosNoHeight,o.setDoc(t),0,0),d=h.to>=f?h:s.lineAt(f,de.ByPosNoHeight,o,0,0);for(c+=d.to-f,f=d.to;a>0&&h.from<=i[a-1].toA;)l=i[a-1].fromA,u=i[a-1].fromB,a--,ls*2){let a=e[t-1];a.break?e.splice(--t,1,a.left,null,a.right):e.splice(--t,1,a.left,a.right),o+=1+a.break,i-=a.size}else if(s>i*2){let a=e[o];a.break?e.splice(o,1,a.left,null,a.right):e.splice(o,1,a.left,a.right),o+=2+a.break,s-=a.size}else break;else if(i=s&&n(this.lineAt(0,de.ByPos,o,i,s))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,o=!1,i){return i&&i.from<=t&&i.more&&this.setMeasuredHeight(i),this.outdated=!1,this}toString(){return`block(${this.length})`}},ot=class r extends is{constructor(e,t,o){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=o}mainBlock(e,t){return new ut(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,o){let i=o[0];return o.length==1&&(i instanceof r||i instanceof Kt&&i.flags&4)&&Math.abs(this.length-i.length)<10?(i instanceof Kt?i=new r(i.length,this.height,this.spaceAbove):i.height=this.height,this.outdated||(i.outdated=!1),i):_e.of(o)}updateHeight(e,t=0,o=!1,i){return i&&i.from<=t&&i.more?this.setMeasuredHeight(i):(o||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},Kt=class r extends _e{constructor(e){super(e,0)}heightMetrics(e,t){let o=e.doc.lineAt(t).number,i=e.doc.lineAt(t+this.length).number,s=i-o+1,n,a=0;if(e.lineWrapping){let l=Math.min(this.height,e.lineHeight*s);n=l/s,this.length>s+1&&(a=(this.height-l)/(this.length-s-1))}else n=this.height/s;return{firstLine:o,lastLine:i,perLine:n,perChar:a}}blockAt(e,t,o,i){let{firstLine:s,lastLine:n,perLine:a,perChar:l}=this.heightMetrics(t,i);if(t.lineWrapping){let f=i+(e0){let s=o[o.length-1];s instanceof r?o[o.length-1]=new r(s.length+i):o.push(null,new r(i-1))}if(e>0){let s=o[0];s instanceof r?o[0]=new r(e+s.length):o.unshift(new r(e-1),null)}return _e.of(o)}decomposeLeft(e,t){t.push(new r(e-1),null)}decomposeRight(e,t){t.push(null,new r(this.length-e-1))}updateHeight(e,t=0,o=!1,i){let s=t+this.length;if(i&&i.from<=t+this.length&&i.more){let n=[],a=Math.max(t,i.from),l=-1;for(i.from>t&&n.push(new r(i.from-t-1).updateHeight(e,t));a<=s&&i.more;){let u=e.doc.lineAt(a).length;n.length&&n.push(null);let c=i.heights[i.index++],h=0;c<0&&(h=-c,c=i.heights[i.index++]),l==-1?l=c:Math.abs(c-l)>=Gi&&(l=-2);let d=new ot(u,c,h);d.outdated=!1,n.push(d),a+=u+1}a<=s&&n.push(null,new r(s-a).updateHeight(e,a));let f=_e.of(n);return(l<0||Math.abs(f.height-this.height)>=Gi||Math.abs(l-this.heightMetrics(e,t).perLine)>=Gi)&&($r=!0),os(this,f)}else(o||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},Fa=class extends _e{constructor(e,t,o){super(e.length+t+o.length,e.height+o.height,t|(e.outdated||o.outdated?2:0)),this.left=e,this.right=o,this.size=e.size+o.size}get break(){return this.flags&1}blockAt(e,t,o,i){let s=o+this.left.height;return ea))return f;let u=t==de.ByPosNoHeight?de.ByPosNoHeight:de.ByPos;return l?f.join(this.right.lineAt(a,u,o,n,a)):this.left.lineAt(a,u,o,i,s).join(f)}forEachLine(e,t,o,i,s,n){let a=i+this.left.height,l=s+this.left.length+this.break;if(this.break)e=l&&this.right.forEachLine(e,t,o,a,l,n);else{let f=this.lineAt(l,de.ByPos,o,i,s);e=e&&f.from<=t&&n(f),t>f.to&&this.right.forEachLine(f.to+1,t,o,a,l,n)}}replace(e,t,o){let i=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-i,t-i,o));let s=[];e>0&&this.decomposeLeft(e,s);let n=s.length;for(let a of o)s.push(a);if(e>0&&Xu(s,n-1),t=o&&t.push(null)),e>o&&this.right.decomposeLeft(e-o,t)}decomposeRight(e,t){let o=this.left.length,i=o+this.break;if(e>=i)return this.right.decomposeRight(e-i,t);e2*t.size||t.size>2*e.size?_e.of(this.break?[e,null,t]:[e,t]):(this.left=os(this.left,e),this.right=os(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,o=!1,i){let{left:s,right:n}=this,a=t+s.length+this.break,l=null;return i&&i.from<=t+s.length&&i.more?l=s=s.updateHeight(e,t,o,i):s.updateHeight(e,t,o),i&&i.from<=a+n.length&&i.more?l=n=n.updateHeight(e,a,o,i):n.updateHeight(e,a,o),l?this.balanced(s,n):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Xu(r,e){let t,o;r[e]==null&&(t=r[e-1])instanceof Kt&&(o=r[e+1])instanceof Kt&&r.splice(e-1,3,new Kt(t.length+1+o.length))}var Mx=5,Na=class r{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let o=Math.min(t,this.lineEnd),i=this.nodes[this.nodes.length-1];i instanceof ot?i.length+=o-this.pos:(o>this.pos||!this.isCovered)&&this.nodes.push(new ot(o-this.pos,-1,0)),this.writtenTo=o,t>o&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,o){if(e=Mx)&&this.addLineDeco(i,s,n)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new ot(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let o=new Kt(t-e);return this.oracle.doc.lineAt(e).to==t&&(o.flags|=4),o}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof ot)return e;let t=new ot(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,o){let i=this.ensureLine();i.length+=o,i.collapsed+=o,i.widgetHeight=Math.max(i.widgetHeight,e),i.breaks+=t,this.writtenTo=this.pos=this.pos+o}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof ot)&&!this.isCovered?this.nodes.push(new ot(0,-1,0)):(this.writtenTou.clientHeight||u.scrollWidth>u.clientWidth)&&c.overflow!="visible"){let h=u.getBoundingClientRect();s=Math.max(s,h.left),n=Math.min(n,h.right),a=Math.max(a,h.top),l=Math.min(f==r.parentNode?i.innerHeight:l,h.bottom)}f=c.position=="absolute"||c.position=="fixed"?u.offsetParent:u.parentNode}else if(f.nodeType==11)f=f.host;else break;return{left:s-t.left,right:Math.max(s,n)-t.left,top:a-(t.top+e),bottom:Math.max(a,l)-(t.top+e)}}function Tx(r){let e=r.getBoundingClientRect(),t=r.ownerDocument.defaultView||window;return e.left0&&e.top0}function Ex(r,e){let t=r.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var Wo=class{constructor(e,t,o,i){this.from=e,this.to=t,this.size=o,this.displaySize=i}static same(e,t){if(e.length!=t.length)return!1;for(let o=0;otypeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new Ra(o),this.stateDeco=Zu(t),this.heightMap=_e.empty().applyChanges(this.stateDeco,_.empty,this.heightOracle.setDoc(t.doc),[new ct(0,0,0,t.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=G.set(this.lineGaps.map(i=>i.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let o=0;o<=1;o++){let i=o?t.head:t.anchor;if(!e.some(({from:s,to:n})=>i>=s&&i<=n)){let{from:s,to:n}=this.lineBlockAt(i);e.push(new jr(s,n))}}return this.viewports=e.sort((o,i)=>o.from-i.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Yu:new Va(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Ro(e,this.scaler))})}update(e,t=null){this.state=e.state;let o=this.stateDeco;this.stateDeco=Zu(this.state);let i=e.changedRanges,s=ct.extendWithRanges(i,Bx(o,this.stateDeco,e?e.changes:Ee.empty(this.state.doc.length))),n=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);Ju(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=n||$r)&&(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=n);let l=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.headl.to)||!this.viewportIsAppropriate(l))&&(l=this.getViewport(0,t));let f=l.from!=this.viewport.from||l.to!=this.viewport.to;this.viewport=l,e.flags|=this.updateForViewport(),(f||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Oc)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,o=window.getComputedStyle(t),i=this.heightOracle,s=o.whiteSpace;this.defaultTextDirection=o.direction=="rtl"?fe.RTL:fe.LTR;let n=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",a=t.getBoundingClientRect(),l=n||this.mustMeasureContent||this.contentDOMHeight!=a.height;this.contentDOMHeight=a.height,this.mustMeasureContent=!1;let f=0,u=0;if(a.width&&a.height){let{scaleX:k,scaleY:x}=pc(t,a);(k>.005&&Math.abs(this.scaleX-k)>.005||x>.005&&Math.abs(this.scaleY-x)>.005)&&(this.scaleX=k,this.scaleY=x,f|=16,n=l=!0)}let c=(parseInt(o.paddingTop)||0)*this.scaleY,h=(parseInt(o.paddingBottom)||0)*this.scaleY;(this.paddingTop!=c||this.paddingBottom!=h)&&(this.paddingTop=c,this.paddingBottom=h,f|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(i.lineWrapping&&(l=!0),this.editorWidth=e.scrollDOM.clientWidth,f|=16);let d=mc(this.view.contentDOM,!1).y;d!=this.scrollParent&&(this.scrollParent=d,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=yc(this.scrollParent||e.win);let m=(this.printing?Ex:Dx)(t,this.paddingTop),b=m.top-this.pixelViewport.top,v=m.bottom-this.pixelViewport.bottom;this.pixelViewport=m;let S=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(S!=this.inView&&(this.inView=S,S&&(l=!0)),!this.inView&&!this.scrollTarget&&!Tx(e.dom))return 0;let w=a.width;if((this.contentDOMWidth!=w||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=a.width,this.editorHeight=e.scrollDOM.clientHeight,f|=16),l){let k=e.docView.measureVisibleLineHeights(this.viewport);if(i.mustRefreshForHeights(k)&&(n=!0),n||i.lineWrapping&&Math.abs(w-this.contentDOMWidth)>i.charWidth){let{lineHeight:x,charWidth:g,textHeight:C}=e.docView.measureTextSize();n=x>0&&i.refresh(s,x,g,C,Math.max(5,w/g),k),n&&(e.docView.minWidth=0,f|=16)}b>0&&v>0?u=Math.max(b,v):b<0&&v<0&&(u=Math.min(b,v)),Ju();for(let x of this.viewports){let g=x.from==this.viewport.from?k:e.docView.measureVisibleLineHeights(x);this.heightMap=(n?_e.empty().applyChanges(this.stateDeco,_.empty,this.heightOracle,[new ct(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(i,0,n,new Ha(x.from,g))}$r&&(f|=2)}let A=!this.viewportIsAppropriate(this.viewport,u)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return A&&(f&2&&(f|=this.updateScaler()),this.viewport=this.getViewport(u,this.scrollTarget),f|=this.updateForViewport()),(f&2||A)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(n?[]:this.lineGaps,e)),f|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),f}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let o=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),i=this.heightMap,s=this.heightOracle,{visibleTop:n,visibleBottom:a}=this,l=new jr(i.lineAt(n-o*1e3,de.ByHeight,s,0,0).from,i.lineAt(a+(1-o)*1e3,de.ByHeight,s,0,0).to);if(t){let{head:f}=t.range;if(fl.to){let u=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),c=i.lineAt(f,de.ByPos,s,0,0),h;t.y=="center"?h=(c.top+c.bottom)/2-u/2:t.y=="start"||t.y=="nearest"&&f=a+Math.max(10,Math.min(o,250)))&&i>n-2*1e3&&s>1,n=i<<1;if(this.defaultTextDirection!=fe.LTR&&!o)return[];let a=[],l=(u,c,h,d)=>{if(c-uu&&vv.from>=h.from&&v.to<=h.to&&Math.abs(v.from-u)v.fromS));if(!b){if(cw.from<=c&&w.to>=c)){let w=t.moveToLineBoundary(T.cursor(c),!1,!0).head;w>u&&(c=w)}let v=this.gapSize(h,u,c,d),S=o||v<2e6?v:2e6;b=new Wo(u,c,v,S)}a.push(b)},f=u=>{if(u.length2e6)for(let x of e)x.from>=u.from&&x.fromu.from&&l(u.from,d,u,c),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let o=[];re.spans(t,this.viewport.from,this.viewport.to,{span(s,n){o.push({from:s,to:n})},point(){}},20);let i=0;if(o.length!=this.visibleRanges.length)i=12;else for(let s=0;s=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Ro(this.heightMap.lineAt(e,de.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Ro(this.heightMap.lineAt(this.scaler.fromDOM(e),de.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop*this.scaleY:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Ro(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},jr=class{constructor(e,t){this.from=e,this.to=t}};function Lx(r,e,t){let o=[],i=r,s=0;return re.spans(t,r,e,{span(){},point(n,a){n>i&&(o.push({from:i,to:n}),s+=n-i),i=a}},20),i=1)return e[e.length-1].to;let o=Math.floor(r*t);for(let i=0;;i++){let{from:s,to:n}=e[i],a=n-s;if(o<=a)return s+o;o-=a}}function Fi(r,e){let t=0;for(let{from:o,to:i}of r.ranges){if(e<=i){t+=e-o;break}t+=i-o}return t/r.total}function Ix(r,e){for(let t of r)if(e(t))return t}var Yu={toDOM(r){return r},fromDOM(r){return r},scale:1,eq(r){return r==this}};function Zu(r){let e=r.facet(ds).filter(o=>typeof o!="function"),t=r.facet(fl).filter(o=>typeof o!="function");return t.length&&e.push(re.join(t)),e}var Va=class r{constructor(e,t,o){let i=0,s=0,n=0;this.viewports=o.map(({from:a,to:l})=>{let f=t.lineAt(a,de.ByPos,e,0,0).top,u=t.lineAt(l,de.ByPos,e,0,0).bottom;return i+=u-f,{from:a,to:l,top:f,bottom:u,domTop:0,domBottom:0}}),this.scale=(7e6-i)/(t.height-i);for(let a of this.viewports)a.domTop=n+(a.top-s)*this.scale,n=a.domBottom=a.domTop+(a.bottom-a.top),s=a.bottom}toDOM(e){for(let t=0,o=0,i=0;;t++){let s=tt.from==e.viewports[o].from&&t.to==e.viewports[o].to):!1}};function Ro(r,e){if(e.scale==1)return r;let t=e.toDOM(r.top),o=e.toDOM(r.bottom);return new ut(r.from,r.length,t,o-t,Array.isArray(r._content)?r._content.map(i=>Ro(i,e)):r._content)}var Ni=R.define({combine:r=>r.join(" ")}),Wa=R.define({combine:r=>r.indexOf(!0)>-1}),Ga=Qe.newName(),th=Qe.newName(),rh=Qe.newName(),oh={"&light":"."+th,"&dark":"."+rh};function qa(r,e,t){return new Qe(e,{finish(o){return/&/.test(o)?o.replace(/&\w*/,i=>{if(i=="&")return r;if(!t||!t[i])throw new RangeError(`Unsupported selector: ${i}`);return t[i]}):r+" "+o}})}var Px=qa("."+Ga,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{userSelect:"none",position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},".cm-panels-top":{top:"0"},".cm-panels-bottom":{bottom:"0"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{background:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 0) no-repeat",backgroundSize:".4em",backgroundPosition:"calc(min(50%, 0px)) center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},oh),Ox={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},sa=O.ie&&O.ie_version<=11,ja=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new pa,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let o of t)this.queue.push(o);(O.ie&&O.ie_version<=11||O.ios&&e.composing)&&t.some(o=>o.type=="childList"&&o.removedNodes.length||o.type=="characterData"&&o.oldValue.length>o.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&O.android&&e.constructor.EDIT_CONTEXT!==!1&&!(O.chrome&&O.chrome_version<126)&&(this.editContext=new Qa(e),e.state.facet(zt)&&(e.contentDOM.editContext=this.editContext.editContext)),sa&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,o)=>t!=e[o]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:o}=this,i=this.selectionRange;if(o.state.facet(zt)?o.root.activeElement!=this.dom:!Ho(this.dom,i))return;let s=i.anchorNode&&o.docView.tile.nearest(i.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(O.ie&&O.ie_version<=11||O.android&&O.chrome)&&!o.state.selection.main.empty&&i.focusNode&&Fo(i.focusNode,i.focusOffset,i.anchorNode,i.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=jo(e.root);if(!t)return!1;let o=O.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Rx(this.view,t)||t;if(!o||this.selectionRange.eq(o))return!1;let i=Ho(this.dom,o);return i&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&Jr(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(i)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,o=-1,i=!1;for(let s of e){let n=this.readMutation(s);n&&(n.typeOver&&(i=!0),t==-1?{from:t,to:o}=n:(t=Math.min(n.from,t),o=Math.max(n.to,o)))}return{from:t,to:o,typeOver:i}}readChange(){let{from:e,to:t,typeOver:o}=this.processRecords(),i=this.selectionChanged&&Ho(this.dom,this.selectionRange);if(e<0&&!i)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new La(this.view,e,t,o);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let o=this.view.state,i=jc(this.view,t);return this.view.state==o&&(t.domChanged||t.newSel&&!rs(this.view.state.selection,t.newSel.main))&&this.view.update([]),i}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let o=_u(t,e.previousSibling||e.target.previousSibling,-1),i=_u(t,e.nextSibling||e.target.nextSibling,1);return{from:o?t.posAfter(o):t.posAtStart,to:i?t.posBefore(i):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(zt)!=e.state.facet(zt)&&(e.view.contentDOM.editContext=e.state.facet(zt)?this.editContext.editContext:null))}destroy(){var e,t,o;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(o=this.resizeScroll)===null||o===void 0||o.disconnect();for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function _u(r,e,t){for(;e;){let o=ge.get(e);if(o&&o.parent==r)return o;let i=e.parentNode;e=i!=r.dom?i:t>0?e.nextSibling:e.previousSibling}return null}function $u(r,e){let t=e.startContainer,o=e.startOffset,i=e.endContainer,s=e.endOffset,n=r.docView.domAtPos(r.state.selection.main.anchor,1);return Fo(n.node,n.offset,i,s)&&([t,o,i,s]=[i,s,t,o]),{anchorNode:t,anchorOffset:o,focusNode:i,focusOffset:s}}function Rx(r,e){if(e.getComposedRanges){let i=e.getComposedRanges(r.root)[0];if(i)return $u(r,i)}let t=null;function o(i){i.preventDefault(),i.stopImmediatePropagation(),t=i.getTargetRanges()[0]}return r.contentDOM.addEventListener("beforeinput",o,!0),r.dom.ownerDocument.execCommand("indent"),r.contentDOM.removeEventListener("beforeinput",o,!0),t?$u(r,t):null}var Qa=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=o=>{let i=e.state.selection.main,{anchor:s,head:n}=i,a=this.toEditorPos(o.updateRangeStart),l=this.toEditorPos(o.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:o.updateRangeStart,editorBase:a,drifted:!1});let f=l-a>o.text.length;a==this.from&&sthis.to&&(l=s);let u=Qc(e.state.sliceDoc(a,l),o.text,(f?i.from:i.to)-a,f?"end":null);if(!u){let h=T.single(this.toEditorPos(o.selectionStart),this.toEditorPos(o.selectionEnd));rs(h,i)||e.dispatch({selection:h,userEvent:"select"});return}let c={from:u.from+a,to:u.toA+a,insert:_.of(o.text.slice(u.from,u.toB).split(` `))};if((O.mac||O.android)&&c.from==n-1&&/^\. ?$/.test(o.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(c={from:a,to:l,insert:_.of([o.text.replace("."," ")])}),this.pendingContextChange=c,!e.state.readOnly){let h=this.to-this.from+(c.to-c.from+c.insert.length);cl(e,c,T.single(this.toEditorPos(o.selectionStart,h),this.toEditorPos(o.selectionEnd,h)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),c.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,o.updateRangeStart-1),Math.min(t.text.length,o.updateRangeStart+1)))&&this.handlers.compositionend(o)},this.handlers.characterboundsupdate=o=>{let i=[],s=null;for(let n=this.toEditorPos(o.rangeStart),a=this.toEditorPos(o.rangeEnd);n{let i=[];for(let s of o.getTextFormats()){let n=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(n)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),f=this.toEditorPos(s.rangeEnd);if(l{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:o}=this.composing;this.composing=null,o&&this.reset(e.state)}};for(let o in this.handlers)t.addEventListener(o,this.handlers[o]);this.measureReq={read:o=>{let i=jo(o.root);i&&i.rangeCount&&this.editContext.updateSelectionBounds(i.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,o=!1,i=this.pendingContextChange;return e.changes.iterChanges((s,n,a,l,f)=>{if(o)return;let u=f.length-(n-s);if(i&&n>=i.to)if(i.from==s&&i.to==n&&i.insert.eq(f)){i=this.pendingContextChange=null,t+=u,this.to+=u;return}else i=null,this.revertPending(e.state);if(s+=t,n+=t,n<=this.from)this.from+=u,this.to+=u;else if(sthis.to||this.to-this.from+f.length>3e4){o=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(n),f.toString()),this.to+=u}t+=u}),i&&!o&&this.revertPending(e.state),!o}update(e){let t=this.pendingContextChange,o=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(o.from,o.to)&&e.transactions.some(i=>!i.isUserEvent("input.type")&&i.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,o=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),i=this.toContextPos(t.head);(this.editContext.selectionStart!=o||this.editContext.selectionEnd!=i)&&this.editContext.updateSelection(o,i)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let o=this.composing;return o&&o.drifted?o.editorBase+(e-o.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},I=class r{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.clearAnnouncement=-1,this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:o}=e;this.dispatchTransactions=e.dispatchTransactions||o&&(i=>i.forEach(s=>o(s,this)))||(i=>this.update(i)),this.dispatch=this.dispatch.bind(this),this._root=e.root||Dg(e.parent)||document,this.viewState=new ss(this,e.state||se.create(e)),e.scrollTo&&e.scrollTo.is(Pi)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(qr).map(i=>new zo(i));for(let i of this.plugins)i.update(this);this.observer=new ja(this),this.inputState=new Ia(this),this.inputState.ensureHandlers(this.plugins),this.docView=new es(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof Te?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,o=!1,i,s=this.state;for(let h of e){if(h.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=h.state}if(this.destroyed){this.viewState.state=s;return}let n=this.hasFocus,a=0,l=null;e.some(h=>h.annotation(_c))?(this.inputState.notifiedFocused=n,a=1):n!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=n,l=$c(s,n),l||(a=1));let f=this.observer.delayedAndroidKey,u=null;if(f?(this.observer.clearDelayedAndroidKey(),u=this.observer.readChange(),(u&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(u=null)):this.observer.clear(),s.facet(se.phrases)!=this.state.facet(se.phrases))return this.setState(s);i=_i.create(this,s,e),i.flags|=a;let c=this.viewState.scrollTarget;try{this.updateState=2;for(let h of e){if(c&&(c=c.map(h.changes)),h.scrollIntoView){let{main:d}=h.state.selection,{x:p,y:m}=this.state.facet(r.cursorScrollMargin);c=new No(d.empty?d:T.cursor(d.head,d.head>d.anchor?-1:1),"nearest","nearest",m,p)}for(let d of h.effects)d.is(Pi)&&(c=d.value.clip(this.state))}this.viewState.update(i,c),this.bidiCache=ns.update(this.bidiCache,i.changes),i.empty||(this.updatePlugins(i),this.inputState.update(i)),t=this.docView.update(i),this.state.facet(Oo)!=this.styleModules&&this.mountStyles(),o=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(h=>h.isUserEvent("select.pointer")))}finally{this.updateState=0}if(i.startState.facet(Ni)!=i.state.facet(Ni)&&(this.viewState.mustMeasureContent=!0),(t||o||c||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!i.empty)for(let h of this.state.facet(ba))try{h(i)}catch(d){Je(this.state,d,"update listener")}(l||u)&&Promise.resolve().then(()=>{l&&this.state==l.startState&&this.dispatch(l),u&&!jc(this,u)&&f.force&&Jr(this.contentDOM,f.key,f.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let o of this.plugins)o.destroy(this);this.viewState=new ss(this,e),this.plugins=e.facet(qr).map(o=>new zo(o)),this.pluginMap.clear();for(let o of this.plugins)o.update(this);this.docView.destroy(),this.docView=new es(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(qr),o=e.state.facet(qr);if(t!=o){let i=[];for(let s of o){let n=t.indexOf(s);if(n<0)i.push(new zo(s));else{let a=this.plugins[n];a.mustUpdate=e,i.push(a)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=i,this.pluginMap.clear()}else for(let i of this.plugins)i.mustUpdate=e;for(let i=0;i-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,o=this.viewState.scrollParent,i=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:n,scaleY:a}=this.viewState;Math.abs(i-this.viewState.scrollOffset)>1&&(n=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(n<0){if(yc(o||this.win))s=-1,n=this.viewState.heightMap.height/this.viewState.scaleY;else{let p=this.viewState.scrollAnchorAt(i);s=p.from,n=p.top}a=this.viewState.scaleY}this.updateState=1;let f=this.viewState.measure();if(!f&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let u=[];f&4||([this.measureRequests,u]=[u,this.measureRequests]);let c=u.map(p=>{try{return p.read(this)}catch(m){return Je(this.state,m),ec}}),h=_i.create(this,this.state,[]),d=!1;h.flags|=f,t?t.flags|=f:t=h,this.updateState=2,h.empty||(this.updatePlugins(h),this.inputState.update(h),this.updateAttrs(),d=this.docView.update(h),d&&this.docViewUpdate());for(let p=0;p1||m<-1)&&!(O.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(o==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){i=i+m,o?s<0?o.scrollTop=o.scrollHeight:o.scrollTop+=m:this.win.scrollBy(0,m),n=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(ba))l(t)}get themeClasses(){return Ga+" "+(this.state.facet(Wa)?rh:th)+" "+this.state.facet(Ni)}updateAttrs(){let e=tc(this,Fc,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(zt)?"true":"false",class:"cm-content",style:`${O.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),tc(this,ll,t);let o=this.observer.ignore(()=>{let i=Pu(this.contentDOM,this.contentAttrs,t),s=Pu(this.dom,this.editorAttrs,e);return i||s});return this.editorAttrs=e,this.contentAttrs=t,o}showAnnouncements(e){let t=!0;for(let o of e)for(let i of o.effects)if(i.is(r.announce)){t&&(this.announceDOM.textContent="",this.win.clearTimeout(this.clearAnnouncement),this.clearAnnouncement=this.win.setTimeout(()=>{this.announceDOM.textContent=" "},200),t=!1);let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=i.value}}mountStyles(){this.styleModules=this.state.facet(Oo);let e=this.state.facet(r.cspNonce);Qe.mount(this.root,this.styleModules.concat(Px).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;to.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,o){return ia(this,e,zu(this,e,t,o))}moveByGroup(e,t){return ia(this,e,zu(this,e,t,o=>ox(this,e.head,o)))}visualLineSide(e,t){let o=this.bidiSpans(e),i=this.textDirectionAt(e.from),s=o[t?o.length-1:0];return T.cursor(s.side(t,i)+e.from,s.forward(!t,i)?1:-1)}moveToLineBoundary(e,t,o=!0){return rx(this,e,t,o)}moveVertically(e,t,o){return ia(this,e,ix(this,e,t,o))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let o=Da(this,e,t);return o&&o.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),Da(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let o=this.state.doc.lineAt(e),i=this.bidiSpans(o),s=i[st.find(i,e-o.from,-1,t)];return this.docView.coordsAt(e,t,s.dir==fe.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Pc)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Hx)return Sc(e.length);let t=this.textDirectionAt(e.from),o;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||Ac(s.isolates,o=Hu(this,e))))return s.order;o||(o=Hu(this,e));let i=Hg(e.text,t,o);return this.bidiCache.push(new ns(e.from,e.to,t,o,!0,i)),i}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||O.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{bc(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.win.clearTimeout(this.clearAnnouncement),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){var o,i,s,n;return Pi.of(new No(typeof e=="number"?T.cursor(e):e,(o=t.y)!==null&&o!==void 0?o:"nearest",(i=t.x)!==null&&i!==void 0?i:"nearest",(s=t.yMargin)!==null&&s!==void 0?s:5,(n=t.xMargin)!==null&&n!==void 0?n:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,o=this.viewState.scrollAnchorAt(e);return Pi.of(new No(T.cursor(o.from),"start","start",o.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Se.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Se.define(()=>({}),{eventObservers:e})}static theme(e,t){let o=Qe.newName(),i=[Ni.of(o),Oo.of(qa(`.${o}`,e))];return t&&t.dark&&i.push(Wa.of(!0)),i}static baseTheme(e){return Ze.lowest(Oo.of(qa("."+Ga,e,oh)))}static findFromDOM(e){var t;let o=e.querySelector(".cm-content"),i=o&&ge.get(o)||ge.get(e);return((t=i?.root)===null||t===void 0?void 0:t.view)||null}};I.styleModule=Oo;I.inputHandler=Lc;I.clipboardInputFilter=nl;I.clipboardOutputFilter=al;I.scrollHandler=Rc;I.focusChangeEffect=Ic;I.perLineTextDirection=Pc;I.exceptionSink=Ec;I.updateListener=ba;I.editable=zt;I.mouseSelectionStyle=Tc;I.dragMovesSelection=Dc;I.clickAddsSelectionRange=Bc;I.decorations=ds;I.blockWrappers=Nc;I.outerDecorations=fl;I.atomicRanges=Ko;I.bidiIsolatedRanges=zc;I.cursorScrollMargin=R.define({combine:r=>{let e=5,t=5;for(let o of r)typeof o=="number"?e=t=o:{x:e,y:t}=o;return{x:e,y:t}}});I.scrollMargins=Uc;I.darkTheme=Wa;I.cspNonce=R.define({combine:r=>r.length?r[0]:""});I.contentAttributes=ll;I.editorAttributes=Fc;I.lineWrapping=I.contentAttributes.of({class:"cm-lineWrapping"});I.announce=q.define();var Hx=4096,ec={},ns=class r{constructor(e,t,o,i,s,n){this.from=e,this.to=t,this.dir=o,this.isolates=i,this.fresh=s,this.order=n}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let o=[],i=e.length?e[e.length-1].dir:fe.LTR;for(let s=Math.max(0,e.length-10);s=0;i--){let s=o[i],n=typeof s=="function"?s(r):s;n&&ol(n,t)}return t}var Fx=O.mac?"mac":O.windows?"win":O.linux?"linux":"key";function Nx(r,e){let t=r.split(/-(?!$)/),o=t[t.length-1];o=="Space"&&(o=" ");let i,s,n,a;for(let l=0;lo.concat(i),[]))),t}function sh(r,e,t){return nh(ih(r.state),e,r,t)}var Qt=null,Ux=4e3;function Vx(r,e=Fx){let t=Object.create(null),o=Object.create(null),i=(n,a)=>{let l=o[n];if(l==null)o[n]=a;else if(l!=a)throw new Error("Key binding "+n+" is used both as a regular binding and as a multi-stroke prefix")},s=(n,a,l,f,u)=>{var c,h;let d=t[n]||(t[n]=Object.create(null)),p=a.split(/ (?!$)/).map(v=>Nx(v,e));for(let v=1;v{let A=Qt={view:w,prefix:S,scope:n};return setTimeout(()=>{Qt==A&&(Qt=null)},Ux),!0}]})}let m=p.join(" ");i(m,!1);let b=d[m]||(d[m]={preventDefault:!1,stopPropagation:!1,run:((h=(c=d._any)===null||c===void 0?void 0:c.run)===null||h===void 0?void 0:h.slice())||[]});l&&b.run.push(l),f&&(b.preventDefault=!0),u&&(b.stopPropagation=!0)};for(let n of r){let a=n.scope?n.scope.split(" "):["editor"];if(n.any)for(let f of a){let u=t[f]||(t[f]=Object.create(null));u._any||(u._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:c}=n;for(let h in u)u[h].run.push(d=>c(d,Ka))}let l=n[e]||n.key;if(l)for(let f of a)s(f,l,n.run,n.preventDefault,n.stopPropagation),n.shift&&s(f,"Shift-"+l,n.shift,n.preventDefault,n.stopPropagation)}return t}var Ka=null;function nh(r,e,t,o){Ka=e;let i=Du(e),s=Po(i,0),n=Li(s)==i.length&&i!=" ",a="",l=!1,f=!1,u=!1;Qt&&Qt.view==t&&Qt.scope==o&&(a=Qt.prefix+" ",Jc.indexOf(e.keyCode)<0&&(f=!0,Qt=null));let c=new Set,h=b=>{if(b){for(let v of b.run)if(!c.has(v)&&(c.add(v),v(t)))return b.stopPropagation&&(u=!0),!0;b.preventDefault&&(b.stopPropagation&&(u=!0),f=!0)}return!1},d=r[o],p,m;return d&&(h(d[a+zi(i,e,!n)])?l=!0:n&&(e.altKey||e.metaKey||e.ctrlKey)&&!(O.windows&&e.ctrlKey&&e.altKey)&&!(O.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=Nt[e.keyCode])&&p!=i?(h(d[a+zi(p,e,!0)])||e.shiftKey&&(m=Wr[e.keyCode])!=i&&m!=p&&h(d[a+zi(m,e,!1)]))&&(l=!0):n&&e.shiftKey&&h(d[a+zi(i,e,!0)])&&(l=!0),!l&&h(d._any)&&(l=!0)),f&&(l=!0),l&&u&&e.stopPropagation(),Ka=null,l}var pr=class r{constructor(e,t,o,i,s){this.className=e,this.left=t,this.top=o,this.width=i,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,o){if(o.empty){let i=e.coordsAtPos(o.head,o.assoc||1);if(!i)return[];let s=ah(e);return[new r(t,i.left-s.left,i.top-s.top,null,i.bottom-i.top)]}else return Wx(e,t,o)}};function ah(r){let e=r.scrollDOM.getBoundingClientRect();return{left:(r.textDirection==fe.LTR?e.left:e.right-r.scrollDOM.clientWidth*r.scaleX)-r.scrollDOM.scrollLeft*r.scaleX,top:e.top-r.scrollDOM.scrollTop*r.scaleY}}function oc(r,e,t,o){let i=r.coordsAtPos(e,t*2);if(!i)return o;let s=r.dom.getBoundingClientRect(),n=(i.top+i.bottom)/2,a=r.posAtCoords({x:s.left+1,y:n}),l=r.posAtCoords({x:s.right-1,y:n});return a==null||l==null?o:{from:Math.max(o.from,Math.min(a,l)),to:Math.min(o.to,Math.max(a,l))}}function Wx(r,e,t){if(t.to<=r.viewport.from||t.from>=r.viewport.to)return[];let o=Math.max(t.from,r.viewport.from),i=Math.min(t.to,r.viewport.to),s=r.textDirection==fe.LTR,n=r.contentDOM,a=n.getBoundingClientRect(),l=ah(r),f=n.querySelector(".cm-line"),u=f&&window.getComputedStyle(f),c=a.left+(u?parseInt(u.paddingLeft)+Math.min(0,parseInt(u.textIndent)):0),h=a.right-(u?parseInt(u.paddingRight):0),d=Ba(r,o,1),p=Ba(r,i,-1),m=d.type==Ie.Text?d:null,b=p.type==Ie.Text?p:null;if(m&&(r.lineWrapping||d.widgetLineBreaks)&&(m=oc(r,o,1,m)),b&&(r.lineWrapping||p.widgetLineBreaks)&&(b=oc(r,i,-1,b)),m&&b&&m.from==b.from&&m.to==b.to)return S(w(t.from,t.to,m));{let k=m?w(t.from,null,m):A(d,!1),x=b?w(null,t.to,b):A(p,!0),g=[];return(m||d).to<(b||p).from-(m&&b?1:0)||d.widgetLineBreaks>1&&k.bottom+r.defaultLineHeight/2E&&W.from=K)break;V>U&&D(Math.max(N,U),k==null&&N<=E,Math.min(V,K),x==null&&V>=z,ne.dir)}if(U=F.to+1,U>=K)break}return B.length==0&&D(E,k==null,z,x==null,r.textDirection),{top:C,bottom:M,horizontal:B}}function A(k,x){let g=a.top+(x?k.top:k.bottom);return{top:g,bottom:g,horizontal:[]}}}function Gx(r,e){return r.constructor==e.constructor&&r.eq(e)}var Ja=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(qi)!=e.state.facet(qi)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,o=e.facet(qi);for(;t!Gx(t,this.drawn[o]))){let t=this.dom.firstChild,o=0;for(let i of e)i.update&&t&&i.constructor&&this.drawn[o].constructor&&i.update(t,this.drawn[o])?(t=t.nextSibling,o++):this.dom.insertBefore(i.draw(),t);for(;t;){let i=t.nextSibling;t.remove(),t=i}this.drawn=e,O.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},qi=R.define();function lh(r){return[Se.define(e=>new Ja(e,r)),qi.of(r)]}var eo=R.define({combine(r){return ft(r,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function fh(r={}){return[eo.of(r),qx,jx,Kx,Oc.of(!0)]}function uh(r){return r.startState.facet(eo)!=r.state.facet(eo)}var qx=lh({above:!0,markers(r){let{state:e}=r,t=e.facet(eo),o=[];for(let i of e.selection.ranges){let s=i==e.selection.main;if(i.empty||t.drawRangeCursor&&!(s&&O.ios&&t.iosSelectionHandles)){let n=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",a=i.empty?i:T.cursor(i.head,i.assoc);for(let l of pr.forRange(r,n,a))o.push(l)}}return o},update(r,e){r.transactions.some(o=>o.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=uh(r);return t&&ic(r.state,e),r.docChanged||r.selectionSet||t},mount(r,e){ic(e.state,r)},class:"cm-cursorLayer"});function ic(r,e){e.style.animationDuration=r.facet(eo).cursorBlinkRate+"ms"}var jx=lh({above:!1,markers(r){let e=[],{main:t,ranges:o}=r.state.selection;for(let i of o)if(!i.empty)for(let s of pr.forRange(r,"cm-selectionBackground",i))e.push(s);if(O.ios&&!t.empty&&r.state.facet(eo).iosSelectionHandles){for(let i of pr.forRange(r,"cm-selectionHandle cm-selectionHandle-start",T.cursor(t.from,1)))e.push(i);for(let i of pr.forRange(r,"cm-selectionHandle cm-selectionHandle-end",T.cursor(t.to,1)))e.push(i)}return e},update(r,e){return r.docChanged||r.selectionSet||r.viewportChanged||uh(r)},class:"cm-selectionLayer"}),Qx=O.gecko&&O.gecko_version==153?"#ffffff01":"transparent",Kx=Ze.highest(I.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:`${Qx} !important`},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}}));function sc(r,e,t,o,i){e.lastIndex=0;for(let s=r.iterRange(t,o),n=t,a;!s.next().done;n+=s.value.length)if(!s.lineBreak)for(;a=e.exec(s.value);)i(n+a.index,a)}function Jx(r,e){let t=r.visibleRanges;if(t.length==1&&t[0].from==r.viewport.from&&t[0].to==r.viewport.to)return t;let o=[];for(let{from:i,to:s}of t)i=Math.max(r.state.doc.lineAt(i).from,i-e),s=Math.min(r.state.doc.lineAt(s).to,s+e),o.length&&o[o.length-1].to>=i?o[o.length-1].to=s:o.push({from:i,to:s});return o}var Xa=class{constructor(e){let{regexp:t,decoration:o,decorate:i,boundary:s,maxLength:n=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,i)this.addMatch=(a,l,f,u)=>i(u,f,f+a[0].length,a,l);else if(typeof o=="function")this.addMatch=(a,l,f,u)=>{let c=o(a,l,f);c&&u(f,f+a[0].length,c)};else if(o)this.addMatch=(a,l,f,u)=>u(f,f+a[0].length,o);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=s,this.maxLength=n}createDeco(e){let t=new ke,o=t.add.bind(t);for(let{from:i,to:s}of Jx(e,this.maxLength))sc(e.state.doc,this.regexp,i,s,(n,a)=>this.addMatch(a,e,n,o));return t.finish()}updateDeco(e,t){let o=1e9,i=-1;return e.docChanged&&e.changes.iterChanges((s,n,a,l)=>{l>=e.view.viewport.from&&a<=e.view.viewport.to&&(o=Math.min(a,o),i=Math.max(l,i))}),e.viewportMoved||i-o>1e3?this.createDeco(e.view):i>-1?this.updateRange(e.view,t.map(e.changes),o,i):t}updateRange(e,t,o,i){for(let s of e.visibleRanges){let n=Math.max(s.from,o),a=Math.min(s.to,i);if(a>=n){let l=e.state.doc.lineAt(n),f=l.tol.from;n--)if(this.boundary.test(l.text[n-1-l.from])){u=n;break}for(;ah.push(v.range(m,b));if(l==f)for(this.regexp.lastIndex=u-l.from;(d=this.regexp.exec(l.text))&&d.indexthis.addMatch(b,e,m,p));t=t.update({filterFrom:u,filterTo:c,filter:(m,b)=>mc,add:h})}}return t}},Ya=/x/.unicode!=null?"gu":"g",Xx=new RegExp(`[\0-\b --Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Ya),Yx={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},na=null;function Zx(){var r;if(na==null&&typeof document<"u"&&document.body){let e=document.body.style;na=((r=e.tabSize)!==null&&r!==void 0?r:e.MozTabSize)!=null}return na||!1}var ji=R.define({combine(r){let e=ft(r,{render:null,specialChars:Xx,addSpecialChars:null});return(e.replaceTabs=!Zx())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Ya)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Ya)),e}});function ch(r={}){return[ji.of(r),_x()]}var nc=null;function _x(){return nc||(nc=Se.fromClass(class{constructor(r){this.view=r,this.decorations=G.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(r.state.facet(ji)),this.decorations=this.decorator.createDeco(r)}makeDecorator(r){return new Xa({regexp:r.specialChars,decoration:(e,t,o)=>{let{doc:i}=t.state,s=Po(e[0],0);if(s==9){let n=i.lineAt(o),a=t.state.tabSize,l=jt(n.text,a,o-n.from);return G.replace({widget:new _a((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=G.replace({widget:new Za(r,s)}))},boundary:r.replaceTabs?void 0:/[^]/})}update(r){let e=r.state.facet(ji);r.startState.facet(ji)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(r.view)):this.decorations=this.decorator.updateDeco(r,this.decorations)}},{decorations:r=>r.decorations}))}var $x="•";function e0(r){return r>=32?$x:r==10?"␤":String.fromCharCode(9216+r)}var Za=class extends Re{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=e0(this.code),o=e.state.phrase("Control character")+" "+(Yx[this.code]||"0x"+this.code.toString(16)),i=this.options.render&&this.options.render(this.code,o,t);if(i)return i;let s=document.createElement("span");return s.textContent=t,s.title=o,s.setAttribute("aria-label",o),s.className="cm-specialChar",s}ignoreEvent(){return!1}},_a=class extends Re{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function dl(){return r0}var t0=G.line({class:"cm-activeLine"}),r0=Se.fromClass(class{constructor(r){this.decorations=this.getDeco(r)}update(r){(r.docChanged||r.selectionSet)&&(this.decorations=this.getDeco(r.view))}getDeco(r){let e=-1,t=[];for(let o of r.state.selection.ranges){let i=r.lineBlockAt(o.head);i.from>e&&(t.push(t0.range(i.from)),e=i.from)}return G.set(t)}},{decorations:r=>r.decorations});var Ui="-10000px",as=class{constructor(e,t,o,i){this.facet=t,this.createTooltipView=o,this.removeTooltipView=i,this.input=e.state.facet(t),this.tooltips=this.input.filter(n=>n);let s=null;this.tooltipViews=this.tooltips.map(n=>s=o(n,s))}update(e,t){var o;let i=e.state.facet(this.facet),s=i.filter(l=>l);if(i===this.input){for(let l of this.tooltipViews)l.update&&l.update(e);return!1}let n=[],a=t?[]:null;for(let l=0;lt[f]=l),t.length=a.length),this.input=i,this.tooltips=s,this.tooltipViews=n,!0}};function o0(r){let e=r.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}var aa=R.define({combine:r=>{var e,t,o;return{position:O.ios?"absolute":((e=r.find(i=>i.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=r.find(i=>i.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((o=r.find(i=>i.tooltipSpace))===null||o===void 0?void 0:o.tooltipSpace)||o0}}}),ac=new WeakMap,hh=Se.fromClass(class{constructor(r){this.view=r,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=r.state.facet(aa);this.position=e.position,this.parent=e.parent,this.classes=r.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new as(r,ms,(t,o)=>this.createTooltip(t,o),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),r.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let r of this.manager.tooltipViews)this.intersectionObserver.observe(r.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(r){r.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(r,this.above);e&&this.observeIntersection();let t=e||r.geometryChanged,o=r.state.facet(aa);if(o.position!=this.position&&!this.madeAbsolute){this.position=o.position;for(let i of this.manager.tooltipViews)i.dom.style.position=this.position;t=!0}if(o.parent!=this.parent){this.parent&&this.container.remove(),this.parent=o.parent,this.createContainer();for(let i of this.manager.tooltipViews)this.container.appendChild(i.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(r,e){let t=r.create(this.view),o=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),r.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let i=document.createElement("div");i.className="cm-tooltip-arrow",t.dom.appendChild(i)}return t.dom.style.position=this.position,t.dom.style.top=Ui,t.dom.style.left="0px",this.container.insertBefore(t.dom,o),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var r,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let o of this.manager.tooltipViews)o.dom.remove(),(r=o.destroy)===null||r===void 0||r.call(o);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let r=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:s}=this.manager.tooltipViews[0];if(O.safari){let n=s.getBoundingClientRect();t=Math.abs(n.top+1e4)>1||Math.abs(n.left)>1}else t=!!s.offsetParent&&s.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let s=this.parent.getBoundingClientRect();s.width&&s.height&&(r=s.width/this.parent.offsetWidth,e=s.height/this.parent.offsetHeight)}else({scaleX:r,scaleY:e}=this.view.viewState);let o=this.view.scrollDOM.getBoundingClientRect(),i=ul(this.view);return{visible:{left:o.left+i.left,top:o.top+i.top,right:o.right-i.right,bottom:o.bottom-i.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((s,n)=>{let a=this.manager.tooltipViews[n];return a.getCoords?a.getCoords(s.pos):this.view.coordsAtPos(s.pos)}),size:this.manager.tooltipViews.map(({dom:s})=>s.getBoundingClientRect()),space:this.view.state.facet(aa).tooltipSpace(this.view),scaleX:r,scaleY:e,makeAbsolute:t}}writeMeasure(r){var e;if(r.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let a of this.manager.tooltipViews)a.dom.style.position="absolute"}let{visible:t,space:o,scaleX:i,scaleY:s}=r,n=[];for(let a=0;a=Math.min(t.bottom,o.bottom)||c.rightMath.min(t.right,o.right)+.1)){u.style.top=Ui;continue}let d=l.arrow?f.dom.querySelector(".cm-tooltip-arrow"):null,p=d?7:0,m=h.right-h.left,b=(e=ac.get(f))!==null&&e!==void 0?e:h.bottom-h.top,v=f.offset||s0,S=this.view.textDirection==fe.LTR,w=h.width>o.right-o.left?S?o.left:o.right-h.width:S?Math.max(o.left,Math.min(c.left-(d?14:0)+v.x,o.right-m)):Math.min(Math.max(o.left,c.left-m+(d?14:0)-v.x),o.right-m),A=this.above[a];!l.strictSide&&(A?c.top-b-p-v.yo.bottom)&&A==o.bottom-c.bottom>c.top-o.top&&(A=this.above[a]=!A);let k=(A?c.top-o.top:o.bottom-c.bottom)-p;if(kw&&C.topx&&(x=A?C.top-b-2-p:C.bottom+p+2);if(this.position=="absolute"?(u.style.top=(x-r.parent.top)/s+"px",lc(u,(w-r.parent.left)/i)):(u.style.top=x/s+"px",lc(u,w/i)),d){let C=c.left+(S?v.x:-v.x)-(w+14-7);d.style.left=C/i+"px"}f.overlap!==!0&&n.push({left:w,top:x,right:g,bottom:x+b}),u.classList.toggle("cm-tooltip-above",A),u.classList.toggle("cm-tooltip-below",!A),f.positioned&&f.positioned(r.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let r of this.manager.tooltipViews)r.dom.style.top=Ui}},{eventObservers:{scroll(){this.maybeMeasure()}}});function lc(r,e){let t=parseInt(r.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(r.style.left=e+"px")}var i0=I.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),s0={x:0,y:0},ms=R.define({enables:[hh,i0]}),ls=R.define({combine:r=>r.reduce((e,t)=>e.concat(t),[])}),fs=class r{static create(e){return new r(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new as(e,ls,(t,o)=>this.createHostedView(t,o),t=>t.dom.remove())}createHostedView(e,t){let o=e.create(this.view);return o.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(o.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&o.mount&&o.mount(this.view),o}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let o of this.manager.tooltipViews){let i=o[e];if(i!==void 0){if(t===void 0)t=i;else if(t!==i)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}},n0=ms.compute([ls],r=>{let e=r.facet(ls);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var o;return(o=t.end)!==null&&o!==void 0?o:t.pos})),create:fs.create,above:e[0].above,arrow:e.some(t=>t.arrow)}}),a0=R.define(),$a=class{constructor(e,t,o,i,s,n){this.view=e,this.source=t,this.field=o,this.locked=i,this.setHover=s,this.hoverTime=n,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(e){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;en.bottom||t.xn.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(i)).find(f=>f.from<=i&&f.to>=i),l=a&&a.dir==fe.RTL?-1:1;s=t.x{if(a&&!(Array.isArray(a)&&!a.length)){let l=Array.isArray(a)?a:[a];i&&this.locked.set(l,i),e.dispatch({effects:this.setHover.of(l)})}};if(s&&"then"in s){let a=this.pending={pos:t};s.then(l=>{this.pending==a&&(this.pending=null,n(l))},l=>Je(e.state,l,"hover tooltip"))}else n(s)}get tooltip(){let e=this.view.plugin(hh),t=e?e.manager.tooltips.findIndex(o=>o.create==fs.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,o;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:i,tooltip:s}=this;if(i.length&&!this.locked.has(i)&&s&&!l0(s.dom,e)||this.pending){let{pos:n}=i[0]||this.pending,a=(o=(t=i[0])===null||t===void 0?void 0:t.end)!==null&&o!==void 0?o:n;(n==a?this.view.posAtCoords(this.lastMove)!=n:!f0(this.view,n,a,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length&&!this.locked.has(t)){let{tooltip:o}=this;o&&o.dom.contains(e.relatedTarget)?this.watchTooltipLeave(o.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=o=>{e.removeEventListener("mouseleave",t);let{active:i}=this;i.length&&!this.locked.has(i)&&!this.view.dom.contains(o.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),clearTimeout(this.restartTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}},Vi=4;function l0(r,e){let{left:t,right:o,top:i,bottom:s}=r.getBoundingClientRect(),n;if(n=r.querySelector(".cm-tooltip-arrow")){let a=n.getBoundingClientRect();i=Math.min(a.top,i),s=Math.max(a.bottom,s)}return e.clientX>=t-Vi&&e.clientX<=o+Vi&&e.clientY>=i-Vi&&e.clientY<=s+Vi}function f0(r,e,t,o,i,s){let n=r.scrollDOM.getBoundingClientRect(),a=r.documentTop+r.documentPadding.top+r.contentHeight;if(n.left>o||n.righti||Math.min(n.bottom,a)=e&&l<=t}function dh(r,e={}){let t=q.define(),o=new WeakMap,i=pe.define({create(){return[]},update(n,a){let l=o.get(n);if(n.length&&(e.hideOnChange&&(a.docChanged||a.selection)?n=[]:l&&l(a)?n=[]:e.hideOn&&(n=n.filter(f=>!e.hideOn(a,f)))),a.docChanged&&n.length){let f=[];for(let u of n){let c=a.changes.mapPos(u.pos,-1,Fe.TrackDel);if(c!=null){let h=Object.assign(Object.create(null),u);h.pos=c,h.end!=null&&(h.end=a.changes.mapPos(h.end)),f.push(h)}}n=f}for(let f of a.effects)f.is(t)&&(n=f.value,l=void 0),(f.is(u0)&&!f.value||f.value==i)&&(n=[]);return n.length&&l&&o.set(n,l),n},provide:n=>ls.from(n)}),s=Se.define(n=>new $a(n,r,i,o,t,e.hoverTime||300));return{active:i,extension:[i,s,a0.of(s),n0]}}var u0=q.define();var fc=R.define({combine(r){let e,t;for(let o of r)e=e||o.topContainer,t=t||o.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Jo(r,e){let t=r.plugin(ph),o=t?t.specs.indexOf(e):-1;return o>-1?t.panels[o]:null}var ph=Se.fromClass(class{constructor(r){this.input=r.state.facet(br),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(r));let e=r.state.facet(fc);this.top=new Qr(r,!0,e.topContainer),this.bottom=new Qr(r,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(r){let e=r.state.facet(fc);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Qr(r.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Qr(r.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=r.state.facet(br);if(t!=this.input){let o=t.filter(l=>l),i=[],s=[],n=[],a=[];for(let l of o){let f=this.specs.indexOf(l),u;f<0?(u=l(r.view),a.push(u)):(u=this.panels[f],u.update&&u.update(r)),i.push(u),(u.top?s:n).push(u)}this.specs=o,this.panels=i,this.top.sync(s),this.bottom.sync(n);for(let l of a)l.dom.classList.add("cm-panel"),l.mount&&l.mount()}else for(let o of this.panels)o.update&&o.update(r)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:r=>I.scrollMargins.of(e=>{let t=e.plugin(r);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})}),Qr=class{constructor(e,t,o){this.view=e,this.top=t,this.container=o,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=uc(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=uc(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}};function uc(r){let e=r.nextSibling;return r.remove(),e}var br=R.define({enables:ph});function mh(r,e){let t,o=new Promise(n=>t=n),i=n=>c0(n,e,t);r.state.field(Qi,!1)?r.dispatch({effects:xh.of(i)}):r.dispatch({effects:q.appendConfig.of(Qi.init(()=>[i]))});let s=bh.of(i);return{close:s,result:o.then(n=>((r.win.queueMicrotask||(l=>r.win.setTimeout(l,10)))(()=>{r.state.field(Qi).indexOf(i)>-1&&r.dispatch({effects:s})}),n))}}function gh(r,e){let t=r.state.field(Qi,!1)||[];for(let o of t){let i=Jo(r,o);if(i&&i.dom.classList.contains(e))return i}return null}var Qi=pe.define({create(){return[]},update(r,e){for(let t of e.effects)t.is(xh)?r=[t.value].concat(r):t.is(bh)&&(r=r.filter(o=>o!=t.value));return r},provide:r=>br.computeN([r],e=>e.field(r))}),xh=q.define(),bh=q.define();function c0(r,e,t){let o=e.content?e.content(r,()=>n(null)):null;if(!o){if(o=oe("form"),e.input){let a=oe("input",e.input);/^(text|password|number|email|tel|url)$/.test(a.type)&&a.classList.add("cm-textfield"),a.name||(a.name="input"),o.appendChild(oe("label",(e.label||"")+": ",a))}else o.appendChild(document.createTextNode(e.label||""));o.appendChild(document.createTextNode(" ")),o.appendChild(oe("button",{class:"cm-button",type:"submit"},e.submitLabel||"OK"))}let i=o.nodeName=="FORM"?[o]:o.querySelectorAll("form");for(let a=0;a{f.keyCode==27?(f.preventDefault(),n(null)):f.keyCode==13&&(f.preventDefault(),n(l))}),l.addEventListener("submit",f=>{f.preventDefault(),n(l)})}let s=oe("div",o,oe("button",{onclick:()=>n(null),"aria-label":r.state.phrase("close"),class:"cm-dialog-close",type:"button"},["×"]));e.class&&(s.className=e.class),s.classList.add("cm-dialog");function n(a){s.contains(s.ownerDocument.activeElement)&&r.focus(),t(a)}return{dom:s,top:e.top,mount:()=>{if(e.focus){let a;typeof e.focus=="string"?a=o.querySelector(e.focus):a=o.querySelector("input")||o.querySelector("button"),a&&"select"in a?a.select():a&&"focus"in a&&a.focus()}}}}var Ue=class extends kt{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Ue.prototype.elementClass="";Ue.prototype.toDOM=void 0;Ue.prototype.mapMode=Fe.TrackBefore;Ue.prototype.startSide=Ue.prototype.endSide=-1;Ue.prototype.point=!0;var la=R.define(),h0=R.define(),d0={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>re.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},Ki=R.define();function to(r){return[p0(),Ki.of({...d0,...r})]}var el=R.define({combine:r=>r.some(e=>e)});function p0(r){let e=[m0];return r&&r.fixed===!1&&e.push(el.of(!0)),e}var m0=Se.fromClass(class{constructor(r){this.view=r,this.domAfter=null,this.prevViewport=r.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=r.state.facet(Ki).map(e=>new us(r,e)),this.fixed=!r.state.facet(el);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),r.scrollDOM.insertBefore(this.dom,r.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(r){if(this.updateGutters(r)){let e=this.prevViewport,t=r.view.viewport,o=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(o<(t.to-t.from)*.8)}if(r.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(el)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=r.view.viewport}syncGutters(r){let e=this.dom.nextSibling;r&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=re.iter(this.view.state.facet(la),this.view.viewport.from),o=[],i=this.gutters.map(s=>new rl(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(o.length&&(o=[]),Array.isArray(s.type)){let n=!0;for(let a of s.type)if(a.type==Ie.Text&&n){tl(t,o,a.from);for(let l of i)l.line(this.view,a,o);n=!1}else if(a.widget)for(let l of i)l.widget(this.view,a)}else if(s.type==Ie.Text){tl(t,o,s.from);for(let n of i)n.line(this.view,s,o)}else if(s.widget)for(let n of i)n.widget(this.view,s);for(let s of i)s.finish();r&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(r){let e=r.startState.facet(Ki),t=r.state.facet(Ki),o=r.docChanged||r.heightChanged||r.viewportChanged||!re.eq(r.startState.facet(la),r.state.facet(la),r.view.viewport.from,r.view.viewport.to);if(e==t)for(let i of this.gutters)i.update(r)&&(o=!0);else{o=!0;let i=[];for(let s of t){let n=e.indexOf(s);n<0?i.push(new us(this.view,s)):(this.gutters[n].update(r),i.push(this.gutters[n]))}for(let s of this.gutters)s.dom.remove(),i.indexOf(s)<0&&s.destroy();for(let s of i)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=i}return o}destroy(){for(let r of this.gutters)r.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:r=>I.scrollMargins.of(e=>{let t=e.plugin(r);if(!t||t.gutters.length==0||!t.fixed)return null;let o=t.dom.offsetWidth*e.scaleX,i=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==fe.LTR?{left:o,right:i}:{right:o,left:i}})});function cc(r){return Array.isArray(r)?r:[r]}function tl(r,e,t){for(;r.value&&r.from<=t;)r.from==t&&e.push(r.value),r.next()}var rl=class{constructor(e,t,o){this.gutter=e,this.height=o,this.i=0,this.cursor=re.iter(e.markers,t.from)}addElement(e,t,o){let{gutter:i}=this,s=(t.top-this.height)/e.scaleY,n=t.height/e.scaleY;if(this.i==i.elements.length){let a=new cs(e,n,s,o);i.elements.push(a),i.dom.appendChild(a.dom)}else i.elements[this.i].update(e,n,s,o);this.height=t.bottom,this.i++}line(e,t,o){let i=[];tl(this.cursor,i,t.from),o.length&&(i=i.concat(o));let s=this.gutter.config.lineMarker(e,t,i);s&&i.unshift(s);let n=this.gutter;i.length==0&&!n.config.renderEmptyElements||this.addElement(e,t,i)}widget(e,t){let o=this.gutter.config.widgetMarker(e,t.widget,t),i=o?[o]:null;for(let s of e.state.facet(h0)){let n=s(e,t.widget,t);n&&(i||(i=[])).push(n)}i&&this.addElement(e,t,i)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},us=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let o in t.domEventHandlers)this.dom.addEventListener(o,i=>{let s=i.target,n;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let l=s.getBoundingClientRect();n=(l.top+l.bottom)/2}else n=i.clientY;let a=e.lineBlockAtHeight(n-e.documentTop);t.domEventHandlers[o](e,a,i)&&i.preventDefault()});this.markers=cc(t.markers(e)),t.initialSpacer&&(this.spacer=new cs(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=cc(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let i=this.config.updateSpacer(this.spacer.markers[0],e);i!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[i])}let o=e.view.viewport;return!re.eq(this.markers,t,o.from,o.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},cs=class{constructor(e,t,o,i){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,o,i)}update(e,t,o,i){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=o&&(this.dom.style.marginTop=(this.above=o)?o+"px":""),g0(this.markers,i)||this.setMarkers(e,i)}setMarkers(e,t){let o="cm-gutterElement",i=this.dom.firstChild;for(let s=0,n=0;;){let a=n,l=s{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=Ve.match(e)),t=>{let o=e(t);return o===void 0?null:[this,o]}}};Y.closedBy=new Y({deserialize:r=>r.split(" ")});Y.openedBy=new Y({deserialize:r=>r.split(" ")});Y.group=new Y({deserialize:r=>r.split(" ")});Y.isolate=new Y({deserialize:r=>{if(r&&r!="rtl"&&r!="ltr"&&r!="auto")throw new RangeError("Invalid value for isolate: "+r);return r||"auto"}});Y.contextHash=new Y({perNode:!0});Y.lookAhead=new Y({perNode:!0});Y.mounted=new Y({perNode:!0});var yr=class{constructor(e,t,o,i=!1){this.tree=e,this.overlay=t,this.parser=o,this.bracketed=i}static get(e){return e&&e.props&&e.props[Y.mounted.id]}},b0=Object.create(null),Ve=class r{constructor(e,t,o,i=0){this.name=e,this.props=t,this.id=o,this.flags=i}static define(e){let t=e.props&&e.props.length?Object.create(null):b0,o=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),i=new r(e.name||"",t,e.id,o);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(i)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return i}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(Y.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let o in e)for(let i of o.split(" "))t[i]=e[o];return o=>{for(let i=o.prop(Y.group),s=-1;s<(i?i.length:0);s++){let n=t[s<0?o.name:i[s]];if(n)return n}}}};Ve.none=new Ve("",Object.create(null),0,8);var bs=class r{constructor(e){this.types=e;for(let t=0;t0;for(let l=this.cursor(n|we.IncludeAnonymous);;){let f=!1;if(l.from<=s&&l.to>=i&&(!a&&l.type.isAnonymous||t(l)!==!1)){if(l.firstChild())continue;f=!0}for(;f&&o&&(a||!l.type.isAnonymous)&&o(l),!l.nextSibling();){if(!l.parent())return;f=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:wl(Ve.none,this.children,this.positions,0,this.children.length,0,this.length,(t,o,i)=>new r(this.type,t,o,i,this.propValues),e.makeTree||((t,o,i)=>new r(Ve.none,t,o,i)))}static build(e){return w0(e)}};xe.empty=new xe(Ve.none,[],[],0);var pl=class r{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new r(this.buffer,this.index)}},Yt=class r{constructor(e,t,o){this.buffer=e,this.length=t,this.set=o}get type(){return Ve.none}toString(){let e=[];for(let t=0;t0));l=n[l+3]);return a}slice(e,t,o){let i=this.buffer,s=new Uint16Array(t-e),n=0;for(let a=e,l=0;a=e&&te;case 1:return t<=e&&o>e;case 2:return o>e;case 4:return!0}}function Yo(r,e,t,o){for(var i;r.from==r.to||(t<1?r.from>=e:r.from>e)||(t>-1?r.to<=e:r.to0?a.length:-1;e!=f;e+=t){let u=a[e],c=l[e]+n.from,h;if(!(!(s&we.EnterBracketed&&u instanceof xe&&(h=yr.get(u))&&!h.overlay&&h.bracketed&&o>=c&&o<=c+u.length)&&!Ch(i,o,c,c+u.length))){if(u instanceof Yt){if(s&we.ExcludeBuffers)continue;let d=u.findChild(0,u.buffer.length,t,o-c,i);if(d>-1)return new Zo(new gl(n,u,e,c),null,d)}else if(s&we.IncludeAnonymous||!u.type.isAnonymous||yl(u)){let d;if(!(s&we.IgnoreMounts)&&(d=yr.get(u))&&!d.overlay)return new r(d.tree,c,e,n);let p=new r(u,c,e,n);return s&we.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?u.children.length-1:0,t,o,i,s)}}}if(s&we.IncludeAnonymous||!n.type.isAnonymous||(n.index>=0?e=n.index+t:e=t<0?-1:n._parent._tree.children.length,n=n._parent,!n))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,o=0){let i;if(!(o&we.IgnoreOverlays)&&(i=yr.get(this._tree))&&i.overlay){let s=e-this.from,n=o&we.EnterBracketed&&i.bracketed;for(let{from:a,to:l}of i.overlay)if((t>0||n?a<=s:a=s:l>s))return new r(i.tree,i.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,o)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function wh(r,e,t,o){let i=r.cursor(),s=[];if(!i.firstChild())return s;if(t!=null){for(let n=!1;!n;)if(n=i.type.is(t),!i.nextSibling())return s}for(;;){if(o!=null&&i.type.is(o))return s;if(i.type.is(e)&&s.push(i.node),!i.nextSibling())return o==null?s:[]}}function ml(r,e,t=e.length-1){for(let o=r;t>=0;o=o.parent){if(!o)return!1;if(!o.type.isAnonymous){if(e[t]&&e[t]!=o.name)return!1;t--}}return!0}var gl=class{constructor(e,t,o,i){this.parent=e,this.buffer=t,this.index=o,this.start=i}},Zo=class r extends ys{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,o){super(),this.context=e,this._parent=t,this.index=o,this.type=e.buffer.set.types[e.buffer.buffer[o]]}child(e,t,o){let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.context.start,o);return s<0?null:new r(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,o=0){if(o&we.ExcludeBuffers)return null;let{buffer:i}=this.context,s=i.findChild(this.index+4,i.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new r(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new r(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new r(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:o}=this.context,i=this.index+4,s=o.buffer[this.index+3];if(s>i){let n=o.buffer[this.index+1];e.push(o.slice(i,s,n)),t.push(0)}return new xe(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function kh(r){if(!r.length)return null;let e=0,t=r[0];for(let s=1;st.from||n.to=e){let a=new Mt(n.tree,n.overlay[0].from+s.from,-1,s);(i||(i=[o])).push(Yo(a,e,t,!1))}}return i?kh(i):o}var _o=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~we.EnterBracketed,e instanceof Mt)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let o=e._parent;o;o=o._parent)this.stack.unshift(o.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:o,buffer:i}=this.buffer;return this.type=t||i.set.types[i.buffer[e]],this.from=o+i.buffer[e+1],this.to=o+i.buffer[e+2],!0}yield(e){return e?e instanceof Mt?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,o){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,o,this.mode));let{buffer:i}=this.buffer,s=i.findChild(this.index+4,i.buffer[this.index+3],e,t-this.buffer.start,o);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,o=this.mode){return this.buffer?o&we.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,o))}parent(){if(!this.buffer)return this.yieldNode(this.mode&we.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&we.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,o=this.stack.length-1;if(e<0){let i=o<0?0:this.stack[o]+4;if(this.index!=i)return this.yieldBuf(t.findChild(i,this.index,-1,0,4))}else{let i=t.buffer[this.index+3];if(i<(o<0?t.buffer.length:t.buffer[this.stack[o]+3]))return this.yieldBuf(i)}return o<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,o,{buffer:i}=this;if(i){if(e>0){if(this.index-1)for(let s=t+e,n=e<0?-1:o._tree.children.length;s!=n;s+=e){let a=o._tree.children[s];if(this.mode&we.IncludeAnonymous||a instanceof Yt||!a.type.isAnonymous||yl(a))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let n=e;n;n=n._parent)if(n.index==i){if(i==this.index)return n;t=n,o=s+1;break e}i=this.stack[--s]}for(let i=o;i=0;s--){if(s<0)return ml(this._tree,e,i);let n=o[t.buffer[this.stack[s]]];if(!n.isAnonymous){if(e[i]&&e[i]!=n.name)return!1;i--}}return!0}};function yl(r){return r.children.some(e=>e instanceof Yt||!e.type.isAnonymous||yl(e))}function w0(r){var e;let{buffer:t,nodeSet:o,maxBufferLength:i=1024,reused:s=[],minRepeatType:n=o.types.length}=r,a=Array.isArray(t)?new pl(t,t.length):t,l=o.types,f=0,u=0;function c(k,x,g,C,M,B){let{id:D,start:E,end:z,size:W}=a,U=u,K=f;if(W<0)if(a.next(),W==-1){let H=s[D];g.push(H),C.push(E-k);return}else if(W==-3){f=D;return}else if(W==-4){u=D;return}else throw new RangeError(`Unrecognized record size: ${W}`);let F=l[D],ne,N,V=E-k;if(z-E<=i&&(N=b(a.pos-x,M))){let H=new Uint16Array(N.size-N.skip),ae=a.pos-N.size,Z=H.length;for(;a.pos>ae;)Z=v(N.start,H,Z);ne=new Yt(H,z-N.start,o),V=N.start-k}else{let H=a.pos-W;a.next();let ae=[],Z=[],te=D>=n?D:-1,be=0,Q=z;for(;a.pos>H;)te>=0&&a.id==te&&a.size>=0?(a.end<=Q-i&&(p(ae,Z,E,be,a.end,Q,te,U,K),be=ae.length,Q=a.end),a.next()):B>2500?h(E,H,ae,Z):c(E,H,ae,Z,te,B+1);if(te>=0&&be>0&&be-1&&be>0){let j=d(F,K);ne=wl(F,ae,Z,0,ae.length,0,z-E,j,j)}else ne=m(F,ae,Z,z-E,U-z,K)}g.push(ne),C.push(V)}function h(k,x,g,C){let M=[],B=0,D=-1;for(;a.pos>x;){let{id:E,start:z,end:W,size:U}=a;if(U>4)a.next();else{if(D>-1&&z=0;W-=3)E[U++]=M[W],E[U++]=M[W+1]-z,E[U++]=M[W+2]-z,E[U++]=U;g.push(new Yt(E,M[2]-z,o)),C.push(z-k)}}function d(k,x){return(g,C,M)=>{let B=0,D=g.length-1,E,z;if(D>=0&&(E=g[D])instanceof xe){if(!D&&E.type==k&&E.length==M)return E;(z=E.prop(Y.lookAhead))&&(B=C[D]+E.length+z)}return m(k,g,C,M,B,x)}}function p(k,x,g,C,M,B,D,E,z){let W=[],U=[];for(;k.length>C;)W.push(k.pop()),U.push(x.pop()+g-M);k.push(m(o.types[D],W,U,B-M,E-B,z)),x.push(M-g)}function m(k,x,g,C,M,B,D){if(B){let E=[Y.contextHash,B];D=D?[E].concat(D):[E]}if(M>25){let E=[Y.lookAhead,M];D=D?[E].concat(D):[E]}return new xe(k,x,g,C,D)}function b(k,x){let g=a.fork(),C=0,M=0,B=0,D=g.end-i,E={size:0,start:0,skip:0};e:for(let z=g.pos-k;g.pos>z;){let W=g.size;if(g.id==x&&W>=0){E.size=C,E.start=M,E.skip=B,B+=4,C+=4,g.next();continue}let U=g.pos-W;if(W<0||U=n?4:0,F=g.start;for(g.next();g.pos>U;){if(g.size<0)if(g.size==-3||g.size==-4)K+=4;else break e;else g.id>=n&&(K+=4);g.next()}M=F,C+=W,B+=K}return(x<0||C==k)&&(E.size=C,E.start=M,E.skip=B),E.size>4?E:void 0}function v(k,x,g){let{id:C,start:M,end:B,size:D}=a;if(a.next(),D>=0&&C4){let z=a.pos-(D-4);for(;a.pos>z;)g=v(k,x,g)}x[--g]=E,x[--g]=B-k,x[--g]=M-k,x[--g]=C}else D==-3?f=C:D==-4&&(u=C);return g}let S=[],w=[];for(;a.pos>0;)c(r.start||0,r.bufferStart||0,S,w,-1,0);let A=(e=r.length)!==null&&e!==void 0?e:S.length?w[0]+S[0].length:0;return new xe(l[r.topID],S.reverse(),w.reverse(),A)}var vh=new WeakMap;function xs(r,e){if(!r.isAnonymous||e instanceof Yt||e.type!=r)return 1;let t=vh.get(e);if(t==null){t=1;for(let o of e.children){if(o.type!=r||!(o instanceof xe)){t=1;break}t+=xs(r,o)}vh.set(e,t)}return t}function wl(r,e,t,o,i,s,n,a,l){let f=0;for(let p=o;p=u)break;x+=g}if(w==A+1){if(x>u){let g=p[A];d(g.children,g.positions,0,g.children.length,m[A]+S);continue}c.push(p[A])}else{let g=m[w-1]+p[w-1].length-k;c.push(wl(r,p,m,A,w,k,g,null,l))}h.push(k+S-s)}}return d(e,t,o,i,0),(a||l)(c,h,n)}var wr=class r{constructor(e,t,o,i,s=!1,n=!1){this.from=e,this.to=t,this.tree=o,this.offset=i,this.open=(s?1:0)|(n?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],o=!1){let i=[new r(0,e.length,e,0,!1,o)];for(let s of t)s.to>e.length&&i.push(s);return i}static applyChanges(e,t,o=128){if(!t.length)return e;let i=[],s=1,n=e.length?e[0]:null;for(let a=0,l=0,f=0;;a++){let u=a=o)for(;n&&n.from=h.from||c<=h.to||f){let d=Math.max(h.from,l)-f,p=Math.min(h.to,c)-f;h=d>=p?null:new r(d,p,h.tree,h.offset+f,a>0,!!u)}if(h&&i.push(h),n.to>c)break;n=snew Xo(i.from,i.to)):[new Xo(0,0)]:[new Xo(0,e.length)],this.createParse(e,t||[],o)}parse(e,t,o){let i=this.startParse(e,t,o);for(;;){let s=i.advance();if(s)return s}}},bl=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};var W1=new Y({perNode:!0});var v0=0,dt=class r{constructor(e,t,o,i){this.name=e,this.set=t,this.base=o,this.modified=i,this.id=v0++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let o=typeof e=="string"?e:"?";if(e instanceof r&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let i=new r(o,[],null,[]);if(i.set.push(i),t)for(let s of t.set)i.set.push(s);return i}static defineModifier(e){let t=new ks(e);return o=>o.modified.indexOf(t)>-1?o:ks.get(o.base||o,o.modified.concat(t).sort((i,s)=>i.id-s.id))}},C0=0,ks=class r{constructor(e){this.name=e,this.instances=[],this.id=C0++}static get(e,t){if(!t.length)return e;let o=t[0].instances.find(a=>a.base==e&&k0(t,a.modified));if(o)return o;let i=[],s=new dt(e.name,i,e,t);for(let a of t)a.instances.push(s);let n=A0(t);for(let a of e.set)if(!a.modified.length)for(let l of n)i.push(r.get(a,l));return s}};function k0(r,e){return r.length==e.length&&r.every((t,o)=>t==e[o])}function A0(r){let e=[[]];for(let t=0;to.length-t.length)}function Mh(r){let e=Object.create(null);for(let t in r){let o=r[t];Array.isArray(o)||(o=[o]);for(let i of t.split(" "))if(i){let s=[],n=2,a=i;for(let c=0;;){if(a=="..."&&c>0&&c+3==i.length){n=1;break}let h=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(a);if(!h)throw new RangeError("Invalid path: "+i);if(s.push(h[0]=="*"?"":h[0][0]=='"'?JSON.parse(h[0]):h[0]),c+=h[0].length,c==i.length)break;let d=i[c++];if(c==i.length&&d=="!"){n=0;break}if(d!="/")throw new RangeError("Invalid path: "+i);a=i.slice(c)}let l=s.length-1,f=s[l];if(!f)throw new RangeError("Invalid path: "+i);let u=new Cr(o,n,l>0?s.slice(0,l):null);e[f]=u.sort(e[f])}}return Bh.add(e)}var Bh=new Y({combine(r,e){let t,o,i;for(;r||e;){if(!r||e&&r.depth>=e.depth?(i=e,e=e.next):(i=r,r=r.next),t&&t.mode==i.mode&&!i.context&&!t.context)continue;let s=new Cr(i.tags,i.mode,i.context);t?t.next=s:o=s,t=s}return o}}),Cr=class{constructor(e,t,o,i){this.tags=e,this.mode=t,this.context=o,this.next=i}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let n=i;for(let a of s)for(let l of a.set){let f=t[l.id];if(f){n=n?n+" "+f:f;break}}return n},scope:o}}function S0(r,e){let t=null;for(let o of r){let i=o.style(e);i&&(t=t?t+" "+i:i)}return t}function As(r,e,t,o=0,i=r.length){let s=new Cl(o,Array.isArray(e)?e:[e],t);s.highlightRange(r.cursor(),o,i,"",s.highlighters),s.flush(i)}var Cl=class{constructor(e,t,o){this.at=e,this.highlighters=t,this.span=o,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,o,i,s){let{type:n,from:a,to:l}=e;if(a>=o||l<=t)return;n.isTop&&(s=this.highlighters.filter(d=>!d.scope||d.scope(n)));let f=i,u=M0(e)||Cr.empty,c=S0(s,u.tags);if(c&&(f&&(f+=" "),f+=c,u.mode==1&&(i+=(i?" ":"")+c)),this.startSpan(Math.max(t,a),f),u.opaque)return;let h=e.tree&&e.tree.prop(Y.mounted);if(h&&h.overlay){let d=e.node.enter(h.overlay[0].from+a,1),p=this.highlighters.filter(b=>!b.scope||b.scope(h.tree.type)),m=e.firstChild();for(let b=0,v=a;;b++){let S=b=w||!e.nextSibling())););if(!S||w>o)break;v=S.to+a,v>t&&(this.highlightRange(d.cursor(),Math.max(t,S.from+a),Math.min(o,v),"",p),this.startSpan(Math.min(o,v),f))}m&&e.parent()}else if(e.firstChild()){h&&(i="");do if(!(e.to<=t)){if(e.from>=o)break;this.highlightRange(e,t,o,i,s),this.startSpan(Math.min(o,e.to),f)}while(e.nextSibling());e.parent()}}};function M0(r){let e=r.type.prop(Bh);for(;e&&e.context&&!r.matchContext(e.context);)e=e.next;return e||null}var P=dt.define,ws=P(),Zt=P(),Ah=P(Zt),Sh=P(Zt),_t=P(),vs=P(_t),vl=P(_t),Tt=P(),vr=P(Tt),Bt=P(),Dt=P(),kl=P(),ei=P(kl),Cs=P(),L={comment:ws,lineComment:P(ws),blockComment:P(ws),docComment:P(ws),name:Zt,variableName:P(Zt),typeName:Ah,tagName:P(Ah),propertyName:Sh,attributeName:P(Sh),className:P(Zt),labelName:P(Zt),namespace:P(Zt),macroName:P(Zt),literal:_t,string:vs,docString:P(vs),character:P(vs),attributeValue:P(vs),number:vl,integer:P(vl),float:P(vl),bool:P(_t),regexp:P(_t),escape:P(_t),color:P(_t),url:P(_t),keyword:Bt,self:P(Bt),null:P(Bt),atom:P(Bt),unit:P(Bt),modifier:P(Bt),operatorKeyword:P(Bt),controlKeyword:P(Bt),definitionKeyword:P(Bt),moduleKeyword:P(Bt),operator:Dt,derefOperator:P(Dt),arithmeticOperator:P(Dt),logicOperator:P(Dt),bitwiseOperator:P(Dt),compareOperator:P(Dt),updateOperator:P(Dt),definitionOperator:P(Dt),typeOperator:P(Dt),controlOperator:P(Dt),punctuation:kl,separator:P(kl),bracket:ei,angleBracket:P(ei),squareBracket:P(ei),paren:P(ei),brace:P(ei),content:Tt,heading:vr,heading1:P(vr),heading2:P(vr),heading3:P(vr),heading4:P(vr),heading5:P(vr),heading6:P(vr),contentSeparator:P(Tt),list:P(Tt),quote:P(Tt),emphasis:P(Tt),strong:P(Tt),link:P(Tt),monospace:P(Tt),strikethrough:P(Tt),inserted:P(),deleted:P(),changed:P(),invalid:P(),meta:Cs,documentMeta:P(Cs),annotation:P(Cs),processingInstruction:P(Cs),definition:dt.defineModifier("definition"),constant:dt.defineModifier("constant"),function:dt.defineModifier("function"),standard:dt.defineModifier("standard"),local:dt.defineModifier("local"),special:dt.defineModifier("special")};for(let r in L){let e=L[r];e instanceof dt&&(e.name=r)}var j1=Al([{tag:L.link,class:"tok-link"},{tag:L.heading,class:"tok-heading"},{tag:L.emphasis,class:"tok-emphasis"},{tag:L.strong,class:"tok-strong"},{tag:L.keyword,class:"tok-keyword"},{tag:L.atom,class:"tok-atom"},{tag:L.bool,class:"tok-bool"},{tag:L.url,class:"tok-url"},{tag:L.labelName,class:"tok-labelName"},{tag:L.inserted,class:"tok-inserted"},{tag:L.deleted,class:"tok-deleted"},{tag:L.literal,class:"tok-literal"},{tag:L.string,class:"tok-string"},{tag:L.number,class:"tok-number"},{tag:[L.regexp,L.escape,L.special(L.string)],class:"tok-string2"},{tag:L.variableName,class:"tok-variableName"},{tag:L.local(L.variableName),class:"tok-variableName tok-local"},{tag:L.definition(L.variableName),class:"tok-variableName tok-definition"},{tag:L.special(L.variableName),class:"tok-variableName2"},{tag:L.definition(L.propertyName),class:"tok-propertyName tok-definition"},{tag:L.typeName,class:"tok-typeName"},{tag:L.namespace,class:"tok-namespace"},{tag:L.className,class:"tok-className"},{tag:L.macroName,class:"tok-macroName"},{tag:L.propertyName,class:"tok-propertyName"},{tag:L.operator,class:"tok-operator"},{tag:L.comment,class:"tok-comment"},{tag:L.meta,class:"tok-meta"},{tag:L.invalid,class:"tok-invalid"},{tag:L.punctuation,class:"tok-punctuation"}]);var Sl,ro=new Y;function B0(r){return R.define({combine:r?e=>e.concat(r):void 0})}var D0=new Y,$e=class{constructor(e,t,o=[],i=""){this.data=e,this.name=i,se.prototype.hasOwnProperty("tree")||Object.defineProperty(se.prototype,"tree",{get(){return pt(this)}}),this.parser=t,this.extension=[$t.of(this),se.languageData.of((s,n,a)=>{let l=Dh(s,n,a),f=l.type.prop(ro);if(!f)return[];let u=s.facet(f),c=l.type.prop(D0);if(c){let h=l.resolve(n-l.from,a);for(let d of c)if(d.test(h,s)){let p=s.facet(d.facet);return d.type=="replace"?p:p.concat(u)}}return u})].concat(o)}isActiveAt(e,t,o=-1){return Dh(e,t,o).type.prop(ro)==this.data}findRegions(e){let t=e.facet($t);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let o=[],i=(s,n)=>{if(s.prop(ro)==this.data){o.push({from:n,to:n+s.length});return}let a=s.prop(Y.mounted);if(a){if(a.tree.prop(ro)==this.data){if(a.overlay)for(let l of a.overlay)o.push({from:l.from+n,to:l.to+n});else o.push({from:n,to:n+s.length});return}else if(a.overlay){let l=o.length;if(i(a.tree,a.overlay[0].from+n),o.length>l)return}}for(let l=0;l=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-o,t-o)}},ti=null,ri=class r{constructor(e,t,o=[],i,s,n,a,l){this.parser=e,this.state=t,this.fragments=o,this.tree=i,this.treeLen=s,this.viewport=n,this.skipped=a,this.scheduleOn=l,this.parse=null,this.tempSkipped=[]}static create(e,t,o){return new r(e,t,[],xe.empty,0,o,[],null)}startParse(){return this.parser.startParse(new Dl(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=xe.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var o;if(typeof e=="number"){let i=Date.now()+e;e=()=>Date.now()>i}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(wr.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=ti;ti=this;try{return e()}finally{ti=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Th(e,t.from,t.to);return e}changes(e,t){let{fragments:o,tree:i,treeLen:s,viewport:n,skipped:a}=this;if(this.takeTree(),!e.empty){let l=[];if(e.iterChangedRanges((f,u,c,h)=>l.push({fromA:f,toA:u,fromB:c,toB:h})),o=wr.applyChanges(o,l),i=xe.empty,s=0,n={from:e.mapPos(n.from,-1),to:e.mapPos(n.to,1)},this.skipped.length){a=[];for(let f of this.skipped){let u=e.mapPos(f.from,1),c=e.mapPos(f.to,-1);ue.from&&(this.fragments=Th(this.fragments,i,s),this.skipped.splice(o--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends $o{createParse(t,o,i){let s=i[0].from,n=i[i.length-1].to;return{parsedPos:s,advance(){let l=ti;if(l){for(let f of i)l.tempSkipped.push(f);e&&(l.scheduleOn=l.scheduleOn?Promise.all([l.scheduleOn,e]):e)}return this.parsedPos=n,new xe(Ve.none,[],[],n-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return ti}};function Th(r,e,t){return wr.applyChanges(r,[{fromA:e,toA:t,fromB:e,toB:t}])}var oi=class r{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),o=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,o)||t.takeTree(),new r(t)}static init(e){let t=Math.min(3e3,e.doc.length),o=ri.create(e.facet($t).parser,e,{from:0,to:t});return o.work(20,t)||o.takeTree(),new r(o)}};$e.state=pe.define({create:oi.init,update(r,e){for(let t of e.effects)if(t.is($e.setState))return t.value;return e.startState.facet($t)!=e.state.facet($t)?oi.init(e.state):r.apply(e)}});var Oh=r=>{let e=setTimeout(()=>r(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Oh=r=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(r,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Ml=typeof navigator<"u"&&(!((Sl=navigator.scheduling)===null||Sl===void 0)&&Sl.isInputPending)?()=>navigator.scheduling.isInputPending():null,T0=Se.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field($e.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field($e.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Oh(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndi+1e3,l=s.context.work(()=>Ml&&Ml()||Date.now()>n,i+(a?0:1e5));this.chunkBudget-=Date.now()-t,(l||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:$e.setState.of(new oi(s.context))})),this.chunkBudget>0&&!(l&&!a)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>Je(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),$t=R.define({combine(r){return r.length?r[0]:null},enables:r=>[$e.state,T0,I.contentAttributes.compute([r],e=>{let t=e.facet(r);return t&&t.name?{"data-language":t.name}:{}})]}),Ms=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}};var E0=R.define(),Es=R.define({combine:r=>{if(!r.length)return" ";let e=r[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(r[0]));return e}});function er(r){let e=r.facet(Es);return e.charCodeAt(0)==9?r.tabSize*e.length:e.length}function si(r,e){let t="",o=r.tabSize,i=r.facet(Es)[0];if(i==" "){for(;e>=o;)t+=" ",e-=o;i=" "}for(let s=0;s=e?L0(r,t,e):null}var kr=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=er(e)}lineAt(e,t=1){let o=this.state.doc.lineAt(e),{simulateBreak:i,simulateDoubleBreak:s}=this.options;return i!=null&&i>=o.from&&i<=o.to?s&&i==e?{text:"",from:e}:(t<0?i-1&&(s+=n-this.countColumn(o,o.search(/\S|$/))),s}countColumn(e,t=e.length){return jt(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:o,from:i}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let n=s(i);if(n>-1)return n}return this.countColumn(o,o.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Rh=new Y;function L0(r,e,t){let o=e.resolveStack(t),i=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(i!=o.node){let s=[];for(let n=i;n&&!(n.fromo.node.to||n.from==o.node.from&&n.type==o.node.type);n=n.parent)s.push(n);for(let n=s.length-1;n>=0;n--)o={node:s[n],next:o}}return Hh(o,r,t)}function Hh(r,e,t){for(let o=r;o;o=o.next){let i=P0(o.node);if(i)return i(Tl.create(e,t,o))}return 0}function I0(r){return r.pos==r.options.simulateBreak&&r.options.simulateDoubleBreak}function P0(r){let e=r.type.prop(Rh);if(e)return e;let t=r.firstChild,o;if(t&&(o=t.type.prop(Y.closedBy))){let i=r.lastChild,s=i&&o.indexOf(i.name)>-1;return n=>F0(n,!0,1,void 0,s&&!I0(n)?i.from:void 0)}return r.parent==null?O0:null}function O0(){return 0}var Tl=class r extends kr{constructor(e,t,o){super(e.state,e.options),this.base=e,this.pos=t,this.context=o}get node(){return this.context.node}static create(e,t,o){return new r(e,t,o)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let o=e.resolve(t.from);for(;o.parent&&o.parent.from==o.from;)o=o.parent;if(R0(o,e))break;t=this.state.doc.lineAt(o.from)}return this.lineIndent(t.from)}continue(){return Hh(this.context.next,this.base,this.pos)}};function R0(r,e){for(let t=e;t;t=t.parent)if(r==t)return!0;return!1}function H0(r){let e=r.node,t=e.childAfter(e.from),o=e.lastChild;if(!t)return null;let i=r.options.simulateBreak,s=r.state.doc.lineAt(t.from),n=i==null||i<=s.from?s.to:Math.min(s.to,i);for(let a=t.to;;){let l=e.childAfter(a);if(!l||l==o)return null;if(!l.type.isSkipped){if(l.from>=n)return null;let f=/^ */.exec(s.text.slice(t.to-s.from))[0].length;return{from:t.from,to:t.to+f}}a=l.to}}function F0(r,e,t,o,i){let s=r.textAfter,n=s.match(/^\s*/)[0].length,a=o&&s.slice(n,n+o.length)==o||i==r.pos+n,l=e?H0(r):null;return l?a?r.column(l.from):r.column(l.to):r.baseIndent+(a?0:r.unit*t)}var oo=class r{constructor(e,t){this.specs=e;let o;function i(a){let l=Qe.newName();return(o||(o=Object.create(null)))["."+l]=a,l}let s=typeof t.all=="string"?t.all:t.all?i(t.all):void 0,n=t.scope;this.scope=n instanceof $e?a=>a.prop(ro)==n.data:n?a=>a==n:void 0,this.style=Al(e.map(a=>({tag:a.tag,class:a.class||i(Object.assign({},a,{tag:null}))})),{all:s}).style,this.module=o?new Qe(o):null,this.themeType=t.themeType}static define(e,t){return new r(e,t||{})}},El=R.define(),Fh=R.define({combine(r){return r.length?[r[0]]:null}});function Ss(r){let e=r.facet(El);return e.length?e:r.facet(Fh)}function Nh(r,e){let t=[N0],o;return r instanceof oo&&(r.module&&t.push(I.styleModule.of(r.module)),o=r.themeType),e?.fallback?t.push(Fh.of(r)):o?t.push(El.computeN([I.darkTheme],i=>i.facet(I.darkTheme)==(o=="dark")?[r]:[])):t.push(El.of(r)),t}function zh(r,e,t){let o=Ss(r),i=null;if(o){for(let s of o)if(!s.scope||t&&s.scope(t)){let n=s.style(e);n&&(i=i?i+" "+n:n)}}return i}var Ll=class{constructor(e){this.markCache=Object.create(null),this.tree=pt(e.state),this.decorations=this.buildDeco(e,Ss(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=pt(e.state),o=Ss(e.state),i=o!=Ss(e.startState),{viewport:s}=e.view,n=e.changes.mapPos(this.decoratedTo,1);t.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=n):(t!=this.tree||e.viewportChanged||i)&&(this.tree=t,this.decorations=this.buildDeco(e.view,o),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return G.none;let o=new ke;for(let{from:i,to:s}of e.visibleRanges)As(this.tree,t,(n,a,l)=>{o.add(n,a,this.markCache[l]||(this.markCache[l]=G.mark({class:l})))},i,s);return o.finish()}},N0=Ze.high(Se.fromClass(Ll,{decorations:r=>r.decorations})),$1=oo.define([{tag:L.meta,color:"#404740"},{tag:L.link,textDecoration:"underline"},{tag:L.heading,textDecoration:"underline",fontWeight:"bold"},{tag:L.emphasis,fontStyle:"italic"},{tag:L.strong,fontWeight:"bold"},{tag:L.strikethrough,textDecoration:"line-through"},{tag:L.keyword,color:"#708"},{tag:[L.atom,L.bool,L.url,L.contentSeparator,L.labelName],color:"#219"},{tag:[L.literal,L.inserted],color:"#164"},{tag:[L.string,L.deleted],color:"#a11"},{tag:[L.regexp,L.escape,L.special(L.string)],color:"#e40"},{tag:L.definition(L.variableName),color:"#00f"},{tag:L.local(L.variableName),color:"#30a"},{tag:[L.typeName,L.namespace],color:"#085"},{tag:L.className,color:"#167"},{tag:[L.special(L.variableName),L.macroName],color:"#256"},{tag:L.definition(L.propertyName),color:"#00c"},{tag:L.comment,color:"#940"},{tag:L.invalid,color:"#f00"}]);var z0=1e4,U0="()[]{}";var V0=new Y;function Il(r,e,t){let o=r.prop(e<0?Y.openedBy:Y.closedBy);if(o)return o;if(r.name.length==1){let i=t.indexOf(r.name);if(i>-1&&i%2==(e<0?1:0))return[t[i+e]]}return null}function Pl(r){let e=r.type.prop(V0);return e?e(r.node):r}function Ar(r,e,t,o={}){let i=o.maxScanDistance||z0,s=o.brackets||U0,n=pt(r),a=n.resolveInner(e,t);for(let l=a;l;l=l.parent){let f=Il(l.type,t,s);if(f&&l.from0?e>=u.from&&eu.from&&e<=u.to))return W0(r,e,t,l,u,f,s)}}return G0(r,e,t,n,a.type,i,s)}function W0(r,e,t,o,i,s,n){let a=o.parent,l={from:i.from,to:i.to},f=0,u=a?.cursor();if(u&&(t<0?u.childBefore(o.from):u.childAfter(o.to)))do if(t<0?u.to<=o.from:u.from>=o.to){if(f==0&&s.indexOf(u.type.name)>-1&&u.from0)return null;let f={from:t<0?e-1:e,to:t>0?e+1:e},u=r.doc.iterRange(e,t>0?r.doc.length:0),c=0;for(let h=0;!u.next().done&&h<=s;){let d=u.value;t<0&&(h+=d.length);let p=e+h*t;for(let m=t>0?0:d.length-1,b=t>0?d.length:-1;m!=b;m+=t){let v=n.indexOf(d[m]);if(!(v<0||o.resolveInner(p+m,1).type!=i))if(v%2==0==t>0)c++;else{if(c==1)return{start:f,end:{from:p+m,to:p+m+1},matched:v>>1==l>>1};c--}}t>0&&(h+=d.length)}return u.done?{start:f,matched:!1}:null}function Eh(r,e,t,o=0,i=0){e==null&&(e=r.search(/[^\s\u00a0]/),e==-1&&(e=r.length));let s=i;for(let n=o;n=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPoso?n.toLowerCase():n,s=this.string.substr(this.pos,e.length);return i(s)==i(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let i=this.string.slice(this.pos).match(e);return i&&i.index>0?null:(i&&t!==!1&&(this.pos+=i[0].length),i)}}current(){return this.string.slice(this.start,this.pos)}};function q0(r){return{name:r.name||"",token:r.token,blankLine:r.blankLine||(()=>{}),startState:r.startState||(()=>!0),copyState:r.copyState||j0,indent:r.indent||(()=>null),languageData:r.languageData||{},tokenTable:r.tokenTable||Fl,mergeTokens:r.mergeTokens!==!1}}function j0(r){if(typeof r!="object")return r;let e={};for(let t in r){let o=r[t];e[t]=o instanceof Array?o.slice():o}return e}var Lh=new WeakMap,Ds=class r extends $e{constructor(e){let t=B0(e.languageData),o=q0(e),i,s=new class extends $o{createParse(n,a,l){return new Ol(i,n,a,l)}};super(t,s,[],e.name),this.topNode=X0(t,this),i=this,this.streamParser=o,this.stateAfter=new Y({perNode:!0}),this.tokenTable=e.tokenTable?new Ts(o.tokenTable):J0}static define(e){return new r(e)}getIndent(e){let t,{overrideIndentation:o}=e.options;o&&(t=Lh.get(e.state),t!=null&&t1e4)return null;for(;s=o&&t+e.length<=i&&e.prop(r.stateAfter);if(s)return{state:r.streamParser.copyState(s),pos:t+e.length};for(let n=e.children.length-1;n>=0;n--){let a=e.children[n],l=t+e.positions[n],f=a instanceof xe&&l=e.length)return e;!i&&t==0&&e.type==r.topNode&&(i=!0);for(let s=e.children.length-1;s>=0;s--){let n=e.positions[s],a=e.children[s],l;if(nt&&Hl(r,s.tree,0-s.offset,t,a),f;if(l&&l.pos<=o&&(f=Uh(r,s.tree,t+s.offset,l.pos+s.offset,!1)))return{state:l.state,tree:f}}return{state:r.streamParser.startState(i?er(i):4),tree:xe.empty}}var Ol=class{constructor(e,t,o,i){this.lang=e,this.input=t,this.fragments=o,this.ranges=i,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=i[i.length-1].to;let s=ri.get(),n=i[0].from,{state:a,tree:l}=Q0(e,o,n,this.to,s?.state);this.state=a,this.parsedPos=this.chunkStart=n+l.length;for(let f=0;ff.from<=s.viewport.from&&f.to>=s.viewport.from)&&(this.state=this.lang.streamParser.startState(er(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=ri.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),o=Math.min(t,this.chunkStart+512);for(e&&(o=Math.min(o,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` `&&(t="");else{let o=t.indexOf(` `);o>-1&&(t=t.slice(0,o))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),o=e+t.length;for(let i=this.rangeIndex;;){let s=this.ranges[i].to;if(s>=o||(t=t.slice(0,s-(o-t.length)),i++,i==this.ranges.length))break;let n=this.ranges[i].from,a=this.lineAfter(n);t+=a,o=n+a.length}return{line:t,end:o}}skipGapsTo(e,t,o){for(;;){let i=this.ranges[this.rangeIndex].to,s=e+t;if(o>0?i>s:i>=s)break;let n=this.ranges[++this.rangeIndex].from;t+=n-i}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){i=this.skipGapsTo(t,i,1),t+=i;let a=this.chunk.length;i=this.skipGapsTo(o,i,-1),o+=i,s+=this.chunk.length-a}let n=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&n>=0&&this.chunk[n]==e&&this.chunk[n+2]==t?this.chunk[n+2]=o:this.chunk.push(e,t,o,s),i}parseLine(e){let{line:t,end:o}=this.nextLine(),i=0,{streamParser:s}=this.lang,n=new Bs(t,e?e.state.tabSize:4,e?er(e.state):2);if(n.eol())s.blankLine(this.state,n.indentUnit);else for(;!n.eol();){let a=Vh(s.token,n,this.state);if(a&&(i=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+n.start,this.parsedPos+n.pos,i)),n.start>1e4)break}this.parsedPos=o,this.moveRangeIndex(),this.parsedPose.start)return i}throw new Error("Stream parser failed to advance stream.")}var Fl=Object.create(null),ii=[Ve.none],K0=new bs(ii),Ih=[],Ph=Object.create(null),Wh=Object.create(null);for(let[r,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Wh[r]=Gh(Fl,e);var Ts=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Wh)}resolve(e){return e?this.table[e]||(this.table[e]=Gh(this.extra,e)):0}},J0=new Ts(Fl);function Bl(r,e){Ih.indexOf(r)>-1||(Ih.push(r),console.warn(e))}function Gh(r,e){let t=[];for(let a of e.split(" ")){let l=[];for(let f of a.split(".")){let u=r[f]||L[f];u?typeof u=="function"?l.length?l=l.map(u):Bl(f,`Modifier ${f} used at start of tag`):l.length?Bl(f,`Tag ${f} used as modifier`):l=Array.isArray(u)?u:[u]:Bl(f,`Unknown highlighting tag ${f}`)}for(let f of l)t.push(f)}if(!t.length)return 0;let o=e.replace(/ /g,"_"),i=o+" "+t.map(a=>a.id),s=Ph[i];if(s)return s.id;let n=Ph[i]=Ve.define({id:ii.length,name:o,props:[Mh({[o]:t})]});return ii.push(n),n.id}function X0(r,e){let t=Ve.define({id:ii.length,name:"Document",props:[ro.add(()=>r),Rh.add(()=>o=>e.getIndent(o))],top:!0});return ii.push(t),t}var ev={rtl:G.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:fe.RTL}),ltr:G.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:fe.LTR}),auto:G.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Y0=r=>{let{state:e}=r,t=e.doc.lineAt(e.selection.main.from),o=ql(r.state,t.from);return o.line?Z0(r):o.block?$0(r):!1};function Gl(r,e){return({state:t,dispatch:o})=>{if(t.readOnly)return!1;let i=r(e,t);return i?(o(t.update(i)),!0):!1}}var Z0=Gl(rb,0);var _0=Gl(_h,0);var $0=Gl((r,e)=>_h(r,e,tb(e)),0);function ql(r,e){let t=r.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var ni=50;function eb(r,{open:e,close:t},o,i){let s=r.sliceDoc(o-ni,o),n=r.sliceDoc(i,i+ni),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(n)[0].length,f=s.length-a;if(s.slice(f-e.length,f)==e&&n.slice(l,l+t.length)==t)return{open:{pos:o-a,margin:a&&1},close:{pos:i+l,margin:l&&1}};let u,c;i-o<=2*ni?u=c=r.sliceDoc(o,i):(u=r.sliceDoc(o,o+ni),c=r.sliceDoc(i-ni,i));let h=/^\s*/.exec(u)[0].length,d=/\s*$/.exec(c)[0].length,p=c.length-d-t.length;return u.slice(h,h+e.length)==e&&c.slice(p,p+t.length)==t?{open:{pos:o+h+e.length,margin:/\s/.test(u.charAt(h+e.length))?1:0},close:{pos:i-d-t.length,margin:/\s/.test(c.charAt(p-1))?1:0}}:null}function tb(r){let e=[];for(let t of r.selection.ranges){let o=r.doc.lineAt(t.from),i=t.to<=o.to?o:r.doc.lineAt(t.to);i.from>o.from&&i.from==t.to&&(i=t.to==o.to+1?o:r.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>o.from?e[s].to=i.to:e.push({from:o.from+/^\s*/.exec(o.text)[0].length,to:i.to})}return e}function _h(r,e,t=e.selection.ranges){let o=t.map(s=>ql(e,s.from).block);if(!o.every(s=>s))return null;let i=t.map((s,n)=>eb(e,o[n],s.from,s.to));if(r!=2&&!i.every(s=>s))return{changes:e.changes(t.map((s,n)=>i[n]?[]:[{from:s.from,insert:o[n].open+" "},{from:s.to,insert:" "+o[n].close}]))};if(r!=1&&i.some(s=>s)){let s=[];for(let n=0,a;ni&&(s==n||n>c.from)){i=c.from;let h=/^\s*/.exec(c.text)[0].length,d=h==c.length,p=c.text.slice(h,h+f.length)==f?h:-1;hs.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:f,empty:u,single:c}of o)(c||!u)&&s.push({from:a.from+f,insert:l+" "});let n=e.changes(s);return{changes:n,selection:e.selection.map(n,1)}}else if(r!=1&&o.some(s=>s.comment>=0)){let s=[];for(let{line:n,comment:a,token:l}of o)if(a>=0){let f=n.from+a,u=f+l.length;n.text[u-n.from]==" "&&u++,s.push({from:f,to:u})}return{changes:s}}return null}var zl=rt.define(),ob=rt.define(),ib=R.define(),$h=R.define({combine(r){return ft(r,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(o,i)=>e(o,i)||t(o,i)})}}),ed=pe.define({create(){return Sr.empty},update(r,e){let t=e.state.facet($h),o=e.annotation(zl);if(o){let l=mt.fromTransaction(e,o.selection),f=o.side,u=f==0?r.undone:r.done;return l?u=Is(u,u.length,t.minDepth,l):u=id(u,e.startState.selection),new Sr(f==0?o.rest:u,f==0?u:o.rest)}let i=e.annotation(ob);if((i=="full"||i=="before")&&(r=r.isolate()),e.annotation(Te.addToHistory)===!1)return e.changes.empty?r:r.addMapping(e.changes.desc);let s=mt.fromTransaction(e),n=e.annotation(Te.time),a=e.annotation(Te.userEvent);return s?r=r.addChanges(s,n,a,t,e):e.selection&&(r=r.addSelection(e.startState.selection,n,a,t.newGroupDelay)),(i=="full"||i=="after")&&(r=r.isolate()),r},toJSON(r){return{done:r.done.map(e=>e.toJSON()),undone:r.undone.map(e=>e.toJSON())}},fromJSON(r){return new Sr(r.done.map(mt.fromJSON),r.undone.map(mt.fromJSON))}});function td(r={}){return[ed,$h.of(r),I.domEventHandlers({beforeinput(e,t){let o=e.inputType=="historyUndo"?rd:e.inputType=="historyRedo"?Ul:null;return o?(e.preventDefault(),o(t)):!1}})]}function Ps(r,e){return function({state:t,dispatch:o}){if(!e&&t.readOnly)return!1;let i=t.field(ed,!1);if(!i)return!1;let s=i.pop(r,t,e);return s?(o(s),!0):!1}}var rd=Ps(0,!1),Ul=Ps(1,!1),sb=Ps(0,!0),nb=Ps(1,!0);var mt=class r{constructor(e,t,o,i,s){this.changes=e,this.effects=t,this.mapped=o,this.startSelection=i,this.selectionsAfter=s}setSelAfter(e){return new r(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,o;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(o=this.startSelection)===null||o===void 0?void 0:o.toJSON(),selectionsAfter:this.selectionsAfter.map(i=>i.toJSON())}}static fromJSON(e){return new r(e.changes&&Ee.fromJSON(e.changes),[],e.mapped&&Ht.fromJSON(e.mapped),e.startSelection&&T.fromJSON(e.startSelection),e.selectionsAfter.map(T.fromJSON))}static fromTransaction(e,t){let o=nt;for(let i of e.startState.facet(ib)){let s=i(e);s.length&&(o=o.concat(s))}return!o.length&&e.changes.empty?null:new r(e.changes.invert(e.startState.doc),o,void 0,t||e.startState.selection,nt)}static selection(e){return new r(void 0,nt,void 0,void 0,e)}};function Is(r,e,t,o){let i=e+1>t+20?e-t-1:0,s=r.slice(i,e);return s.push(o),s}function ab(r,e){let t=[],o=!1;return r.iterChangedRanges((i,s)=>t.push(i,s)),e.iterChangedRanges((i,s,n,a)=>{for(let l=0;l=f&&n<=u&&(o=!0)}}),o}function lb(r,e){return r.ranges.length==e.ranges.length&&r.ranges.filter((t,o)=>t.empty!=e.ranges[o].empty).length===0}function od(r,e){return r.length?e.length?r.concat(e):r:e}var nt=[],fb=200;function id(r,e){if(r.length){let t=r[r.length-1],o=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-fb));return o.length&&o[o.length-1].eq(e)?r:(o.push(e),Is(r,r.length-1,1e9,t.setSelAfter(o)))}else return[mt.selection([e])]}function ub(r){let e=r[r.length-1],t=r.slice();return t[r.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function Nl(r,e){if(!r.length)return r;let t=r.length,o=nt;for(;t;){let i=cb(r[t-1],e,o);if(i.changes&&!i.changes.empty||i.effects.length){let s=r.slice(0,t);return s[t-1]=i,s}else e=i.mapped,t--,o=i.selectionsAfter}return o.length?[mt.selection(o)]:nt}function cb(r,e,t){let o=od(r.selectionsAfter.length?r.selectionsAfter.map(a=>a.map(e)):nt,t);if(!r.changes)return mt.selection(o);let i=r.changes.map(e),s=e.mapDesc(r.changes,!0),n=r.mapped?r.mapped.composeDesc(s):s;return new mt(i,q.mapEffects(r.effects,e),n,r.startSelection.map(s),o)}var hb=/^(input\.type|delete)($|\.)/,Sr=class r{constructor(e,t,o=0,i=void 0){this.done=e,this.undone=t,this.prevTime=o,this.prevUserEvent=i}isolate(){return this.prevTime?new r(this.done,this.undone):this}addChanges(e,t,o,i,s){let n=this.done,a=n[n.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!o||hb.test(o))&&(!a.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?r.moveByChar(t,e):Os(t,e))}function He(r){return r.textDirectionAt(r.state.selection.main.head)==fe.LTR}var ad=r=>nd(r,!He(r)),ld=r=>nd(r,He(r));function fd(r,e){return xt(r,t=>t.empty?r.moveByGroup(t,e):Os(t,e))}var db=r=>fd(r,!He(r)),pb=r=>fd(r,He(r));var lv=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function mb(r,e,t){if(e.type.prop(t))return!0;let o=e.to-e.from;return o&&(o>2||/[^\s,.;:]/.test(r.sliceDoc(e.from,e.to)))||e.firstChild}function Rs(r,e,t){let o=pt(r).resolveInner(e.head),i=t?Y.closedBy:Y.openedBy;for(let l=e.head;;){let f=t?o.childAfter(l):o.childBefore(l);if(!f)break;mb(r,f,i)?o=f:l=t?f.to:f.from}let s=o.type.prop(i),n,a;return s&&(n=t?Ar(r,o.from,1):Ar(r,o.to,-1))&&n.matched?a=t?n.end.to:n.end.from:a=t?o.to:o.from,T.cursor(a,t?-1:1)}var gb=r=>xt(r,e=>Rs(r.state,e,!He(r))),xb=r=>xt(r,e=>Rs(r.state,e,He(r)));function ud(r,e){return xt(r,t=>{if(!t.empty)return Os(t,e);let o=r.moveVertically(t,e);return o.head!=t.head?o:r.moveToLineBoundary(t,e)})}var cd=r=>ud(r,!1),hd=r=>ud(r,!0);function dd(r){let e=r.scrollDOM.clientHeightn.empty?r.moveVertically(n,e,t.height):Os(n,e));if(i.eq(o.selection))return!1;let s;if(t.selfScroll){let n=r.coordsAtPos(o.selection.main.head),a=r.scrollDOM.getBoundingClientRect(),l=a.top+t.marginTop,f=a.bottom-t.marginBottom;n&&n.top>l&&n.bottompd(r,!1),Vl=r=>pd(r,!0);function tr(r,e,t){let o=r.lineBlockAt(e.head),i=r.moveToLineBoundary(e,t);if(i.head==e.head&&i.head!=(t?o.to:o.from)&&(i=r.moveToLineBoundary(e,t,!1)),!t&&i.head==o.from&&o.length){let s=/^\s*/.exec(r.state.sliceDoc(o.from,Math.min(o.from+100,o.to)))[0].length;s&&e.head!=o.from+s&&(i=T.cursor(o.from+s))}return i}var bb=r=>xt(r,e=>tr(r,e,!0)),yb=r=>xt(r,e=>tr(r,e,!1)),wb=r=>xt(r,e=>tr(r,e,!He(r))),vb=r=>xt(r,e=>tr(r,e,He(r))),Cb=r=>xt(r,e=>r.moveToLineBoundary(e,!1,!1)),kb=r=>xt(r,e=>r.moveToLineBoundary(e,!0,!1));function Ab(r,e,t){let o=!1,i=io(r.selection,s=>{let n=Ar(r,s.head,-1)||Ar(r,s.head,1)||s.head>0&&Ar(r,s.head-1,1)||s.headAb(r,e,!1);function at(r,e,t){let o=io(r.state.selection,i=>{i.undirectional&&i.head>=i.anchor!=e&&(i=T.range(i.head,i.anchor));let s=t(i);return T.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0,s.assoc)});return o.eq(r.state.selection)?!1:(r.dispatch(gt(r.state,o)),!0)}function md(r,e){return at(r,e,t=>r.moveByChar(t,e))}var gd=r=>md(r,!He(r)),xd=r=>md(r,He(r));function bd(r,e){return at(r,e,t=>r.moveByGroup(t,e))}var Mb=r=>bd(r,!He(r)),Bb=r=>bd(r,He(r));var Db=r=>{let e=!He(r);return at(r,e,t=>Rs(r.state,t,e))},Tb=r=>{let e=He(r);return at(r,e,t=>Rs(r.state,t,e))};function yd(r,e){return at(r,e,t=>r.moveVertically(t,e))}var wd=r=>yd(r,!1),vd=r=>yd(r,!0);function Cd(r,e){return at(r,e,t=>r.moveVertically(t,e,dd(r).height))}var jh=r=>Cd(r,!1),Qh=r=>Cd(r,!0),Eb=r=>at(r,!0,e=>tr(r,e,!0)),Lb=r=>at(r,!1,e=>tr(r,e,!1)),Ib=r=>{let e=!He(r);return at(r,e,t=>tr(r,t,e))},Pb=r=>{let e=He(r);return at(r,e,t=>tr(r,t,e))},Ob=r=>at(r,!1,e=>T.cursor(r.lineBlockAt(e.head).from)),Rb=r=>at(r,!0,e=>T.cursor(r.lineBlockAt(e.head).to)),Kh=({state:r,dispatch:e})=>(e(gt(r,{anchor:0})),!0),Jh=({state:r,dispatch:e})=>(e(gt(r,{anchor:r.doc.length})),!0),Xh=({state:r,dispatch:e})=>(e(gt(r,{anchor:r.selection.main.anchor,head:0})),!0),Yh=({state:r,dispatch:e})=>(e(gt(r,{anchor:r.selection.main.anchor,head:r.doc.length})),!0),Hb=({state:r,dispatch:e})=>(e(r.update({selection:{anchor:0,head:r.doc.length},userEvent:"select"})),!0),Fb=({state:r,dispatch:e})=>{let t=Hs(r).map(({from:o,to:i})=>T.undirectionalRange(o,Math.min(i+1,r.doc.length)));return e(r.update({selection:T.create(t),userEvent:"select"})),!0},Nb=({state:r,dispatch:e})=>{let t=io(r.selection,o=>{let i=pt(r),s=i.resolveStack(o.from,1);if(o.empty){let n=i.resolveStack(o.from,-1);n.node.from>=s.node.from&&n.node.to<=s.node.to&&(s=n)}for(let n=s;n;n=n.next){let{node:a}=n;if((a.from=o.to||a.to>o.to&&a.from<=o.from)&&n.next)return T.undirectionalRange(a.from,a.to)}return o});return t.eq(r.selection)?!1:(e(gt(r,t)),!0)};function kd(r,e){let{state:t}=r,o=t.selection,i=t.selection.ranges.slice();for(let s of t.selection.ranges){let n=t.doc.lineAt(s.head);if(e?n.to0)for(let a=s;;){let l=r.moveVertically(a,e);if(l.headn.to){i.some(f=>f.head==l.head)||i.push(l);break}else{if(l.head==a.head)break;a=l}}}return i.length==o.ranges.length?!1:(r.dispatch(gt(t,T.create(i,i.length-1))),!0)}var zb=r=>kd(r,!1),Ub=r=>kd(r,!0),Vb=({state:r,dispatch:e})=>{let t=r.selection,o=null;return t.ranges.length>1?o=T.create([t.main]):t.main.empty||(o=T.create([T.cursor(t.main.head)])),o?(e(gt(r,o)),!0):!1};function ai(r,e){if(r.state.readOnly)return!1;let t="delete.selection",{state:o}=r,i=o.changeByRange(s=>{let{from:n,to:a}=s;if(n==a){let l=e(s);ln&&(t="delete.forward",l=Ls(r,l,!0)),n=Math.min(n,l),a=Math.max(a,l)}else n=Ls(r,n,!1),a=Ls(r,a,!0);return n==a?{range:s}:{changes:{from:n,to:a},range:T.cursor(n,ni(r)))o.between(e,e,(i,s)=>{ie&&(e=t?s:i)});return e}var Ad=(r,e,t)=>ai(r,o=>{let i=o.from,{state:s}=r,n=s.doc.lineAt(i),a,l;if(t&&!e&&i>n.from&&iAd(r,!1,!0);var Sd=r=>Ad(r,!0,!1),Md=(r,e)=>ai(r,t=>{let o=t.head,{state:i}=r,s=i.doc.lineAt(o),n=i.charCategorizer(o);for(let a=null;;){if(o==(e?s.to:s.from)){o==t.head&&s.number!=(e?i.doc.lines:1)&&(o+=e?1:-1);break}let l=ve(s.text,o-s.from,e)+s.from,f=s.text.slice(Math.min(o,l)-s.from,Math.max(o,l)-s.from),u=n(f);if(a!=null&&u!=a)break;(f!=" "||o!=t.head)&&(a=u),o=l}return o}),Bd=r=>Md(r,!1),Wb=r=>Md(r,!0);var Gb=r=>ai(r,e=>{let t=r.lineBlockAt(e.head).to;return e.headai(r,e=>{let t=r.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),jb=r=>ai(r,e=>{let t=r.moveToLineBoundary(e,!0).head;return e.head{if(r.readOnly)return!1;let t=r.changeByRange(o=>({changes:{from:o.from,to:o.to,insert:_.of(["",""])},range:T.cursor(o.from)}));return e(r.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},Kb=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=r.changeByRange(o=>{if(!o.empty||o.from==0||o.from==r.doc.length)return{range:o};let i=o.from,s=r.doc.lineAt(i),n=i==s.from?i-1:ve(s.text,i-s.from,!1)+s.from,a=i==s.to?i+1:ve(s.text,i-s.from,!0)+s.from;return{changes:{from:n,to:a,insert:r.doc.slice(i,a).append(r.doc.slice(n,i))},range:T.cursor(a)}});return t.changes.empty?!1:(e(r.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Hs(r){let e=[],t=-1;for(let o of r.selection.ranges){let i=r.doc.lineAt(o.from),s=r.doc.lineAt(o.to);if(!o.empty&&o.to==s.from&&(s=r.doc.lineAt(o.to-1)),t>=i.number){let n=e[e.length-1];n.to=s.to,n.ranges.push(o)}else e.push({from:i.from,to:s.to,ranges:[o]});t=s.number+1}return e}function Dd(r,e,t){if(r.readOnly)return!1;let o=[],i=[];for(let s of Hs(r)){if(t?s.to==r.doc.length:s.from==0)continue;let n=r.doc.lineAt(t?s.to+1:s.from-1),a=n.length+1;if(t){o.push({from:s.to,to:n.to},{from:s.from,insert:n.text+r.lineBreak});for(let l of s.ranges)i.push(T.range(Math.min(r.doc.length,l.anchor+a),Math.min(r.doc.length,l.head+a)))}else{o.push({from:n.from,to:s.from},{from:s.to,insert:r.lineBreak+n.text});for(let l of s.ranges)i.push(T.range(l.anchor-a,l.head-a))}}return o.length?(e(r.update({changes:o,scrollIntoView:!0,selection:T.create(i,r.selection.mainIndex),userEvent:"move.line"})),!0):!1}var Jb=({state:r,dispatch:e})=>Dd(r,e,!1),Xb=({state:r,dispatch:e})=>Dd(r,e,!0);function Td(r,e,t){if(r.readOnly)return!1;let o=[];for(let s of Hs(r))t?o.push({from:s.from,insert:r.doc.slice(s.from,s.to)+r.lineBreak}):o.push({from:s.to,insert:r.lineBreak+r.doc.slice(s.from,s.to)});let i=r.changes(o);return e(r.update({changes:i,selection:r.selection.map(i,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var Yb=({state:r,dispatch:e})=>Td(r,e,!1),Zb=({state:r,dispatch:e})=>Td(r,e,!0),_b=r=>{if(r.state.readOnly)return!1;let{state:e}=r,t=e.changes(Hs(e).map(({from:i,to:s})=>(i>0?i--:s{let s;if(r.lineWrapping){let n=r.lineBlockAt(i.head),a=r.coordsAtPos(i.head,i.assoc||1);a&&(s=n.bottom+r.documentTop-a.bottom+r.defaultLineHeight/2)}return r.moveVertically(i,!0,s)}).map(t);return r.dispatch({changes:t,selection:o,scrollIntoView:!0,userEvent:"delete.line"}),!0};function $b(r,e){if(/\(\)|\[\]|\{\}/.test(r.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=pt(r).resolveInner(e),o=t.childBefore(e),i=t.childAfter(e),s;return o&&i&&o.to<=e&&i.from>=e&&(s=o.type.prop(Y.closedBy))&&s.indexOf(i.name)>-1&&r.doc.lineAt(o.to).from==r.doc.lineAt(i.from).from&&!/\S/.test(r.sliceDoc(o.to,i.from))?{from:o.to,to:i.from}:null}var Zh=Ed(!1),ey=Ed(!0);function Ed(r){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let o=e.changeByRange(i=>{let{from:s,to:n}=i,a=e.doc.lineAt(s),l=!r&&s==n&&$b(e,s);r&&(s=n=(n<=a.to?a:e.doc.lineAt(n)).to);let f=new kr(e,{simulateBreak:s,simulateDoubleBreak:!!l}),u=Rl(f,s);for(u==null&&(u=jt(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));na.from&&s{let i=[];for(let n=o.from;n<=o.to;){let a=r.doc.lineAt(n);a.number>t&&(o.empty||o.to>a.from)&&(e(a,i,o),t=a.number),n=a.to+1}let s=r.changes(i);return{changes:i,range:T.range(s.mapPos(o.anchor,1),s.mapPos(o.head,1))}})}var ty=({state:r,dispatch:e})=>{if(r.readOnly)return!1;let t=Object.create(null),o=new kr(r,{overrideIndentation:s=>{let n=t[s];return n??-1}}),i=jl(r,(s,n,a)=>{let l=Rl(o,s.from);if(l==null)return;/\S/.test(s.text)||(l=0);let f=/^\s*/.exec(s.text)[0],u=si(r,l);(f!=u||a.fromr.readOnly?!1:(e(r.update(jl(r,(t,o)=>{o.push({from:t.from,insert:r.facet(Es)})}),{userEvent:"input.indent"})),!0),oy=({state:r,dispatch:e})=>r.readOnly?!1:(e(r.update(jl(r,(t,o)=>{let i=/^\s*/.exec(t.text)[0];if(!i)return;let s=jt(i,r.tabSize),n=0,a=si(r,Math.max(0,s-er(r)));for(;n(r.setTabFocusMode(),!0);var sy=[{key:"Ctrl-b",run:ad,shift:gd,preventDefault:!0},{key:"Ctrl-f",run:ld,shift:xd},{key:"Ctrl-p",run:cd,shift:wd},{key:"Ctrl-n",run:hd,shift:vd},{key:"Ctrl-a",run:Cb,shift:Ob},{key:"Ctrl-e",run:kb,shift:Rb},{key:"Ctrl-d",run:Sd},{key:"Ctrl-h",run:Wl},{key:"Ctrl-k",run:Gb},{key:"Ctrl-Alt-h",run:Bd},{key:"Ctrl-o",run:Qb},{key:"Ctrl-t",run:Kb},{key:"Ctrl-v",run:Vl}],ny=[{key:"ArrowLeft",run:ad,shift:gd,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:db,shift:Mb,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:wb,shift:Ib,preventDefault:!0},{key:"ArrowRight",run:ld,shift:xd,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:pb,shift:Bb,preventDefault:!0},{mac:"Cmd-ArrowRight",run:vb,shift:Pb,preventDefault:!0},{key:"ArrowUp",run:cd,shift:wd,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Kh,shift:Xh},{mac:"Ctrl-ArrowUp",run:qh,shift:jh},{key:"ArrowDown",run:hd,shift:vd,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Jh,shift:Yh},{mac:"Ctrl-ArrowDown",run:Vl,shift:Qh},{key:"PageUp",run:qh,shift:jh},{key:"PageDown",run:Vl,shift:Qh},{key:"Home",run:yb,shift:Lb,preventDefault:!0},{key:"Mod-Home",run:Kh,shift:Xh},{key:"End",run:bb,shift:Eb,preventDefault:!0},{key:"Mod-End",run:Jh,shift:Yh},{key:"Enter",run:Zh,shift:Zh},{key:"Mod-a",run:Hb},{key:"Backspace",run:Wl,shift:Wl,preventDefault:!0},{key:"Delete",run:Sd,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Bd,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:Wb,preventDefault:!0},{mac:"Mod-Backspace",run:qb,preventDefault:!0},{mac:"Mod-Delete",run:jb,preventDefault:!0}].concat(sy.map(r=>({mac:r.key,run:r.run,shift:r.shift}))),Ld=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:gb,shift:Db},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:xb,shift:Tb},{key:"Alt-ArrowUp",run:Jb},{key:"Shift-Alt-ArrowUp",run:Yb},{key:"Alt-ArrowDown",run:Xb},{key:"Shift-Alt-ArrowDown",run:Zb},{key:"Mod-Alt-ArrowUp",run:zb},{key:"Mod-Alt-ArrowDown",run:Ub},{key:"Escape",run:Vb},{key:"Mod-Enter",run:ey},{key:"Alt-l",mac:"Ctrl-l",run:Fb},{key:"Mod-i",run:Nb,preventDefault:!0},{key:"Mod-[",run:oy},{key:"Mod-]",run:ry},{key:"Mod-Alt-\\",run:ty},{key:"Shift-Mod-k",run:_b},{key:"Shift-Mod-\\",run:Sb},{key:"Mod-/",run:Y0},{key:"Alt-A",mac:"Ctrl-A",run:_0},{key:"Ctrl-m",mac:"Shift-Alt-m",run:iy}].concat(ny);var Id=typeof String.prototype.normalize=="function"?r=>r.normalize("NFKD"):r=>r,Mr=class{constructor(e,t,o=0,i=e.length,s,n){this.test=n,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(o,i),this.bufferStart=o,this.normalize=s?a=>s(Id(a)):Id,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Po(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=du(e),o=this.bufferStart+this.bufferPos;this.bufferPos+=Li(e);let i=this.normalize(t);if(i.length)for(let s=0,n=o,a=!0;;s++){let l=i.charCodeAt(s),f=this.match(l,n,a,this.bufferPos+this.bufferStart,s==i.length-1);if(f)return this.value=f,this;if(s==i.length-1)break;a&&sthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let o=this.curLineStart+t.index,i=o+t[0].length;if(this.matchPos=Ws(this.text,i+(o==i?1:0)),o==this.curLineStart+this.curLine.length&&this.nextLine(),(othis.value.to)&&(!this.test||this.test(o,i,t)))return this.value={from:o,to:i,precise:!0,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=o||i.to<=t){let a=new r(t,e.sliceString(t,o));return Ql.set(e,a),a}if(i.from==t&&i.to==o)return i;let{text:s,from:n}=i;return n>t&&(s=e.sliceString(t,n)+s,n=t),i.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let o=this.flat.from+t.index,i=o+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(o,i,t)))return this.value={from:o,to:i,precise:!0,match:t},this.matchPos=Ws(this.text,i+(o==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Us.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}};typeof Symbol<"u"&&(zs.prototype[Symbol.iterator]=Vs.prototype[Symbol.iterator]=function(){return this});function ay(r){try{return new RegExp(r,Zl),!0}catch{return!1}}function Ws(r,e){if(e>=r.length)return e;let t=r.lineAt(e),o;for(;e=56320&&o<57344;)e++;return e}var ly=r=>{let e=gh(r,"cm-goto-line");if(e){let n=e.dom.querySelector("input[type=text]");return n&&n.select(),!0}let{state:t}=r,o=String(t.doc.lineAt(r.state.selection.main.head).number),{close:i,result:s}=mh(r,{class:"cm-goto-line",label:t.phrase("Go to line"),input:{type:"text",name:"line",value:o},focus:!0,submitLabel:t.phrase("go")});return s.then(n=>{let a=n&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.elements.line.value);if(!a){r.dispatch({effects:i});return}let l=t.doc.lineAt(t.selection.main.head),[,f,u,c,h]=a,d=c?+c.slice(1):0,p=u?+u:l.number;if(u&&h){let v=p/100;f&&(v=v*(f=="-"?-1:1)+l.number/t.doc.lines),p=Math.round(t.doc.lines*v)}else u&&f&&(p=p*(f=="-"?-1:1)+l.number);let m=t.doc.line(Math.max(1,Math.min(t.doc.lines,p))),b=T.cursor(m.from+Math.max(0,Math.min(d,m.length)));r.dispatch({effects:[i,I.scrollIntoView(b.from,{y:"center"})],selection:b})}),!0};var fy=({state:r,dispatch:e})=>{let{selection:t}=r,o=T.create(t.ranges.map(i=>r.wordAt(i.head)||T.cursor(i.head)),t.mainIndex);return o.eq(t)?!1:(e(r.update({selection:o})),!0)};function uy(r,e){let{main:t,ranges:o}=r.selection,i=r.wordAt(t.head),s=i&&i.from==t.from&&i.to==t.to;for(let n=!1,a=new Mr(r.doc,e,o[o.length-1].to);;)if(a.next(),a.done){if(n)return null;a=new Mr(r.doc,e,0,Math.max(0,o[o.length-1].from-1)),n=!0}else{if(n&&o.some(l=>l.from==a.value.from))continue;if(s){let l=r.wordAt(a.value.from);if(!l||l.from!=a.value.from||l.to!=a.value.to)continue}return a.value}}var cy=({state:r,dispatch:e})=>{let{ranges:t}=r.selection;if(t.some(s=>s.from===s.to))return fy({state:r,dispatch:e});let o=r.sliceDoc(t[0].from,t[0].to);if(r.selection.ranges.some(s=>r.sliceDoc(s.from,s.to)!=o))return!1;let i=uy(r,o);return i?(e(r.update({selection:r.selection.addRange(T.range(i.from,i.to),!1),effects:I.scrollIntoView(i.to)})),!0):!1},ao=R.define({combine(r){return ft(r,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Yl(e),scrollToMatch:e=>I.scrollIntoView(e)})}});var Gs=class{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||ay(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,o)=>o=="n"?` `:o=="r"?"\r":o=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new Jl(this):new Kl(this)}getCursor(e,t=0,o){let i=e.doc?e:se.create({doc:e});return o==null&&(o=i.doc.length),this.regexp?no(this,i,t,o):so(this,i,t,o)}},qs=class{constructor(e){this.spec=e}};function hy(r,e,t){return(o,i,s,n)=>{if(t&&!t(o,i,s,n))return!1;let a=o>=n&&i<=n+s.length?s.slice(o-n,i-n):e.doc.sliceString(o,i);return r(a,e,o,i)}}function so(r,e,t,o){let i;return r.wholeWord&&(i=dy(e.doc,e.charCategorizer(e.selection.main.head))),r.test&&(i=hy(r.test,e,i)),new Mr(e.doc,r.unquoted,t,o,r.caseSensitive?void 0:s=>s.toLowerCase(),i)}function dy(r,e){return(t,o,i,s)=>((s>t||s+i.length=t)return null;i.push(o.value)}return i}highlight(e,t,o,i){let s=so(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(o+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)i(s.value.from,s.value.to)}};function py(r,e,t){return(o,i,s)=>(!t||t(o,i,s))&&r(s[0],e,o,i)}function no(r,e,t,o){let i;return r.wholeWord&&(i=my(e.charCategorizer(e.selection.main.head))),r.test&&(i=py(r.test,e,i)),new zs(e.doc,r.search,{ignoreCase:!r.caseSensitive,test:i},t,o)}function js(r,e){return r.slice(ve(r,e,!1),e)}function Qs(r,e){return r.slice(e,ve(r,e))}function my(r){return(e,t,o)=>!o[0].length||(r(js(o.input,o.index))!=Ce.Word||r(Qs(o.input,o.index))!=Ce.Word)&&(r(Qs(o.input,o.index+o[0].length))!=Ce.Word||r(js(o.input,o.index+o[0].length))!=Ce.Word)}var Jl=class extends qs{nextMatch(e,t,o){let i=no(this.spec,e,o,e.doc.length).next();return i.done&&(i=no(this.spec,e,0,t).next()),i.done?null:i.value}prevMatchInRange(e,t,o){for(let i=1;;i++){let s=Math.max(t,o-i*1e4),n=no(this.spec,e,s,o),a=null;for(;!n.next().done;)a=n.value;if(a&&(s==t||a.from>s+10))return a;if(s==t)return null}}prevMatch(e,t,o){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,o,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,o)=>{if(o=="&")return e.match[0];if(o=="$")return"$";for(let i=o.length;i>0;i--){let s=+o.slice(0,i);if(s>0&&s=t)return null;i.push(o.value)}return i}highlight(e,t,o,i){let s=no(this.spec,e,Math.max(0,t-250),Math.min(o+250,e.doc.length));for(;!s.next().done;)i(s.value.from,s.value.to)}},fi=q.define(),_l=q.define(),rr=pe.define({create(r){return new li(Xl(r).create(),null)},update(r,e){for(let t of e.effects)t.is(fi)?r=new li(t.value.create(),r.panel):t.is(_l)&&(r=new li(r.query,t.value?$l:null));return r},provide:r=>br.from(r,e=>e.panel)});var li=class{constructor(e,t){this.query=e,this.panel=t}},gy=G.mark({class:"cm-searchMatch"}),xy=G.mark({class:"cm-searchMatch cm-searchMatch-selected"}),by=Se.fromClass(class{constructor(r){this.view=r,this.decorations=this.highlight(r.state.field(rr))}update(r){let e=r.state.field(rr);(e!=r.startState.field(rr)||r.docChanged||r.selectionSet||r.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:r,panel:e}){if(!e||!r.spec.valid)return G.none;let{view:t}=this,o=new ke;for(let i=0,s=t.visibleRanges,n=s.length;is[i+1].from-500;)l=s[++i].to;r.highlight(t.state,a,l,(f,u)=>{let c=t.state.selection.ranges.some(h=>h.from==f&&h.to==u);o.add(f,u,c?xy:gy)})}return o.finish()}},{decorations:r=>r.decorations});function ui(r){return e=>{let t=e.state.field(rr,!1);return t&&t.query.spec.valid?r(e,t):Xs(e)}}var Ks=ui((r,{query:e})=>{let{to:t}=r.state.selection.main,o=e.nextMatch(r.state,t,t);if(!o)return!1;let i=T.single(o.from,o.to),s=r.state.facet(ao);return r.dispatch({selection:i,effects:[ef(r,o),s.scrollToMatch(i.main,r)],userEvent:"select.search"}),Hd(r),!0}),Js=ui((r,{query:e})=>{let{state:t}=r,{from:o}=t.selection.main,i=e.prevMatch(t,o,o);if(!i)return!1;let s=T.single(i.from,i.to),n=r.state.facet(ao);return r.dispatch({selection:s,effects:[ef(r,i),n.scrollToMatch(s.main,r)],userEvent:"select.search"}),Hd(r),!0}),yy=ui((r,{query:e})=>{let t=e.matchAll(r.state,1e3);return!t||!t.length?!1:(r.dispatch({selection:T.create(t.map(o=>T.range(o.from,o.to))),userEvent:"select.search.matches"}),!0)}),wy=({state:r,dispatch:e})=>{let t=r.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:o,to:i}=t.main,s=[],n=0;for(let a=new Mr(r.doc,r.sliceDoc(o,i));!a.next().done;){if(s.length>1e3)return!1;a.value.from==o&&(n=s.length),s.push(T.range(a.value.from,a.value.to))}return e(r.update({selection:T.create(s,n),userEvent:"select.search.matches"})),!0},Pd=ui((r,{query:e})=>{let{state:t}=r,{from:o,to:i}=t.selection.main;if(t.readOnly)return!1;let s=e.nextMatch(t,o,o);if(!s)return!1;let n=s,a=[],l,f,u=[];n.precise?n.from==o&&n.to==i&&(f=t.toText(e.getReplacement(n)),a.push({from:n.from,to:n.to,insert:f}),n=e.nextMatch(t,n.from,n.to),u.push(I.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(o).number)+"."))):n=e.nextMatch(t,n.from,n.to);let c=r.state.changes(a);return n&&(l=T.single(n.from,n.to).map(c),u.push(ef(r,n)),u.push(t.facet(ao).scrollToMatch(l.main,r))),r.dispatch({changes:c,selection:l,effects:u,userEvent:"input.replace"}),!0}),vy=ui((r,{query:e})=>{if(r.state.readOnly)return!1;let t=[];for(let i of e.matchAll(r.state,1e9)){let{from:s,to:n,precise:a}=i;a&&t.push({from:s,to:n,insert:e.getReplacement(i)})}if(!t.length)return!1;let o=r.state.phrase("replaced $ matches",t.length)+".";return r.dispatch({changes:t,effects:I.announce.of(o),userEvent:"input.replace.all"}),!0});function $l(r){return r.state.facet(ao).createPanel(r)}function Xl(r,e){var t,o,i,s,n;let a=r.selection.main,l=a.empty||a.to>a.from+100?"":r.sliceDoc(a.from,a.to);if(e&&!l)return e;let f=r.facet(ao);return new Gs({search:((t=e?.literal)!==null&&t!==void 0?t:f.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:(o=e?.caseSensitive)!==null&&o!==void 0?o:f.caseSensitive,literal:(i=e?.literal)!==null&&i!==void 0?i:f.literal,regexp:(s=e?.regexp)!==null&&s!==void 0?s:f.regexp,wholeWord:(n=e?.wholeWord)!==null&&n!==void 0?n:f.wholeWord})}function Rd(r){let e=Jo(r,$l);return e&&e.dom.querySelector("[main-field]")}function Hd(r){let e=Rd(r);e&&e==r.root.activeElement&&e.select()}var Xs=r=>{let e=r.state.field(rr,!1);if(e&&e.panel){let t=Rd(r);if(t&&t!=r.root.activeElement){let o=Xl(r.state,e.query.spec);o.valid&&r.dispatch({effects:fi.of(o)}),t.focus(),t.select()}}else r.dispatch({effects:[_l.of(!0),e?fi.of(Xl(r.state,e.query.spec)):q.appendConfig.of(ky)]});return!0},Fd=r=>{let e=r.state.field(rr,!1);if(!e||!e.panel)return!1;let t=Jo(r,$l);return t&&t.dom.contains(r.root.activeElement)&&r.focus(),r.dispatch({effects:_l.of(!1)}),!0},Nd=[{key:"Mod-f",run:Xs,scope:"editor search-panel"},{key:"F3",run:Ks,shift:Js,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Ks,shift:Js,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Fd,scope:"editor search-panel"},{key:"Mod-Shift-l",run:wy},{key:"Mod-Alt-g",run:ly},{key:"Mod-d",run:cy,preventDefault:!0}],Yl=class{constructor(e){this.view=e;let t=this.query=e.state.field(rr).query.spec;this.commit=this.commit.bind(this),this.searchField=oe("input",{value:t.search,placeholder:et(e,"Find"),"aria-label":et(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=oe("input",{value:t.replace,placeholder:et(e,"Replace"),"aria-label":et(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=oe("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=oe("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=oe("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function o(i,s,n){return oe("button",{class:"cm-button",name:i,onclick:s,type:"button"},n)}this.dom=oe("div",{onkeydown:i=>this.keydown(i),class:"cm-search"},[this.searchField,o("next",()=>Ks(e),[et(e,"next")]),o("prev",()=>Js(e),[et(e,"previous")]),o("select",()=>yy(e),[et(e,"all")]),oe("label",null,[this.caseField,et(e,"match case")]),oe("label",null,[this.reField,et(e,"regexp")]),oe("label",null,[this.wordField,et(e,"by word")]),...e.state.readOnly?[]:[oe("br"),this.replaceField,o("replace",()=>Pd(e),[et(e,"replace")]),o("replaceAll",()=>vy(e),[et(e,"replace all")])],oe("button",{name:"close",onclick:()=>Fd(e),"aria-label":et(e,"close"),type:"button"},["×"])])}commit(){let e=new Gs({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:fi.of(e)}))}keydown(e){sh(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Js:Ks)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Pd(this.view))}update(e){for(let t of e.transactions)for(let o of t.effects)o.is(fi)&&!o.value.eq(this.query)&&this.setQuery(o.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(ao).top}};function et(r,e){return r.state.phrase(e)}var Fs=30,Ns=/[\s\.,:;?!]/;function ef(r,{from:e,to:t}){let o=r.state.doc.lineAt(e),i=r.state.doc.lineAt(t).to,s=Math.max(o.from,e-Fs),n=Math.min(i,t+Fs),a=r.state.sliceDoc(s,n);if(s!=o.from){for(let l=0;la.length-Fs;l--)if(!Ns.test(a[l-1])&&Ns.test(a[l])){a=a.slice(0,l);break}}return I.announce.of(`${r.state.phrase("current match")}. ${a} ${r.state.phrase("on line")} ${o.number}.`)}var Cy=I.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),ky=[rr,Ze.low(by),Cy];var Me=class r{constructor(e,t,o,i){this.fromA=e,this.toA=t,this.fromB=o,this.toB=i}offset(e,t=e){return new r(this.fromA+e,this.toA+e,this.fromB+t,this.toB+t)}};function Dr(r,e,t,o,i,s){if(r==o)return[];let n=cf(r,e,t,o,i,s),a=hf(r,e+n,t,o,i+n,s);e+=n,t-=a,i+=n,s-=a;let l=t-e,f=s-i;if(!l||!f)return[new Me(e,t,i,s)];if(l>f){let c=r.slice(e,t).indexOf(o.slice(i,s));if(c>-1)return[new Me(e,e+c,i,i),new Me(e+c+f,t,s,s)]}else if(f>l){let c=o.slice(i,s).indexOf(r.slice(e,t));if(c>-1)return[new Me(e,e,i,i+c),new Me(t,t,i+c+l,s)]}if(l==1||f==1)return[new Me(e,t,i,s)];let u=sp(r,e,t,o,i,s);if(u){let[c,h,d]=u;return Dr(r,e,c,o,i,h).concat(Dr(r,c+d,t,o,h+d,s))}return Ay(r,e,t,o,i,s)}var ci=1e9,hi=0,uf=!1;function Ay(r,e,t,o,i,s){let n=t-e,a=s-i;if(ci<1e9&&Math.min(n,a)>ci*16||hi>0&&Date.now()>hi)return Math.min(n,a)>ci*64?[new Me(e,t,i,s)]:zd(r,e,t,o,i,s);let l=Math.ceil((n+a)/2);tf.reset(l),rf.reset(l);let f=(d,p)=>r.charCodeAt(e+d)==o.charCodeAt(i+p),u=(d,p)=>r.charCodeAt(t-d-1)==o.charCodeAt(s-p-1),c=(n-a)%2!=0?rf:null,h=c?null:tf;for(let d=0;dci||hi>0&&!(d&63)&&Date.now()>hi)return zd(r,e,t,o,i,s);let p=tf.advance(d,n,a,l,c,!1,f)||rf.advance(d,n,a,l,h,!0,u);if(p)return Sy(r,e,t,e+p[0],o,i,s,i+p[1])}return[new Me(e,t,i,s)]}var en=class{constructor(){this.vec=[]}reset(e){this.len=e<<1;for(let t=0;tt)this.end+=2;else if(c>o)this.start+=2;else if(s){let h=i+(t-o)-l;if(h>=0&&h=t-u)return[d,i+d-h]}else{let d=t-s.vec[h];if(u>=d)return[u,c]}}}return null}},tf=new en,rf=new en;function Sy(r,e,t,o,i,s,n,a){let l=!1;return!fo(r,o)&&++o==t&&(l=!0),!fo(i,a)&&++a==n&&(l=!0),l?[new Me(e,t,s,n)]:Dr(r,e,o,i,s,a).concat(Dr(r,o,t,i,a,n))}function ip(r,e){let t=1,o=Math.min(r,e);for(;tt||u>s||r.slice(a,f)!=o.slice(l,u)){if(n==1)return a-e-(fo(r,a)?0:1);n=n>>1}else{if(f==t||u==s)return f-e;a=f,l=u}}}function hf(r,e,t,o,i,s){if(e==t||i==s||r.charCodeAt(t-1)!=o.charCodeAt(s-1))return 0;let n=ip(t-e,s-i);for(let a=t,l=s;;){let f=a-n,u=l-n;if(f>1}else{if(f==e||u==i)return t-f;a=f,l=u}}}function of(r,e,t,o,i,s,n,a){let l=o.slice(i,s),f=null;for(;;){if(f||n=t)break;let h=r.slice(u,c),d=-1;for(;(d=l.indexOf(h,d+1))!=-1;){let p=cf(r,c,t,o,i+d+h.length,s),m=hf(r,e,u,o,i,i+d),b=h.length+p+m;(!f||f[2]>1}}function sp(r,e,t,o,i,s){let n=t-e,a=s-i;if(ni.fromA-e&&o.toB>i.fromB-e&&(r[t-1]=new Me(o.fromA,i.toA,o.fromB,i.toB),r.splice(t--,1))}}function My(r,e,t){for(;;){np(t,1);let o=!1;for(let i=0;i3||a>3){let l=i==r.length-1?e.length:r[i+1].fromA,f=s.fromA-o,u=l-s.toA,c=Vd(e,s.fromA,f),h=Ud(e,s.toA,u),d=s.fromA-c,p=h-s.toA;if((!n||!a)&&d&&p){let m=Math.max(n,a),[b,v,S]=n?[e,s.fromA,s.toA]:[t,s.fromB,s.toB];m>d&&e.slice(c,s.fromA)==b.slice(S-d,S)?(s=r[i]=new Me(c,c+n,s.fromB-d,s.toB-d),c=s.fromA,h=Ud(e,s.toA,l-s.toA)):m>p&&e.slice(s.toA,h)==b.slice(v,v+p)&&(s=r[i]=new Me(h-n,h,s.fromB+p,s.toB+p),h=s.toA,c=Vd(e,s.fromA,s.fromA-o)),d=s.fromA-c,p=h-s.toA}if(d||p)s=r[i]=new Me(s.fromA-d,s.toA+p,s.fromB-d,s.toB+p);else if(n){if(!a){let m=Gd(e,s.fromA,s.toA),b,v=m<0?-1:Wd(e,s.toA,s.fromA);m>-1&&(b=m-s.fromA)<=u&&e.slice(s.fromA,m)==e.slice(s.toA,s.toA+b)?s=r[i]=s.offset(b):v>-1&&(b=s.toA-v)<=f&&e.slice(s.fromA-b,s.fromA)==e.slice(v,s.toA)&&(s=r[i]=s.offset(-b))}}else{let m=Gd(t,s.fromB,s.toB),b,v=m<0?-1:Wd(t,s.toB,s.fromB);m>-1&&(b=m-s.fromB)<=u&&t.slice(s.fromB,m)==t.slice(s.toB,s.toB+b)?s=r[i]=s.offset(b):v>-1&&(b=s.toB-v)<=f&&t.slice(s.fromB-b,s.fromB)==t.slice(v,s.toB)&&(s=r[i]=s.offset(-b))}}o=s.toA}return np(r,3),r}var Br;try{Br=new RegExp("[\\p{Alphabetic}\\p{Number}]","u")}catch{}function ap(r){return r>48&&r<58||r>64&&r<91||r>96&&r<123}function lp(r,e){if(e==r.length)return 0;let t=r.charCodeAt(e);return t<192?ap(t)?1:0:Br?!cp(t)||e==r.length-1?Br.test(String.fromCharCode(t))?1:0:Br.test(r.slice(e,e+2))?2:0:0}function fp(r,e){if(!e)return 0;let t=r.charCodeAt(e-1);return t<192?ap(t)?1:0:Br?!hp(t)||e==1?Br.test(String.fromCharCode(t))?1:0:Br.test(r.slice(e-2,e))?2:0:0}var up=8;function Ud(r,e,t){if(e==r.length||!fp(r,e))return e;for(let o=e,i=e+t,s=0;si)return o;o+=n}return e}function Vd(r,e,t){if(!e||!lp(r,e))return e;for(let o=e,i=e-t,s=0;sr>=55296&&r<=56319,hp=r=>r>=56320&&r<=57343;function fo(r,e){return!e||e==r.length||!cp(r.charCodeAt(e-1))||!hp(r.charCodeAt(e))}function Dy(r,e,t){var o;let i=t?.override;return i?i(r,e):(ci=((o=t?.scanLimit)!==null&&o!==void 0?o:1e9)>>1,hi=t?.timeout?Date.now()+t.timeout:0,uf=!1,My(r,e,Dr(r,0,r.length,e,0,e.length)))}function dp(){return!uf}function pp(r,e,t){return By(Dy(r,e,t),r,e)}var Xe=R.define({combine:r=>r[0]}),sf=q.define(),mp=R.define(),We=pe.define({create(r){return null},update(r,e){for(let t of e.effects)t.is(sf)&&(r=t.value);for(let t of e.state.facet(mp))r=t(r,e);return r}});var Wt=class r{constructor(e,t,o,i,s,n=!0){this.changes=e,this.fromA=t,this.toA=o,this.fromB=i,this.toB=s,this.precise=n}offset(e,t){return e||t?new r(this.changes,this.fromA+e,this.toA+e,this.fromB+t,this.toB+t,this.precise):this}get endA(){return Math.max(this.fromA,this.toA-1)}get endB(){return Math.max(this.fromB,this.toB-1)}static build(e,t,o){let i=pp(e.toString(),t.toString(),o);return gp(i,e,t,0,0,dp())}static updateA(e,t,o,i,s){return Jd(Kd(e,i,!0,o.length),e,t,o,s)}static updateB(e,t,o,i,s){return Jd(Kd(e,i,!1,t.length),e,t,o,s)}};function qd(r,e,t,o){let i=t.lineAt(r),s=o.lineAt(e);return i.to==r&&s.to==e&&rc+1&&b>h+1)break;d.push(p.offset(-f+o,-u+i)),[c,h]=jd(p.toA+o,p.toB+i,e,t),a++}n.push(new Wt(d,f,Math.max(f,c),u,Math.max(u,h),s))}return n}var Ys=1e3;function Qd(r,e,t,o){let i=0,s=r.length;for(;;){if(i==s){let u=0,c=0;i&&({toA:u,toB:c}=r[i-1]);let h=e-(t?u:c);return[u+h,c+h]}let n=i+s>>1,a=r[n],[l,f]=t?[a.fromA,a.toA]:[a.fromB,a.toB];if(l>e)s=n;else if(f<=e)i=n+1;else return o?[a.fromA,a.fromB]:[a.toA,a.toB]}}function Kd(r,e,t,o){let i=[];return e.iterChangedRanges((s,n,a,l)=>{let f=0,u=t?e.length:o,c=0,h=t?o:e.length;s>Ys&&([f,c]=Qd(r,s-Ys,t,!0)),n=f?i[i.length-1]={fromA:p.fromA,fromB:p.fromB,toA:u,toB:h,diffA:p.diffA+m,diffB:p.diffB+b}:i.push({fromA:f,toA:u,fromB:c,toB:h,diffA:m,diffB:b})}),i}function Jd(r,e,t,o,i){if(!r.length)return e;let s=[];for(let n=0,a=0,l=0,f=0;;n++){let u=n==r.length?null:r[n],c=u?u.fromA+a:t.length,h=u?u.fromB+l:o.length;for(;fc||b.toB+l>h))break;s.push(b.offset(a,l)),f++}if(!u)break;let d=u.toA+a+u.diffA,p=u.toB+l+u.diffB,m=pp(t.sliceString(c,d),o.sliceString(h,p),i);for(let b of gp(m,t,o,c,h,dp()))s.push(b);for(a+=u.diffA,l+=u.diffB;fd&&b.fromB+l>p)break;f++}}return s}var xp={scanLimit:500},on=Se.fromClass(class{constructor(r){({deco:this.deco,gutter:this.gutter}=Zd(r))}update(r){(r.docChanged||r.viewportChanged||Ty(r.startState,r.state)||Ey(r.startState,r.state))&&({deco:this.deco,gutter:this.gutter}=Zd(r.view))}},{decorations:r=>r.deco}),Zs=Ze.low(to({class:"cm-changeGutter",markers:r=>{var e;return((e=r.plugin(on))===null||e===void 0?void 0:e.gutter)||re.empty}}));function Ty(r,e){return r.field(We,!1)!=e.field(We,!1)}function Ey(r,e){return r.facet(Xe)!=e.facet(Xe)}var Xd=G.line({class:"cm-changedLine"}),bp=G.mark({class:"cm-changedText"}),Ly=G.mark({tagName:"ins",class:"cm-insertedLine"}),Iy=G.mark({tagName:"del",class:"cm-deletedLine"}),Yd=new class extends Ue{constructor(){super(...arguments),this.elementClass="cm-changedLineGutter"}};function Py(r,e,t,o,i,s){let n=t?r.fromA:r.fromB,a=t?r.toA:r.toB,l=0;if(n!=a){i.add(n,n,Xd),i.add(n,a,t?Iy:Ly),s&&s.add(n,n,Yd);for(let f=e.iterRange(n,a-1),u=n;!f.next().done;){if(f.lineBreak){u++,i.add(u,u,Xd),s&&s.add(u,u,Yd);continue}let c=u+f.value.length;if(o)for(;l=u)break;(n?c.toA:c.toB)>f&&(!s||!s(r.state,c,a,l))&&Py(c,r.state.doc,n,o,a,l)}return{deco:a.finish(),gutter:l&&l.finish()}}var lo=class extends Re{constructor(e){super(),this.height=e}eq(e){return this.height==e.height}toDOM(){let e=document.createElement("div");return e.className="cm-mergeSpacer",e.style.height=this.height+"px",e}updateDOM(e){return e.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}},tn=q.define({map:(r,e)=>r.map(e)}),di=pe.define({create:()=>G.none,update:(r,e)=>{for(let t of e.effects)if(t.is(tn))return t.value;return r.map(e.changes)},provide:r=>I.decorations.from(r)}),_s=.01;function _d(r,e){if(r.size!=e.size)return!1;let t=r.iter(),o=e.iter();for(;t.value;){if(t.from!=o.from||Math.abs(t.value.spec.widget.height-o.value.spec.widget.height)>1)return!1;t.next(),o.next()}return!0}function Oy(r,e,t){let o=new ke,i=new ke,s=r.state.field(di).iter(),n=e.state.field(di).iter(),a=0,l=0,f=0,u=0,c=r.viewport,h=e.viewport;for(let b=0;;b++){let v=b_s&&(u+=x,i.add(l,l,G.widget({widget:new lo(x),block:!0,side:-1})))}if(S>a+1e3&&ac.from&&lh.from){let A=Math.min(c.from-a,h.from-l);a+=A,l+=A,b--}else if(v)a=v.toA,l=v.toB;else break;for(;s.value&&s.from_s&&i.add(e.state.doc.length,e.state.doc.length,G.widget({widget:new lo(d),block:!0,side:1}));let p=o.finish(),m=i.finish();_d(p,r.state.field(di))||r.dispatch({effects:tn.of(p)}),_d(m,e.state.field(di))||e.dispatch({effects:tn.of(m)})}var nf=q.define({map:(r,e)=>e.mapPos(r)});var af=class extends Re{constructor(e){super(),this.lines=e}eq(e){return this.lines==e.lines}toDOM(e){let t=document.createElement("div");return t.className="cm-collapsedLines",t.textContent=e.state.phrase("$ unchanged lines",this.lines),t.addEventListener("click",o=>{let i=e.posAtDOM(o.target);e.dispatch({effects:nf.of(i)});let{side:s,sibling:n}=e.state.facet(Xe);n&&n().dispatch({effects:nf.of(Ry(i,e.state.field(We),s=="a"))})}),t}ignoreEvent(e){return e instanceof MouseEvent}get estimatedHeight(){return 27}get type(){return"collapsed-unchanged-code"}};function Ry(r,e,t){let o=0,i=0;for(let s=0;;s++){let n=s=r)return i+(r-o);[o,i]=t?[n.toA,n.toB]:[n.toB,n.toA]}}var Hy=pe.define({create(r){return G.none},update(r,e){r=r.map(e.changes);for(let t of e.effects)t.is(nf)&&(r=r.update({filter:o=>o!=t.value}));if(r.size&&e.state.field(We)!=e.startState.field(We,!1)){let t=e.state.facet(Xe).side=="a",o=[];for(let i of e.state.field(We))r.between(t?i.fromA:i.fromB,t?i.toA:i.toB,s=>{o.push(s)});o.length&&(r=r.update({filter:i=>o.indexOf(i)<0}))}return r},provide:r=>I.decorations.from(r)});function lf({margin:r=3,minSize:e=4}){return Hy.init(t=>Fy(t,r,e))}function Fy(r,e,t){let o=new ke,i=r.facet(Xe).side=="a",s=r.field(We),n=1;for(let a=0;;a++){let l=a=t&&o.add(r.doc.line(f).from,r.doc.line(u).to,G.replace({widget:new af(c),block:!0})),!l)break;n=r.doc.lineAt(Math.min(r.doc.length,i?l.toA:l.toB)).number}return o.finish()}var Ny=I.styleModule.of(new Qe({".cm-mergeView":{overflowY:"auto"},".cm-mergeViewEditors":{display:"flex",alignItems:"stretch"},".cm-mergeViewEditor":{flexGrow:1,flexBasis:0,overflow:"hidden"},".cm-merge-revert":{width:"1.6em",flexGrow:0,flexShrink:0,position:"relative"},".cm-merge-revert button":{position:"absolute",display:"block",width:"100%",boxSizing:"border-box",textAlign:"center",background:"none",border:"none",font:"inherit",cursor:"pointer"}})),yp=I.baseTheme({".cm-mergeView & .cm-scroller, .cm-mergeView &":{height:"auto !important",overflowY:"visible !important"},"&.cm-merge-a .cm-changedLine, .cm-deletedChunk":{backgroundColor:"rgba(160, 128, 100, .08)"},"&.cm-merge-b .cm-changedLine, .cm-inlineChangedLine":{backgroundColor:"rgba(100, 160, 128, .08)"},"&light.cm-merge-a .cm-changedText, &light .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ee443366, #ee443366) bottom/100% 2px no-repeat"},"&dark.cm-merge-a .cm-changedText, &dark .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ffaa9966, #ffaa9966) bottom/100% 2px no-repeat"},"&light.cm-merge-b .cm-changedText":{background:"linear-gradient(#22bb22aa, #22bb22aa) bottom/100% 2px no-repeat"},"&dark.cm-merge-b .cm-changedText":{background:"linear-gradient(#88ff88aa, #88ff88aa) bottom/100% 2px no-repeat"},"&.cm-merge-b .cm-deletedText":{background:"#ff000033"},".cm-insertedLine, .cm-deletedLine, .cm-deletedLine del":{textDecoration:"none"},".cm-deletedChunk":{paddingLeft:"6px","& .cm-chunkButtons":{position:"absolute",insetInlineEnd:"5px"},"& button":{border:"none",cursor:"pointer",color:"white",margin:"0 2px",borderRadius:"3px","&[name=accept]":{background:"#2a2"},"&[name=reject]":{background:"#d43"}}},".cm-collapsedLines":{padding:"5px 5px 5px 10px",cursor:"pointer","&:before":{content:'"⦚"',marginInlineEnd:"7px"},"&:after":{content:'"⦚"',marginInlineStart:"7px"}},"&light .cm-collapsedLines":{color:"#444",background:"linear-gradient(to bottom, transparent 0, #f3f3f3 30%, #f3f3f3 70%, transparent 100%)"},"&dark .cm-collapsedLines":{color:"#ddd",background:"linear-gradient(to bottom, transparent 0, #222 30%, #222 70%, transparent 100%)"},".cm-changeGutter":{width:"3px",paddingLeft:"1px"},"&light.cm-merge-a .cm-changedLineGutter, &light .cm-deletedLineGutter":{background:"#e43"},"&dark.cm-merge-a .cm-changedLineGutter, &dark .cm-deletedLineGutter":{background:"#fa9"},"&light.cm-merge-b .cm-changedLineGutter":{background:"#2b2"},"&dark.cm-merge-b .cm-changedLineGutter":{background:"#8f8"},".cm-inlineChangedLineGutter":{background:"#75d"}}),$d=new Ft,$s=new Ft,uo=class{constructor(e){this.revertDOM=null,this.revertToA=!1,this.revertToLeft=!1,this.measuring=-1,this.diffConf=e.diffConfig||xp;let t=[Ze.low(on),yp,Ny,di,I.updateListener.of(c=>{this.measuring<0&&(c.heightChanged||c.viewportChanged)&&!c.transactions.some(h=>h.effects.some(d=>d.is(tn)))&&this.measure()})],o=[Xe.of({side:"a",sibling:()=>this.b,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&o.push(Zs);let i=se.create({doc:e.a.doc,selection:e.a.selection,extensions:[e.a.extensions||[],I.editorAttributes.of({class:"cm-merge-a"}),$s.of(o),t]}),s=[Xe.of({side:"b",sibling:()=>this.a,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&s.push(Zs);let n=se.create({doc:e.b.doc,selection:e.b.selection,extensions:[e.b.extensions||[],I.editorAttributes.of({class:"cm-merge-b"}),$s.of(s),t]});this.chunks=Wt.build(i.doc,n.doc,this.diffConf);let a=[We.init(()=>this.chunks),$d.of(e.collapseUnchanged?lf(e.collapseUnchanged):[])];i=i.update({effects:q.appendConfig.of(a)}).state,n=n.update({effects:q.appendConfig.of(a)}).state,this.dom=document.createElement("div"),this.dom.className="cm-mergeView",this.editorDOM=this.dom.appendChild(document.createElement("div")),this.editorDOM.className="cm-mergeViewEditors";let l=e.orientation||"a-b",f=document.createElement("div");f.className="cm-mergeViewEditor";let u=document.createElement("div");u.className="cm-mergeViewEditor",this.editorDOM.appendChild(l=="a-b"?f:u),this.editorDOM.appendChild(l=="a-b"?u:f),this.a=new I({state:i,parent:f,root:e.root,dispatchTransactions:c=>this.dispatch(c,this.a)}),this.b=new I({state:n,parent:u,root:e.root,dispatchTransactions:c=>this.dispatch(c,this.b)}),this.setupRevertControls(!!e.revertControls,e.revertControls=="b-to-a",e.renderRevertControl),e.parent&&e.parent.appendChild(this.dom),this.scheduleMeasure()}dispatch(e,t){if(e.some(o=>o.docChanged)){let o=e[e.length-1],i=e.reduce((n,a)=>n.compose(a.changes),Ee.empty(e[0].startState.doc.length));this.chunks=t==this.a?Wt.updateA(this.chunks,o.newDoc,this.b.state.doc,i,this.diffConf):Wt.updateB(this.chunks,this.a.state.doc,o.newDoc,i,this.diffConf),t.update([...e,o.state.update({effects:sf.of(this.chunks)})]);let s=t==this.a?this.b:this.a;s.update([s.state.update({effects:sf.of(this.chunks)})]),this.scheduleMeasure()}else t.update(e)}reconfigure(e){if("diffConfig"in e&&(this.diffConf=e.diffConfig),"orientation"in e){let s=e.orientation!="b-a";if(s!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let n=this.a.dom.parentNode,a=this.b.dom.parentNode;n.remove(),a.remove(),this.editorDOM.insertBefore(s?n:a,this.editorDOM.firstChild),this.editorDOM.appendChild(s?a:n),this.revertToLeft=!this.revertToLeft,this.revertDOM&&(this.revertDOM.textContent="")}}if("revertControls"in e||"renderRevertControl"in e){let s=!!this.revertDOM,n=this.revertToA,a=this.renderRevert;"revertControls"in e&&(s=!!e.revertControls,n=e.revertControls=="b-to-a"),"renderRevertControl"in e&&(a=e.renderRevertControl),this.setupRevertControls(s,n,a)}let t="highlightChanges"in e,o="gutter"in e,i="collapseUnchanged"in e;if(t||o||i){let s=[],n=[];if(t||o){let a=this.a.state.facet(Xe),l=o?e.gutter!==!1:a.markGutter,f=t?e.highlightChanges!==!1:a.highlightChanges;s.push($s.reconfigure([Xe.of({side:"a",sibling:()=>this.b,highlightChanges:f,markGutter:l}),l?Zs:[]])),n.push($s.reconfigure([Xe.of({side:"b",sibling:()=>this.a,highlightChanges:f,markGutter:l}),l?Zs:[]]))}if(i){let a=$d.reconfigure(e.collapseUnchanged?lf(e.collapseUnchanged):[]);s.push(a),n.push(a)}this.a.dispatch({effects:s}),this.b.dispatch({effects:n})}this.scheduleMeasure()}setupRevertControls(e,t,o){this.revertToA=t,this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode),this.renderRevert=o,!e&&this.revertDOM?(this.revertDOM.remove(),this.revertDOM=null):e&&!this.revertDOM?(this.revertDOM=this.editorDOM.insertBefore(document.createElement("div"),this.editorDOM.firstChild.nextSibling),this.revertDOM.addEventListener("mousedown",i=>this.revertClicked(i)),this.revertDOM.className="cm-merge-revert"):this.revertDOM&&(this.revertDOM.textContent="")}scheduleMeasure(){if(this.measuring<0){let e=this.dom.ownerDocument.defaultView||window;this.measuring=e.requestAnimationFrame(()=>{this.measuring=-1,this.measure()})}}measure(){Oy(this.a,this.b,this.chunks),this.revertDOM&&this.updateRevertButtons()}updateRevertButtons(){let e=this.revertDOM,t=e.firstChild,o=this.a.viewport,i=this.b.viewport;for(let s=0;so.to||n.fromB>i.to)break;if(n.fromA-1&&(this.dom.ownerDocument.defaultView||window).cancelAnimationFrame(this.measuring),this.dom.remove()}};function ep(r){let e=r.nextSibling;return r.remove(),e}var zy=new class extends Ue{constructor(){super(...arguments),this.elementClass="cm-deletedLineGutter"}},Uy=Ze.low(to({class:"cm-changeGutter",markers:r=>{var e;return((e=r.plugin(on))===null||e===void 0?void 0:e.gutter)||re.empty},widgetMarker:(r,e)=>e instanceof rn?zy:null}));function wp(r){var e;let t=typeof r.original=="string"?_.of(r.original.split(/\r?\n/)):r.original,o=r.diffConfig||xp;return[Ze.low(on),qy,yp,I.editorAttributes.of({class:"cm-merge-b"}),mp.of((i,s)=>{let n=s.effects.find(a=>a.is(df));return n&&(i=Wt.updateA(i,n.value.doc,s.startState.doc,n.value.changes,o)),s.docChanged&&(i=Wt.updateB(i,s.state.field(co),s.newDoc,s.changes,o)),i}),Xe.of({highlightChanges:r.highlightChanges!==!1,markGutter:r.gutter!==!1,syntaxHighlightDeletions:r.syntaxHighlightDeletions!==!1,syntaxHighlightDeletionsMaxLength:3e3,mergeControls:(e=r.mergeControls)!==null&&e!==void 0?e:!0,overrideChunk:r.allowInlineDiffs?Ky:void 0,side:"b"}),co.init(()=>t),r.gutter!==!1?Uy:[],r.collapseUnchanged?lf(r.collapseUnchanged):[],We.init(i=>Wt.build(t,i.doc,o))]}var df=q.define();var co=pe.define({create:()=>_.empty,update(r,e){for(let t of e.effects)t.is(df)&&(r=t.value.doc);return r}});var tp=new WeakMap,rn=class extends Re{constructor(e){super(),this.buildDOM=e,this.dom=null}eq(e){return this.dom==e.dom}toDOM(e){return this.dom||(this.dom=this.buildDOM(e))}};function Vy(r,e,t){let o=tp.get(e.changes);if(o)return o;let i=n=>{let{highlightChanges:a,syntaxHighlightDeletions:l,syntaxHighlightDeletionsMaxLength:f,mergeControls:u}=r.facet(Xe),c=document.createElement("div");if(c.className="cm-deletedChunk",u){let A=c.appendChild(document.createElement("div"));A.className="cm-chunkButtons";let k=g=>{g.preventDefault(),Wy(n,n.posAtDOM(c))},x=g=>{g.preventDefault(),Gy(n,n.posAtDOM(c))};if(typeof u=="function")A.appendChild(u("accept",k)),A.appendChild(u("reject",x));else{let g=A.appendChild(document.createElement("button"));g.name="accept",g.textContent=r.phrase("Accept"),g.onmousedown=k;let C=A.appendChild(document.createElement("button"));C.name="reject",C.textContent=r.phrase("Reject"),C.onmousedown=x}}if(t||e.fromA>=e.toA)return c;let h=n.state.field(co).sliceString(e.fromA,e.endA),d=l&&r.facet($t),p=S(),m=e.changes,b=0,v=!1;function S(){let A=c.appendChild(document.createElement("div"));return A.className="cm-deletedLine",A.appendChild(document.createElement("del"))}function w(A,k,x){for(let g=A;g-1&&Dg){let E=document.createTextNode(h.slice(g,C));if(M){let z=p.appendChild(document.createElement("span"));z.className=M,z.appendChild(E)}else p.appendChild(E);g=C}B&&(v=!v)}}if(d&&e.toA-e.fromA<=f){let A=d.parser.parse(h),k=0;As(A,{style:x=>zh(r,x)},(x,g,C)=>{x>k&&w(k,x,""),w(x,g,C),k=g}),w(k,h.length,"")}else w(0,h.length,"");return p.firstChild||p.appendChild(document.createElement("br")),c},s=G.widget({block:!0,side:-1,widget:new rn(i)});return tp.set(e.changes,s),s}function Wy(r,e){let{state:t}=r,o=e??t.selection.main.head,i=r.state.field(We).find(l=>l.fromB<=o&&l.endB>=o);if(!i)return!1;let s=r.state.sliceDoc(i.fromB,Math.max(i.fromB,i.toB-1)),n=r.state.field(co);i.fromB!=i.toB&&i.toA<=n.length&&(s+=r.state.lineBreak);let a=Ee.of({from:i.fromA,to:Math.min(n.length,i.toA),insert:s},n.length);return r.dispatch({effects:df.of({doc:a.apply(n),changes:a}),userEvent:"accept"}),!0}function Gy(r,e){let{state:t}=r,o=e??t.selection.main.head,i=t.field(We).find(a=>a.fromB<=o&&a.endB>=o);if(!i)return!1;let n=t.field(co).sliceString(i.fromA,Math.max(i.fromA,i.toA-1));return i.fromA!=i.toA&&i.toB<=t.doc.length&&(n+=t.lineBreak),r.dispatch({changes:{from:i.fromB,to:Math.min(t.doc.length,i.toB),insert:n},userEvent:"revert"}),!0}function rp(r){let e=new ke;for(let t of r.field(We)){let o=r.facet(Xe).overrideChunk&&vp(r,t);e.add(t.fromB,t.fromB,Vy(r,t,!!o))}return e.finish()}var qy=pe.define({create:r=>rp(r),update(r,e){return e.state.field(We,!1)!=e.startState.field(We,!1)?rp(e.state):r},provide:r=>I.decorations.from(r)}),op=new WeakMap;function vp(r,e){let t=op.get(e);if(t!==void 0)return t;t=null;let o=r.field(co),i=r.doc,s=o.lineAt(e.endA).number-o.lineAt(e.fromA).number+1,n=i.lineAt(e.endB).number-i.lineAt(e.fromB).number+1;e:if(s==n&&s<10){let a=[],l=0,f=e.fromA,u=e.fromB;for(let c of e.changes){if(c.fromA=e.endB)break;n=r.doc.lineAt(n.to+1)}return!0}var an=class{constructor(e,t,o){this.from=e,this.to=t,this.diagnostic=o}},Tr=class r{constructor(e,t,o){this.diagnostics=e,this.panel=t,this.selected=o}static init(e,t,o){let i=o.facet(Et).markerFilter;i&&(e=i(e,o));let s=e.slice().sort((d,p)=>d.from-p.from||d.to-p.to),n=new ke,a=[],l=0,f=o.doc.iter(),u=0,c=o.doc.length;for(let d=0;;){let p=d==s.length?null:s[d];if(!p&&!a.length)break;let m,b;if(a.length)m=l,b=a.reduce((w,A)=>Math.min(w,A.to),p&&p.from>m?p.from:1e8);else{if(m=p.from,m>c)break;b=p.to,a.push(p),d++}for(;dw.from||w.to==m))a.push(w),d++,b=Math.min(w.to,b);else{b=Math.min(w.from,b);break}}b=Math.min(b,c);let v=!1;if(a.some(w=>w.from==m&&(w.to==b||b==c))&&(v=m==b,!v&&b-m<10)){let w=m-(u+f.value.length);w>0&&(f.next(w),u=m);for(let A=m;;){if(A>=b){v=!0;break}if(!f.lineBreak&&u+f.value.length>A)break;A=u+f.value.length,u+=f.value.length,f.next()}}let S=Lp(a);if(v)n.add(m,m,G.widget({widget:new pf(S),diagnostics:a.slice()}));else{let w=a.reduce((A,k)=>k.markClass?A+" "+k.markClass:A,"");n.add(m,b,G.mark({class:"cm-lintRange cm-lintRange-"+S+w,diagnostics:a.slice(),inclusiveEnd:a.some(A=>A.to>b)}))}if(l=b,l==c)break;for(let w=0;w{if(!(e&&n.diagnostics.indexOf(e)<0))if(!o)o=new an(i,s,e||n.diagnostics[0]);else{if(n.diagnostics.indexOf(o.diagnostic)<0)return!1;o=new an(o.from,s,o.diagnostic)}}),o}function Ap(r,e){let t=e.pos,o=e.end||t,i=r.state.facet(Et).hideOn(r,t,o);if(i!=null)return i;let s=r.startState.doc.lineAt(e.pos);return!!(r.effects.some(n=>n.is(cn))||r.changes.touchesRange(s.from,Math.max(s.to,o)))}function Jy(r,e){return r.field(bt,!1)?e:e.concat(q.appendConfig.of(Pp))}function Xy(r,e){return{effects:Jy(r,[cn.of(e)])}}var cn=q.define(),Sp=q.define(),Mp=q.define(),bt=pe.define({create(){return new Tr(G.none,null,null)},update(r,e){if(e.docChanged&&r.diagnostics.size){let t=r.diagnostics.map(e.changes),o=null,i=r.panel;if(r.selected){let s=e.changes.mapPos(r.selected.from,1);o=ho(t,r.selected.diagnostic,s)||ho(t,null,s)}!t.size&&i&&e.state.facet(Et).autoPanel&&(i=null),r=new Tr(t,i,o)}for(let t of e.effects)if(t.is(cn)){let o=e.state.facet(Et).autoPanel?t.value.length?fn.open:null:r.panel;r=Tr.init(t.value,o,e.state)}else t.is(Sp)?r=new Tr(r.diagnostics,t.value?fn.open:null,r.selected):t.is(Mp)&&(r=new Tr(r.diagnostics,r.panel,t.value));return r},provide:r=>[br.from(r,e=>e.panel),I.decorations.from(r,e=>e.diagnostics)]});var Yy=G.mark({class:"cm-lintRange cm-lintRange-active"});function Zy(r,e,t){let{diagnostics:o}=r.state.field(bt),i,s=-1,n=-1;o.between(e-(t<0?1:0),e+(t>0?1:0),(l,f,{spec:u})=>{if(e>=l&&e<=f&&(l==f||(e>l||t>0)&&(eEp(r,t,!1)))}var Cp=r=>{let e=r.state.field(bt,!1);return!e||!e.panel?!1:(r.dispatch({effects:Sp.of(!1)}),!0)};var _y=Se.fromClass(class{constructor(r){this.view=r,this.timeout=-1,this.set=!0;let{delay:e}=r.state.facet(Et);this.lintTime=Date.now()+e,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,e)}run(){clearTimeout(this.timeout);let r=Date.now();if(rPromise.resolve(o(this.view))),o=>{this.view.state.doc==e.doc&&this.view.dispatch(Xy(this.view.state,o.reduce((i,s)=>i.concat(s))))},o=>{Je(this.view.state,o)})}}update(r){let e=r.state.facet(Et);(r.docChanged||e!=r.startState.facet(Et)||e.needsRefresh&&e.needsRefresh(r))&&(this.lintTime=Date.now()+e.delay,this.set||(this.set=!0,this.timeout=setTimeout(this.run,e.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}});function $y(r,e,t){let o=[],i=-1;for(let s of r)s.then(n=>{o.push(n),clearTimeout(i),o.length==r.length?e(o):i=setTimeout(()=>e(o),200)},t)}var Et=R.define({combine(r){return{sources:r.map(e=>e.source).filter(e=>e!=null),...ft(r.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:kp,tooltipFilter:kp,needsRefresh:(e,t)=>e?t?o=>e(o)||t(o):e:t,hideOn:(e,t)=>e?t?(o,i,s)=>e(o,i,s)||t(o,i,s):e:t,autoPanel:(e,t)=>e||t})}}});function kp(r,e){return r?e?(t,o)=>e(r(t,o),o):r:e}function Dp(r,e={}){return[Et.of({source:r,config:e}),_y,Pp]}function Tp(r){let e=[];if(r)e:for(let{name:t}of r){for(let o=0;os.toLowerCase()==i.toLowerCase())){e.push(i);continue e}}e.push("")}return e}function Ep(r,e,t){var o;let i=t?Tp(e.actions):[];return oe("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},oe("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(r):e.message),(o=e.actions)===null||o===void 0?void 0:o.map((s,n)=>{let a=!1,l=d=>{if(d.preventDefault(),a)return;a=!0;let p=ho(r.state.field(bt).diagnostics,e);p&&s.apply(r,p.from,p.to)},{name:f}=s,u=i[n]?f.indexOf(i[n]):-1,c=u<0?f:[f.slice(0,u),oe("u",f.slice(u,u+1)),f.slice(u+1)],h=s.markClass?" "+s.markClass:"";return oe("button",{type:"button",class:"cm-diagnosticAction"+h,onclick:l,onmousedown:l,"aria-label":` Action: ${f}${u<0?"":` (access key "${i[n]})"`}.`},c)}),e.source&&oe("div",{class:"cm-diagnosticSource"},e.source))}var pf=class extends Re{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return oe("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}},ln=class{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=Ep(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}},fn=class r{constructor(e){this.view=e,this.items=[];let t=i=>{if(!(i.ctrlKey||i.altKey||i.metaKey)){if(i.keyCode==27)Cp(this.view),this.view.focus();else if(i.keyCode==38||i.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(i.keyCode==40||i.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(i.keyCode==36)this.moveSelection(0);else if(i.keyCode==35)this.moveSelection(this.items.length-1);else if(i.keyCode==13)this.view.focus();else if(i.keyCode>=65&&i.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:s}=this.items[this.selectedIndex],n=Tp(s.actions);for(let a=0;a{for(let s=0;sCp(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(bt).selected;if(!e)return-1;for(let t=0;t{for(let u of f.diagnostics){if(n.has(u))continue;n.add(u);let c=-1,h;for(let d=o;do&&(this.items.splice(o,c-o),i=!0)),t&&h.diagnostic==t.diagnostic?h.dom.hasAttribute("aria-selected")||(h.dom.setAttribute("aria-selected","true"),s=h):h.dom.hasAttribute("aria-selected")&&h.dom.removeAttribute("aria-selected"),o++}});o({sel:s.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:a,panel:l})=>{let f=l.height/this.list.offsetHeight;a.topl.bottom&&(this.list.scrollTop+=(a.bottom-l.bottom)/f)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),i&&this.sync()}sync(){let e=this.list.firstChild;function t(){let o=e;e=o.nextSibling,o.remove()}for(let o of this.items)if(o.dom.parentNode==this.list){for(;e!=o.dom;)t();e=o.dom.nextSibling}else this.list.insertBefore(o.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(bt),o=ho(t.diagnostics,this.items[e].diagnostic);o&&this.view.dispatch({selection:{anchor:o.from,head:o.to},scrollIntoView:!0,effects:Mp.of(o)})}static open(e){return new r(e)}};function nn(r,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(r)}')`}function sn(r){return nn(``,'width="6" height="3"')}var ew=I.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:sn("#f11")},".cm-lintRange-warning":{backgroundImage:sn("orange")},".cm-lintRange-info":{backgroundImage:sn("#999")},".cm-lintRange-hint":{backgroundImage:sn("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}},"&dark .cm-lintRange-active":{backgroundColor:"#86714a80"},"&dark .cm-panel.cm-panel-lint ul":{"& [aria-selected]":{backgroundColor:"#2e343e"}}});function tw(r){return r=="error"?4:r=="warning"?3:r=="info"?2:1}function Lp(r){let e="hint",t=1;for(let o of r){let i=tw(o.severity);i>t&&(t=i,e=o.severity)}return e}var un=class extends Ue{constructor(e){super(),this.diagnostics=e,this.severity=Lp(e)}toDOM(e){let t=document.createElement("div");t.className="cm-lint-marker cm-lint-marker-"+this.severity;let o=this.diagnostics,i=e.state.facet(hn).tooltipFilter;return i&&(o=i(o,e.state)),o.length&&(t.onmouseover=()=>ow(e,t,o)),t}};function rw(r,e){let t=o=>{let i=e.getBoundingClientRect();if(!(o.clientX>i.left-10&&o.clientXi.top-10&&o.clientYe.getBoundingClientRect()}}})}),e.onmouseout=e.onmousemove=null,rw(r,e)}let{hoverTime:i}=r.state.facet(hn),s=setTimeout(o,i);e.onmouseout=()=>{clearTimeout(s),e.onmouseout=e.onmousemove=null},e.onmousemove=()=>{clearTimeout(s),s=setTimeout(o,i)}}function iw(r,e){let t=Object.create(null);for(let i of e){let s=r.lineAt(i.from);(t[s.from]||(t[s.from]=[])).push(i)}let o=[];for(let i in t)o.push(new un(t[i]).range(+i));return re.of(o,!0)}var sw=to({class:"cm-gutter-lint",markers:r=>r.state.field(mf),widgetMarker:(r,e,t)=>{let o=[];return r.state.field(mf).between(t.from,t.to,(i,s,n)=>{i>t.from&&io.is(gf)?o.value:t,r)},provide:r=>ms.from(r)}),nw=I.baseTheme({".cm-gutter-lint":{width:"1.4em","& .cm-gutterElement":{padding:".2em"}},".cm-lint-marker":{width:"1em",height:"1em"},".cm-lint-marker-info":{content:nn('')},".cm-lint-marker-warning":{content:nn('')},".cm-lint-marker-error":{content:nn('')}}),aw=dh(Zy,{hideOn:Ap}),Pp=[bt,I.decorations.compute([bt],r=>{let{selected:e,panel:t}=r.field(bt);return!e||!t||e.from==e.to?G.none:G.set([Yy.range(e.from,e.to)])}),aw,ew],hn=R.define({combine(r){return ft(r,{hoverTime:300,markerFilter:null,tooltipFilter:null})}});function Op(r={}){return[hn.of(r),mf,sw,nw,Ip]}var lw={start:[[/^{{\s*Infobox\s*\S*/,"keyword","infobox"],[/^./,"invalid"]],infobox:[[/^}}\s*$/,"keyword","start"],[/^\s*\|\s*[^=]+/,"propertyName"],[/^=/,"operator"],[/^\{/,"string","array"],[/^[^|}]+/,"string"]],array:[[/^}\s*$/,"string","infobox"],[/^\[/,"variableName","array_item"]],array_item:[[/^\]/,"variable","array"],[/^\|/,"escape"],[/^./,"string"]]},fw=Ds.define({name:"bangumi-infobox",startState:()=>({state:"start"}),token(r,e){if(e.state==="infobox"&&!r.sol()&&r.peek()==="|")return r.next(),"string";for(let[t,o,i]of lw[e.state])if(r.match(t))return i&&(e.state=i),o;return r.next(),null}}),uw=oo.define([{tag:L.keyword,color:"var(--accent)",fontWeight:"bold"},{tag:L.invalid,color:"#f56c6c",textDecoration:"underline wavy #f56c6c"},{tag:L.propertyName,color:"var(--link)"},{tag:L.operator,color:"var(--text-secondary)"},{tag:L.string,color:"var(--text)"},{tag:L.variableName,color:"var(--text)"},{tag:L.escape,color:"var(--accent)"}]),xf=[new Ms(fw),Nh(uw)];function cw(r){let e=[],t=[],o=0;for(;;){let f=r.indexOf(` `,o);if(f<0){e.push(r.slice(o)),t.push(o);break}let u=f;u>o&&r[u-1]==="\r"&&u--,e.push(r.slice(o,u)),t.push(o),o=f+1}let i=f=>({from:t[f],to:t[f]+e[f].length}),s=[],n=0,a=null,l=null;for(let f=0;f1&&s.push({row:c,...i(c),text:"只允许一个 '{{Infobox'",type:"error"}));continue}if(/^\s*}}\s*$/.test(u)){a?a=null:s.push({row:c,...i(c),text:"多余的 '}}'",type:"error"});continue}if(/^\s*\|/.test(u)){if(/^(?:\s*\|\s*)(?:[^=]+?)?(?:\s*=\s*)(?:.+?)?\s*$/.test(u)||s.push({row:c,...i(c),text:"错误的字段格式",type:"error"}),l){let d=i(l.row);s.push({row:l.row,from:d.from,to:d.to,text:"缺少匹配的 '}'",type:"error"}),l=null}u.trim().endsWith("{")&&(l={row:c});continue}if(/^\s*}\s*$/.test(u)){l?l=null:s.push({row:c,...i(c),text:"多余的 '}'",type:"error"});continue}let h=/^(?\s*)(?\[)?(?.*?)(?\])?\s*$/.exec(u);if(h?.groups){l||s.push({row:c,...i(c),text:"意外的数组项",type:"error"}),h.groups.open||s.push({row:c,...i(c),text:"缺少 '['",type:"error"}),h.groups.close||s.push({row:c,...i(c),text:"缺少 ']'",type:"error"});continue}s.push({row:c,...i(c),text:"未知内容",type:"error"})}if(a){let f=i(a.row);s.push({row:a.row,from:f.from,to:f.to,text:"缺少匹配的 '}}'",type:"error"})}return s}function hw(r){return cw(r).map(e=>({from:e.from,to:e.to,severity:e.type,message:e.text}))}function dw(r){return hw(r.state.doc.toString())}var Rp=[Dp(dw),Op()];var pn=640,dn=new Ft;function Fp(r){return{"&":{backgroundColor:"var(--white)",color:"var(--text)",fontSize:r,border:"1px solid var(--border)",borderRadius:"6px"},".cm-content":{fontFamily:"var(--font-mono)",lineHeight:"1.6",padding:"12px 0"},".cm-gutters":{backgroundColor:"transparent",border:"none"},"&.cm-focused":{outline:"none",borderColor:"var(--accent)",boxShadow:"0 0 0 2px rgb(240 145 153 / 15%)"}}}var Np=r=>I.theme(Fp(r)),zp=r=>I.theme(Fp(r),{dark:!0}),pw=se.phrases.of({"$ unchanged lines":"$ 行未变更","Revert this chunk":"撤销此块",Accept:"接受",Reject:"撤销",Find:"查找",Replace:"替换",next:"下一个",previous:"上一个",all:"全部","match case":"区分大小写","by word":"全字匹配","regular expression":"正则表达式","replace: $":"替换: $","replace all: $":"替换全部: $",close:"关闭","current match":"当前匹配","replaced $ matches":"已替换 $ 处匹配","replaced $ match on $ line":"已在第 $ 行替换 $ 处匹配","goto line: $":"跳转到行: $"});function mw(r,e,t){let o=e?"16px":"13px";return[I.lineWrapping,se.allowMultipleSelections.of(!0),fh(),pw,ch(),I.contentAttributes.of({spellcheck:"false"}),hl.of([...Ld,...Nd,{key:"Mod-h",run:Xs,scope:"editor search-panel",preventDefault:!0},...sd]),td(),dn.of(t?zp(o):Np(o)),I.updateListener.of(i=>{i.docChanged&&r()})]}var Hp={gutter:!0,highlightChanges:!0,collapseUnchanged:{margin:3,minSize:4},diffConfig:{scanLimit:2e4}},pi="static-cm-diff",Lr="static-tags-cm-diff",Er=new Map;function Lt(r){let e=Er.get(r);return e?e.view instanceof uo?e.view.b.state.doc.toString():e.view.state.doc.toString():""}function Up(r){for(let e of Er.values()){let t=e.narrow?"16px":"13px",o=r?zp(t):Np(t);e.view instanceof uo?(e.view.a.dispatch({effects:dn.reconfigure(o)}),e.view.b.dispatch({effects:dn.reconfigure(o)})):e.view.dispatch({effects:dn.reconfigure(o)})}}function Vp(r){for(let[e,t]of[...Er]){let o=document.getElementById(e);if(!o||(o.clientWidthmw(h,a,o),f=s?[...xf,dl()]:[],u=s?[...xf,Rp,dl()]:[];if(a){let h=new I({doc:t,parent:n,extensions:[...l(i),...u,wp({original:e,mergeControls:!1,allowInlineDiffs:!0,...Hp})]});Er.set(r,{view:h,narrow:a,oldText:e,onChange:i,wikiMode:s});return}let c=new uo({a:{doc:e,extensions:[...l(()=>{}),...f,se.readOnly.of(!0)]},b:{doc:t,extensions:[...l(i),...u]},parent:n,orientation:"a-b",revertControls:"a-to-b",...Hp});Er.set(r,{view:c,narrow:a,oldText:e,onChange:i,wikiMode:s})}var gw="MmLlHhVvCcSsQqTtAaZz";function Wp(r){let e=[],t=r.length,o=0,i=0,s=0,n=0,a=0,l=null,f="",u=0,c=0,h="",d=!1,p=g=>{throw new Error(`morphicons: ${g} at d[${o}]`)},m=g=>g>=48&&g<=57,b=()=>{for(;o{b();let g=o;o{b();let g=r[o];return g==="0"||g==="1"?(o++,g==="1"?1:0):p("expected arc flag (0|1)")},w=()=>(d||p("path must start with M/m"),l||(l={x0:i,y0:s,segs:[],closed:!1},e.push(l)),l),A=!1,k=()=>v()+(A?i:0),x=()=>v()+(A?s:0);for(;b(),!(o>=t);){let g=r[o];switch(gw.includes(g)?(f=g,o++):f===""?p("path must start with M/m"):f==="M"?f="L":f==="m"?f="l":(f==="Z"||f==="z")&&p("stray data after Z"),A=f>="a",A?f.toUpperCase():f){case"M":{d=!0;let C=k(),M=x();i=C,s=M,n=C,a=M,l={x0:C,y0:M,segs:[],closed:!1},e.push(l),h="";break}case"L":{let C=k(),M=x();w().segs.push(["L",C,M]),i=C,s=M,h="";break}case"H":{let C=k();w().segs.push(["L",C,s]),i=C,h="";break}case"V":{let C=x();w().segs.push(["L",i,C]),s=C,h="";break}case"C":case"S":{let C,M;f==="C"||f==="c"?(C=k(),M=x()):(C=h==="C"?2*i-u:i,M=h==="C"?2*s-c:s);let B=k(),D=x(),E=k(),z=x();w().segs.push(["C",C,M,B,D,E,z]),u=B,c=D,i=E,s=z,h="C";break}case"Q":case"T":{let C,M;f==="Q"||f==="q"?(C=k(),M=x()):(C=h==="Q"?2*i-u:i,M=h==="Q"?2*s-c:s);let B=k(),D=x();w().segs.push(["Q",C,M,B,D]),u=C,c=M,i=B,s=D,h="Q";break}case"A":{let C=v(),M=v(),B=v(),D=S(),E=S(),z=k(),W=x();w().segs.push(["A",C,M,B,D,E,z,W]),i=z,s=W,h="";break}case"Z":l&&(l.closed=!0,l=null),i=n,s=a,h="";break;default:p(`unsupported command "${f}"`)}}return e.filter(g=>g.segs.length>0)}function gn(r){return String(Math.round(r*100)/100)}function bn(r,e){let t="";for(let o=0;o{t.push(u,c,h,d,p,m),o=p,i=m},n=(u,c)=>{Math.abs(u-o)<1e-12&&Math.abs(c-i)<1e-12||s(o+(u-o)/3,i+(c-i)/3,o+2*(u-o)/3,i+2*(c-i)/3,u,c)};return[s,n,(u,c,h,d)=>{s(o+2/3*(u-o),i+2/3*(c-i),h+2/3*(u-h),d+2/3*(c-d),h,d)},(u,c,h,d,p,m,b)=>{let v=o,S=i;if(Math.abs(m-v)<1e-12&&Math.abs(b-S)<1e-12)return;let w=Math.abs(u),A=Math.abs(c);if(w<1e-12||A<1e-12){n(m,b);return}let k=h*Math.PI/180,x=Math.cos(k),g=Math.sin(k),C=(v-m)/2,M=(S-b)/2,B=x*C+g*M,D=-g*C+x*M,E=B*B/(w*w)+D*D/(A*A);if(E>1){let $=Math.sqrt(E);w*=$,A*=$}let z=w*w,W=A*A,U=B*B,K=D*D,F=(z*W-z*K-W*U)/(z*K+W*U);F<0&&(F=0);let ne=(d===p?-1:1)*Math.sqrt(F),N=ne*w*D/A,V=-ne*A*B/w,H=x*N-g*V+(v+m)/2,ae=g*N+x*V+(S+b)/2,Z=Math.atan2((D-V)/A,(B-N)/w),te=Math.atan2((-D-V)/A,(-B-N)/w)-Z;p===0&&te>0?te-=Gp:p===1&&te<0&&(te+=Gp);let be=Math.max(1,Math.ceil(Math.abs(te)/(Math.PI/2)-1e-9)),Q=te/be,j=4/3*Math.tan(Q/4),me=$=>H+w*Math.cos($)*x-A*Math.sin($)*g,J=$=>ae+w*Math.cos($)*g+A*Math.sin($)*x,ue=$=>-w*Math.sin($)*x-A*Math.cos($)*g,Be=$=>-w*Math.sin($)*g+A*Math.cos($)*x,he=Z,ie=v,X=S;for(let $=1;$<=be;$++){let ee=Z+Q*$,le=$===be?m:me(ee),ye=$===be?b:J(ee);s(ie+j*ue(he),X+j*Be(he),le-j*ue(ee),ye-j*Be(ee),le,ye),he=ee,ie=le,X=ye}},u=>(u&&n(t[0],t[1]),t.length<8?null:{pts:Float64Array.from(t),closed:u})]}function qp(r){let[e,t,o,i,s]=mi(r.x0,r.y0);for(let n of r.segs)switch(n[0]){case"L":t(n[1],n[2]);break;case"C":e(n[1],n[2],n[3],n[4],n[5],n[6]);break;case"Q":o(n[1],n[2],n[3],n[4]);break;case"A":i(n[1],n[2],n[3],n[4],n[5],n[6],n[7])}return s(r.closed)}function Pe(r,e,t=0){let o=r[e];if(o===void 0)return t;let i=typeof o=="number"?o:Number(o);return Number.isFinite(i)?i:t}function jp(r){let e=String(r??"").trim();if(!e)return[];let t=e.split(/[\s,]+/).map(Number);if(t.some(o=>!Number.isFinite(o)))throw new Error(`morphicons: invalid points: "${e}"`);return t}function bf(r,e){if(r.length<4)return null;let[,t,,,o]=mi(r[0],r[1]);for(let i=2;i+1{o&&e.push(o)};if(typeof r=="string"){for(let o of Wp(r))t(qp(o));return e}for(let[o,i]of r)switch(o){case"path":for(let s of Wp(String(i.d??"")))t(qp(s));break;case"line":{let[,s,,,n]=mi(Pe(i,"x1"),Pe(i,"y1"));s(Pe(i,"x2"),Pe(i,"y2")),t(n(!1));break}case"circle":{let s=Pe(i,"r");t(Qp(Pe(i,"cx"),Pe(i,"cy"),s,s));break}case"ellipse":t(Qp(Pe(i,"cx"),Pe(i,"cy"),Pe(i,"rx"),Pe(i,"ry")));break;case"rect":t(xw(i));break;case"polyline":t(bf(jp(i.points),!1));break;case"polygon":t(bf(jp(i.points),!0));break;default:throw new Error(`morphicons: unsupported tag <${o}>`)}return e}function wn(r){return r.items.map(()=>new Float64Array(2*r.n))}function vn(r,e,t){for(let o=0;o1e-12?h/f:1;d>1e-6||(d=1e-6);let p=Math.max(0,d*d*f-2*d*h+u),m=u>1e-12?Math.sqrt(p/u):0;return{theta:c,sigma:d,res:m}}function Sw(r,e,t=!1,o=!1){let i=po(r),s=po(e),n=t&&!o,a=n?r:e,l=t||o?a.length/2:1,f=Number.POSITIVE_INFINITY,u=a,c={theta:0,sigma:1,res:0};for(let h=0;h<2;h++){let d=h?kw(a):a;for(let p=0;p{let s=po(i),n=Jp(i);return t.map((a,l)=>Math.hypot(s[0]-a[0],s[1]-a[1])+bw*Math.abs(n-o[l]))})}function Mw(r){let e=r.length;if(e>vw){let n=[];for(let f=0;ff[0]-u[0]);let a=new Array(e).fill(-1),l=new Array(e).fill(!1);for(let[,f,u]of n)a[f]<0&&!l[u]&&(a[f]=u,l[u]=!0);return a}let t=Array.from({length:e},(n,a)=>a),o=t.slice(),i=Number.POSITIVE_INFINITY,s=(n,a,l)=>{if(!(l>=i)){if(a===e){i=l,o=n.slice();return}for(let f=a;fCw){let l=r.map(u=>{let c=0;for(let h=1;h0)continue;let c=-1,h=Number.POSITIVE_INFINITY;for(let d=0;d{if(!(f>=i||t-u>e-l)){if(l===e){i=f,o=s.slice();return}for(let c=0;c{o.set(c.a,2*e*h),i.set(c.bO,2*e*h)});let s=po(o),n=wf(o,i,s,po(i));if(n.res>=ww)return;let a=Math.cos(-n.theta),l=Math.sin(-n.theta),f=Math.cos(n.theta),u=Math.sin(n.theta);for(let c of r){let h=0,d=0;for(let k=0;k1e-12?Math.sqrt(h/d):0;let p=Math.exp(c.lnSigma),m=Math.cos(c.theta)*p,b=Math.sin(c.theta)*p,v=c.ca[0]-s[0],S=c.ca[1]-s[1],w=v*m-S*b-v,A=v*b+S*m-S;c.block={off:[v,S],drift:[c.cb[0]-c.ca[0]-w,c.cb[1]-c.ca[1]-A]}}}function mo(r,e){let t=r.length,o=e.length;if(t===0||o===0)throw new Error("morphicons: icon has no subpaths");let i=r.map(f=>f.pts),s=e.map(f=>f.pts),n=[];if(t===o){let f=Mw(yf(i,s));for(let u=0;u{let c=Sw(i[f],s[u],r[f].closed,e[u].closed),h=c.a,d=new Float64Array(2*a),p=new Float64Array(2*a),m=new Float64Array(2*a),b=Math.cos(-c.theta),v=Math.sin(-c.theta);for(let S=0;S1&&Bw(l,a),{items:l,n:a}}var _p=Math.PI/8,Yp=[.18343464249564978,.525532409916329,.7966664774136267,.9602898564975363],Dw=[.362683783378362,.31370664587788727,.22238103445337448,.10122853629037626];function vf(r,e,t){let o=6*e,i=1-t,s=3*i*i,n=6*i*t,a=3*t*t,l=s*(r[o+2]-r[o])+n*(r[o+4]-r[o+2])+a*(r[o+6]-r[o+4]),f=s*(r[o+3]-r[o+1])+n*(r[o+5]-r[o+3])+a*(r[o+7]-r[o+5]);return Math.hypot(l,f)}function Cf(r,e,t=1){let o=t/2,i=0;for(let s=0;s<4;s++)i+=Dw[s]*(vf(r,e,o+o*Yp[s])+vf(r,e,o-o*Yp[s]));return i*o}function Tw(r,e,t,o,i){let s=6*e,n=1-t,a=n*n*n,l=3*n*n*t,f=3*n*t*t,u=t*t*t;o[i]=a*r[s]+l*r[s+2]+f*r[s+4]+u*r[s+6],o[i+1]=a*r[s+1]+l*r[s+3]+f*r[s+5]+u*r[s+7]}function Zp(r,e,t){let o=6*e,i=t?o+6:o,s=t?-1:1;for(let n of t?[4,2,0]:[2,4,6]){let a=s*(r[o+n]-r[i]),l=s*(r[o+n+1]-r[i+1]);if(a*a+l*l>1e-18)return[a,l]}return null}function Ew(r,e=_p){let t=r.pts,o=(t.length/2-1)/3,i=[];for(let a=0;a1e-9&&i.push(a);if(i.length===0)return[];let s=new Set,n=(a,l)=>{let f=Zp(t,a,!0),u=Zp(t,l,!1);!f||!u||Math.abs(Math.atan2(f[0]*u[1]-f[1]*u[0],f[0]*u[0]+f[1]*u[1]))>e&&s.add(l)};for(let a=0;a+11&&n(i[i.length-1],i[0]),[...s].sort((a,l)=>a-l)}function Lw(r,e,t,o){if(t<=0)return 0;if(t>=o)return 1;let i=0,s=1,n=t/o;for(let a=0;a<12;a++){let l=Cf(r,e,n)-t;if(Math.abs(l)<1e-10*o+1e-14)break;l>0?s=n:i=n;let f=vf(r,e,n),u=f>1e-12?n-l/f:(i+s)/2;u>i&&u{for(let w=0;w0?f:[0]:[...new Set([0,...f,i])].sort((w,A)=>w-A),c=[];if(r.closed)for(let w=0;w{let k=0;for(let x=w;xd)throw new Error(`morphicons: N=${e} too small (${c.length} runs)`);let p=h.reduce((w,A)=>w+A,0)||1,m=h.map(w=>d*w/p),b=m.map(w=>Math.max(1,Math.floor(w))),v=d-b.reduce((w,A)=>w+A,0);if(v>0){let w=m.map((A,k)=>[Math.round((A-Math.floor(A))*1e9),k]).sort((A,k)=>k[0]-A[0]||A[1]-k[1]);for(let A=0;Ab[w]&&(w=A);if(b[w]<=1)break;b[w]--,v++}let S=0;for(let w=0;w1e-12?Lw(o,z,E-B,W):0,s,2*S),S++}}if(!r.closed){let w=6*i;s[2*S]=o[w],s[2*S+1]=o[w+1]}return s}function go(r,e=64){return yn(r).map(t=>({pts:Iw(t,e),closed:t.closed}))}var $p=class{x=1;v=0;k=250;c=24;config(r,e){this.k=r,this.c=e}start(){this.x=0,this.v>14&&(this.v=14),this.v<-14&&(this.v=-14)}step(r){let e=Math.max(1,Math.min(16,Math.ceil(r/.004166666666666667))),t=r/e;for(let o=0;o0?Ir=requestAnimationFrame(om):(Ir=0,xo=-1)}function Pw(r){gi.add(r),Ir===0&&(xo=-1,Ir=requestAnimationFrame(om))}function Ow(r){gi.delete(r),gi.size===0&&Ir!==0&&(cancelAnimationFrame(Ir),Ir=0,xo=-1)}var em=new WeakMap,tm=new WeakMap,rm=new WeakMap;function bo(r){if(typeof r=="string")return go(r);let e=em.get(r);return e||(e=go(r),em.set(r,e)),e}function yo(r){if(typeof r=="string")return r;let e=tm.get(r);return e||(e=Kp(yn(r)),tm.set(r,e)),e}function Rw(r,e){if(typeof r=="string"||typeof e=="string")return mo(bo(r),bo(e));let t=rm.get(r);t||(t=new WeakMap,rm.set(r,t));let o=t.get(e);return o||(o=mo(bo(r),bo(e)),t.set(e,o)),o}function Hw(r){if(typeof r=="string")return kf[r];let e=kf.snappy;return{k:r?.stiffness??e.k,c:r?.damping??e.c}}function Af(r,e,t){let o=new $p,i=t?.reducedMotion??"never",s=e,n=!0,a=null,l=null,f=null,u=1,c=!1,h=!1;r.setAttribute("d",yo(e));let d=x=>{let g=a,C=l,M=f;!g||!C||!M||(u=x,vn(g,x,C),r.setAttribute("d",bn(C,M)))},p=()=>{c&&(c=!1,Ow(m))},m=x=>{let g=o.step(x);d(o.x),g&&(p(),b())},b=()=>{n=!0,a=null,l=null,f=null,u=1,o.x=1,o.v=0,r.setAttribute("d",yo(s))},v=()=>{let x=a,g=l;return n||!x||!g?bo(s):g.map((C,M)=>({pts:Float64Array.from(C),closed:x.items[M].closed}))},S=x=>{a=n?Rw(s,x):mo(v(),bo(x)),l=wn(a),f=a.items.map(g=>g.closed),s=x,n=!1},w=x=>{p(),s=x,b()},A=()=>i==="always"?!0:i!=="user"||typeof matchMedia>"u"?!1:matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1,k=(x,g)=>{if(h)return;let C=!n&&a!==null&&x===s;p(),o.v=0,C||S(x),d(g)};return{morphTo(x,g){if(h||x===s&&(n||c))return;if(A()){w(x);return}let{k:C,c:M}=Hw(g);o.config(C,M),S(x),o.start(),c||(c=!0,Pw(m))},set(x){h||w(x)},seek:k,get progress(){return n?1:u},set progress(x){h||k(s,x)},get reducedMotion(){return i},set reducedMotion(x){i=x},destroy(){p(),h=!0,a=null,l=null,f=null}}}function Fw(r,e,t){if(t<=0)return yo(r);if(t>=1)return yo(e);let o=mo(go(r),go(e)),i=wn(o);return vn(o,t,i),bn(i,o.items.map(s=>s.closed))}function im({icon:r,from:e,to:t,progress:o}){if(e!==void 0&&t!==void 0)return Fw(e,t,o??0);let i=r??e??t;return i!==void 0?yo(i):""}function sm({icon:r,from:e,to:t,progress:o,reducedMotion:i}){let s=null,n=!1,a=null,l=i??"never",f=!1,u=null,c=r,h=e!==void 0&&t!==void 0,d=e,p=t,m=o,b=S=>a||(n||!s?null:(a=Af(s,S,{reducedMotion:l}),a)),v=(S,w,A)=>{let k=a;if(!k)return;let x=A??0;(!u||u[0]!==S||u[1]!==w)&&(u=[S,w],f=!1),x<=0?(k.set(S),f=!1):x>=1?(k.set(w),f=!1):(f||(k.set(S),f=!0),k.seek(w,x))};return{mount(S,{icon:w,from:A,to:k,progress:x,reducedMotion:g}){s=S,l=g??l;let C=A!==void 0&&k!==void 0,M=w??A??k;if(M===void 0)return;let B=Af(s,C?A:M,{reducedMotion:l});if(a=B,C){u=[A,k];let D=x??0;D<=0?B.set(A):D>=1?B.set(k):(B.seek(k,D),f=!0)}},destroy(){n=!0,s=null,a?.destroy(),a=null,f=!1,u=null},watch({icon:S,from:w,to:A,progress:k,spring:x,reducedMotion:g}){l=g??"never",a&&(a.reducedMotion=l);let C=w!==void 0&&A!==void 0,M=h&&!C,B=S!==c,D=w!==d||A!==p||k!==m;if(h=C,c=S,d=w,p=A,m=k,C){if(!D||!(a??b(w)))return;v(w,A,k);return}S===void 0||!B&&!M||(u=null,f=!1,a?a.morphTo(S,x):b(S))},morphTo(S,w){u=null,f=!1,a?a.morphTo(S,w):b(S)},set(S){u=null,f=!1,a?a.set(S):b(S)}}}var Cn="http://www.w3.org/2000/svg",Nw=["icon","from","to","progress","spring","reducedMotion"],zw=new Set(["size","color","stroke-width","absolute-stroke-width","label"]),Uw=typeof HTMLElement>"u"?class{}:HTMLElement,xi=class extends Uw{static observedAttributes=["icon","from","to","progress","spring","reduced-motion","size","color","stroke-width","absolute-stroke-width","label"];#e={};#t=null;#o=null;#s=!1;#n=!1;#i="24";#l="currentColor";#a="2";#f=!1;#u=null;get icon(){return this.#e.icon}set icon(r){this.#e.icon=r,this.#r()}get from(){return this.#e.from}set from(r){this.#e.from=r,this.#r()}get to(){return this.#e.to}set to(r){this.#e.to=r,this.#r()}get progress(){return this.#e.progress}set progress(r){this.#e.progress=r,this.#r()}get spring(){return this.#e.spring}set spring(r){this.#e.spring=r,this.#r()}get reducedMotion(){return this.#e.reducedMotion}set reducedMotion(r){this.#e.reducedMotion=r,this.#r()}morphTo(r,e){let t=this.#t;if(!t){this.#c(r);return}t.morphTo(r,e??this.#e.spring)}set(r){let e=this.#t;if(!e){this.#c(r);return}e.set(r)}connectedCallback(){for(let r of Nw)this.#d(r);if(this.#o||this.#p(),this.style.display===""&&(this.style.display="contents"),this.#o&&!this.#t){let r=this.#o,e=this.#s&&!this.#n;if(this.#s=!1,this.#t=sm(this.#e),e){let t=!1,o={setAttribute(i,s){t&&r.setAttribute(i,s)}};try{this.#t.mount(o,this.#e)}finally{t=!0}}else this.#t.mount(r,this.#e)}}disconnectedCallback(){this.#t?.destroy(),this.#t=null}attributeChangedCallback(r,e,t){switch(r){case"icon":this.#e.icon=t??void 0;break;case"from":this.#e.from=t??void 0;break;case"to":this.#e.to=t??void 0;break;case"progress":{let o=t===null?NaN:Number(t);this.#e.progress=Number.isFinite(o)?o:void 0;break}case"spring":this.#e.spring=t??void 0;break;case"reduced-motion":this.#e.reducedMotion=t??void 0;break;case"size":this.#i=t??"24";break;case"color":this.#l=t??"currentColor";break;case"stroke-width":this.#a=t??"2";break;case"absolute-stroke-width":this.#f=t!==null;break;case"label":this.#u=t}if(this.#o){if(zw.has(r)){let o=this.querySelector("svg");o&&this.#h(o);return}this.#r()}}#d(r){if(Object.hasOwn(this,r)){let e=this,t=e[r];delete e[r],e[r]=t}}#r(){let r=this.#t;if(!r){this.#n=!0;return}r.watch(this.#e)}#c(r){this.#e.icon=r,this.#e.from=void 0,this.#e.to=void 0,this.#n=!0}#p(){let r=this.querySelector("path");if(r){this.#o=r,this.#s=!0;let i=this.#e;if(i.icon===void 0&&i.from===void 0&&i.to===void 0){let s=r.getAttribute("d");s&&(i.icon=s)}return}let e=this.ownerDocument,t=e.createElementNS(Cn,"svg");t.setAttribute("xmlns",Cn),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),this.#h(t);let o=e.createElementNS(Cn,"path");o.setAttribute("d",im(this.#e)),t.appendChild(o),this.appendChild(t),this.#o=o}#h(r){r.setAttribute("width",this.#i),r.setAttribute("height",this.#i),r.setAttribute("stroke",this.#l);let e=this.#f?String(Number(this.#a)*24/Number(this.#i)):this.#a;r.setAttribute("stroke-width",e);let t=this.#u,o=r.querySelector("title");t?(r.setAttribute("role","img"),r.removeAttribute("aria-hidden"),o||(o=this.ownerDocument.createElementNS(Cn,"title"),r.insertBefore(o,r.firstChild)),o.textContent=t):(r.removeAttribute("role"),r.setAttribute("aria-hidden","true"),o?.remove())}},nm=!1;function am(r="morph-icon"){typeof customElements>"u"||customElements.get(r)||(customElements.define(r,nm?class extends xi{}:xi),nm=!0)}var Sf=[["path",{d:"m12 19-7-7 7-7"}],["path",{d:"M19 12H5"}]];var Mf=[["path",{d:"M11 14h10"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v1.344"}],["path",{d:"m17 18 4-4-4-4"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113"}],["rect",{x:"8",y:"2",width:"8",height:"4",rx:"1"}]];var Bf=[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]];var Df=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor"}]];var kn=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56"}]];var An=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1"}]];var Tf=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4"}]];var Ef=[["path",{d:"m16 17 5-5-5-5"}],["path",{d:"M21 12H9"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}]];var Lf=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"}]];var If=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"}],["circle",{cx:"12",cy:"12",r:"3"}]];var Pf=[["circle",{cx:"12",cy:"12",r:"4"}],["path",{d:"M12 2v2"}],["path",{d:"M12 20v2"}],["path",{d:"m4.93 4.93 1.41 1.41"}],["path",{d:"m17.66 17.66 1.41 1.41"}],["path",{d:"M2 12h2"}],["path",{d:"M20 12h2"}],["path",{d:"m6.34 17.66-1.41 1.41"}],["path",{d:"m19.07 4.93-1.41 1.41"}]];var Sn=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];var Of=[["path",{d:"M12 3v12"}],["path",{d:"m17 8-5-5-5 5"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}]];var Mn=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"}],["path",{d:"m14 7 3 3"}],["path",{d:"M5 6v4"}],["path",{d:"M19 14v4"}],["path",{d:"M10 2v2"}],["path",{d:"M7 8H3"}],["path",{d:"M21 16h-4"}],["path",{d:"M11 3H9"}]];var Rf=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"}]];var lm=!1;function Bn(){lm||(am(),lm=!0)}var Vw={"arrow-left":Sf,download:Bf,github:"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22",key:Df,loader:kn,logout:Ef,paste:Mf,settings:If,trash:Sn,upload:Of,wand:Mn,wrench:Rf};function It(r=document){Bn(),r.querySelectorAll("morph-icon[data-icon]").forEach(e=>{if(!(e instanceof xi))return;let t=Vw[e.dataset.icon??""];t&&e.set(t)})}function fm(r){Bn();let e=r.querySelector("morph-icon");return e instanceof xi?e:null}function um(r,e){let t=document.getElementById("bgm-tool-theme");if(!t)return;let o=fm(t);if(!o)return;let i=r?Lf:Pf;e?o.morphTo(i):o.set(i),t.title="主题: "+(r?"深色":"浅色")}function wo(r,e){let t=document.getElementById("static-lock-commit");if(!t)return;let o=fm(t);if(!o)return;let i=r?Tf:An;e?o.morphTo(i):o.set(i),t.title=r?"解锁编辑摘要":"固定编辑摘要"}function Hf(r,e){let t=r.querySelector(".confirm-label")??r;t.textContent!==e&&(t.textContent=e)}var cm={Album:["中文名","别名","艺术家","作曲","编曲","作词","厂牌","发售日期","价格","版本特性","播放时长","录音","碟片数量","链接"],Anime:["中文名","别名","上映年度","片长","官方网站","链接","其他","Copyright"],Book:["中文名","别名","作者","插图","出版社","价格","其他出版社","连载杂志","发售日","页数","ISBN","链接","其他"],BookSeries:["中文名","别名","出版社","连载杂志","开始","结束","册数","话数","原作","链接","其他"],Crt:["简体中文名","别名","性别","生日","血型","身高","体重","BWH","引用来源"],Game:["中文名","别名","平台","游戏类型","游戏引擎","游玩人数","发行日期","售价","开发","发行","剧本","程序","website","链接"],Manga:["中文名","别名","作者","作画","脚本","原作","出版社","价格","其他出版社","连载杂志","发售日","册数","页数","话数","ISBN","链接","其他"],Movie:["中文名","别名","上映年度","片长","官方网站","链接","其他","Copyright"],Novel:["中文名","别名","作者","插图","出版社","价格","连载杂志","发售日","册数","页数","话数","ISBN","链接","其他"],OVA:["中文名","别名","话数","发售日","官方网站","开始","结束","链接","其他"],PhotoBook:["中文名","别名","作者","摄影","出版社","价格","其他出版社","连载杂志","发售日","页数","ISBN","链接","其他"],TV:["中文名","别名","集数","季数","放送星期","开始","结束","主演","导演","音乐","原作","制作","类型","国家/地区","语言","每集长","在线播放平台","电视网","电视台","频道","视频制式","音频制式","首播国家","首播地区","台湾名称","港澳名称","马新名称","官方网站","链接","imdb_id","tvdb_id"],TVAnime:["中文名","别名","话数","放送开始","放送星期","官方网站","在线播放平台","播放电视台","其他电视台","播放结束","导演","音乐","链接","其他","Copyright"],doujinBook:["作者","原作","CP","语言","页数","尺寸","价格","发售日"],doujinGame:["别名","开发者","原作","平台","游戏类型","游戏引擎","游玩人数","语言","价格","发售日"],doujinMusic:["艺术家","原作","语言","版本特性","碟片数量","播放时长","价格","发售日"],realMovie:["中文名","别名","上映日","片长","类型","国家/地区","语言","官方网站","链接","imdb_id","tmdb_id","tvdb_id"]},hm={Album:"Album","animanga/Anime":"Anime","animanga/Book":"Book","animanga/BookSeries":"BookSeries",Crt:"Crt",Game:"Game","animanga/Manga":"Manga","animanga/Movie":"Movie","animanga/Novel":"Novel","animanga/OVA":"OVA","Book/PhotoBook":"PhotoBook","real/Television":"TV","animanga/TVAnime":"TVAnime","doujin/Book":"doujinBook","doujin/Game":"doujinGame","doujin/Album":"doujinMusic","real/Movie":"realMovie"};function Pr(){return y.theme==="dark"?"dark":y.theme==="light"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Ww(){return y.entityType||"subject"}function Ff(){if(!y.currentSubjectData)return!1;let r=Ww(),t=Lt("static-cm-diff").replace(/\r\n/g,` `).replace(/\r/g,` `).trim(),i=(y.currentSubjectData.infobox||"").replace(/\r\n/g,` `).replace(/\r/g,` `).trim(),s=t!==i;if(r==="subject"){let n=Lt(Lr).split(" ").filter(h=>h),a=document.getElementById("static-series-checkbox").checked,l=y.currentSubjectData.metaTags||[],f=y.currentSubjectData.series||!1,u=!_f(n,l);return s||u||a!==f}return s}function Gt(){let r=document.querySelector("#static-buttons-container button#process-confirm-update");if(!r)return;Ff()?(Hf(r,"确认更新"),r.disabled=!1):(Hf(r,"确认更新(无实质修改)"),r.disabled=!1)}function vo(r,e,t,o){let i=Object.keys(r||{}),s=[];return i.length&&s.push(`更新${i.join("、")}`),(o==="subject"||!o)&&(e?.add.length&&s.push(`添加标签${e.add.join("、")}`),e?.remove.length&&s.push(`删除标签${e.remove.join("、")}`),t?.hasUpdate&&s.push(t.newValue?"标记为系列":"取消系列标记")),s.filter(n=>n).join(";")||"更新条目信息"}function Nf(){y.currentSubjectData&&Up(Pr()==="dark")}function dm(r,e){let t={};return Object.keys(r).forEach(o=>{if(!["id","tags","series","type","infobox"].includes(o.toLowerCase())){let i=r[o];i!==void 0&&(t[o]=i)}}),t}function pm(r){let e=Object.keys(r).find(o=>o.toLowerCase()==="infobox");if(!e)return null;let t=r[e]?.replaceAll("\\n",` `);return!t||!t.trim()?null:t}function mm(r,e){if(y.entityType!=="subject")return{add:[],remove:[]};let o=(r.tags||"").split(" ").filter(n=>n),i=[],s=[];return o.forEach(n=>{n.startsWith("-")?s.push(n.slice(1)):i.push(n)}),{add:i,remove:s}}function gm(r,e){if(y.entityType!=="subject")return{hasUpdate:!1};if(r.series===void 0||r.series===null||r.series==="")return{hasUpdate:!1};let t=r.series.trim().toLowerCase(),o=t==="true"||t==="1"||t==="yes";return{hasUpdate:o!==e,newValue:o}}function Gw(r){let e=r.match(/{{Infobox\s+(.+?)$/m);return e&&hm[e[1]]||null}function qw(r,e,t){for(let o=1;ot)return o}return r.length-1}function xm(r,e){let t=Gw(r),o=t?cm[t]:null,i=r,s=[];if(Object.entries(e).forEach(([n,a])=>{a=a.replaceAll("\\n",` `);let l=new RegExp(`\\|${Zf(n)}\\s*=.*`,"i");l.test(i)?i=i.replace(l,`|${n}= ${a}`):s.push({field:n,value:a,fieldIdx:o?o.indexOf(n):-1})}),s.length>0){o&&s.sort((a,l)=>a.fieldIdx===-1&&l.fieldIdx===-1?0:a.fieldIdx===-1?1:l.fieldIdx===-1?-1:a.fieldIdx-l.fieldIdx);let n=i.split(` `);for(let a=s.length-1;a>=0;a--){let l=s[a];o&&l.fieldIdx>=0?n.splice(qw(n,o,l.fieldIdx),0,`|${l.field}= ${l.value}`):n.splice(-1,0,`|${l.field}= ${l.value}`)}i=n.join(` `)}return i}function bm(r,e){let t=new Set(r);return e.add.forEach(o=>t.add(o)),e.remove.forEach(o=>t.delete(o)),[...t]}var wm=sg(ym());function vm(r,e){try{y.csvData=jw(r),y.currentIndex=0,y.retryCount={},y.previousItem=null,y.csvPersistDenied=!1;let t=In();localStorage.setItem("bgmCurrentIndex","0"),yt(),je(e+"加载成功"+(t?"":"(内存模式:刷新页面后需重新加载)"))}catch(t){je("CSV解析错误: "+t.message),console.error(t)}finally{qe(),document.querySelectorAll("#static-buttons-container button").forEach(t=>{t.disabled=!1})}}function Cm(r){let t=r.target.files?.[0];if(!t)return;document.querySelectorAll("#static-buttons-container button").forEach(i=>{i.disabled=!0}),nr("正在解析CSV文件...");let o=new FileReader;o.onload=function(i){let s=i.target.result;vm(s,"CSV文件")},o.readAsText(t)}function km(r){document.querySelectorAll("#static-buttons-container button").forEach(e=>{e.disabled=!0}),nr("正在解析粘贴的CSV..."),vm(r,"粘贴的CSV")}function jw(r){let e=wm.default.parse(r,{header:!0,skipEmptyLines:!0,transform:n=>n.trim()});if(e.errors.length){let n=e.errors[0];throw new Error(`第${n.row!==void 0?n.row+1:"?"}行: ${n.message}`)}let t=e.meta.fields;if(!t||t.length===0)throw new Error("CSV文件为空或格式错误");let o=t.find(n=>/^(person_id|character_id|id)$/i.test(n));if(!o)throw new Error('CSV必须包含"id"、"person_id"或"character_id"列');y.entityType="subject",/^person_id$/i.test(o)?y.entityType="person":/^character_id$/i.test(o)&&(y.entityType="character");let i=t.filter(n=>n!==o),s=[];for(let n of e.data){let a=n[o]?.trim();if(!a)continue;let l={id:a};for(let f of i){let u=n[f];u!==void 0&&(l[f]=u.trim())}s.push(l)}if(s.length===0)throw new Error("未找到有效的数据行");return s}function yt(){y.currentView="setup",y.processing=!1,y.paused=!0,Rt(),qe();let r=document.getElementById("core-content"),e=document.getElementById("static-buttons-container");document.getElementById("edit-regions").style.display="none",Jf(),r&&(r.innerHTML=`

基本设置

在个人令牌页获取 Access Token
限速严重可切换为旧 API

如何获取formhash:
1. 打开条目编辑页面(如 https://bgm.tv/subject/354667/edit_detail)
2. 在浏览器控制台执行:document.querySelector('[name=formhash]').value
3. 将返回的值复制到上方输入框
自动获取:通过后台请求编辑页面自动提取 formhash(需已登录)

${y.csvData?`
已加载CSV: ${y.csvData.length} 条记录
`:""}

必备ID列,条目id,人物person_id,角色character_id
tags列使用空格分隔标签,前缀带"-"的标签表示删除该标签
series列使用true或false表示是否标记为系列
infobox列将整体替换Wiki文本(其余列仍按字段名逐项更新)
可使用 Bangumi Query 辅助生成(demo)

${y.csvData?`
上次进度: ${y.currentIndex}/${y.csvData.length}
`:""}

跨设备同步

未同步
`),e&&(e.innerHTML=` `);let t=document.getElementById("setup-access-token");t&&t.addEventListener("input",u=>{y.accessToken=u.target.value,GM_setValue("bgmAccessToken",y.accessToken)});let o=document.getElementById("setup-formhash");o&&o.addEventListener("input",u=>{y.formhash=u.target.value,GM_setValue("bgmFormhash",y.formhash)});let i=document.getElementById("setup-fetch-formhash");i&&i.addEventListener("click",()=>{o&&(i.disabled=!0,i.innerHTML=' 获取中...',It(i),GM.xmlHttpRequest({method:"GET",url:"https://bgm.tv/subject/1/edit_detail",onload:u=>{try{let c=u.responseText.match(/]*name="formhash"[^>]*value="([^"]+)"/);c&&c[1]?(y.formhash=c[1],GM_setValue("bgmFormhash",y.formhash),o.value=c[1]):alert("无法从页面提取 formhash,请确保已登录 Bangumi")}catch{alert("解析编辑页面失败")}finally{i.disabled=!1,i.innerHTML=' 自动获取',It(i)}},onerror:()=>{alert("网络请求失败,请手动获取 formhash"),i.disabled=!1,i.innerHTML=' 自动获取',It(i)}}))}),document.querySelectorAll('input[name="submit-method"]').forEach(u=>{u.addEventListener("change",c=>{y.submitMethod=c.target.value,GM_setValue("bgmSubmitMethod",y.submitMethod);let h=document.getElementById("patch-method-options"),d=document.getElementById("post-method-options");h&&h.classList.toggle("hidden",y.submitMethod!=="patch"),d&&d.classList.toggle("hidden",y.submitMethod!=="post")})});let n=document.getElementById("setup-csv-file");n&&(n.addEventListener("change",Cm),n.addEventListener("change",()=>{let u=n.files?.[0]?.name||"",c=document.getElementById("setup-csv-file-name");c&&(c.textContent=u)}));let a=document.getElementById("setup-csv-btn");a&&n&&a.addEventListener("click",u=>{u.preventDefault(),n.click()});let l=document.getElementById("setup-paste-csv-btn");l&&l.addEventListener("click",async()=>{try{let u=await navigator.clipboard.readText();if(!u||!u.trim()){je("剪贴板内容不是有效的CSV");return}let c=document.getElementById("setup-csv-file-name");c&&(c.textContent="已从剪贴板粘贴"),km(u)}catch(u){je("读取剪贴板失败: "+u.message)}});let f=document.getElementById("sync-status");if(f)if(GM_getValue("bgmGistToken","")){let c=GM_getValue("bgmGistId","");f.textContent=c?"已同步 (Gist: "+c.slice(0,8)+"…)":"已授权 GitHub"}else f.textContent="未同步";It()}function Am(r){y.currentView="processing";let{currentItem:e,wikiData:t,historyData:o}=r;y.currentSubjectData=t,y.currentItemId=e.id;let i=y.entityType||"subject";y.currentWcode=null,y.currentTags=null,y.currentSeries=null,y.currentCommitMessage=null;let s=document.getElementById("core-content"),n=document.getElementById("static-buttons-container"),a=document.getElementById("edit-regions");a&&(a.style.display="block"),So(),sr(y.currentIndex,y.totalItems);let l=t.name||"未知名称",f=t.infobox||"",u=i==="subject"?t.metaTags||[]:[],c=i==="subject"&&t.series||!1,h=dm(e,f),d=pm(e),p=mm(e,u),m=gm(e,c);y.currentFieldUpdates=h,y.currentTagUpdates=p,y.currentSeriesUpdate=m;let b={subject:"条目",character:"角色",person:"人物"},v=document.getElementById("static-last-update"),S=o[0]?.createdAt,w=S?new Date(S*1e3):null,A=o[0]?.creator?.username||"",k=o[0]?.commitMessage||"",x=$f(S);if(w&&v){let{editPagePath:K}=ir(i,e.id);v.innerHTML=` 最后更新: ${w.toLocaleString()} ${A} ${k} `,v.style.color=x?"#d9534f":"",v.style.display="block"}else v&&(v.style.display="none");let g=document.getElementById("prev-item-link");if(g&&y.previousItem&&y.currentIndex>0){let K=y.previousItem.type,{editPagePath:F}=ir(K,y.previousItem.id);g.innerHTML=` 上一个: ${y.previousItem.name}(${y.previousItem.id}) `,It(g),g.style.display="block"}else g&&(g.style.display="none");let C=document.getElementById("static-commit-input"),M=vo(h,p,m,i);y.isCommitMessageLocked?C.value=y.lockedCommitMessage:(y.isCommitMessageAuto||!C.value.trim())&&(y.currentCommitMessage=M,C.value=M),wo(y.isCommitMessageLocked,!1);let B=document.getElementById("static-auto-commit");B&&(B.checked=y.isCommitMessageAuto,B.disabled=y.isCommitMessageLocked);let D=xm(d??f,h);mn(pi,f,D,Pr()==="dark",()=>{y.currentView==="processing"&&y.currentSubjectData&&(y.currentWcode=Lt(pi),Gt())},!0);let E=document.getElementById("static-tags-area");if(i==="subject"){let K=bm(u,p);mn(Lr,u.join(" "),K.join(" "),Pr()==="dark",()=>{y.currentView==="processing"&&y.currentSubjectData&&(y.currentTags=Lt(Lr),Gt())}),E&&(E.style.display="block")}else E&&(E.style.display="none");let z=document.getElementById("static-series-area");if(i==="subject"){let K=document.getElementById("static-series-checkbox"),F=m.hasUpdate?m.newValue:c;K.checked=F,y.currentSeries=F,z&&(z.style.display="block")}else z&&(z.style.display="none");let W=ir(i,e.id).editPagePath.replace("/edit",""),U=b[i]||"条目";s&&(s.innerHTML=`
当前${U}:${l}(${e.id})[${U}]
`),n&&(n.innerHTML=` `),It(),Gt()}function Sm(r,e){y.currentView="processing";let t=document.getElementById("core-content"),o=document.getElementById("static-buttons-container"),i=document.getElementById("edit-regions");i&&(i.style.display="none"),So(),sr(y.currentIndex,y.totalItems);let s=r.id,a={subject:"条目",character:"角色",person:"人物"}[y.entityType]||"条目",l=(y.retryCount[s]||0)+1;y.retryCount[s]=l,t&&(t.innerHTML=`
当前${a}:查看${a}(${s})
无法获取${a}信息: ${e} ${l>1?`
已重试 ${l-1} 次`:""}

是否继续处理?

`),o&&(o.innerHTML=` `)}function Mm(r){y.currentView="processing";let e=document.getElementById("core-content"),t=document.getElementById("static-buttons-container"),o=document.getElementById("edit-regions");o&&(o.style.display="none"),So(),sr(y.currentIndex,y.totalItems);let i=y.currentItemId||"",s=(y.retryCount[i]||0)+1;y.retryCount[i]=s;let a=y.currentSubjectData?.name||"未知名称",f={subject:"条目",character:"角色",person:"人物"}[y.entityType]||"条目";e&&(e.innerHTML=`
当前${f}:${a}(${i})
提交更新失败: ${r}

是否重试更新?

`),t&&(t.innerHTML=` `)}function Bm(){y.currentView="completed";let r=document.getElementById("core-content"),e=document.getElementById("static-buttons-container"),t=document.getElementById("edit-regions");t&&(t.style.display="none"),So(),sr(y.totalItems,y.totalItems),r&&(r.innerHTML=`

处理完成

所有条目处理完毕
总条目 ${y.totalItems}
`),e&&(e.innerHTML=` `)}function Qw(r){let e=r.trim();if(!e)return new Headers;let t=e.split(`\r `).map(o=>{let i=o.split(":");return[i[0].trim(),i[1].trim()]});return new Headers(t)}function Kw(r,e){let t=Qw(e.responseHeaders),o=typeof e.response=="string"?new Blob([e.response],{type:t.get("Content-Type")||"text/plain"}):e.response;return new Vf(o,{statusCode:e.status,statusText:e.statusText,headers:t,finalUrl:e.finalUrl,redirected:e.finalUrl===r.url})}var Vf=class r{constructor(e,t){this.rawBody=e,this.init=t,this.body=e.stream();let{headers:o,statusCode:i,statusText:s,finalUrl:n,redirected:a}=t;this.headers=o,this.status=i,this.statusText=s,this.url=n,this.type="basic",this.redirected=a,this._bodyUsed=!1}get bodyUsed(){return this._bodyUsed}get ok(){return this.status<300}arrayBuffer(){if(this.bodyUsed)throw new TypeError("Failed to execute 'arrayBuffer' on 'Response': body stream already read");return this._bodyUsed=!0,this.rawBody.arrayBuffer()}blob(){if(this.bodyUsed)throw new TypeError("Failed to execute 'blob' on 'Response': body stream already read");return this._bodyUsed=!0,Promise.resolve(this.rawBody.slice(0,this.rawBody.size,this.rawBody.type))}clone(){if(this.bodyUsed)throw new TypeError("Failed to execute 'clone' on 'Response': body stream already read");return new r(this.rawBody,this.init)}formData(){if(this.bodyUsed)throw new TypeError("Failed to execute 'formData' on 'Response': body stream already read");return this._bodyUsed=!0,this.rawBody.text().then(Jw)}async json(){if(this.bodyUsed)throw new TypeError("Failed to execute 'json' on 'Response': body stream already read");return this._bodyUsed=!0,JSON.parse(await this.rawBody.text())}text(){if(this.bodyUsed)throw new TypeError("Failed to execute 'text' on 'Response': body stream already read");return this._bodyUsed=!0,this.rawBody.text()}async bytes(){if(this.bodyUsed)throw new TypeError("Failed to execute 'bytes' on 'Response': body stream already read");return this._bodyUsed=!0,new Uint8Array(await this.rawBody.arrayBuffer())}};function Jw(r){let e=new FormData;return r.trim().split("&").forEach(function(t){if(t){let o=t.split("="),i=o.shift()?.replace(/\+/g," "),s=o.join("=").replace(/\+/g," ");e.append(decodeURIComponent(i),decodeURIComponent(s))}}),e}async function lt(r,e){let t=new Request(r,e),o;return e?.body&&(o=await t.text()),await Xw(t,e,o)}function Xw(r,e,t){return new Promise((o,i)=>{if(r.signal&&r.signal.aborted)return i(new DOMException("Aborted","AbortError"));GM.xmlHttpRequest({url:r.url,method:_w(r.method.toUpperCase()),headers:Object.fromEntries(new Headers(e?.headers).entries()),data:t,responseType:"blob",onload(s){try{o(Kw(r,s))}catch(n){i(n)}},onabort(){i(new DOMException("Aborted","AbortError"))},ontimeout(){i(new TypeError("Network request failed, timeout"))},onerror(s){i(new TypeError("Failed to fetch: "+s.finalUrl))}})})}var Yw=["GET","POST","PUT","DELETE","PATCH","HEAD","TRACE","OPTIONS","CONNECT"];function Zw(r,e){return r.includes(e)}function _w(r){if(Zw(Yw,r))return r;throw new Error(`unsupported http method ${r}`)}var bi=!1;function Dm(){if(y.submitMethod==="patch"&&!y.accessToken){je("请输入Access Token");return}if(y.submitMethod==="post"&&!y.formhash){je("请输入Formhash");return}if(!y.csvData||y.csvData.length===0){je("请上传有效的CSV文件");return}y.totalItems=y.csvData.length,y.processing=!0,y.paused=!1,bi=!1;let r=document.getElementById("core-content");r&&(r.innerHTML=`
准备处理第一个条目...
`),Pt()}function Pt(r=!1){if(y.paused||!y.processing||bi)return;if(y.currentIndex>=y.totalItems){Bm();return}let e=y.csvData[y.currentIndex],t=y.entityType||"subject";r||sr(y.currentIndex,y.totalItems),document.querySelectorAll("#static-buttons-container button").forEach(n=>{n.disabled=!0}),nr("正在获取条目信息...");let{wikiPath:o,historyPath:i}=ir(t,e.id),s=y.submitMethod==="patch"?{Authorization:`Bearer ${y.accessToken}`,Accept:"application/json"}:{Accept:"application/json"};bi=!0,Promise.all([lt(o,{headers:s}),lt(i,{headers:s})]).then(async([n,a])=>{if(!n.ok)throw new Error(`HTTP ${n.status}`);if(!a.ok)throw new Error(`HTTP ${a.status}`);let l=await n.json(),f=await a.json();return{currentItem:e,wikiData:l,historyData:f}}).then(n=>{y.processing&&(y.retryCount[n.currentItem.id]=0,qe(),document.querySelectorAll("#static-buttons-container button").forEach(a=>{a.disabled=!1}),bi=!1,Am(n))}).catch(n=>{y.processing&&(qe(),document.querySelectorAll("#static-buttons-container button").forEach(a=>{a.disabled=!1}),bi=!1,Sm(e,n.message))})}function Tm(r,e,t,o,i,s,n,a,l){let f=y.entityType||"subject";if(y.submitMethod==="patch"){let{wikiPath:u,patchBodyKey:c}=ir(f,r),h={commitMessage:n};f==="subject"?h.subject={infobox:e,metaTags:t,series:o}:h[c]={infobox:e},lt(u,{method:"PATCH",headers:{Authorization:`Bearer ${y.accessToken}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(h)}).then(d=>d.ok?d:d.text().then(p=>{throw new Error(`HTTP ${d.status} - ${p||"更新失败"}`)})).then(()=>{qe(),a()}).catch(d=>{l(d instanceof Error?d:new Error(String(d)))})}else{let u=e.replace(/\n/g,`\r `),c=new FormData;if(c.append("formhash",y.formhash),c.append("editSummary",n),f==="subject")c.append("subject_title",y.currentSubjectData?.name||""),c.append("platform",y.currentSubjectData?.platform||""),c.append("subject_infobox",u),c.append("subject_summary",y.currentSubjectData?.summary||""),c.append("subject_meta_tags",t.join(" ")),c.append("series",o?"1":"0"),c.append("submit","提交");else if(f==="person"){c.append("crt_name",y.currentSubjectData?.name||""),c.append("crt_infobox",u),c.append("crt_summary",y.currentSubjectData?.summary||"");let p=y.currentSubjectData?.profession;if(p)for(let[m,b]of Object.entries(p))b&&c.append(`prsn_pro[${m}]`,"1");c.append("picfile",""),c.append("submit","改好了")}else c.append("crt_name",y.currentSubjectData?.name||""),c.append("crt_infobox",u),c.append("crt_summary",y.currentSubjectData?.summary||""),c.append("picfile",""),c.append("submit","改好了");let h=new URLSearchParams;c.forEach((p,m)=>{h.append(m,p)});let d=f==="subject"?`https://bgm.tv/subject/${r}/new_revision`:`https://bgm.tv/${f}/${r}/edit`;GM.xmlHttpRequest({method:"POST",url:d,data:h.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded"},onload:function(p){qe(),p.finalUrl===d?l(new Error("更新失败,可能是formhash无效或权限不足")):a()},onerror:function(p){qe(),l(new Error(`网络错误: ${p.message}`))},onabort:function(){qe(),l(new Error("请求已中止"))},ontimeout:function(){qe(),l(new Error("请求超时"))}})}}var Em="Ov23lifi6y3LGaJ8A53e",Dn="wikiBatch-sync.json",Lm="wikiBatch 跨设备同步数据";function $w(){return{version:1,csvData:localStorage.getItem("bgmCsvData")||"null",currentIndex:parseInt(localStorage.getItem("bgmCurrentIndex")||"0"),retryCount:GM_getValue("bgmRetryCount")||"{}",previousItem:localStorage.getItem("bgmPreviousItem"),entityType:localStorage.getItem("bgmEntityType")||"subject",totalItems:parseInt(localStorage.getItem("bgmTotalItems")||"0")}}function e1(r){try{localStorage.setItem("bgmCsvData",r.csvData),localStorage.setItem("bgmCurrentIndex",r.currentIndex.toString()),localStorage.setItem("bgmEntityType",r.entityType),localStorage.setItem("bgmTotalItems",r.totalItems.toString())}catch{throw new Error("同步数据过大,超出本地存储配额")}GM_setValue("bgmRetryCount",r.retryCount),r.previousItem?localStorage.setItem("bgmPreviousItem",r.previousItem):localStorage.removeItem("bgmPreviousItem")}async function t1(){return(await lt("https://github.com/login/device/code",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:Em,scope:"gist"})})).json()}async function r1(r,e){return new Promise((t,o)=>{let i=e,s=async()=>{let a=await(await lt("https://github.com/login/oauth/access_token",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:Em,device_code:r,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})})).json();a.access_token?t(a.access_token):a.error==="authorization_pending"?setTimeout(s,i*1e3):a.error==="slow_down"?(i+=5,setTimeout(s,i*1e3)):o(new Error(a.error_description||a.error||"授权失败"))};s()})}async function Im(r){r.textContent="正在获取设备码...";let e;try{e=await t1()}catch{r.textContent="网络错误,无法连接 GitHub";return}r.innerHTML=`请在打开的页面中输入码: ${e.user_code}`,GM_openInTab(e.verification_uri);try{let t=await r1(e.device_code,e.interval);GM_setValue("bgmGistToken",t),r.textContent="授权成功"}catch(t){r.textContent=t.message}}function Pm(){return GM_getValue("bgmGistId")||null}function Wf(r){GM_setValue("bgmGistId",r)}function Tn(){return GM_getValue("bgmGistToken")||null}async function o1(r){let e=Tn();if(!e)throw new Error("未授权");return(await(await lt("https://api.github.com/gists",{method:"POST",headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({description:Lm,public:!1,files:{[Dn]:{content:r}}})})).json()).id}async function i1(r,e){let t=Tn();if(!t)throw new Error("未授权");await lt(`https://api.github.com/gists/${r}`,{method:"PATCH",headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify({files:{[Dn]:{content:e}}})})}async function Om(){let r=Tn();return r&&(await(await lt("https://api.github.com/gists?per_page=100",{headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${r}`}})).json()).find(i=>i.description===Lm&&i.files?.[Dn])?.id||null}async function s1(r){let e=Tn();if(!e)throw new Error("未授权");let i=(await(await lt(`https://api.github.com/gists/${r}`,{headers:{Accept:"application/vnd.github+json",Authorization:`Bearer ${e}`}})).json()).files?.[Dn];if(!i)throw new Error("Gist 中未找到同步数据");if(console.log("[wikiBatch] gist read:",{size:i.size,truncated:i.truncated,hasContent:typeof i.content=="string"}),i.truncated&&i.raw_url){console.log("[wikiBatch] gist content truncated, fetching raw_url...");let s=await lt(i.raw_url,{headers:{Authorization:`Bearer ${e}`}});if(!s.ok)throw new Error(`读取原始文件失败: HTTP ${s.status}`);let n=await s.text();return console.log("[wikiBatch] gist raw content length:",n.length),n}return i.content}async function Rm(){let r=$w(),e=JSON.stringify(r),t=Pm();t||(t=await Om(),t&&Wf(t)),t?await i1(t,e):(t=await o1(e),Wf(t))}async function Hm(){let r=Pm();if(!r){if(r=await Om(),!r)throw new Error("未找到同步 Gist,请先在另一设备上传");Wf(r)}let e=await s1(r);console.log("[wikiBatch] parsed content length:",e.length);let t;try{t=JSON.parse(e)}catch(o){throw console.error("[wikiBatch] JSON.parse failed, content head:",e.slice(0,200)),console.error("[wikiBatch] JSON.parse failed, content tail:",e.slice(-200)),new Error("同步数据解析失败",{cause:o})}e1(t)}function Fm(){GM_deleteValue("bgmGistToken"),GM_deleteValue("bgmGistId")}function Nm(r){switch(r){case"setup-start-processing":Dm();break;case"setup-reset-progress":y.currentIndex=0,y.retryCount={},y.previousItem=null,localStorage.setItem("bgmCurrentIndex","0"),yt();break;case"sync-auth-btn":n1();break;case"sync-upload-btn":a1();break;case"sync-download-btn":l1();break;case"sync-clear-btn":Fm(),yt();break}}async function n1(){let r=document.getElementById("sync-status");if(!r)return;let e=document.getElementById("sync-auth-btn");e&&(e.disabled=!0),await Im(r),e&&(e.disabled=!1),yt()}async function a1(){let r=document.getElementById("sync-status");if(r){tt(),r.textContent="正在上传...";try{await Rm(),r.textContent="上传成功: "+new Date().toLocaleString()}catch(e){r.textContent="上传失败: "+e.message}}}async function l1(){let r=document.getElementById("sync-status");if(r){r.textContent="正在下载...";try{await Hm(),y.csvData=JSON.parse(localStorage.getItem("bgmCsvData")||"null"),y.currentIndex=parseInt(localStorage.getItem("bgmCurrentIndex")||"0"),y.entityType=localStorage.getItem("bgmEntityType")||"subject",y.totalItems=parseInt(localStorage.getItem("bgmTotalItems")||"0"),y.retryCount=JSON.parse(GM_getValue("bgmRetryCount","{}")),y.previousItem=JSON.parse(localStorage.getItem("bgmPreviousItem")||"null"),r.textContent="下载成功: "+new Date().toLocaleString(),yt()}catch(e){r.textContent="下载失败: "+e.message}}}function zm(r){if(!y.csvData)return;let e=y.csvData[y.currentIndex],t=y.currentSubjectData,o=e?.id||y.currentItemId||"",i=t?.name||"未知名称",s=y.entityType||"subject";function n(){return{id:o,name:i,type:s}}switch(r){case"process-confirm-update":{let a=Lt(pi),l=s==="subject"?Lt(Lr).split(" ").filter(h=>h):[],f=s==="subject"?document.getElementById("static-series-checkbox").checked:!1,u=document.getElementById("static-commit-input").value||vo(y.currentFieldUpdates,y.currentTagUpdates,y.currentSeriesUpdate,s);if(!Ff()){je("没有检测到实质修改,已跳过更新"),y.previousItem=n(),y.currentIndex++,Rt(),tt(),Pt();return}document.querySelectorAll("#static-buttons-container button").forEach(h=>{h.disabled=!0}),nr("正在提交更新..."),Tm(o,a,l,f,i,e,u,()=>{y.previousItem=n(),y.currentIndex++,Rt(),tt(),Pt()},h=>{qe(),document.querySelectorAll("#static-buttons-container button").forEach(d=>{d.disabled=!1}),Mm(h.message)});break}case"process-skip-update":y.previousItem=n(),y.currentIndex++,Rt(),tt(),Pt();break;case"process-confirm-continue":y.previousItem=n(),y.currentIndex++,Rt(),tt(),Pt();break;case"process-skip-error":y.currentIndex++,Rt(),tt(),Pt();break;case"process-retry-error":{let a=y.retryCount[o]||0;je(`正在重试(${a}次)...`),Pt();break}case"process-skip-update-fail":y.previousItem=n(),y.currentIndex++,Rt(),tt(),Pt();break;case"process-retry-update":{let a=y.retryCount[o]||0;je(`正在重试(${a}次)...`),Pt(!0);break}}}function Um(r){r==="completed-back-to-setup"&&(yt(),f1())}function f1(){let r=document.getElementById("bgm-tool-progress");r&&(r.style.display="none")}var Vm="data:image/png;base64,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";var Km=7,Jm=40,En=Math.floor(Math.random()*Km),yi="bgm-tool-container",u1="bgm-float-button",Co=null,Wm=!1;function c1(r){if(r.key!=="Enter"||r.isComposing||r.keyCode===229||!r.ctrlKey&&!r.metaKey&&!r.shiftKey||y.currentView!=="processing")return;let e=document.getElementById(yi);if(!e||e.style.display==="none")return;let t=document.activeElement;if(t&&t!==document.body&&!e.contains(t))return;let o=r.ctrlKey||r.metaKey?["process-confirm-update","process-retry-error","process-retry-update"]:["process-skip-update","process-skip-error","process-skip-update-fail"],i=document.querySelector(o.map(s=>`#static-buttons-container button#${s}`).join(","));!i||i.disabled||(r.preventDefault(),r.stopPropagation(),i.click())}function h1(){Wm||(Wm=!0,document.addEventListener("keydown",c1,!0))}function Gf(){if(Co)return;Co=[];let r=Array.from(document.body.children);for(let e of r){let t=e.id;t===yi||t===u1||e.tagName!=="SCRIPT"&&(Co.push({el:e,origDisplay:e.style.display||""}),e.style.display="none")}}function d1(){if(Co){for(let{el:r,origDisplay:e}of Co)r.style.display=e;Co=null}}function p1(){En=(En+1)%Km;let r=document.getElementById("bgm-tool-logo-sprite");r&&(r.style.backgroundPosition=`${-En*Jm}px 0`)}function qf(r){let e=document.getElementById("bgm-tool-container");if(!e)return;e.classList.add("no-transitions"),r==="dark"||r==="system"&&window.matchMedia("(prefers-color-scheme: dark)").matches?e.setAttribute("data-theme","dark"):e.removeAttribute("data-theme"),e.offsetWidth,e.classList.remove("no-transitions")}function Gm(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function qm(r){return r==="dark"?"light":"dark"}function m1(){if(y.theme==="system")y.theme=qm(Gm()),localStorage.setItem("bgmTheme",y.theme);else{let r=qm(y.theme);r===Gm()?(y.theme="system",localStorage.removeItem("bgmTheme")):(y.theme=r,localStorage.setItem("bgmTheme",y.theme))}qf(y.theme),Xm(!0),y.currentView==="processing"&&Nf()}function Xm(r=!1){document.getElementById("bgm-tool-theme")&&um(Pr()==="dark",r)}function jm(){let r=document.getElementById("bgm-float-button");return r||(r=document.createElement("div"),r.id="bgm-float-button",r.innerHTML='',document.body.appendChild(r),It(r),r.addEventListener("click",()=>{let e=document.getElementById(yi);e&&(e.style.display="flex",Gf(),r&&(r.style.display="none"))})),r}function Ym(){let r=jm();if(r.style.display="none",document.getElementById(yi)){document.getElementById(yi).style.display="flex",Gf();return}let e=document.createElement("div");e.id="bgm-tool-container",e.innerHTML=`
处理进度: 0/0
`,document.body.appendChild(e),Gf(),g1(),h1();let t=document.getElementById("bgm-tool-close");t&&t.addEventListener("click",()=>{e.style.display="none",d1();let n=jm();n.style.display="flex",Xf(),tt()});let o=document.getElementById("bgm-tool-settings");o&&o.addEventListener("click",()=>{yt()});let i=document.getElementById("bgm-tool-theme");i&&i.addEventListener("click",m1);let s=document.getElementById("bgm-tool-header-logo");s&&s.addEventListener("click",p1),qf(y.theme),Xm(),It(),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{y.theme==="system"&&(qf("system"),y.currentView==="processing"&&Nf())}),x1(),yt()}function Qm(r){r.addEventListener("click",e=>{let t=e.target.closest("button");if(!t)return;let o=t.id;switch(y.currentView){case"setup":Nm(o);break;case"processing":zm(o);break;case"completed":Um(o);break}})}function g1(){let r=document.getElementById("static-buttons-container");r&&Qm(r);let e=document.getElementById("core-content");e&&Qm(e)}function x1(){let r=0,e=new ResizeObserver(()=>{window.clearTimeout(r),r=window.setTimeout(()=>{y.currentView==="processing"&&Vp(Pr()==="dark")},200)});for(let n of["static-cm-diff","static-tags-cm-diff"]){let a=document.getElementById(n);a&&e.observe(a)}document.getElementById("static-commit-input").addEventListener("input",n=>{y.currentView==="processing"&&y.currentSubjectData&&(y.currentCommitMessage=n.target.value,Gt())}),document.getElementById("static-lock-commit").addEventListener("click",()=>{if(y.currentView!=="processing"||!y.currentSubjectData)return;y.isCommitMessageLocked=!y.isCommitMessageLocked;let n=document.getElementById("static-commit-input");y.isCommitMessageLocked?(y.lockedCommitMessage=n.value,wo(!0,!0)):wo(!1,!0);let a=document.getElementById("static-auto-commit");a.disabled=y.isCommitMessageLocked,tt(),Gt()});let i=document.getElementById("static-auto-commit");i.disabled=y.isCommitMessageLocked,i.addEventListener("change",n=>{y.isCommitMessageAuto=n.target.checked,tt(),y.isCommitMessageAuto&&(y.currentView!=="processing"||!y.currentSubjectData||y.isCommitMessageLocked||(y.currentCommitMessage=vo(y.currentFieldUpdates,y.currentTagUpdates,y.currentSeriesUpdate,y.entityType),document.getElementById("static-commit-input").value=y.currentCommitMessage,Gt()))}),document.getElementById("static-series-checkbox").addEventListener("change",n=>{y.currentView==="processing"&&y.currentSubjectData&&(y.currentSeries=n.target.checked,Gt())}),wo(y.isCommitMessageLocked,!1)}var Zm=`/* stylelint-disable no-descending-specificity */ /* ===== CSS Variables & Layout (scoped to container) ===== */ #bgm-tool-container { --accent: #f09199; --accent-hover: #e07a85; --accent-light: #fef0f2; --accent-border: #fad4da; --white: #fff; --bg: #f7f8fa; --bg-alt: #f0f1f3; --text: #303133; --text-secondary: #606266; --text-placeholder: #707070; --border: #e4e7ed; --border-light: #ebeef5; --link: #0084b4; --link-hover: #02a3fb; --shadow-subtle: 0 0 0 2px rgb(0 0 0 / 4%); --transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease; /* stylelint-disable-next-line value-keyword-case */ --font: sans-serif; --font-mono: monospace; position: fixed; inset: 0; width: 100vw; height: 100dvh; background: var(--bg); border: none; border-radius: 0; box-shadow: none; z-index: 9999; display: flex; flex-direction: column; overflow: hidden; box-sizing: border-box; font-family: var(--font); font-size: 13px; outline: none; color: var(--text); line-height: 1.6; -webkit-text-size-adjust: 100%; } /* ===== Scrollbars (thin, theme-consistent, scoped to container) ===== */ #bgm-tool-container, #bgm-tool-container * { scrollbar-width: thin; scrollbar-color: var(--border) transparent; } /* ===== Dark Mode ===== */ #bgm-tool-container[data-theme="dark"] { --accent-hover: #f5a3aa; --accent-light: rgb(240 145 153 / 12%); --accent-border: rgb(240 145 153 / 25%); --white: #2d2e2f; --bg: #1e1e1f; --bg-alt: #353637; --text: #dcdcdc; --text-secondary: #a6a6a6; --text-placeholder: #b0b0b0; --border: #404040; --border-light: #383838; --link: #2ea6ff; --link-hover: #02a3fb; --shadow-subtle: 0 0 0 2px rgb(255 255 255 / 4%); } .hidden { display: none !important; } /* Initial mount guard: prevent the global color transition from flashing */ #bgm-tool-container.no-transitions *, #bgm-tool-container.no-transitions *::before, #bgm-tool-container.no-transitions *::after { transition: none !important; } /* ===== Header ===== */ #bgm-tool-header { padding: 0 24px; height: 56px; background: var(--white); border-bottom: 1px solid var(--border); font-size: 18px; font-weight: 700; color: var(--text); display: flex; align-items: center; gap: 24px; flex-shrink: 0; box-shadow: var(--shadow-subtle); width: 100%; box-sizing: border-box; } @media (width < 640px) { #bgm-tool-header { padding: 0 16px; } } #bgm-tool-header-logo { display: flex; align-items: center; gap: 8px; outline: none; } #bgm-tool-logo-sprite { outline: none; width: 40px; height: 50px; border-radius: 6px; flex-shrink: 0; background-repeat: no-repeat; background-size: 280px 75px; } .header-spacer { flex: 1; } #bgm-tool-header-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; } /* Reuse bgq button classes in the header (mirrors bgq .header .btn overrides) */ #bgm-tool-header-actions button.btn { padding: 0; border: none; font-size: 16px; cursor: pointer; min-width: 30px; } #bgm-tool-header-actions morph-icon, #static-lock-commit morph-icon { display: inline-flex; vertical-align: -2px; } morph-icon.spin svg { animation: wb-spin 0.9s linear infinite; } @keyframes wb-spin { to { transform: rotate(360deg); } } @media (prefers-reduced-motion: reduce) { morph-icon.spin svg { animation: none; } } #bgm-tool-header-actions button.btn:hover { color: var(--accent); border-color: var(--accent); } /* ===== Progress Bar ===== */ #bgm-tool-progress { padding: 10px 24px; background: var(--white); border-bottom: 1px solid var(--border-light); display: none; flex-shrink: 0; } @media (width < 640px) { #bgm-tool-progress { padding: 10px 16px; } } #progress-inner { display: flex; align-items: center; gap: 12px; } #progress-text { font-size: 13px; color: var(--text-secondary); white-space: nowrap; font-variant-numeric: tabular-nums; } #progress-bar-container { flex-grow: 1; height: 5px; background: var(--bg-alt); border-radius: 3px; overflow: hidden; } #progress-bar { height: 100%; background: var(--accent); width: 0%; transition: width 0.3s ease; } /* ===== Toast Message ===== */ #bgm-status-message { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); padding: 12px 20px; border-radius: 6px; background: var(--text); color: #fff; font-size: 13px; z-index: 10000; box-shadow: 0 4px 12px rgb(0 0 0 / 15%); line-height: 1.5; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } #bgm-status-message.show { opacity: 1; visibility: visible; animation: fade-in 0.3s forwards, fade-out 0.3s 2.7s forwards; } @keyframes fade-in { from { opacity: 0; transform: translate(-50%, 20px); } to { opacity: 1; transform: translate(-50%, 0); } } @keyframes fade-out { from { opacity: 1; transform: translate(-50%, 0); } to { opacity: 0; transform: translate(-50%, 20px); } } /* ===== Buttons ===== */ /* Shared .btn classes, same definitions as bgq frontend */ #bgm-tool-container .btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; padding: 0 20px; border: none; border-radius: 6px; font-size: 13px; font-weight: 500; font-family: var(--font); cursor: pointer; transition: var(--transition); white-space: nowrap; } #bgm-tool-container .btn-default { background: var(--white); color: var(--text); border: 1px solid var(--border); } #bgm-tool-container .btn-default:hover { color: var(--accent); border-color: var(--accent); } #bgm-tool-container button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; padding: 0 20px; border: none; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; transition: var(--transition); white-space: nowrap; } #bgm-tool-container button.primary { background: var(--accent); color: #fff; } #bgm-tool-container button.primary:hover { background: var(--accent-hover); box-shadow: 0 2px 8px rgb(240 145 153 / 30%); } #bgm-tool-container button.secondary { background: var(--white); color: var(--text); border: 1px solid var(--border); } #bgm-tool-container button.secondary:hover { color: var(--accent); border-color: var(--accent); } #bgm-tool-container button.danger { background: var(--white); color: #f56c6c; border: 1px solid #f56c6c; } #bgm-tool-container button.danger:hover { background: #fef0f0; } #bgm-tool-container button:disabled { opacity: 0.5; cursor: not-allowed; } #bgm-tool-container button .kbd-hint { margin-left: 8px; font: inherit; font-size: 12px; font-weight: normal; line-height: 1; color: #fff; background: rgb(0 0 0 / 5%); border: 1px solid rgb(0 0 0 / 8%); border-radius: 4px; padding: 3px 8px; } #bgm-tool-container button.secondary .kbd-hint { color: var(--text-secondary); background: rgb(0 0 0 / 4%); border-color: var(--border); } /* ===== Layout Helpers ===== */ .row-flex { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .row-flex > .grow { flex: 1; } /* ===== Form Controls ===== */ #bgm-tool-container .form-group { margin-bottom: 20px; } #bgm-tool-container label { display: block; margin-bottom: 4px; font-weight: 400; font-size: 13px; } #bgm-tool-container input[type="radio"], #bgm-tool-container input[type="checkbox"] { accent-color: var(--accent); } #bgm-tool-container input[type="checkbox"] { margin: 0; } #bgm-tool-container input[type="text"], #bgm-tool-container input[type="password"] { width: 100%; height: 36px; padding: 0 12px; box-sizing: border-box; border: 1px solid var(--border); border-radius: 6px; background: var(--white); font-size: 13px; color: var(--text); transition: var(--transition); } #bgm-tool-container input[type="text"]:focus, #bgm-tool-container input[type="password"]:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgb(240 145 153 / 15%); outline: none; } /* 16px form text on touch phones (and iPhone landscape) to prevent iOS auto-zoom on focus */ @media (pointer: coarse) and (width < 768px) { #bgm-tool-container input[type="text"], #bgm-tool-container input[type="password"] { font-size: 16px; } } @media (pointer: coarse) and (orientation: landscape) and (width < 1024px) { #bgm-tool-container input[type="text"], #bgm-tool-container input[type="password"] { font-size: 16px; } } /* ===== File Upload ===== */ .file-upload-group { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .file-upload-input { position: absolute; width: 0; height: 0; opacity: 0; overflow: hidden; pointer-events: none; } .file-upload-name { font-size: 13px; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ===== Status Boxes ===== */ .status-box { padding: 12px 16px; border-radius: 10px; margin: 12px 0; font-size: 13px; } .status-box.info { background: var(--bg-alt); color: var(--text); border: 1px solid var(--border-light); } .status-box.success { background: #f0f9eb; color: #529b2e; border: 1px solid #e1f3d8; } .status-box.error { background: #fef0f0; color: #f56c6c; border: 1px solid #fde2e2; } .status-box.warning { background: #fdf6ec; color: #e6a23c; border: 1px solid #faecd8; } /* ===== Progress Bar (standalone, in views) ===== */ .progress-bar-container { height: 5px; background: var(--bg-alt); border-radius: 3px; overflow: hidden; margin: 15px 0; } .progress-bar { height: 100%; background: var(--accent); width: 0%; transition: width 0.3s ease; } .progress-info { margin-top: 8px; color: var(--text-secondary); font-size: 13px; } .setup-reset-btn { margin-top: 10px; } /* ===== Diff Containers ===== */ .diff-container { overflow: hidden; } .diff-section { margin: 0; overflow: hidden; background: var(--white); border: 1px solid var(--border-light); border-radius: 10px; box-shadow: var(--shadow-subtle); } .diff-section-title { font-size: 15px; font-weight: 600; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border-light); color: var(--text); } .diff-section-label, .edit-area label, .tags-edit-area label, .commit-message-area label { display: block; margin-bottom: 4px; font-weight: 400; font-size: 13px; color: var(--text); } /* ===== Diff Error ===== */ #diff-error { color: #a72e2e; font-size: 14px; margin-top: 8px; display: none; } /* ===== Logs ===== */ .log-container { border: 1px solid var(--border-light); border-radius: 10px; margin: 15px 0; max-height: calc(100% - 180px); overflow-y: auto; background: var(--white); } .log-entry { padding: 10px 12px; border-bottom: 1px solid var(--border-light); font-size: 13px; } .log-entry:last-child { border-bottom: none; } .log-success { background: #f0f9eb; color: #529b2e; } .log-error { background: #fef0f0; color: #f56c6c; } .log-info { background: var(--white); color: var(--text); } /* ===== Layout ===== */ .loading-container { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; } #bgm-tool-body { padding: 28px 36px; flex: 1; min-height: 0; box-sizing: border-box; line-height: 1.6; color: var(--text); display: flex; flex-direction: column; overflow-y: auto; overflow-wrap: anywhere; } .buttons-container { padding: 16px 24px; background: var(--white); border-top: 1px solid var(--border-light); display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; box-sizing: border-box; flex-shrink: 0; width: 100%; } @media (width < 640px) { .buttons-container { padding: 16px; } } #edit-regions { flex: 1; min-height: 0; display: flex; flex-direction: column; } #core-content { width: 100%; } /* ===== Loading Overlay ===== */ #bgm-loading-overlay { position: absolute; inset: 0; background: rgb(255 255 255 / 70%); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 10; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } #bgm-loading-overlay.active { opacity: 1; pointer-events: auto; } #loading-text { color: var(--text-secondary); font-size: 13px; text-align: center; } /* Bouncy loader from https://github.com/GriffinJohnston/ldrs (MIT). Tune via --uib-size / --uib-color / --uib-speed. */ .bouncy { --uib-size: 45px; --uib-color: var(--accent); --uib-speed: 1.75s; display: flex; align-items: flex-end; justify-content: space-between; width: var(--uib-size); height: calc(var(--uib-size) * 0.6); margin-bottom: 15px; /* Delayed show: fast loads resolve before this lands, so no flash. */ opacity: 0; animation: bouncy-fade-in 0.2s ease 250ms forwards; } .bouncy-cube { flex-shrink: 0; width: calc(var(--uib-size) * 0.2); height: calc(var(--uib-size) * 0.2); animation: bouncy-jump var(--uib-speed) ease-in-out infinite; } .bouncy-cube-inner { display: block; height: 100%; width: 100%; border-radius: 25%; background-color: var(--uib-color); transform-origin: center bottom; animation: bouncy-morph var(--uib-speed) ease-in-out infinite; transition: background-color 0.3s ease; } .bouncy-cube:nth-child(2) { animation-delay: calc(var(--uib-speed) * -0.36); } .bouncy-cube:nth-child(2) .bouncy-cube-inner { animation-delay: calc(var(--uib-speed) * -0.36); } .bouncy-cube:nth-child(3) { animation-delay: calc(var(--uib-speed) * -0.2); } .bouncy-cube:nth-child(3) .bouncy-cube-inner { animation-delay: calc(var(--uib-speed) * -0.2); } @keyframes bouncy-jump { 0% { transform: translateY(0); } 30% { transform: translateY(0); animation-timing-function: ease-out; } 50% { transform: translateY(-200%); animation-timing-function: ease-in; } 75% { transform: translateY(0); animation-timing-function: ease-in; } } @keyframes bouncy-morph { 0% { transform: scaleY(1); } 10% { transform: scaleY(1); } 20%, 25% { transform: scaleY(0.6) scaleX(1.3); animation-timing-function: ease-in-out; } 30% { transform: scaleY(1.15) scaleX(0.9); animation-timing-function: ease-in-out; } 40% { transform: scaleY(1); } 70%, 85%, 100% { transform: scaleY(1); } 75% { transform: scaleY(0.8) scaleX(1.2); } } @media (prefers-reduced-motion: reduce) { .bouncy { opacity: 1; animation: none; } .bouncy-cube, .bouncy-cube-inner { animation: none; } } @keyframes bouncy-fade-in { to { opacity: 1; } } /* ===== Setup Columns (Side by Side on Wide Screens) ===== */ .setup-columns { display: flex; flex-direction: column; gap: 28px; } .setup-column { min-width: 0; } @media (width >= 900px) { .setup-columns { flex-direction: row; } .setup-column { flex: 1; } } /* ===== Edit Rows (Edit + Diff paired side by side on Wide Screens) ===== */ .edit-rows { display: flex; flex-direction: column; gap: 16px; flex: 1; min-height: 0; } .edit-row { display: flex; flex-direction: column; gap: 16px; min-width: 0; min-height: 0; flex: 1; } @media (width >= 960px) { .edit-row { flex-direction: row; } .edit-row > * { flex: 1; min-width: 0; overflow: auto; } } /* ===== Edit Areas ===== */ .edit-area { margin: 0; display: flex; flex-direction: column; flex: 1; min-height: 0; } .edit-area textarea { width: 100%; flex: 1; min-height: 100px; padding: 12px; box-sizing: border-box; border: 1px solid var(--border); border-radius: 6px; font-family: var(--font-mono); font-size: 13px; line-height: 1.6; resize: vertical; background: var(--white); color: var(--text); transition: var(--transition); } .edit-area textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgb(240 145 153 / 15%); outline: none; } #static-cm-diff, #static-tags-cm-diff { min-height: 120px; } #static-cm-diff .cm-editor, #static-tags-cm-diff .cm-editor { height: 100%; } .cm-activeLine { background-image: linear-gradient(rgb(127 127 127 / 10%), rgb(127 127 127 / 10%)); } #static-cm-diff .cm-panels, #static-tags-cm-diff .cm-panels { z-index: 5; } #static-tags-cm-diff { min-height: 40px; } .cm-merge-revert button { font-size: 20px !important; padding: 0 !important; } .tags-edit-area { margin: 0; display: flex; flex-direction: column; } .tags-edit-area input { width: 100%; height: 36px; padding: 0 12px; box-sizing: border-box; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; color: var(--text); background: var(--white); transition: var(--transition); } .tags-edit-area input:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgb(240 145 153 / 15%); outline: none; } #static-series-area { display: flex; flex-flow: row wrap; align-items: center; gap: 8px; } #static-series-area label { display: inline-block; margin-bottom: 0; cursor: pointer; } /* Apple-style toggle switch */ .toggle-switch { position: relative; display: inline-block; width: 44px; height: 26px; flex-shrink: 0; } .toggle-switch input { opacity: 0; width: 0; height: 0; } .toggle-slider { position: absolute; cursor: pointer; inset: 0; background-color: var(--border); transition: 0.2s; border-radius: 26px; } .toggle-slider::before { content: ''; position: absolute; height: 22px; width: 22px; left: 2px; bottom: 2px; background-color: #fff; transition: 0.2s; border-radius: 50%; box-shadow: 0 1px 3px rgb(0 0 0 / 15%); } .toggle-switch input:checked + .toggle-slider { background-color: var(--accent); } .toggle-switch input:checked + .toggle-slider::before { transform: translateX(18px); } .toggle-switch input:focus-visible + .toggle-slider { box-shadow: 0 0 0 2px var(--accent); } .toggle-switch:has(input:disabled) { opacity: 0.5; cursor: not-allowed; } .toggle-switch:has(input:disabled) .toggle-slider { cursor: not-allowed; } .toggle-switch:has(input:disabled) + label { opacity: 0.5; } .last-update-info { font-size: 13px; color: var(--text-secondary); margin: 10px 0; display: none; } .commit-message-area { margin: 0 0 16px; display: flex; flex-direction: column; } .commit-message-area input { height: 36px; padding: 0 12px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; color: var(--text); background: var(--white); transition: var(--transition); box-sizing: border-box; flex: 1; } #static-commit-input, #setup-formhash { flex: 1; min-width: 0; } .commit-message-area input:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgb(240 145 153 / 15%); outline: none; } /* ===== Typography Helpers ===== */ #bgm-tool-container a { color: var(--link); text-decoration: none; transition: color 0.15s; } #bgm-tool-container a:hover { color: var(--link-hover); text-decoration: underline; } #bgm-tool-container h3 { margin: 0 0 15px; color: var(--text); font-size: 18px; font-weight: 600; } #bgm-tool-container p { margin: 8px 0; color: var(--text-secondary); font-size: 13px; } .section-title { font-size: 15px; font-weight: 600; margin: 0 0 16px; padding-bottom: 8px; border-bottom: 1px solid var(--border-light); color: var(--text); } /* ===== Setup Sync & Footer ===== */ .sync-section { margin-top: 20px; border-top: 1px solid var(--border); padding-top: 16px; } .sync-status { font-size: 13px; color: var(--text-secondary); margin-bottom: 8px; } .setup-footer { margin-top: 20px; border-top: 1px solid var(--border); padding-top: 14px; text-align: center; } .setup-footer a { display: inline-flex; align-items: center; gap: 6px; color: var(--text-secondary); font-size: 13px; text-decoration: none; } .item-info { font-size: 15px; margin: 0 0 16px; font-weight: 500; color: var(--text); } .prev-item-link { font-size: 13px; margin: 0 0 10px; color: var(--text-secondary); display: block; } .prev-item-link a { color: var(--link); } /* ===== Stats ===== */ .stats-container { margin: 20px 0; display: flex; gap: 10px; } .stats-item { flex: 1; text-align: center; padding: 20px 10px; background: var(--white); border: 1px solid var(--border-light); border-radius: 10px; box-shadow: var(--shadow-subtle); } .stats-label { font-size: 13px; color: var(--text-secondary); margin-bottom: 4px; display: block; } .stats-value { font-size: 22px; font-weight: 600; color: var(--accent); } /* ===== Log Filter ===== */ .log-search-container { margin-bottom: 15px; } #log-search { padding: 0 12px; height: 36px; width: 100%; box-sizing: border-box; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; color: var(--text); background: var(--white); transition: var(--transition); } #log-search:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgb(240 145 153 / 15%); outline: none; } .log-filter { display: flex; gap: 8px; margin-bottom: 15px; flex-wrap: wrap; } .filter-btn { padding: 4px 10px; font-size: 12px; border-radius: 6px; border: 1px solid var(--border); background: var(--white); color: var(--text); cursor: pointer; transition: var(--transition); } .filter-btn:hover { border-color: var(--accent); color: var(--accent); } .filter-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); } /* ===== Setup View ===== */ .method-option-group { background: var(--bg-alt); padding: 4px; border-radius: 6px; margin-bottom: 12px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } .method-option-group input[type="radio"] { position: absolute; width: 0; height: 0; opacity: 0; pointer-events: none; } .method-option-group label { display: inline-flex; align-items: center; padding: 5px 16px; border: 1px solid transparent; border-radius: 20px; font-size: 12px; cursor: pointer; transition: all 0.2s ease; color: var(--text-secondary); background: transparent; margin-bottom: 0; user-select: none; } .method-option-group label:hover { color: var(--text); } .method-option-group input[type="radio"]:focus-visible + label { outline: 2px solid -webkit-focus-ring-color; outline: 2px solid Highlight; outline-offset: 2px; } .method-option-group input[type="radio"]:checked + label { background: var(--white); color: var(--text); border-color: var(--border); box-shadow: 0 1px 3px rgb(0 0 0 / 6%); } .method-option-title { font-weight: 600; margin-bottom: 10px; display: block; color: var(--text); } .formhash-hint { font-size: 12px; color: var(--text-secondary); margin-top: 4px; padding: 10px 12px; background: var(--bg-alt); border-radius: 6px; } .formhash-hint code { background: var(--white); padding: 1px 4px; border-radius: 3px; font-family: var(--font-mono); font-size: 12px; color: var(--accent); word-break: break-all; overflow-wrap: anywhere; } .formhash-hint a { color: var(--link); } .csv-loaded-info { margin-top: 8px; padding: 10px 14px; background: var(--white); border: 1px solid var(--border-light); border-radius: 6px; font-size: 13px; color: var(--text); } .csv-hint { font-size: 12px; color: var(--text-secondary); margin-top: 6px; line-height: 1.6; } /* ===== Misc ===== */ #status-container { margin: 12px 0; display: none; } /* ===== Dark Mode Overrides ===== */ #bgm-tool-container[data-theme="dark"] #bgm-loading-overlay { background: rgb(0 0 0 / 60%); } #bgm-tool-container[data-theme="dark"] #bgm-status-message { background: #555; } #bgm-tool-container[data-theme="dark"] .status-box.success { background: rgb(103 194 58 / 10%); color: #85ce61; border-color: rgb(103 194 58 / 20%); } #bgm-tool-container[data-theme="dark"] .status-box.error { background: rgb(245 108 108 / 10%); border-color: rgb(245 108 108 / 20%); } #bgm-tool-container[data-theme="dark"] .status-box.warning { background: rgb(230 162 60 / 10%); border-color: rgb(230 162 60 / 20%); } #bgm-tool-container[data-theme="dark"] .log-success { background: rgb(103 194 58 / 10%); color: #85ce61; } #bgm-tool-container[data-theme="dark"] .log-error { background: rgb(245 108 108 / 10%); } #bgm-tool-container[data-theme="dark"] .log-info { background: var(--white); color: var(--text); } #bgm-tool-container[data-theme="dark"] button.danger { color: #f56c6c; border-color: #f56c6c; } #bgm-tool-container[data-theme="dark"] button.danger:hover { background: rgb(245 108 108 / 10%); } /* ===== Float Button ===== */ #bgm-float-button { position: fixed; bottom: 20px; right: 20px; width: 50px; height: 50px; border-radius: 50%; background: #f09199; color: #fff; display: none; align-items: center; justify-content: center; font-size: 20px; box-shadow: 0 2px 12px rgb(240 145 153 / 25%); cursor: pointer; z-index: 9998; transition: all 0.2s ease; font-family: system-ui, -apple-system, sans-serif; } #bgm-float-button:hover { background: #e07a85; box-shadow: 0 4px 16px rgb(240 145 153 / 35%); transform: scale(1.05); } `;GM_addStyle(Zm);Bn();Ym();})(); /*! Bundled license information: papaparse/papaparse.min.js: (* @license Papa Parse v5.7.0 https://github.com/mholt/PapaParse License: MIT *) lucide/dist/esm/icons/arrow-left.mjs: lucide/dist/esm/icons/clipboard-paste.mjs: lucide/dist/esm/icons/download.mjs: lucide/dist/esm/icons/key-round.mjs: lucide/dist/esm/icons/loader-circle.mjs: lucide/dist/esm/icons/lock-open.mjs: lucide/dist/esm/icons/lock.mjs: lucide/dist/esm/icons/log-out.mjs: lucide/dist/esm/icons/moon.mjs: lucide/dist/esm/icons/settings.mjs: lucide/dist/esm/icons/sun.mjs: lucide/dist/esm/icons/trash.mjs: lucide/dist/esm/icons/upload.mjs: lucide/dist/esm/icons/wand-sparkles.mjs: lucide/dist/esm/icons/wrench.mjs: lucide/dist/esm/lucide.mjs: (** * @license lucide v1.47.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. *) */