classt{lineAt(t){if(t<0||t>this.length)thrownewRangeError(`Invalid position ${t} in document of length ${this.length}`);returnthis.lineInner(t,!1,1,0)}line(t){if(t<1||t>this.lines)thrownewRangeError(`Invalid line number ${t} in ${this.lines}-line document`);returnthis.lineInner(t,!0,1,0)}replace(t,e,n){[t,e]=h(this,t,e);letr=[];returnthis.decompose(0,t,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(e,this.length,r,1),i.from(r,this.length-(e-t)+n.length)}append(t){returnthis.replace(this.length,this.length,t)}slice(t,e=this.length){[t,e]=h(this,t,e);letn=[];returnthis.decompose(t,e,n,0),i.from(n,e-t)}eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.lines)return!1;lete=this.scanIdentical(t,1),i=this.length-this.scanIdentical(t,-1),n=news(this),r=news(t);for(lett=e,s=e;;){if(n.next(t),r.next(t),t=0,n.lineBreak!=r.lineBreak||n.done!=r.done||n.value!=r.value)return!1;if(s+=n.value.length,n.done||s>=i)return!0}}iter(t=1){returnnews(this,t)}iterRange(t,e=this.length){returnnewo(this,t,e)}iterLines(t,e){leti;if(null==t)i=this.iter();else{null==e&&(e=this.lines+1);letn=this.line(t).from;i=this.iterRange(n,Math.max(n,e==this.lines+1?this.length:e<=1?0:this.line(e-1).to))}returnnewa(i)}toString(){returnthis.sliceString(0)}toJSON(){lett=[];returnthis.flatten(t),t}constructor(){}staticof(n){if(0==n.length)thrownewRangeError("A document must have at least one line");return1!=n.length||n[0]?n.length<=32?newe(n):i.from(e.split(n,[])):t.empty}}classeextendst{constructor(t,e=function(t){lete=-1;for(letioft)e+=i.length+1;returne}(t)){super(),this.text=t,this.length=e}getlines(){returnthis.text.length}getchildren(){returnnull}lineInner(t,e,i,n){for(letr=0;;r++){lets=this.text[r],o=n+s.length;if((e?i:o)>=t)returnnewl(n,o,i,s);n=o+1,i++}}decompose(t,i,s,o){leta=t<=0&&i>=this.length?this:newe(r(this.text,t,i),Math.min(i,this.length)-Math.max(0,t));if(1&o){lett=s.pop(),i=n(a.text,t.text.slice(),0,a.length);if(i.length<=32)s.push(newe(i,t.length+a.length));else{lett=i.length>>1;s.push(newe(i.slice(0,t)),newe(i.slice(t)))}}elses.push(a)}replace(t,s,o){if(!(oinstanceofe))returnsuper.replace(t,s,o);[t,s]=h(this,t,s);leta=n(this.text,n(o.text,r(this.text,0,t)),s),l=this.length+o.length-(s-t);returna.length<=32?newe(a,l):i.from(e.split(a,[]),l)}sliceString(t,e=this.length,i="\n"){[t,e]=h(this,t,e);letn="";for(letr=0,s=0;r<=e&&s<this.text.length;s++){leto=this.text[s],a=r+o.length;r>t&&s&&(n+=i),t<a&&e>r&&(n+=o.slice(Math.max(0,t-r),e-r)),r=a+1}returnn}flatten(t){for(leteofthis.text)t.push(e)}scanIdentical(){return0}staticsplit(t,i){letn=[],r=-1;for(letsoft)n.push(s),r+=s.length+1,32==n.length&&(i.push(newe(n,r)),n=[],r=-1);returnr>-1&&i.push(newe(n,r)),i}}classiextendst{constructor(t,e){super(),this.children=t,this.length=e,this.lines=0;for(leteoft)this.lines+=e.lines}lineInner(t,e,i,n){for(letr=0;;r++){lets=this.children[r],o=n+s.length,a=i+s.lines-1;if((e?a:o)>=t)returns.lineInner(t,e,i,n);n=o+1,i=a+1}}decompose(t,e,i,n){for(letr=0,s=0;s<=e&&r<this.children.length;r++){leto=this.children[r],a=s+o.length;if(t<=a&&e>=s){letr=n&((s<=t?1:0)|(a>=e?2:0));s>=t&&a<=e&&!r?i.push(o):o.decompose(t-s,e-s,i,r)}s=a+1}}replace(t,e,n){if([t,e]=h(this,t,e),n.lines<this.lines)for(letr=0,s=0;r<this.children.length;r++){leto=this.children[r],a=s+o.length;if(t>=s&&e<=a){letl=o.replace(t-s,e-s,n),h=this.lines-o.lines+l.lines;if(l.lines<h>>4&&l.lines>h>>6){lets=this.children.slice();returns[r]=l,newi(s,this.length-(e-t)+n.length)}returnsuper.replace(s,a,l)}s=a+1}returnsuper.replace(t,e,n)}sliceString(t,e=this.length,i="\n"){[t,e]=h(this,t,e);letn="";for(letr=0,s=0;r<this.children.length&&s<=e;r++){leto=this.children[r],a=s+o.length;s>t&&r&&(n+=i),t<a&&e>s&&(n+=o.sliceString(t-s,e-s,i)),s=a+1}returnn}flatten(t){for(leteofthis.children)e.flatten(t)}scanIdentical(t,e){if(!(tinstanceofi))return0;letn=0,[r,s,o,a]=e>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;r+=e,s+=e){if(r==o||s==