From fffd2aa9ae9250acaeeb03e516ca25e6fec5cafb Mon Sep 17 00:00:00 2001 From: dom111 Date: Wed, 11 May 2022 20:41:36 +0100 Subject: [PATCH] Auto-resize `TTY` `Renderer`s. --- dist/js/app.js | 83 ++++++++------- dist/js/app.js.map | 4 +- js/Renderers/TTY.ts | 252 +++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 4 files changed, 257 insertions(+), 84 deletions(-) diff --git a/dist/js/app.js b/dist/js/app.js index 8098957..983c290 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1,47 +1,47 @@ -(()=>{var Yu=Object.create;var os=Object.defineProperty,Zu=Object.defineProperties,Vu=Object.getOwnPropertyDescriptor,$u=Object.getOwnPropertyDescriptors,Ju=Object.getOwnPropertyNames,gl=Object.getOwnPropertySymbols,Qu=Object.getPrototypeOf,yl=Object.prototype.hasOwnProperty,ef=Object.prototype.propertyIsEnumerable;var _l=(V,H,R)=>H in V?os(V,H,{enumerable:!0,configurable:!0,writable:!0,value:R}):V[H]=R,nr=(V,H)=>{for(var R in H||(H={}))yl.call(H,R)&&_l(V,R,H[R]);if(gl)for(var R of gl(H))ef.call(H,R)&&_l(V,R,H[R]);return V},Jr=(V,H)=>Zu(V,$u(H));var or=(V,H)=>()=>(H||V((H={exports:{}}).exports,H),H.exports);var tf=(V,H,R,h)=>{if(H&&typeof H=="object"||typeof H=="function")for(let L of Ju(H))!yl.call(V,L)&&L!==R&&os(V,L,{get:()=>H[L],enumerable:!(h=Vu(H,L))||h.enumerable});return V};var Xt=(V,H,R)=>(R=V!=null?Yu(Qu(V)):{},tf(H||!V||!V.__esModule?os(R,"default",{value:V,enumerable:!0}):R,V));var sr=or((us,fs)=>{(function(V,H){typeof us=="object"&&typeof fs<"u"?fs.exports=H():typeof define=="function"&&define.amd?define(H):(V=V||self,V.CodeMirror=H())})(us,function(){"use strict";var V=navigator.userAgent,H=navigator.platform,R=/gecko\/\d/i.test(V),h=/MSIE \d/.test(V),L=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(V),y=/Edge\/(\d+)/.exec(V),m=h||L||y,_=m&&(h?document.documentMode||6:+(y||L)[1]),g=!y&&/WebKit\//.test(V),T=g&&/Qt\/\d+\.\d+/.test(V),w=!y&&/Chrome\//.test(V),c=/Opera\//.test(V),p=/Apple Computer/.test(navigator.vendor),C=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(V),d=/PhantomJS/.test(V),s=p&&(/Mobile\/\w+/.test(V)||navigator.maxTouchPoints>2),o=/Android/.test(V),l=s||o||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(V),a=s||/Mac/.test(H),u=/\bCrOS\b/.test(V),v=/win/i.test(H),b=c&&V.match(/Version\/(\d*\.\d*)/);b&&(b=Number(b[1])),b&&b>=15&&(c=!1,g=!0);var E=a&&(T||c&&(b==null||b<12.11)),O=R||m&&_>=9;function k(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var A=function(e,t){var i=e.className,r=k(t).exec(i);if(r){var n=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(n?r[1]+n:"")}};function N(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function D(e,t){return N(e).appendChild(t)}function W(e,t,i,r){var n=document.createElement(e);if(i&&(n.className=i),r&&(n.style.cssText=r),typeof t=="string")n.appendChild(document.createTextNode(t));else if(t)for(var f=0;f=t)return S+(t-f);S+=x-f,S+=i-S%i,f=x+1}}var U=function(){this.id=null,this.f=null,this.time=0,this.handler=be(this.onTimeout,this)};U.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},U.prototype.set=function(e,t){this.f=t;var i=+new Date+e;(!this.id||i=t)return r+Math.min(S,t-n);if(n+=f-r,n+=i-n%i,r=f+1,n>=t)return r}}var De=[""];function Fe(e){for(;De.length<=e;)De.push(Ae(De)+" ");return De[e]}function Ae(e){return e[e.length-1]}function _e(e,t){for(var i=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||lr.test(e))}function wr(e,t){return t?t.source.indexOf("\\w")>-1&&Cr(e)?!0:t.test(e):Cr(e)}function ei(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var pi=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Nr(e){return e.charCodeAt(0)>=768&&pi.test(e)}function ti(e,t,i){for(;(i<0?t>0:ti?-1:1;;){if(t==i)return t;var n=(t+i)/2,f=r<0?Math.ceil(n):Math.floor(n);if(f==t)return e(f)?t:i;e(f)?i=f:t=f+r}}function vi(e,t,i,r){if(!e)return r(t,i,"ltr",0);for(var n=!1,f=0;ft||t==i&&S.to==t)&&(r(Math.max(S.from,t),Math.min(S.to,i),S.level==1?"rtl":"ltr",f),n=!0)}n||r(t,i,"ltr")}var vt=null;function Ne(e,t,i){var r;vt=null;for(var n=0;nt)return n;f.to==t&&(f.from!=f.to&&i=="before"?r=n:vt=n),f.from==t&&(f.from!=f.to&&i!="before"?r=n:vt=n)}return r??vt}var cr=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function i(P){return P<=247?e.charAt(P):1424<=P&&P<=1524?"R":1536<=P&&P<=1785?t.charAt(P-1536):1774<=P&&P<=2220?"r":8192<=P&&P<=8203?"w":P==8204?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,f=/[LRr]/,S=/[Lb1n]/,x=/[1n]/;function M(P,z,Z){this.level=P,this.from=z,this.to=Z}return function(P,z){var Z=z=="ltr"?"L":"R";if(P.length==0||z=="ltr"&&!r.test(P))return!1;for(var Q=P.length,J=[],re=0;re-1&&(r[t]=n.slice(0,f).concat(n.slice(f+1)))}}}function ke(e,t){var i=ur(e,t);if(!!i.length)for(var r=Array.prototype.slice.call(arguments,2),n=0;n0}function At(e){e.prototype.on=function(t,i){we(this,t,i)},e.prototype.off=function(t,i){Qe(this,t,i)}}function Xe(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function hr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ft(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}function Qt(e){Xe(e),hr(e)}function Yt(e){return e.target||e.srcElement}function Wr(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),a&&e.ctrlKey&&t==1&&(t=3),t}var Lr=function(){if(m&&_<9)return!1;var e=W("div");return"draggable"in e||"dragDrop"in e}(),et;function jr(e){if(et==null){var t=W("span","\u200B");D(e,W("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(et=t.offsetWidth<=1&&t.offsetHeight>2&&!(m&&_<8))}var i=et?W("span","\u200B"):W("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return i.setAttribute("cm-text",""),i}var xr;function Mt(e){if(xr!=null)return xr;var t=D(e,document.createTextNode("A\u062EA")),i=F(t,0,1).getBoundingClientRect(),r=F(t,1,2).getBoundingClientRect();return N(e),!i||i.left==i.right?!1:xr=r.right-i.right<3}var kr=` +(()=>{var Yu=Object.create;var os=Object.defineProperty,Zu=Object.defineProperties,Vu=Object.getOwnPropertyDescriptor,$u=Object.getOwnPropertyDescriptors,Ju=Object.getOwnPropertyNames,gl=Object.getOwnPropertySymbols,Qu=Object.getPrototypeOf,yl=Object.prototype.hasOwnProperty,ef=Object.prototype.propertyIsEnumerable;var _l=(V,H,E)=>H in V?os(V,H,{enumerable:!0,configurable:!0,writable:!0,value:E}):V[H]=E,nr=(V,H)=>{for(var E in H||(H={}))yl.call(H,E)&&_l(V,E,H[E]);if(gl)for(var E of gl(H))ef.call(H,E)&&_l(V,E,H[E]);return V},Jr=(V,H)=>Zu(V,$u(H));var or=(V,H)=>()=>(H||V((H={exports:{}}).exports,H),H.exports);var tf=(V,H,E,f)=>{if(H&&typeof H=="object"||typeof H=="function")for(let L of Ju(H))!yl.call(V,L)&&L!==E&&os(V,L,{get:()=>H[L],enumerable:!(f=Vu(H,L))||f.enumerable});return V};var Xt=(V,H,E)=>(E=V!=null?Yu(Qu(V)):{},tf(H||!V||!V.__esModule?os(E,"default",{value:V,enumerable:!0}):E,V));var sr=or((us,fs)=>{(function(V,H){typeof us=="object"&&typeof fs<"u"?fs.exports=H():typeof define=="function"&&define.amd?define(H):(V=V||self,V.CodeMirror=H())})(us,function(){"use strict";var V=navigator.userAgent,H=navigator.platform,E=/gecko\/\d/i.test(V),f=/MSIE \d/.test(V),L=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(V),y=/Edge\/(\d+)/.exec(V),m=f||L||y,_=m&&(f?document.documentMode||6:+(y||L)[1]),v=!y&&/WebKit\//.test(V),A=v&&/Qt\/\d+\.\d+/.test(V),w=!y&&/Chrome\//.test(V),c=/Opera\//.test(V),p=/Apple Computer/.test(navigator.vendor),C=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(V),d=/PhantomJS/.test(V),s=p&&(/Mobile\/\w+/.test(V)||navigator.maxTouchPoints>2),o=/Android/.test(V),l=s||o||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(V),a=s||/Mac/.test(H),u=/\bCrOS\b/.test(V),g=/win/i.test(H),b=c&&V.match(/Version\/(\d*\.\d*)/);b&&(b=Number(b[1])),b&&b>=15&&(c=!1,v=!0);var T=a&&(A||c&&(b==null||b<12.11)),R=E||m&&_>=9;function k(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var M=function(e,t){var i=e.className,r=k(t).exec(i);if(r){var n=i.slice(r.index+r[0].length);e.className=i.slice(0,r.index)+(n?r[1]+n:"")}};function N(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function D(e,t){return N(e).appendChild(t)}function W(e,t,i,r){var n=document.createElement(e);if(i&&(n.className=i),r&&(n.style.cssText=r),typeof t=="string")n.appendChild(document.createTextNode(t));else if(t)for(var h=0;h=t)return S+(t-h);S+=x-h,S+=i-S%i,h=x+1}}var U=function(){this.id=null,this.f=null,this.time=0,this.handler=be(this.onTimeout,this)};U.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},U.prototype.set=function(e,t){this.f=t;var i=+new Date+e;(!this.id||i=t)return r+Math.min(S,t-n);if(n+=h-r,n+=i-n%i,r=h+1,n>=t)return r}}var De=[""];function Fe(e){for(;De.length<=e;)De.push(Ae(De)+" ");return De[e]}function Ae(e){return e[e.length-1]}function _e(e,t){for(var i=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||lr.test(e))}function wr(e,t){return t?t.source.indexOf("\\w")>-1&&Cr(e)?!0:t.test(e):Cr(e)}function ei(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var pi=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Nr(e){return e.charCodeAt(0)>=768&&pi.test(e)}function ti(e,t,i){for(;(i<0?t>0:ti?-1:1;;){if(t==i)return t;var n=(t+i)/2,h=r<0?Math.ceil(n):Math.floor(n);if(h==t)return e(h)?t:i;e(h)?i=h:t=h+r}}function vi(e,t,i,r){if(!e)return r(t,i,"ltr",0);for(var n=!1,h=0;ht||t==i&&S.to==t)&&(r(Math.max(S.from,t),Math.min(S.to,i),S.level==1?"rtl":"ltr",h),n=!0)}n||r(t,i,"ltr")}var vt=null;function Ne(e,t,i){var r;vt=null;for(var n=0;nt)return n;h.to==t&&(h.from!=h.to&&i=="before"?r=n:vt=n),h.from==t&&(h.from!=h.to&&i!="before"?r=n:vt=n)}return r??vt}var cr=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function i(P){return P<=247?e.charAt(P):1424<=P&&P<=1524?"R":1536<=P&&P<=1785?t.charAt(P-1536):1774<=P&&P<=2220?"r":8192<=P&&P<=8203?"w":P==8204?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,h=/[LRr]/,S=/[Lb1n]/,x=/[1n]/;function O(P,z,Z){this.level=P,this.from=z,this.to=Z}return function(P,z){var Z=z=="ltr"?"L":"R";if(P.length==0||z=="ltr"&&!r.test(P))return!1;for(var Q=P.length,J=[],re=0;re-1&&(r[t]=n.slice(0,h).concat(n.slice(h+1)))}}}function ke(e,t){var i=ur(e,t);if(!!i.length)for(var r=Array.prototype.slice.call(arguments,2),n=0;n0}function At(e){e.prototype.on=function(t,i){we(this,t,i)},e.prototype.off=function(t,i){Qe(this,t,i)}}function Xe(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function hr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ft(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}function Qt(e){Xe(e),hr(e)}function Yt(e){return e.target||e.srcElement}function Wr(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),a&&e.ctrlKey&&t==1&&(t=3),t}var Lr=function(){if(m&&_<9)return!1;var e=W("div");return"draggable"in e||"dragDrop"in e}(),et;function jr(e){if(et==null){var t=W("span","\u200B");D(e,W("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(et=t.offsetWidth<=1&&t.offsetHeight>2&&!(m&&_<8))}var i=et?W("span","\u200B"):W("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return i.setAttribute("cm-text",""),i}var xr;function Mt(e){if(xr!=null)return xr;var t=D(e,document.createTextNode("A\u062EA")),i=F(t,0,1).getBoundingClientRect(),r=F(t,1,2).getBoundingClientRect();return N(e),!i||i.left==i.right?!1:xr=r.right-i.right<3}var kr=` b`.split(/\n/).length!=3?function(e){for(var t=0,i=[],r=e.length;t<=r;){var n=e.indexOf(` -`,t);n==-1&&(n=e.length);var f=e.slice(t,e.charAt(n-1)=="\r"?n-1:n),S=f.indexOf("\r");S!=-1?(i.push(f.slice(0,S)),t+=S+1):(i.push(f),t=n+1)}return i}:function(e){return e.split(/\r\n?|\n/)},Ur=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},zr=function(){var e=W("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Er=null;function Zt(e){if(Er!=null)return Er;var t=D(e,W("span","x")),i=t.getBoundingClientRect(),r=F(t,0,1).getBoundingClientRect();return Er=Math.abs(i.left-r.left)>1}var gt={},ht={};function qr(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),gt[e]=t}function jt(e,t){ht[e]=t}function dr(e){if(typeof e=="string"&&ht.hasOwnProperty(e))e=ht[e];else if(e&&typeof e.name=="string"&&ht.hasOwnProperty(e.name)){var t=ht[e.name];typeof t=="string"&&(t={name:t}),e=Tt(t,e),e.name=t.name}else{if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return dr("application/xml");if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return dr("application/json")}return typeof e=="string"?{name:e}:e||{name:"null"}}function pr(e,t){t=dr(t);var i=gt[t.name];if(!i)return pr(e,"text/plain");var r=i(e,t);if(bt.hasOwnProperty(t.name)){var n=bt[t.name];for(var f in n)!n.hasOwnProperty(f)||(r.hasOwnProperty(f)&&(r["_"+f]=r[f]),r[f]=n[f])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var S in t.modeProps)r[S]=t.modeProps[S];return r}var bt={};function St(e,t){var i=bt.hasOwnProperty(e)?bt[e]:bt[e]={};ve(t,i)}function dt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var i={};for(var r in t){var n=t[r];n instanceof Array&&(n=n.concat([])),i[r]=n}return i}function Tr(e,t){for(var i;e.innerMode&&(i=e.innerMode(t),!(!i||i.mode==e));)t=i.state,e=i.mode;return i||{mode:e,state:t}}function Ar(e,t,i){return e.startState?e.startState(t,i):!0}var Ie=function(e,t,i){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=i};Ie.prototype.eol=function(){return this.pos>=this.string.length},Ie.prototype.sol=function(){return this.pos==this.lineStart},Ie.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ie.prototype.next=function(){if(this.post},Ie.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ie.prototype.skipToEnd=function(){this.pos=this.string.length},Ie.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Ie.prototype.backUp=function(e){this.pos-=e},Ie.prototype.column=function(){return this.lastColumnPos0?null:(f&&t!==!1&&(this.pos+=f[0].length),f)}},Ie.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ie.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ie.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ie.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function me(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var i=e;!i.lines;)for(var r=0;;++r){var n=i.children[r],f=n.chunkSize();if(t=e.first&&ti?le(i,me(e,i).text.length):Ze(t,me(e,t.line).text.length)}function Ze(e,t){var i=e.ch;return i==null||i>t?le(e.line,t):i<0?le(e.line,0):e}function _t(e,t){for(var i=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},Ut.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Ut.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ut.fromSaved=function(e,t,i){return t instanceof Rr?new Ut(e,dt(e.mode,t.state),i,t.lookAhead):new Ut(e,dt(e.mode,t),i)},Ut.prototype.save=function(e){var t=e!==!1?dt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Rr(t,this.maxLookAhead):t};function Bi(e,t,i,r){var n=[e.state.modeGen],f={};cn(e,t.text,e.doc.mode,i,function(P,z){return n.push(P,z)},f,r);for(var S=i.state,x=function(P){i.baseTokens=n;var z=e.state.overlays[P],Z=1,Q=0;i.state=!0,cn(e,t.text,z.mode,i,function(J,re){for(var ae=Z;QJ&&n.splice(Z,1,J,n[Z+1],ue),Z+=2,Q=Math.min(J,ue)}if(!!re)if(z.opaque)n.splice(ae,Z-ae,J,"overlay "+re),Z=ae+2;else for(;aee.options.maxHighlightLength&&dt(e.doc.mode,r.state),f=Bi(e,t,r);n&&(r.state=n),t.stateAfter=r.save(!n),t.styles=f.styles,f.classes?t.styleClasses=f.classes:t.styleClasses&&(t.styleClasses=null),i===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Kr(e,t,i){var r=e.doc,n=e.display;if(!r.mode.startState)return new Ut(r,!0,t);var f=yo(e,t,i),S=f>r.first&&me(r,f-1).stateAfter,x=S?Ut.fromSaved(r,S,f):new Ut(r,Ar(r.mode),f);return r.iter(f,t,function(M){gi(e,M.text,x);var P=x.line;M.stateAfter=P==t-1||P%5==0||P>=n.viewFrom&&Pt.start)return f}throw new Error("Mode "+e.name+" failed to advance stream.")}var Hi=function(e,t,i){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=i};function Fi(e,t,i,r){var n=e.doc,f=n.mode,S;t=pe(n,t);var x=me(n,t.line),M=Kr(e,t.line,i),P=new Ie(x.text,e.options.tabSize,M),z;for(r&&(z=[]);(r||P.pose.options.maxHighlightLength?(x=!1,S&&gi(e,t,r,z.pos),z.pos=t.length,Z=null):Z=Ni(_i(i,z,r.state,Q),f),Q){var J=Q[0].name;J&&(Z="m-"+(Z?J+" "+Z:J))}if(!x||P!=Z){for(;MS;--x){if(x<=f.first)return f.first;var M=me(f,x-1),P=M.stateAfter;if(P&&(!i||x+(P instanceof Rr?P.lookAhead:0)<=f.modeFrontier))return x;var z=Ee(M.text,null,e.options.tabSize);(n==null||r>z)&&(n=x-1,r=z)}return n}function In(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontieri;r--){var n=me(e,r).stateAfter;if(n&&(!(n instanceof Rr)||r+n.lookAhead=t:f.to>t);(r||(r=[])).push(new te(S,f.from,M?null:f.to))}}return r}function tr(e,t,i){var r;if(e)for(var n=0;n=t:f.to>t);if(x||f.from==t&&S.type=="bookmark"&&(!i||f.marker.insertLeft)){var M=f.from==null||(S.inclusiveLeft?f.from<=t:f.from0&&x)for(var ye=0;ye0)){var z=[M,1],Z=I(P.from,x.from),Q=I(P.to,x.to);(Z<0||!S.inclusiveLeft&&!Z)&&z.push({from:P.from,to:x.from}),(Q>0||!S.inclusiveRight&&!Q)&&z.push({from:x.to,to:P.to}),n.splice.apply(n,z),M+=z.length-3}}return n}function Vt(e){var t=e.markedSpans;if(!!t){for(var i=0;it)&&(!r||Br(r,f.marker)<0)&&(r=f.marker)}return r}function qt(e,t,i,r,n){var f=me(e,t),S=vr&&f.markedSpans;if(S)for(var x=0;x=0&&Z<=0||z<=0&&Z>=0)&&(z<=0&&(M.marker.inclusiveRight&&n.inclusiveLeft?I(P.to,i)>=0:I(P.to,i)>0)||z>=0&&(M.marker.inclusiveRight&&n.inclusiveLeft?I(P.from,r)<=0:I(P.from,r)<0)))return!0}}}function nt(e){for(var t;t=Lt(e);)e=t.find(-1,!0).line;return e}function Gr(e){for(var t;t=Ue(e);)e=t.find(1,!0).line;return e}function Wi(e){for(var t,i;t=Ue(e);)e=t.find(1,!0).line,(i||(i=[])).push(e);return i}function rr(e,t){var i=me(e,t),r=nt(i);return i==r?t:Re(r)}function Xr(e,t){if(t>e.lastLine())return t;var i=me(e,t),r;if(!xt(e,i))return t;for(;r=Ue(i);)i=r.find(1,!0).line;return Re(i)+1}function xt(e,t){var i=vr&&t.markedSpans;if(i){for(var r=void 0,n=0;nt.maxLineLength&&(t.maxLineLength=n,t.maxLine=r)})}var ni=function(e,t,i){this.text=e,ii(this,t),this.height=i?i(this):1};ni.prototype.lineNo=function(){return Re(this)},At(ni);function lc(e,t,i,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),Vt(e),ii(e,i);var n=r?r(e):1;n!=e.height&&it(e,n)}function cc(e){e.parent=null,Vt(e)}var uc={},fc={};function Ds(e,t){if(!e||/^\s*$/.test(e))return null;var i=t.addModeClass?fc:uc;return i[e]||(i[e]=e.replace(/\S+/g,"cm-$&"))}function Bs(e,t){var i=B("span",null,null,g?"padding-right: .1px":null),r={pre:B("pre",[i],"CodeMirror-line"),content:i,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var n=0;n<=(t.rest?t.rest.length:0);n++){var f=n?t.rest[n-1]:t.line,S=void 0;r.pos=0,r.addToken=dc,Mt(e.display.measure)&&(S=ut(f,e.doc.direction))&&(r.addToken=vc(r.addToken,S)),r.map=[];var x=t!=e.display.externalMeasured&&Re(f);gc(f,r,Pi(e,f,x)),f.styleClasses&&(f.styleClasses.bgClass&&(r.bgClass=ne(f.styleClasses.bgClass,r.bgClass||"")),f.styleClasses.textClass&&(r.textClass=ne(f.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(jr(e.display.measure))),n==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(g){var M=r.content.lastChild;(/\bcm-tab\b/.test(M.className)||M.querySelector&&M.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return ke(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=ne(r.pre.className,r.textClass||"")),r}function hc(e){var t=W("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function dc(e,t,i,r,n,f,S){if(!!t){var x=e.splitSpaces?pc(t,e.trailingSpace):t,M=e.cm.state.specialChars,P=!1,z;if(!M.test(t))e.col+=t.length,z=document.createTextNode(x),e.map.push(e.pos,e.pos+t.length,z),m&&_<9&&(P=!0),e.pos+=t.length;else{z=document.createDocumentFragment();for(var Z=0;;){M.lastIndex=Z;var Q=M.exec(t),J=Q?Q.index-Z:t.length-Z;if(J){var re=document.createTextNode(x.slice(Z,Z+J));m&&_<9?z.appendChild(W("span",[re])):z.appendChild(re),e.map.push(e.pos,e.pos+J,re),e.col+=J,e.pos+=J}if(!Q)break;Z+=J+1;var ae=void 0;if(Q[0]==" "){var ue=e.cm.options.tabSize,he=ue-e.col%ue;ae=z.appendChild(W("span",Fe(he),"cm-tab")),ae.setAttribute("role","presentation"),ae.setAttribute("cm-text"," "),e.col+=he}else Q[0]=="\r"||Q[0]==` -`?(ae=z.appendChild(W("span",Q[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ae.setAttribute("cm-text",Q[0]),e.col+=1):(ae=e.cm.options.specialCharPlaceholder(Q[0]),ae.setAttribute("cm-text",Q[0]),m&&_<9?z.appendChild(W("span",[ae])):z.appendChild(ae),e.col+=1);e.map.push(e.pos,e.pos+1,ae),e.pos++}}if(e.trailingSpace=x.charCodeAt(t.length-1)==32,i||r||n||P||f||S){var ge=i||"";r&&(ge+=r),n&&(ge+=n);var de=W("span",[z],ge,f);if(S)for(var ye in S)S.hasOwnProperty(ye)&&ye!="style"&&ye!="class"&&de.setAttribute(ye,S[ye]);return e.content.appendChild(de)}e.content.appendChild(z)}}function pc(e,t){if(e.length>1&&!/ /.test(e))return e;for(var i=t,r="",n=0;nP&&Z.from<=P));Q++);if(Z.to>=z)return e(i,r,n,f,S,x,M);e(i,r.slice(0,Z.to-P),n,f,null,x,M),f=null,r=r.slice(Z.to-P),P=Z.to}}}function Ps(e,t,i,r){var n=!r&&i.widgetNode;n&&e.map.push(e.pos,e.pos+t,n),!r&&e.cm.display.input.needsContentAttribute&&(n||(n=e.content.appendChild(document.createElement("span"))),n.setAttribute("cm-marker",i.id)),n&&(e.cm.display.input.setUneditable(n),e.content.appendChild(n)),e.pos+=t,e.trailingSpace=!1}function gc(e,t,i){var r=e.markedSpans,n=e.text,f=0;if(!r){for(var S=1;SM||Me.collapsed&&Le.to==M&&Le.from==M)){if(Le.to!=null&&Le.to!=M&&J>Le.to&&(J=Le.to,ae=""),Me.className&&(re+=" "+Me.className),Me.css&&(Q=(Q?Q+";":"")+Me.css),Me.startStyle&&Le.from==M&&(ue+=" "+Me.startStyle),Me.endStyle&&Le.to==J&&(ye||(ye=[])).push(Me.endStyle,Le.to),Me.title&&((ge||(ge={})).title=Me.title),Me.attributes)for(var He in Me.attributes)(ge||(ge={}))[He]=Me.attributes[He];Me.collapsed&&(!he||Br(he.marker,Me)<0)&&(he=Le)}else Le.from>M&&J>Le.from&&(J=Le.from)}if(ye)for(var lt=0;lt=x)break;for(var Gt=Math.min(x,J);;){if(z){var It=M+z.length;if(!he){var Ve=It>Gt?z.slice(0,Gt-M):z;t.addToken(t,Ve,Z?Z+re:re,ue,M+Ve.length==J?ae:"",Q,ge)}if(It>=Gt){z=z.slice(Gt-M),M=Gt;break}M=It,ue=""}z=n.slice(f,f=i[P++]),Z=Ds(i[P++],t.cm.options)}}}function Is(e,t,i){this.line=t,this.rest=Wi(t),this.size=this.rest?Re(Ae(this.rest))-i+1:1,this.node=this.text=null,this.hidden=xt(e,t)}function Hn(e,t,i){for(var r=[],n,f=t;f2&&f.push((M.bottom+P.top)/2-i.top)}}f.push(i.bottom-i.top)}}function zs(e,t,i){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;ri)return{map:e.measure.maps[n],cache:e.measure.caches[n],before:!0}}}function Ec(e,t){t=nt(t);var i=Re(t),r=e.display.externalMeasured=new Is(e.doc,t,i);r.lineN=i;var n=r.built=Bs(e,r);return r.text=n.pre,D(e.display.lineMeasure,n.pre),r}function qs(e,t,i,r){return Ir(e,Ui(e,t),i,r)}function wo(e,t){if(t>=e.display.viewFrom&&t=i.lineN&&tt)&&(f=M-x,n=f-1,t>=M&&(S="right")),n!=null){if(r=e[P+2],x==M&&i==(r.insertLeft?"left":"right")&&(S=i),i=="left"&&n==0)for(;P&&e[P-2]==e[P-3]&&e[P-1].insertLeft;)r=e[(P-=3)+2],S="left";if(i=="right"&&n==M-x)for(;P=0&&(i=e[n]).left==i.right;n--);return i}function Ac(e,t,i,r){var n=Gs(t.map,i,r),f=n.node,S=n.start,x=n.end,M=n.collapse,P;if(f.nodeType==3){for(var z=0;z<4;z++){for(;S&&Nr(t.line.text.charAt(n.coverStart+S));)--S;for(;n.coverStart+x0&&(M=r="right");var Z;e.options.lineWrapping&&(Z=f.getClientRects()).length>1?P=Z[r=="right"?Z.length-1:0]:P=f.getBoundingClientRect()}if(m&&_<9&&!S&&(!P||!P.left&&!P.right)){var Q=f.parentNode.getClientRects()[0];Q?P={left:Q.left,right:Q.left+qi(e.display),top:Q.top,bottom:Q.bottom}:P=Ks}for(var J=P.top-t.rect.top,re=P.bottom-t.rect.top,ae=(J+re)/2,ue=t.view.measure.heights,he=0;he=r.text.length?(M=r.text.length,P="before"):M<=0&&(M=0,P="after"),!x)return S(P=="before"?M-1:M,P=="before");function z(re,ae,ue){var he=x[ae],ge=he.level==1;return S(ue?re-1:re,ge!=ue)}var Z=Ne(x,M,P),Q=vt,J=z(M,Z,P=="before");return Q!=null&&(J.other=z(M,Q,P!="before")),J}function Js(e,t){var i=0;t=pe(e.doc,t),e.options.lineWrapping||(i=qi(e.display)*t.ch);var r=me(e.doc,t.line),n=$t(r)+Fn(e.display);return{left:i,right:i,top:n,bottom:n+r.height}}function xo(e,t,i,r,n){var f=le(e,t,i);return f.xRel=n,r&&(f.outside=r),f}function ko(e,t,i){var r=e.doc;if(i+=e.display.viewOffset,i<0)return xo(r.first,0,null,-1,-1);var n=Rt(r,i),f=r.first+r.size-1;if(n>f)return xo(r.first+r.size-1,me(r,f).text.length,null,1,1);t<0&&(t=0);for(var S=me(r,n);;){var x=Oc(e,S,n,t,i),M=_r(S,x.ch+(x.xRel>0||x.outside>0?1:0));if(!M)return x;var P=M.find(1);if(P.line==n)return P;S=me(r,n=P.line)}}function Qs(e,t,i,r){r-=Lo(t);var n=t.text.length,f=Nt(function(S){return Ir(e,i,S-1).bottom<=r},n,0);return n=Nt(function(S){return Ir(e,i,S).top>r},f,n),{begin:f,end:n}}function ea(e,t,i,r){i||(i=Ui(e,t));var n=Nn(e,t,Ir(e,i,r),"line").top;return Qs(e,t,i,n)}function Eo(e,t,i,r){return e.bottom<=i?!1:e.top>i?!0:(r?e.left:e.right)>t}function Oc(e,t,i,r,n){n-=$t(t);var f=Ui(e,t),S=Lo(t),x=0,M=t.text.length,P=!0,z=ut(t,e.doc.direction);if(z){var Z=(e.options.lineWrapping?Dc:Rc)(e,t,i,f,z,r,n);P=Z.level!=1,x=P?Z.from:Z.to-1,M=P?Z.to:Z.from-1}var Q=null,J=null,re=Nt(function(xe){var Le=Ir(e,f,xe);return Le.top+=S,Le.bottom+=S,Eo(Le,r,n,!1)?(Le.top<=n&&Le.left<=r&&(Q=xe,J=Le),!0):!1},x,M),ae,ue,he=!1;if(J){var ge=r-J.left=ye.bottom?1:0}return re=ti(t.text,re,1),xo(i,re,ue,he,r-ae)}function Rc(e,t,i,r,n,f,S){var x=Nt(function(Z){var Q=n[Z],J=Q.level!=1;return Eo(mr(e,le(i,J?Q.to:Q.from,J?"before":"after"),"line",t,r),f,S,!0)},0,n.length-1),M=n[x];if(x>0){var P=M.level!=1,z=mr(e,le(i,P?M.from:M.to,P?"after":"before"),"line",t,r);Eo(z,f,S,!0)&&z.top>S&&(M=n[x-1])}return M}function Dc(e,t,i,r,n,f,S){var x=Qs(e,t,r,S),M=x.begin,P=x.end;/\s/.test(t.text.charAt(P-1))&&P--;for(var z=null,Z=null,Q=0;Q=P||J.to<=M)){var re=J.level!=1,ae=Ir(e,r,re?Math.min(P,J.to)-1:Math.max(M,J.from)).right,ue=aeue)&&(z=J,Z=ue)}}return z||(z=n[n.length-1]),z.fromP&&(z={from:z.from,to:P,level:z.level}),z}var Ci;function zi(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Ci==null){Ci=W("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Ci.appendChild(document.createTextNode("x")),Ci.appendChild(W("br"));Ci.appendChild(document.createTextNode("x"))}D(e.measure,Ci);var i=Ci.offsetHeight/50;return i>3&&(e.cachedTextHeight=i),N(e.measure),i||1}function qi(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=W("span","xxxxxxxxxx"),i=W("pre",[t],"CodeMirror-line-like");D(e.measure,i);var r=t.getBoundingClientRect(),n=(r.right-r.left)/10;return n>2&&(e.cachedCharWidth=n),n||10}function To(e){for(var t=e.display,i={},r={},n=t.gutters.clientLeft,f=t.gutters.firstChild,S=0;f;f=f.nextSibling,++S){var x=e.display.gutterSpecs[S].className;i[x]=f.offsetLeft+f.clientLeft+n,r[x]=f.clientWidth}return{fixedPos:Ao(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:i,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Ao(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function ta(e){var t=zi(e.display),i=e.options.lineWrapping,r=i&&Math.max(5,e.display.scroller.clientWidth/qi(e.display)-3);return function(n){if(xt(e.doc,n))return 0;var f=0;if(n.widgets)for(var S=0;S0&&(P=me(e.doc,M.line).text).length==M.ch){var z=Ee(P,P.length,e.options.tabSize)-P.length;M=le(M.line,Math.max(0,Math.round((f-Us(e.display).left)/qi(e.display))-z))}return M}function Li(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var i=e.display.view,r=0;rt)&&(n.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=n.viewTo)vr&&rr(e.doc,t)n.viewFrom?si(e):(n.viewFrom+=r,n.viewTo+=r);else if(t<=n.viewFrom&&i>=n.viewTo)si(e);else if(t<=n.viewFrom){var f=jn(e,i,i+r,1);f?(n.view=n.view.slice(f.index),n.viewFrom=f.lineN,n.viewTo+=r):si(e)}else if(i>=n.viewTo){var S=jn(e,t,t,-1);S?(n.view=n.view.slice(0,S.index),n.viewTo=S.lineN):si(e)}else{var x=jn(e,t,t,-1),M=jn(e,i,i+r,1);x&&M?(n.view=n.view.slice(0,x.index).concat(Hn(e,x.lineN,M.lineN)).concat(n.view.slice(M.index)),n.viewTo+=r):si(e)}var P=n.externalMeasured;P&&(i=n.lineN&&t=r.viewTo)){var f=r.view[Li(e,t)];if(f.node!=null){var S=f.changes||(f.changes=[]);ee(S,i)==-1&&S.push(i)}}}function si(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function jn(e,t,i,r){var n=Li(e,t),f,S=e.display.view;if(!vr||i==e.doc.first+e.doc.size)return{index:n,lineN:i};for(var x=e.display.viewFrom,M=0;M0){if(n==S.length-1)return null;f=x+S[n].size-t,n++}else f=x-t;t+=f,i+=f}for(;rr(e.doc,i)!=i;){if(n==(r<0?0:S.length-1))return null;i+=r*S[n-(r<0?1:0)].size,n+=r}return{index:n,lineN:i}}function Bc(e,t,i){var r=e.display,n=r.view;n.length==0||t>=r.viewTo||i<=r.viewFrom?(r.view=Hn(e,t,i),r.viewFrom=t):(r.viewFrom>t?r.view=Hn(e,t,r.viewFrom).concat(r.view):r.viewFromi&&(r.view=r.view.slice(0,Li(e,i)))),r.viewTo=i}function ra(e){for(var t=e.display.view,i=0,r=0;r=e.display.viewTo||M.to().line0?S:e.defaultCharWidth())+"px"}if(r.other){var x=i.appendChild(W("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));x.style.display="",x.style.left=r.other.left+"px",x.style.top=r.other.top+"px",x.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function Un(e,t){return e.top-t.top||e.left-t.left}function Pc(e,t,i){var r=e.display,n=e.doc,f=document.createDocumentFragment(),S=Us(e.display),x=S.left,M=Math.max(r.sizerWidth,Si(e)-r.sizer.offsetLeft)-S.right,P=n.direction=="ltr";function z(de,ye,xe,Le){ye<0&&(ye=0),ye=Math.round(ye),Le=Math.round(Le),f.appendChild(W("div",null,"CodeMirror-selected","position: absolute; left: "+de+`px; - top: `+ye+"px; width: "+(xe??M-de)+`px; - height: `+(Le-ye)+"px"))}function Z(de,ye,xe){var Le=me(n,de),Me=Le.text.length,He,lt;function qe(Ve,Ht){return Wn(e,le(de,Ve),"div",Le,Ht)}function Gt(Ve,Ht,pt){var rt=ea(e,Le,null,Ve),$e=Ht=="ltr"==(pt=="after")?"left":"right",Ge=pt=="after"?rt.begin:rt.end-(/\s/.test(Le.text.charAt(rt.end-1))?2:1);return qe(Ge,$e)[$e]}var It=ut(Le,n.direction);return vi(It,ye||0,xe??Me,function(Ve,Ht,pt,rt){var $e=pt=="ltr",Ge=qe(Ve,$e?"left":"right"),Ft=qe(Ht-1,$e?"right":"left"),nn=ye==null&&Ve==0,hi=xe==null&&Ht==Me,mt=rt==0,Hr=!It||rt==It.length-1;if(Ft.top-Ge.top<=3){var ct=(P?nn:hi)&&mt,is=(P?hi:nn)&&Hr,$r=ct?x:($e?Ge:Ft).left,Ai=is?M:($e?Ft:Ge).right;z($r,Ge.top,Ai-$r,Ge.bottom)}else{var Mi,Et,on,ns;$e?(Mi=P&&nn&&mt?x:Ge.left,Et=P?M:Gt(Ve,pt,"before"),on=P?x:Gt(Ht,pt,"after"),ns=P&&hi&&Hr?M:Ft.right):(Mi=P?Gt(Ve,pt,"before"):x,Et=!P&&nn&&mt?M:Ge.right,on=!P&&hi&&Hr?x:Ft.left,ns=P?Gt(Ht,pt,"after"):M),z(Mi,Ge.top,Et-Mi,Ge.bottom),Ge.bottom0?t.blinker=setInterval(function(){e.hasFocus()||Ki(e),t.cursorDiv.style.visibility=(i=!i)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function na(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Bo(e))}function Do(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Ki(e))},100)}function Bo(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!="nocursor"&&(e.state.focused||(ke(e,"focus",e,t),e.state.focused=!0,$(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),g&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Ro(e))}function Ki(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ke(e,"blur",e,t),e.state.focused=!1,A(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function zn(e){for(var t=e.display,i=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),n=t.lineDiv.getBoundingClientRect().top,f=0,S=0;S.005||J<-.005)&&(ne.display.sizerWidth){var ae=Math.ceil(z/qi(e.display));ae>e.display.maxLineLength&&(e.display.maxLineLength=ae,e.display.maxLine=x.line,e.display.maxLineChanged=!0)}}}Math.abs(f)>2&&(t.scroller.scrollTop+=f)}function oa(e){if(e.widgets)for(var t=0;t=S&&(f=Rt(t,$t(me(t,M))-e.wrapper.clientHeight),S=M)}return{from:f,to:Math.max(S,f+1)}}function Ic(e,t){if(!We(e,"scrollCursorIntoView")){var i=e.display,r=i.sizer.getBoundingClientRect(),n=null;if(t.top+r.top<0?n=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(n=!1),n!=null&&!d){var f=W("div","\u200B",null,`position: absolute; +`,t);n==-1&&(n=e.length);var h=e.slice(t,e.charAt(n-1)=="\r"?n-1:n),S=h.indexOf("\r");S!=-1?(i.push(h.slice(0,S)),t+=S+1):(i.push(h),t=n+1)}return i}:function(e){return e.split(/\r\n?|\n/)},Ur=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},zr=function(){var e=W("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),Er=null;function Zt(e){if(Er!=null)return Er;var t=D(e,W("span","x")),i=t.getBoundingClientRect(),r=F(t,0,1).getBoundingClientRect();return Er=Math.abs(i.left-r.left)>1}var gt={},ht={};function qr(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),gt[e]=t}function jt(e,t){ht[e]=t}function dr(e){if(typeof e=="string"&&ht.hasOwnProperty(e))e=ht[e];else if(e&&typeof e.name=="string"&&ht.hasOwnProperty(e.name)){var t=ht[e.name];typeof t=="string"&&(t={name:t}),e=Tt(t,e),e.name=t.name}else{if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return dr("application/xml");if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return dr("application/json")}return typeof e=="string"?{name:e}:e||{name:"null"}}function pr(e,t){t=dr(t);var i=gt[t.name];if(!i)return pr(e,"text/plain");var r=i(e,t);if(bt.hasOwnProperty(t.name)){var n=bt[t.name];for(var h in n)!n.hasOwnProperty(h)||(r.hasOwnProperty(h)&&(r["_"+h]=r[h]),r[h]=n[h])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var S in t.modeProps)r[S]=t.modeProps[S];return r}var bt={};function St(e,t){var i=bt.hasOwnProperty(e)?bt[e]:bt[e]={};ve(t,i)}function dt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var i={};for(var r in t){var n=t[r];n instanceof Array&&(n=n.concat([])),i[r]=n}return i}function Tr(e,t){for(var i;e.innerMode&&(i=e.innerMode(t),!(!i||i.mode==e));)t=i.state,e=i.mode;return i||{mode:e,state:t}}function Ar(e,t,i){return e.startState?e.startState(t,i):!0}var Ie=function(e,t,i){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=i};Ie.prototype.eol=function(){return this.pos>=this.string.length},Ie.prototype.sol=function(){return this.pos==this.lineStart},Ie.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},Ie.prototype.next=function(){if(this.post},Ie.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},Ie.prototype.skipToEnd=function(){this.pos=this.string.length},Ie.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},Ie.prototype.backUp=function(e){this.pos-=e},Ie.prototype.column=function(){return this.lastColumnPos0?null:(h&&t!==!1&&(this.pos+=h[0].length),h)}},Ie.prototype.current=function(){return this.string.slice(this.start,this.pos)},Ie.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},Ie.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},Ie.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function me(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var i=e;!i.lines;)for(var r=0;;++r){var n=i.children[r],h=n.chunkSize();if(t=e.first&&ti?le(i,me(e,i).text.length):Ze(t,me(e,t.line).text.length)}function Ze(e,t){var i=e.ch;return i==null||i>t?le(e.line,t):i<0?le(e.line,0):e}function _t(e,t){for(var i=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},Ut.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Ut.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Ut.fromSaved=function(e,t,i){return t instanceof Rr?new Ut(e,dt(e.mode,t.state),i,t.lookAhead):new Ut(e,dt(e.mode,t),i)},Ut.prototype.save=function(e){var t=e!==!1?dt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new Rr(t,this.maxLookAhead):t};function Bi(e,t,i,r){var n=[e.state.modeGen],h={};cn(e,t.text,e.doc.mode,i,function(P,z){return n.push(P,z)},h,r);for(var S=i.state,x=function(P){i.baseTokens=n;var z=e.state.overlays[P],Z=1,Q=0;i.state=!0,cn(e,t.text,z.mode,i,function(J,re){for(var ae=Z;QJ&&n.splice(Z,1,J,n[Z+1],ue),Z+=2,Q=Math.min(J,ue)}if(!!re)if(z.opaque)n.splice(ae,Z-ae,J,"overlay "+re),Z=ae+2;else for(;aee.options.maxHighlightLength&&dt(e.doc.mode,r.state),h=Bi(e,t,r);n&&(r.state=n),t.stateAfter=r.save(!n),t.styles=h.styles,h.classes?t.styleClasses=h.classes:t.styleClasses&&(t.styleClasses=null),i===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Kr(e,t,i){var r=e.doc,n=e.display;if(!r.mode.startState)return new Ut(r,!0,t);var h=yo(e,t,i),S=h>r.first&&me(r,h-1).stateAfter,x=S?Ut.fromSaved(r,S,h):new Ut(r,Ar(r.mode),h);return r.iter(h,t,function(O){gi(e,O.text,x);var P=x.line;O.stateAfter=P==t-1||P%5==0||P>=n.viewFrom&&Pt.start)return h}throw new Error("Mode "+e.name+" failed to advance stream.")}var Hi=function(e,t,i){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=i};function Fi(e,t,i,r){var n=e.doc,h=n.mode,S;t=pe(n,t);var x=me(n,t.line),O=Kr(e,t.line,i),P=new Ie(x.text,e.options.tabSize,O),z;for(r&&(z=[]);(r||P.pose.options.maxHighlightLength?(x=!1,S&&gi(e,t,r,z.pos),z.pos=t.length,Z=null):Z=Ni(_i(i,z,r.state,Q),h),Q){var J=Q[0].name;J&&(Z="m-"+(Z?J+" "+Z:J))}if(!x||P!=Z){for(;OS;--x){if(x<=h.first)return h.first;var O=me(h,x-1),P=O.stateAfter;if(P&&(!i||x+(P instanceof Rr?P.lookAhead:0)<=h.modeFrontier))return x;var z=Ee(O.text,null,e.options.tabSize);(n==null||r>z)&&(n=x-1,r=z)}return n}function In(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontieri;r--){var n=me(e,r).stateAfter;if(n&&(!(n instanceof Rr)||r+n.lookAhead=t:h.to>t);(r||(r=[])).push(new te(S,h.from,O?null:h.to))}}return r}function tr(e,t,i){var r;if(e)for(var n=0;n=t:h.to>t);if(x||h.from==t&&S.type=="bookmark"&&(!i||h.marker.insertLeft)){var O=h.from==null||(S.inclusiveLeft?h.from<=t:h.from0&&x)for(var ye=0;ye0)){var z=[O,1],Z=I(P.from,x.from),Q=I(P.to,x.to);(Z<0||!S.inclusiveLeft&&!Z)&&z.push({from:P.from,to:x.from}),(Q>0||!S.inclusiveRight&&!Q)&&z.push({from:x.to,to:P.to}),n.splice.apply(n,z),O+=z.length-3}}return n}function Vt(e){var t=e.markedSpans;if(!!t){for(var i=0;it)&&(!r||Br(r,h.marker)<0)&&(r=h.marker)}return r}function qt(e,t,i,r,n){var h=me(e,t),S=vr&&h.markedSpans;if(S)for(var x=0;x=0&&Z<=0||z<=0&&Z>=0)&&(z<=0&&(O.marker.inclusiveRight&&n.inclusiveLeft?I(P.to,i)>=0:I(P.to,i)>0)||z>=0&&(O.marker.inclusiveRight&&n.inclusiveLeft?I(P.from,r)<=0:I(P.from,r)<0)))return!0}}}function nt(e){for(var t;t=Lt(e);)e=t.find(-1,!0).line;return e}function Gr(e){for(var t;t=Ue(e);)e=t.find(1,!0).line;return e}function Wi(e){for(var t,i;t=Ue(e);)e=t.find(1,!0).line,(i||(i=[])).push(e);return i}function rr(e,t){var i=me(e,t),r=nt(i);return i==r?t:Re(r)}function Xr(e,t){if(t>e.lastLine())return t;var i=me(e,t),r;if(!xt(e,i))return t;for(;r=Ue(i);)i=r.find(1,!0).line;return Re(i)+1}function xt(e,t){var i=vr&&t.markedSpans;if(i){for(var r=void 0,n=0;nt.maxLineLength&&(t.maxLineLength=n,t.maxLine=r)})}var ni=function(e,t,i){this.text=e,ii(this,t),this.height=i?i(this):1};ni.prototype.lineNo=function(){return Re(this)},At(ni);function lc(e,t,i,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),Vt(e),ii(e,i);var n=r?r(e):1;n!=e.height&&it(e,n)}function cc(e){e.parent=null,Vt(e)}var uc={},fc={};function Ds(e,t){if(!e||/^\s*$/.test(e))return null;var i=t.addModeClass?fc:uc;return i[e]||(i[e]=e.replace(/\S+/g,"cm-$&"))}function Bs(e,t){var i=B("span",null,null,v?"padding-right: .1px":null),r={pre:B("pre",[i],"CodeMirror-line"),content:i,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var n=0;n<=(t.rest?t.rest.length:0);n++){var h=n?t.rest[n-1]:t.line,S=void 0;r.pos=0,r.addToken=dc,Mt(e.display.measure)&&(S=ut(h,e.doc.direction))&&(r.addToken=vc(r.addToken,S)),r.map=[];var x=t!=e.display.externalMeasured&&Re(h);gc(h,r,Pi(e,h,x)),h.styleClasses&&(h.styleClasses.bgClass&&(r.bgClass=ne(h.styleClasses.bgClass,r.bgClass||"")),h.styleClasses.textClass&&(r.textClass=ne(h.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(jr(e.display.measure))),n==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(v){var O=r.content.lastChild;(/\bcm-tab\b/.test(O.className)||O.querySelector&&O.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return ke(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=ne(r.pre.className,r.textClass||"")),r}function hc(e){var t=W("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function dc(e,t,i,r,n,h,S){if(!!t){var x=e.splitSpaces?pc(t,e.trailingSpace):t,O=e.cm.state.specialChars,P=!1,z;if(!O.test(t))e.col+=t.length,z=document.createTextNode(x),e.map.push(e.pos,e.pos+t.length,z),m&&_<9&&(P=!0),e.pos+=t.length;else{z=document.createDocumentFragment();for(var Z=0;;){O.lastIndex=Z;var Q=O.exec(t),J=Q?Q.index-Z:t.length-Z;if(J){var re=document.createTextNode(x.slice(Z,Z+J));m&&_<9?z.appendChild(W("span",[re])):z.appendChild(re),e.map.push(e.pos,e.pos+J,re),e.col+=J,e.pos+=J}if(!Q)break;Z+=J+1;var ae=void 0;if(Q[0]==" "){var ue=e.cm.options.tabSize,he=ue-e.col%ue;ae=z.appendChild(W("span",Fe(he),"cm-tab")),ae.setAttribute("role","presentation"),ae.setAttribute("cm-text"," "),e.col+=he}else Q[0]=="\r"||Q[0]==` +`?(ae=z.appendChild(W("span",Q[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ae.setAttribute("cm-text",Q[0]),e.col+=1):(ae=e.cm.options.specialCharPlaceholder(Q[0]),ae.setAttribute("cm-text",Q[0]),m&&_<9?z.appendChild(W("span",[ae])):z.appendChild(ae),e.col+=1);e.map.push(e.pos,e.pos+1,ae),e.pos++}}if(e.trailingSpace=x.charCodeAt(t.length-1)==32,i||r||n||P||h||S){var ge=i||"";r&&(ge+=r),n&&(ge+=n);var de=W("span",[z],ge,h);if(S)for(var ye in S)S.hasOwnProperty(ye)&&ye!="style"&&ye!="class"&&de.setAttribute(ye,S[ye]);return e.content.appendChild(de)}e.content.appendChild(z)}}function pc(e,t){if(e.length>1&&!/ /.test(e))return e;for(var i=t,r="",n=0;nP&&Z.from<=P));Q++);if(Z.to>=z)return e(i,r,n,h,S,x,O);e(i,r.slice(0,Z.to-P),n,h,null,x,O),h=null,r=r.slice(Z.to-P),P=Z.to}}}function Ps(e,t,i,r){var n=!r&&i.widgetNode;n&&e.map.push(e.pos,e.pos+t,n),!r&&e.cm.display.input.needsContentAttribute&&(n||(n=e.content.appendChild(document.createElement("span"))),n.setAttribute("cm-marker",i.id)),n&&(e.cm.display.input.setUneditable(n),e.content.appendChild(n)),e.pos+=t,e.trailingSpace=!1}function gc(e,t,i){var r=e.markedSpans,n=e.text,h=0;if(!r){for(var S=1;SO||Me.collapsed&&Le.to==O&&Le.from==O)){if(Le.to!=null&&Le.to!=O&&J>Le.to&&(J=Le.to,ae=""),Me.className&&(re+=" "+Me.className),Me.css&&(Q=(Q?Q+";":"")+Me.css),Me.startStyle&&Le.from==O&&(ue+=" "+Me.startStyle),Me.endStyle&&Le.to==J&&(ye||(ye=[])).push(Me.endStyle,Le.to),Me.title&&((ge||(ge={})).title=Me.title),Me.attributes)for(var He in Me.attributes)(ge||(ge={}))[He]=Me.attributes[He];Me.collapsed&&(!he||Br(he.marker,Me)<0)&&(he=Le)}else Le.from>O&&J>Le.from&&(J=Le.from)}if(ye)for(var lt=0;lt=x)break;for(var Gt=Math.min(x,J);;){if(z){var It=O+z.length;if(!he){var Ve=It>Gt?z.slice(0,Gt-O):z;t.addToken(t,Ve,Z?Z+re:re,ue,O+Ve.length==J?ae:"",Q,ge)}if(It>=Gt){z=z.slice(Gt-O),O=Gt;break}O=It,ue=""}z=n.slice(h,h=i[P++]),Z=Ds(i[P++],t.cm.options)}}}function Is(e,t,i){this.line=t,this.rest=Wi(t),this.size=this.rest?Re(Ae(this.rest))-i+1:1,this.node=this.text=null,this.hidden=xt(e,t)}function Hn(e,t,i){for(var r=[],n,h=t;h2&&h.push((O.bottom+P.top)/2-i.top)}}h.push(i.bottom-i.top)}}function zs(e,t,i){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;ri)return{map:e.measure.maps[n],cache:e.measure.caches[n],before:!0}}}function Ec(e,t){t=nt(t);var i=Re(t),r=e.display.externalMeasured=new Is(e.doc,t,i);r.lineN=i;var n=r.built=Bs(e,r);return r.text=n.pre,D(e.display.lineMeasure,n.pre),r}function qs(e,t,i,r){return Ir(e,Ui(e,t),i,r)}function wo(e,t){if(t>=e.display.viewFrom&&t=i.lineN&&tt)&&(h=O-x,n=h-1,t>=O&&(S="right")),n!=null){if(r=e[P+2],x==O&&i==(r.insertLeft?"left":"right")&&(S=i),i=="left"&&n==0)for(;P&&e[P-2]==e[P-3]&&e[P-1].insertLeft;)r=e[(P-=3)+2],S="left";if(i=="right"&&n==O-x)for(;P=0&&(i=e[n]).left==i.right;n--);return i}function Ac(e,t,i,r){var n=Gs(t.map,i,r),h=n.node,S=n.start,x=n.end,O=n.collapse,P;if(h.nodeType==3){for(var z=0;z<4;z++){for(;S&&Nr(t.line.text.charAt(n.coverStart+S));)--S;for(;n.coverStart+x0&&(O=r="right");var Z;e.options.lineWrapping&&(Z=h.getClientRects()).length>1?P=Z[r=="right"?Z.length-1:0]:P=h.getBoundingClientRect()}if(m&&_<9&&!S&&(!P||!P.left&&!P.right)){var Q=h.parentNode.getClientRects()[0];Q?P={left:Q.left,right:Q.left+qi(e.display),top:Q.top,bottom:Q.bottom}:P=Ks}for(var J=P.top-t.rect.top,re=P.bottom-t.rect.top,ae=(J+re)/2,ue=t.view.measure.heights,he=0;he=r.text.length?(O=r.text.length,P="before"):O<=0&&(O=0,P="after"),!x)return S(P=="before"?O-1:O,P=="before");function z(re,ae,ue){var he=x[ae],ge=he.level==1;return S(ue?re-1:re,ge!=ue)}var Z=Ne(x,O,P),Q=vt,J=z(O,Z,P=="before");return Q!=null&&(J.other=z(O,Q,P!="before")),J}function Js(e,t){var i=0;t=pe(e.doc,t),e.options.lineWrapping||(i=qi(e.display)*t.ch);var r=me(e.doc,t.line),n=$t(r)+Fn(e.display);return{left:i,right:i,top:n,bottom:n+r.height}}function xo(e,t,i,r,n){var h=le(e,t,i);return h.xRel=n,r&&(h.outside=r),h}function ko(e,t,i){var r=e.doc;if(i+=e.display.viewOffset,i<0)return xo(r.first,0,null,-1,-1);var n=Rt(r,i),h=r.first+r.size-1;if(n>h)return xo(r.first+r.size-1,me(r,h).text.length,null,1,1);t<0&&(t=0);for(var S=me(r,n);;){var x=Oc(e,S,n,t,i),O=_r(S,x.ch+(x.xRel>0||x.outside>0?1:0));if(!O)return x;var P=O.find(1);if(P.line==n)return P;S=me(r,n=P.line)}}function Qs(e,t,i,r){r-=Lo(t);var n=t.text.length,h=Nt(function(S){return Ir(e,i,S-1).bottom<=r},n,0);return n=Nt(function(S){return Ir(e,i,S).top>r},h,n),{begin:h,end:n}}function ea(e,t,i,r){i||(i=Ui(e,t));var n=Nn(e,t,Ir(e,i,r),"line").top;return Qs(e,t,i,n)}function Eo(e,t,i,r){return e.bottom<=i?!1:e.top>i?!0:(r?e.left:e.right)>t}function Oc(e,t,i,r,n){n-=$t(t);var h=Ui(e,t),S=Lo(t),x=0,O=t.text.length,P=!0,z=ut(t,e.doc.direction);if(z){var Z=(e.options.lineWrapping?Dc:Rc)(e,t,i,h,z,r,n);P=Z.level!=1,x=P?Z.from:Z.to-1,O=P?Z.to:Z.from-1}var Q=null,J=null,re=Nt(function(xe){var Le=Ir(e,h,xe);return Le.top+=S,Le.bottom+=S,Eo(Le,r,n,!1)?(Le.top<=n&&Le.left<=r&&(Q=xe,J=Le),!0):!1},x,O),ae,ue,he=!1;if(J){var ge=r-J.left=ye.bottom?1:0}return re=ti(t.text,re,1),xo(i,re,ue,he,r-ae)}function Rc(e,t,i,r,n,h,S){var x=Nt(function(Z){var Q=n[Z],J=Q.level!=1;return Eo(mr(e,le(i,J?Q.to:Q.from,J?"before":"after"),"line",t,r),h,S,!0)},0,n.length-1),O=n[x];if(x>0){var P=O.level!=1,z=mr(e,le(i,P?O.from:O.to,P?"after":"before"),"line",t,r);Eo(z,h,S,!0)&&z.top>S&&(O=n[x-1])}return O}function Dc(e,t,i,r,n,h,S){var x=Qs(e,t,r,S),O=x.begin,P=x.end;/\s/.test(t.text.charAt(P-1))&&P--;for(var z=null,Z=null,Q=0;Q=P||J.to<=O)){var re=J.level!=1,ae=Ir(e,r,re?Math.min(P,J.to)-1:Math.max(O,J.from)).right,ue=aeue)&&(z=J,Z=ue)}}return z||(z=n[n.length-1]),z.fromP&&(z={from:z.from,to:P,level:z.level}),z}var Ci;function zi(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(Ci==null){Ci=W("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Ci.appendChild(document.createTextNode("x")),Ci.appendChild(W("br"));Ci.appendChild(document.createTextNode("x"))}D(e.measure,Ci);var i=Ci.offsetHeight/50;return i>3&&(e.cachedTextHeight=i),N(e.measure),i||1}function qi(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=W("span","xxxxxxxxxx"),i=W("pre",[t],"CodeMirror-line-like");D(e.measure,i);var r=t.getBoundingClientRect(),n=(r.right-r.left)/10;return n>2&&(e.cachedCharWidth=n),n||10}function To(e){for(var t=e.display,i={},r={},n=t.gutters.clientLeft,h=t.gutters.firstChild,S=0;h;h=h.nextSibling,++S){var x=e.display.gutterSpecs[S].className;i[x]=h.offsetLeft+h.clientLeft+n,r[x]=h.clientWidth}return{fixedPos:Ao(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:i,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Ao(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function ta(e){var t=zi(e.display),i=e.options.lineWrapping,r=i&&Math.max(5,e.display.scroller.clientWidth/qi(e.display)-3);return function(n){if(xt(e.doc,n))return 0;var h=0;if(n.widgets)for(var S=0;S0&&(P=me(e.doc,O.line).text).length==O.ch){var z=Ee(P,P.length,e.options.tabSize)-P.length;O=le(O.line,Math.max(0,Math.round((h-Us(e.display).left)/qi(e.display))-z))}return O}function Li(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var i=e.display.view,r=0;rt)&&(n.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=n.viewTo)vr&&rr(e.doc,t)n.viewFrom?si(e):(n.viewFrom+=r,n.viewTo+=r);else if(t<=n.viewFrom&&i>=n.viewTo)si(e);else if(t<=n.viewFrom){var h=jn(e,i,i+r,1);h?(n.view=n.view.slice(h.index),n.viewFrom=h.lineN,n.viewTo+=r):si(e)}else if(i>=n.viewTo){var S=jn(e,t,t,-1);S?(n.view=n.view.slice(0,S.index),n.viewTo=S.lineN):si(e)}else{var x=jn(e,t,t,-1),O=jn(e,i,i+r,1);x&&O?(n.view=n.view.slice(0,x.index).concat(Hn(e,x.lineN,O.lineN)).concat(n.view.slice(O.index)),n.viewTo+=r):si(e)}var P=n.externalMeasured;P&&(i=n.lineN&&t=r.viewTo)){var h=r.view[Li(e,t)];if(h.node!=null){var S=h.changes||(h.changes=[]);ee(S,i)==-1&&S.push(i)}}}function si(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function jn(e,t,i,r){var n=Li(e,t),h,S=e.display.view;if(!vr||i==e.doc.first+e.doc.size)return{index:n,lineN:i};for(var x=e.display.viewFrom,O=0;O0){if(n==S.length-1)return null;h=x+S[n].size-t,n++}else h=x-t;t+=h,i+=h}for(;rr(e.doc,i)!=i;){if(n==(r<0?0:S.length-1))return null;i+=r*S[n-(r<0?1:0)].size,n+=r}return{index:n,lineN:i}}function Bc(e,t,i){var r=e.display,n=r.view;n.length==0||t>=r.viewTo||i<=r.viewFrom?(r.view=Hn(e,t,i),r.viewFrom=t):(r.viewFrom>t?r.view=Hn(e,t,r.viewFrom).concat(r.view):r.viewFromi&&(r.view=r.view.slice(0,Li(e,i)))),r.viewTo=i}function ra(e){for(var t=e.display.view,i=0,r=0;r=e.display.viewTo||O.to().line0?S:e.defaultCharWidth())+"px"}if(r.other){var x=i.appendChild(W("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));x.style.display="",x.style.left=r.other.left+"px",x.style.top=r.other.top+"px",x.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function Un(e,t){return e.top-t.top||e.left-t.left}function Pc(e,t,i){var r=e.display,n=e.doc,h=document.createDocumentFragment(),S=Us(e.display),x=S.left,O=Math.max(r.sizerWidth,Si(e)-r.sizer.offsetLeft)-S.right,P=n.direction=="ltr";function z(de,ye,xe,Le){ye<0&&(ye=0),ye=Math.round(ye),Le=Math.round(Le),h.appendChild(W("div",null,"CodeMirror-selected","position: absolute; left: "+de+`px; + top: `+ye+"px; width: "+(xe??O-de)+`px; + height: `+(Le-ye)+"px"))}function Z(de,ye,xe){var Le=me(n,de),Me=Le.text.length,He,lt;function qe(Ve,Ht){return Wn(e,le(de,Ve),"div",Le,Ht)}function Gt(Ve,Ht,pt){var rt=ea(e,Le,null,Ve),$e=Ht=="ltr"==(pt=="after")?"left":"right",Ge=pt=="after"?rt.begin:rt.end-(/\s/.test(Le.text.charAt(rt.end-1))?2:1);return qe(Ge,$e)[$e]}var It=ut(Le,n.direction);return vi(It,ye||0,xe??Me,function(Ve,Ht,pt,rt){var $e=pt=="ltr",Ge=qe(Ve,$e?"left":"right"),Ft=qe(Ht-1,$e?"right":"left"),nn=ye==null&&Ve==0,hi=xe==null&&Ht==Me,mt=rt==0,Hr=!It||rt==It.length-1;if(Ft.top-Ge.top<=3){var ct=(P?nn:hi)&&mt,is=(P?hi:nn)&&Hr,$r=ct?x:($e?Ge:Ft).left,Ai=is?O:($e?Ft:Ge).right;z($r,Ge.top,Ai-$r,Ge.bottom)}else{var Mi,Et,on,ns;$e?(Mi=P&&nn&&mt?x:Ge.left,Et=P?O:Gt(Ve,pt,"before"),on=P?x:Gt(Ht,pt,"after"),ns=P&&hi&&Hr?O:Ft.right):(Mi=P?Gt(Ve,pt,"before"):x,Et=!P&&nn&&mt?O:Ge.right,on=!P&&hi&&Hr?x:Ft.left,ns=P?Gt(Ht,pt,"after"):O),z(Mi,Ge.top,Et-Mi,Ge.bottom),Ge.bottom0?t.blinker=setInterval(function(){e.hasFocus()||Ki(e),t.cursorDiv.style.visibility=(i=!i)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function na(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Bo(e))}function Do(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Ki(e))},100)}function Bo(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!="nocursor"&&(e.state.focused||(ke(e,"focus",e,t),e.state.focused=!0,$(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),v&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Ro(e))}function Ki(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ke(e,"blur",e,t),e.state.focused=!1,M(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function zn(e){for(var t=e.display,i=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),n=t.lineDiv.getBoundingClientRect().top,h=0,S=0;S.005||J<-.005)&&(ne.display.sizerWidth){var ae=Math.ceil(z/qi(e.display));ae>e.display.maxLineLength&&(e.display.maxLineLength=ae,e.display.maxLine=x.line,e.display.maxLineChanged=!0)}}}Math.abs(h)>2&&(t.scroller.scrollTop+=h)}function oa(e){if(e.widgets)for(var t=0;t=S&&(h=Rt(t,$t(me(t,O))-e.wrapper.clientHeight),S=O)}return{from:h,to:Math.max(S,h+1)}}function Ic(e,t){if(!We(e,"scrollCursorIntoView")){var i=e.display,r=i.sizer.getBoundingClientRect(),n=null;if(t.top+r.top<0?n=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(n=!1),n!=null&&!d){var h=W("div","\u200B",null,`position: absolute; top: `+(t.top-i.viewOffset-Fn(e.display))+`px; height: `+(t.bottom-t.top+Pr(e)+i.barHeight)+`px; - left: `+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(f),f.scrollIntoView(n),e.display.lineSpace.removeChild(f)}}}function Hc(e,t,i,r){r==null&&(r=0);var n;!e.options.lineWrapping&&t==i&&(i=t.sticky=="before"?le(t.line,t.ch+1,"before"):t,t=t.ch?le(t.line,t.sticky=="before"?t.ch-1:t.ch,"after"):t);for(var f=0;f<5;f++){var S=!1,x=mr(e,t),M=!i||i==t?x:mr(e,i);n={left:Math.min(x.left,M.left),top:Math.min(x.top,M.top)-r,right:Math.max(x.left,M.left),bottom:Math.max(x.bottom,M.bottom)+r};var P=Po(e,n),z=e.doc.scrollTop,Z=e.doc.scrollLeft;if(P.scrollTop!=null&&(_n(e,P.scrollTop),Math.abs(e.doc.scrollTop-z)>1&&(S=!0)),P.scrollLeft!=null&&(xi(e,P.scrollLeft),Math.abs(e.doc.scrollLeft-Z)>1&&(S=!0)),!S)break}return n}function Fc(e,t){var i=Po(e,t);i.scrollTop!=null&&_n(e,i.scrollTop),i.scrollLeft!=null&&xi(e,i.scrollLeft)}function Po(e,t){var i=e.display,r=zi(e.display);t.top<0&&(t.top=0);var n=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:i.scroller.scrollTop,f=Co(e),S={};t.bottom-t.top>f&&(t.bottom=t.top+f);var x=e.doc.height+So(i),M=t.topx-r;if(t.topn+f){var z=Math.min(t.top,(P?x:t.bottom)-f);z!=n&&(S.scrollTop=z)}var Z=e.options.fixedGutter?0:i.gutters.offsetWidth,Q=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:i.scroller.scrollLeft-Z,J=Si(e)-i.gutters.offsetWidth,re=t.right-t.left>J;return re&&(t.right=t.left+J),t.left<10?S.scrollLeft=0:t.leftJ+Q-3&&(S.scrollLeft=t.right+(re?0:10)-J),S}function Io(e,t){t!=null&&(Kn(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Gi(e){Kn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function gn(e,t,i){(t!=null||i!=null)&&Kn(e),t!=null&&(e.curOp.scrollLeft=t),i!=null&&(e.curOp.scrollTop=i)}function Nc(e,t){Kn(e),e.curOp.scrollToPos=t}function Kn(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var i=Js(e,t.from),r=Js(e,t.to);sa(e,i,r,t.margin)}}function sa(e,t,i,r){var n=Po(e,{left:Math.min(t.left,i.left),top:Math.min(t.top,i.top)-r,right:Math.max(t.right,i.right),bottom:Math.max(t.bottom,i.bottom)+r});gn(e,n.scrollLeft,n.scrollTop)}function _n(e,t){Math.abs(e.doc.scrollTop-t)<2||(R||Fo(e,{top:t}),aa(e,t,!0),R&&Fo(e),bn(e,100))}function aa(e,t,i){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!i)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function xi(e,t,i,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((i?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,ha(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function yn(e){var t=e.display,i=t.gutters.offsetWidth,r=Math.round(e.doc.height+So(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?i:0,docHeight:r,scrollHeight:r+Pr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:i}}var ki=function(e,t,i){this.cm=i;var r=this.vert=W("div",[W("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),n=this.horiz=W("div",[W("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=n.tabIndex=-1,e(r),e(n),we(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),we(n,"scroll",function(){n.clientWidth&&t(n.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,m&&_<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};ki.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,i=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(i){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var n=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+n)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=i?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var f=e.viewWidth-e.barLeft-(i?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+f)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:i?r:0,bottom:t?r:0}},ki.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},ki.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},ki.prototype.zeroWidthHack=function(){var e=a&&!C?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new U,this.disableVert=new U},ki.prototype.enableZeroWidthBar=function(e,t,i){e.style.pointerEvents="auto";function r(){var n=e.getBoundingClientRect(),f=i=="vert"?document.elementFromPoint(n.right-1,(n.top+n.bottom)/2):document.elementFromPoint((n.right+n.left)/2,n.bottom-1);f!=e?e.style.pointerEvents="none":t.set(1e3,r)}t.set(1e3,r)},ki.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var mn=function(){};mn.prototype.update=function(){return{bottom:0,right:0}},mn.prototype.setScrollLeft=function(){},mn.prototype.setScrollTop=function(){},mn.prototype.clear=function(){};function Xi(e,t){t||(t=yn(e));var i=e.display.barWidth,r=e.display.barHeight;la(e,t);for(var n=0;n<4&&i!=e.display.barWidth||r!=e.display.barHeight;n++)i!=e.display.barWidth&&e.options.lineWrapping&&zn(e),la(e,yn(e)),i=e.display.barWidth,r=e.display.barHeight}function la(e,t){var i=e.display,r=i.scrollbars.update(t);i.sizer.style.paddingRight=(i.barWidth=r.right)+"px",i.sizer.style.paddingBottom=(i.barHeight=r.bottom)+"px",i.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(i.scrollbarFiller.style.display="block",i.scrollbarFiller.style.height=r.bottom+"px",i.scrollbarFiller.style.width=r.right+"px"):i.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(i.gutterFiller.style.display="block",i.gutterFiller.style.height=r.bottom+"px",i.gutterFiller.style.width=t.gutterWidth+"px"):i.gutterFiller.style.display=""}var ca={native:ki,null:mn};function ua(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&A(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new ca[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),we(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,i){i=="horizontal"?xi(e,t):_n(e,t)},e),e.display.scrollbars.addClass&&$(e.display.wrapper,e.display.scrollbars.addClass)}var Wc=0;function Ei(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wc,markArrays:null},_c(e.curOp)}function Ti(e){var t=e.curOp;t&&mc(t,function(i){for(var r=0;r=i.viewTo)||i.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Gn(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function zc(e){e.updatedDisplay=e.mustUpdate&&Ho(e.cm,e.update)}function qc(e){var t=e.cm,i=t.display;e.updatedDisplay&&zn(t),e.barMeasure=yn(t),i.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=qs(t,i.maxLine,i.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(i.scroller.clientWidth,i.sizer.offsetLeft+e.adjustWidthTo+Pr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,i.sizer.offsetLeft+e.adjustWidthTo-Si(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=i.input.prepareSelection())}function Kc(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var i=+new Date+e.options.workTime,r=Kr(e,t.highlightFrontier),n=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(f){if(r.line>=e.display.viewFrom){var S=f.styles,x=f.text.length>e.options.maxHighlightLength?dt(t.mode,r.state):null,M=Bi(e,f,r,!0);x&&(r.state=x),f.styles=M.styles;var P=f.styleClasses,z=M.classes;z?f.styleClasses=z:P&&(f.styleClasses=null);for(var Z=!S||S.length!=f.styles.length||P!=z&&(!P||!z||P.bgClass!=z.bgClass||P.textClass!=z.textClass),Q=0;!Z&&Qi)return bn(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),n.length&&Kt(e,function(){for(var f=0;f=i.viewFrom&&t.visible.to<=i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&ra(e)==0)return!1;da(e)&&(si(e),t.dims=To(e));var n=r.first+r.size,f=Math.max(t.visible.from-e.options.viewportMargin,r.first),S=Math.min(n,t.visible.to+e.options.viewportMargin);i.viewFromS&&i.viewTo-S<20&&(S=Math.min(n,i.viewTo)),vr&&(f=rr(e.doc,f),S=Xr(e.doc,S));var x=f!=i.viewFrom||S!=i.viewTo||i.lastWrapHeight!=t.wrapperHeight||i.lastWrapWidth!=t.wrapperWidth;Bc(e,f,S),i.viewOffset=$t(me(e.doc,i.viewFrom)),e.display.mover.style.top=i.viewOffset+"px";var M=ra(e);if(!x&&M==0&&!t.force&&i.renderedView==i.view&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo))return!1;var P=Zc(e);return M>4&&(i.lineDiv.style.display="none"),$c(e,i.updateLineNumbers,t.dims),M>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,Vc(P),N(i.cursorDiv),N(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,x&&(i.lastWrapHeight=t.wrapperHeight,i.lastWrapWidth=t.wrapperWidth,bn(e,400)),i.updateLineNumbers=null,!0}function fa(e,t){for(var i=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==Si(e)){if(i&&i.top!=null&&(i={top:Math.min(e.doc.height+So(e.display)-Co(e),i.top)}),t.visible=qn(e.display,e.doc,i),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=qn(e.display,e.doc,i));if(!Ho(e,t))break;zn(e);var n=yn(e);vn(e),Xi(e,n),Wo(e,n),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Fo(e,t){var i=new Gn(e,t);if(Ho(e,i)){zn(e),fa(e,i);var r=yn(e);vn(e),Xi(e,r),Wo(e,r),i.finish()}}function $c(e,t,i){var r=e.display,n=e.options.lineNumbers,f=r.lineDiv,S=f.firstChild;function x(re){var ae=re.nextSibling;return g&&a&&e.display.currentWheelTarget==re?re.style.display="none":re.parentNode.removeChild(re),ae}for(var M=r.view,P=r.viewFrom,z=0;z-1&&(J=!1),Hs(e,Z,P,i)),J&&(N(Z.lineNumber),Z.lineNumber.appendChild(document.createTextNode(Or(e.options,P)))),S=Z.node.nextSibling}P+=Z.size}for(;S;)S=x(S)}function No(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",ot(e,"gutterChanged",e)}function Wo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Pr(e)+"px"}function ha(e){var t=e.display,i=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=Ao(t)-t.scroller.scrollLeft+e.doc.scrollLeft,n=t.gutters.offsetWidth,f=r+"px",S=0;Sx.clientWidth,P=x.scrollHeight>x.clientHeight;if(!!(r&&M||n&&P)){if(n&&a&&g){e:for(var z=t.target,Z=S.view;z!=x;z=z.parentNode)for(var Q=0;Q=0&&I(e,r.to())<=0)return i}return-1};var Be=function(e,t){this.anchor=e,this.head=t};Be.prototype.from=function(){return Te(this.anchor,this.head)},Be.prototype.to=function(){return ce(this.anchor,this.head)},Be.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function br(e,t,i){var r=e&&e.options.selectionsMayTouch,n=t[i];t.sort(function(Q,J){return I(Q.from(),J.from())}),i=ee(t,n);for(var f=1;f0:M>=0){var P=Te(x.from(),S.from()),z=ce(x.to(),S.to()),Z=x.empty()?S.from()==S.head:x.from()==x.head;f<=i&&--i,t.splice(--f,2,new Be(Z?z:P,Z?P:z))}}return new Jt(t,i)}function ai(e,t){return new Jt([new Be(e,t||e)],0)}function li(e){return e.text?le(e.from.line+e.text.length-1,Ae(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function _a(e,t){if(I(e,t.from)<0)return e;if(I(e,t.to)<=0)return li(t);var i=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=li(t).ch-t.to.ch),le(i,r)}function Uo(e,t){for(var i=[],r=0;r1&&e.remove(x.line+1,re-1),e.insert(x.line+1,he)}ot(e,"change",e,t)}function ci(e,t,i){function r(n,f,S){if(n.linked)for(var x=0;x1&&!e.done[e.done.length-2].ranges)return e.done.pop(),Ae(e.done)}function wa(e,t,i,r){var n=e.history;n.undone.length=0;var f=+new Date,S,x;if((n.lastOp==r||n.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&n.lastModTime>f-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)=="*"))&&(S=ru(n,n.lastOp==r)))x=Ae(S.changes),I(t.from,t.to)==0&&I(t.from,x.to)==0?x.to=li(t):S.changes.push(Ko(e,t));else{var M=Ae(n.done);for((!M||!M.ranges)&&Zn(e.sel,n.done),S={changes:[Ko(e,t)],generation:n.generation},n.done.push(S);n.done.length>n.undoDepth;)n.done.shift(),n.done[0].ranges||n.done.shift()}n.done.push(i),n.generation=++n.maxGeneration,n.lastModTime=n.lastSelTime=f,n.lastOp=n.lastSelOp=r,n.lastOrigin=n.lastSelOrigin=t.origin,x||ke(e,"historyAdded")}function iu(e,t,i,r){var n=t.charAt(0);return n=="*"||n=="+"&&i.ranges.length==r.ranges.length&&i.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function nu(e,t,i,r){var n=e.history,f=r&&r.origin;i==n.lastSelOp||f&&n.lastSelOrigin==f&&(n.lastModTime==n.lastSelTime&&n.lastOrigin==f||iu(e,f,Ae(n.done),t))?n.done[n.done.length-1]=t:Zn(t,n.done),n.lastSelTime=+new Date,n.lastSelOrigin=f,n.lastSelOp=i,r&&r.clearRedo!==!1&&Ca(n.undone)}function Zn(e,t){var i=Ae(t);i&&i.ranges&&i.equals(e)||t.push(e)}function La(e,t,i,r){var n=t["spans_"+e.id],f=0;e.iter(Math.max(e.first,i),Math.min(e.first+e.size,r),function(S){S.markedSpans&&((n||(n=t["spans_"+e.id]={}))[f]=S.markedSpans),++f})}function ou(e){if(!e)return null;for(var t,i=0;i-1&&(Ae(x)[Z]=P[Z],delete P[Z])}}return r}function Go(e,t,i,r){if(r){var n=e.anchor;if(i){var f=I(t,n)<0;f!=I(i,n)<0?(n=t,t=i):f!=I(t,i)<0&&(t=i)}return new Be(n,t)}else return new Be(i||t,t)}function Vn(e,t,i,r,n){n==null&&(n=e.cm&&(e.cm.display.shift||e.extend)),yt(e,new Jt([Go(e.sel.primary(),t,i,n)],0),r)}function ka(e,t,i){for(var r=[],n=e.cm&&(e.cm.display.shift||e.extend),f=0;f=t.ch:x.to>t.ch))){if(n&&(ke(M,"beforeCursorEnter"),M.explicitlyCleared))if(f.markedSpans){--S;continue}else break;if(!M.atomic)continue;if(i){var Z=M.find(r<0?1:-1),Q=void 0;if((r<0?z:P)&&(Z=Ra(e,Z,-r,Z&&Z.line==t.line?f:null)),Z&&Z.line==t.line&&(Q=I(Z,i))&&(r<0?Q<0:Q>0))return Zi(e,Z,t,r,n)}var J=M.find(r<0?-1:1);return(r<0?P:z)&&(J=Ra(e,J,r,J.line==t.line?f:null)),J?Zi(e,J,t,r,n):null}}return t}function Jn(e,t,i,r,n){var f=r||1,S=Zi(e,t,i,f,n)||!n&&Zi(e,t,i,f,!0)||Zi(e,t,i,-f,n)||!n&&Zi(e,t,i,-f,!0);return S||(e.cantEdit=!0,le(e.first,0))}function Ra(e,t,i,r){return i<0&&t.ch==0?t.line>e.first?pe(e,le(t.line-1)):null:i>0&&t.ch==(r||me(e,t.line)).text.length?t.line=0;--n)Pa(e,{from:r[n].from,to:r[n].to,text:n?[""]:t.text,origin:t.origin});else Pa(e,t)}}function Pa(e,t){if(!(t.text.length==1&&t.text[0]==""&&I(t.from,t.to)==0)){var i=Uo(e,t);wa(e,t,i,e.cm?e.cm.curOp.id:NaN),wn(e,t,i,zt(e,t));var r=[];ci(e,function(n,f){!f&&ee(r,n.history)==-1&&(Na(n.history,t),r.push(n.history)),wn(n,t,null,zt(n,t))})}}function Qn(e,t,i){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!i)){for(var n=e.history,f,S=e.sel,x=t=="undo"?n.done:n.undone,M=t=="undo"?n.undone:n.done,P=0;P=0;--J){var re=Q(J);if(re)return re.v}}}}function Ia(e,t){if(t!=0&&(e.first+=t,e.sel=new Jt(_e(e.sel.ranges,function(n){return new Be(le(n.anchor.line+t,n.anchor.ch),le(n.head.line+t,n.head.ch))}),e.sel.primIndex),e.cm)){Bt(e.cm,e.first,e.first-t,t);for(var i=e.cm.display,r=i.viewFrom;re.lastLine())){if(t.from.linef&&(t={from:t.from,to:le(f,me(e,f).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ot(e,t.from,t.to),i||(i=Uo(e,t)),e.cm?lu(e.cm,t,r):qo(e,t,r),$n(e,i,K),e.cantEdit&&Jn(e,le(e.firstLine(),0))&&(e.cantEdit=!1)}}function lu(e,t,i){var r=e.doc,n=e.display,f=t.from,S=t.to,x=!1,M=f.line;e.options.lineWrapping||(M=Re(nt(me(r,f.line))),r.iter(M,S.line+1,function(J){if(J==n.maxLine)return x=!0,!0})),r.sel.contains(t.from,t.to)>-1&&fr(e),qo(r,t,i,ta(e)),e.options.lineWrapping||(r.iter(M,f.line+t.text.length,function(J){var re=ir(J);re>n.maxLineLength&&(n.maxLine=J,n.maxLineLength=re,n.maxLineChanged=!0,x=!1)}),x&&(e.curOp.updateMaxLine=!0)),In(r,f.line),bn(e,400);var P=t.text.length-(S.line-f.line)-1;t.full?Bt(e):f.line==S.line&&t.text.length==1&&!ma(e.doc,t)?oi(e,f.line,"text"):Bt(e,f.line,S.line+1,P);var z=Ke(e,"changes"),Z=Ke(e,"change");if(Z||z){var Q={from:f,to:S,text:t.text,removed:t.removed,origin:t.origin};Z&&ot(e,"change",e,Q),z&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(Q)}e.display.selForContextMenu=null}function $i(e,t,i,r,n){var f;r||(r=i),I(r,i)<0&&(f=[r,i],i=f[0],r=f[1]),typeof t=="string"&&(t=e.splitLines(t)),Vi(e,{from:i,to:r,text:t,origin:n})}function Ha(e,t,i,r){i1||!(this.children[0]instanceof xn))){var x=[];this.collapse(x),this.children=[new xn(x)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var S=n.lines.length%25+25,x=S;x10);e.parent.maybeSpill()}},iterN:function(e,t,i){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=P,e.display.maxLineLength=z,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Bt(e,r,n+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ma(e.doc)),e&&ot(e,"markerCleared",e,this,r,n),t&&Ti(e),this.parent&&this.parent.clear()}},ui.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);for(var i,r,n=0;n0||S==0&&f.clearWhenEmpty!==!1)return f;if(f.replacedWith&&(f.collapsed=!0,f.widgetNode=B("span",[f.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||f.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(f.widgetNode.insertLeft=!0)),f.collapsed){if(qt(e,t.line,t,i,f)||t.line!=i.line&&qt(e,i.line,t,i,f))throw new Error("Inserting collapsed marker partially overlapping an existing one");se()}f.addToHistory&&wa(e,{from:t,to:i,origin:"markText"},e.sel,NaN);var x=t.line,M=e.cm,P;if(e.iter(x,i.line+1,function(Z){M&&f.collapsed&&!M.options.lineWrapping&&nt(Z)==M.display.maxLine&&(P=!0),f.collapsed&&x!=t.line&&it(Z,0),mi(Z,new te(f,x==t.line?t.ch:null,x==i.line?i.ch:null),e.cm&&e.cm.curOp),++x}),f.collapsed&&e.iter(t.line,i.line+1,function(Z){xt(e,Z)&&it(Z,0)}),f.clearOnEnter&&we(f,"beforeCursorEnter",function(){return f.clear()}),f.readOnly&&(mo(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),f.collapsed&&(f.id=++ja,f.atomic=!0),M){if(P&&(M.curOp.updateMaxLine=!0),f.collapsed)Bt(M,t.line,i.line+1);else if(f.className||f.startStyle||f.endStyle||f.css||f.attributes||f.title)for(var z=t.line;z<=i.line;z++)oi(M,z,"text");f.atomic&&Ma(M.doc),ot(M,"markerAdded",M,f)}return f}var Tn=function(e,t){this.markers=e,this.primary=t;for(var i=0;i=0;M--)Vi(this,r[M]);x?Ta(this,x):this.cm&&Gi(this.cm)}),undo:at(function(){Qn(this,"undo")}),redo:at(function(){Qn(this,"redo")}),undoSelection:at(function(){Qn(this,"undo",!0)}),redoSelection:at(function(){Qn(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,i=0,r=0;r=e.ch)&&t.push(n.marker.parent||n.marker)}return t},findMarks:function(e,t,i){e=pe(this,e),t=pe(this,t);var r=[],n=e.line;return this.iter(e.line,t.line+1,function(f){var S=f.markedSpans;if(S)for(var x=0;x=M.to||M.from==null&&n!=e.line||M.from!=null&&n==t.line&&M.from>=t.ch)&&(!i||i(M.marker))&&r.push(M.marker.parent||M.marker)}++n}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var i=t.markedSpans;if(i)for(var r=0;re)return t=e,!0;e-=f,++i}),pe(this,le(i,t))},indexFromPos:function(e){e=pe(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var z=e.dataTransfer.getData("Text");if(z){var Z;if(t.state.draggingText&&!t.state.draggingText.copy&&(Z=t.listSelections()),$n(t.doc,ai(i,i)),Z)for(var Q=0;Q=0;x--)$i(e.doc,"",r[x].from,r[x].to,"+delete");Gi(e)})}function Yo(e,t,i){var r=ti(e.text,t+i,i);return r<0||r>e.text.length?null:r}function Zo(e,t,i){var r=Yo(e,t.ch,i);return r==null?null:new le(t.line,r,i<0?"after":"before")}function Vo(e,t,i,r,n){if(e){t.doc.direction=="rtl"&&(n=-n);var f=ut(i,t.doc.direction);if(f){var S=n<0?Ae(f):f[0],x=n<0==(S.level==1),M=x?"after":"before",P;if(S.level>0||t.doc.direction=="rtl"){var z=Ui(t,i);P=n<0?i.text.length-1:0;var Z=Ir(t,z,P).top;P=Nt(function(Q){return Ir(t,z,Q).top==Z},n<0==(S.level==1)?S.from:S.to-1,P),M=="before"&&(P=Yo(i,P,1))}else P=n<0?S.to:S.from;return new le(r,P,M)}}return new le(r,n<0?i.text.length:0,n<0?"before":"after")}function Cu(e,t,i,r){var n=ut(t,e.doc.direction);if(!n)return Zo(t,i,r);i.ch>=t.text.length?(i.ch=t.text.length,i.sticky="before"):i.ch<=0&&(i.ch=0,i.sticky="after");var f=Ne(n,i.ch,i.sticky),S=n[f];if(e.doc.direction=="ltr"&&S.level%2==0&&(r>0?S.to>i.ch:S.from=S.from&&Q>=z.begin)){var J=Z?"before":"after";return new le(i.line,Q,J)}}var re=function(he,ge,de){for(var ye=function(He,lt){return lt?new le(i.line,x(He,1),"before"):new le(i.line,He,"after")};he>=0&&he0==(xe.level!=1),Me=Le?de.begin:x(de.end,-1);if(xe.from<=Me&&Me0?z.end:x(z.begin,-1);return ue!=null&&!(r>0&&ue==t.text.length)&&(ae=re(r>0?0:n.length-1,r,P(ue)),ae)?ae:null}var On={selectAll:Da,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),K)},killLine:function(e){return en(e,function(t){if(t.empty()){var i=me(e.doc,t.head.line).text.length;return t.head.ch==i&&t.head.line0)n=new le(n.line,n.ch+1),e.replaceRange(f.charAt(n.ch-1)+f.charAt(n.ch-2),le(n.line,n.ch-2),n,"+transpose");else if(n.line>e.doc.first){var S=me(e.doc,n.line-1).text;S&&(n=new le(n.line,1),e.replaceRange(f.charAt(0)+e.doc.lineSeparator()+S.charAt(S.length-1),le(n.line-1,S.length-1),n,"+transpose"))}}i.push(new Be(n,n))}e.setSelections(i)})},newlineAndIndent:function(e){return Kt(e,function(){for(var t=e.listSelections(),i=t.length-1;i>=0;i--)e.replaceRange(e.doc.lineSeparator(),t[i].anchor,t[i].head,"+input");t=e.listSelections();for(var r=0;re&&I(t,this.pos)==0&&i==this.button};var Dn,Bn;function Au(e,t){var i=+new Date;return Bn&&Bn.compare(i,e,t)?(Dn=Bn=null,"triple"):Dn&&Dn.compare(i,e,t)?(Bn=new Jo(i,e,t),Dn=null,"double"):(Dn=new Jo(i,e,t),Bn=null,"single")}function il(e){var t=this,i=t.display;if(!(We(t,e)||i.activeTouch&&i.input.supportsTouch())){if(i.input.ensurePolled(),i.shift=e.shiftKey,Yr(i,e)){g||(i.scroller.draggable=!1,setTimeout(function(){return i.scroller.draggable=!0},100));return}if(!Qo(t,e)){var r=wi(t,e),n=Wr(e),f=r?Au(r,n):"single";window.focus(),n==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&Mu(t,n,r,f,e))&&(n==1?r?Ru(t,r,f,e):Yt(e)==i.scroller&&Xe(e):n==2?(r&&Vn(t.doc,r),setTimeout(function(){return i.input.focus()},20)):n==3&&(O?t.display.input.onContextMenu(e):Do(t)))}}}function Mu(e,t,i,r,n){var f="Click";return r=="double"?f="Double"+f:r=="triple"&&(f="Triple"+f),f=(t==1?"Left":t==2?"Middle":"Right")+f,Rn(e,Ya(f,n),n,function(S){if(typeof S=="string"&&(S=On[S]),!S)return!1;var x=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),x=S(e,i)!=Y}finally{e.state.suppressEdits=!1}return x})}function Ou(e,t,i){var r=e.getOption("configureMouse"),n=r?r(e,t,i):{};if(n.unit==null){var f=u?i.shiftKey&&i.metaKey:i.altKey;n.unit=f?"rectangle":t=="single"?"char":t=="double"?"word":"line"}return(n.extend==null||e.doc.extend)&&(n.extend=e.doc.extend||i.shiftKey),n.addNew==null&&(n.addNew=a?i.metaKey:i.ctrlKey),n.moveOnDrag==null&&(n.moveOnDrag=!(a?i.altKey:i.ctrlKey)),n}function Ru(e,t,i,r){m?setTimeout(be(na,e),0):e.curOp.focus=G();var n=Ou(e,i,r),f=e.doc.sel,S;e.options.dragDrop&&Lr&&!e.isReadOnly()&&i=="single"&&(S=f.contains(t))>-1&&(I((S=f.ranges[S]).from(),t)<0||t.xRel>0)&&(I(S.to(),t)>0||t.xRel<0)?Du(e,r,t,n):Bu(e,r,t,n)}function Du(e,t,i,r){var n=e.display,f=!1,S=st(e,function(P){g&&(n.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:Do(e)),Qe(n.wrapper.ownerDocument,"mouseup",S),Qe(n.wrapper.ownerDocument,"mousemove",x),Qe(n.scroller,"dragstart",M),Qe(n.scroller,"drop",S),f||(Xe(P),r.addNew||Vn(e.doc,i,null,null,r.extend),g&&!p||m&&_==9?setTimeout(function(){n.wrapper.ownerDocument.body.focus({preventScroll:!0}),n.input.focus()},20):n.input.focus())}),x=function(P){f=f||Math.abs(t.clientX-P.clientX)+Math.abs(t.clientY-P.clientY)>=10},M=function(){return f=!0};g&&(n.scroller.draggable=!0),e.state.draggingText=S,S.copy=!r.moveOnDrag,we(n.wrapper.ownerDocument,"mouseup",S),we(n.wrapper.ownerDocument,"mousemove",x),we(n.scroller,"dragstart",M),we(n.scroller,"drop",S),e.state.delayingBlurEvent=!0,setTimeout(function(){return n.input.focus()},20),n.scroller.dragDrop&&n.scroller.dragDrop()}function nl(e,t,i){if(i=="char")return new Be(t,t);if(i=="word")return e.findWordAt(t);if(i=="line")return new Be(le(t.line,0),pe(e.doc,le(t.line+1,0)));var r=i(e,t);return new Be(r.from,r.to)}function Bu(e,t,i,r){m&&Do(e);var n=e.display,f=e.doc;Xe(t);var S,x,M=f.sel,P=M.ranges;if(r.addNew&&!r.extend?(x=f.sel.contains(i),x>-1?S=P[x]:S=new Be(i,i)):(S=f.sel.primary(),x=f.sel.primIndex),r.unit=="rectangle")r.addNew||(S=new Be(i,i)),i=wi(e,t,!0,!0),x=-1;else{var z=nl(e,i,r.unit);r.extend?S=Go(S,z.anchor,z.head,r.extend):S=z}r.addNew?x==-1?(x=P.length,yt(f,br(e,P.concat([S]),x),{scroll:!1,origin:"*mouse"})):P.length>1&&P[x].empty()&&r.unit=="char"&&!r.extend?(yt(f,br(e,P.slice(0,x).concat(P.slice(x+1)),0),{scroll:!1,origin:"*mouse"}),M=f.sel):Xo(f,x,S,Se):(x=0,yt(f,new Jt([S],0),Se),M=f.sel);var Z=i;function Q(de){if(I(Z,de)!=0)if(Z=de,r.unit=="rectangle"){for(var ye=[],xe=e.options.tabSize,Le=Ee(me(f,i.line).text,i.ch,xe),Me=Ee(me(f,de.line).text,de.ch,xe),He=Math.min(Le,Me),lt=Math.max(Le,Me),qe=Math.min(i.line,de.line),Gt=Math.min(e.lastLine(),Math.max(i.line,de.line));qe<=Gt;qe++){var It=me(f,qe).text,Ve=Ce(It,He,xe);He==lt?ye.push(new Be(le(qe,Ve),le(qe,Ve))):It.length>Ve&&ye.push(new Be(le(qe,Ve),le(qe,Ce(It,lt,xe))))}ye.length||ye.push(new Be(i,i)),yt(f,br(e,M.ranges.slice(0,x).concat(ye),x),{origin:"*mouse",scroll:!1}),e.scrollIntoView(de)}else{var Ht=S,pt=nl(e,de,r.unit),rt=Ht.anchor,$e;I(pt.anchor,rt)>0?($e=pt.head,rt=Te(Ht.from(),pt.anchor)):($e=pt.anchor,rt=ce(Ht.to(),pt.head));var Ge=M.ranges.slice(0);Ge[x]=Pu(e,new Be(pe(f,rt),$e)),yt(f,br(e,Ge,x),Se)}}var J=n.wrapper.getBoundingClientRect(),re=0;function ae(de){var ye=++re,xe=wi(e,de,!0,r.unit=="rectangle");if(!!xe)if(I(xe,Z)!=0){e.curOp.focus=G(),Q(xe);var Le=qn(n,f);(xe.line>=Le.to||xe.lineJ.bottom?20:0;Me&&setTimeout(st(e,function(){re==ye&&(n.scroller.scrollTop+=Me,ae(de))}),50)}}function ue(de){e.state.selectingText=!1,re=1/0,de&&(Xe(de),n.input.focus()),Qe(n.wrapper.ownerDocument,"mousemove",he),Qe(n.wrapper.ownerDocument,"mouseup",ge),f.history.lastSelOrigin=null}var he=st(e,function(de){de.buttons===0||!Wr(de)?ue(de):ae(de)}),ge=st(e,ue);e.state.selectingText=ge,we(n.wrapper.ownerDocument,"mousemove",he),we(n.wrapper.ownerDocument,"mouseup",ge)}function Pu(e,t){var i=t.anchor,r=t.head,n=me(e.doc,i.line);if(I(i,r)==0&&i.sticky==r.sticky)return t;var f=ut(n);if(!f)return t;var S=Ne(f,i.ch,i.sticky),x=f[S];if(x.from!=i.ch&&x.to!=i.ch)return t;var M=S+(x.from==i.ch==(x.level!=1)?0:1);if(M==0||M==f.length)return t;var P;if(r.line!=i.line)P=(r.line-i.line)*(e.doc.direction=="ltr"?1:-1)>0;else{var z=Ne(f,r.ch,r.sticky),Z=z-S||(r.ch-i.ch)*(x.level==1?-1:1);z==M-1||z==M?P=Z<0:P=Z>0}var Q=f[M+(P?-1:0)],J=P==(Q.level==1),re=J?Q.from:Q.to,ae=J?"after":"before";return i.ch==re&&i.sticky==ae?t:new Be(new le(i.line,re,ae),r)}function ol(e,t,i,r){var n,f;if(t.touches)n=t.touches[0].clientX,f=t.touches[0].clientY;else try{n=t.clientX,f=t.clientY}catch{return!1}if(n>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Xe(t);var S=e.display,x=S.lineDiv.getBoundingClientRect();if(f>x.bottom||!Ke(e,i))return ft(t);f-=x.top-S.viewOffset;for(var M=0;M=n){var z=Rt(e.doc,f),Z=e.display.gutterSpecs[M];return ke(e,i,e,z,Z.className,t),ft(t)}}}function Qo(e,t){return ol(e,t,"gutterClick",!0)}function sl(e,t){Yr(e.display,t)||Iu(e,t)||We(e,t,"contextmenu")||O||e.display.input.onContextMenu(t)}function Iu(e,t){return Ke(e,"gutterContextMenu")?ol(e,t,"gutterContextMenu",!1):!1}function al(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),pn(e)}var tn={toString:function(){return"CodeMirror.Init"}},ll={},io={};function Hu(e){var t=e.optionHandlers;function i(r,n,f,S){e.defaults[r]=n,f&&(t[r]=S?function(x,M,P){P!=tn&&f(x,M,P)}:f)}e.defineOption=i,e.Init=tn,i("value","",function(r,n){return r.setValue(n)},!0),i("mode",null,function(r,n){r.doc.modeOption=n,zo(r)},!0),i("indentUnit",2,zo,!0),i("indentWithTabs",!1),i("smartIndent",!0),i("tabSize",4,function(r){Cn(r),pn(r),Bt(r)},!0),i("lineSeparator",null,function(r,n){if(r.doc.lineSep=n,!!n){var f=[],S=r.doc.first;r.doc.iter(function(M){for(var P=0;;){var z=M.text.indexOf(n,P);if(z==-1)break;P=z+n.length,f.push(le(S,z))}S++});for(var x=f.length-1;x>=0;x--)$i(r.doc,n,f[x],le(f[x].line,f[x].ch+n.length))}}),i("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(r,n,f){r.state.specialChars=new RegExp(n.source+(n.test(" ")?"":"| "),"g"),f!=tn&&r.refresh()}),i("specialCharPlaceholder",hc,function(r){return r.refresh()},!0),i("electricChars",!0),i("inputStyle",l?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),i("spellcheck",!1,function(r,n){return r.getInputField().spellcheck=n},!0),i("autocorrect",!1,function(r,n){return r.getInputField().autocorrect=n},!0),i("autocapitalize",!1,function(r,n){return r.getInputField().autocapitalize=n},!0),i("rtlMoveVisually",!v),i("wholeLineUpdateBefore",!0),i("theme","default",function(r){al(r),Sn(r)},!0),i("keyMap","default",function(r,n,f){var S=to(n),x=f!=tn&&to(f);x&&x.detach&&x.detach(r,S),S.attach&&S.attach(r,x||null)}),i("extraKeys",null),i("configureMouse",null),i("lineWrapping",!1,Nu,!0),i("gutters",[],function(r,n){r.display.gutterSpecs=jo(n,r.options.lineNumbers),Sn(r)},!0),i("fixedGutter",!0,function(r,n){r.display.gutters.style.left=n?Ao(r.display)+"px":"0",r.refresh()},!0),i("coverGutterNextToScrollbar",!1,function(r){return Xi(r)},!0),i("scrollbarStyle","native",function(r){ua(r),Xi(r),r.display.scrollbars.setScrollTop(r.doc.scrollTop),r.display.scrollbars.setScrollLeft(r.doc.scrollLeft)},!0),i("lineNumbers",!1,function(r,n){r.display.gutterSpecs=jo(r.options.gutters,n),Sn(r)},!0),i("firstLineNumber",1,Sn,!0),i("lineNumberFormatter",function(r){return r},Sn,!0),i("showCursorWhenSelecting",!1,vn,!0),i("resetSelectionOnContextMenu",!0),i("lineWiseCopyCut",!0),i("pasteLinesPerSelection",!0),i("selectionsMayTouch",!1),i("readOnly",!1,function(r,n){n=="nocursor"&&(Ki(r),r.display.input.blur()),r.display.input.readOnlyChanged(n)}),i("screenReaderLabel",null,function(r,n){n=n===""?null:n,r.display.input.screenReaderLabelChanged(n)}),i("disableInput",!1,function(r,n){n||r.display.input.reset()},!0),i("dragDrop",!0,Fu),i("allowDropFileTypes",null),i("cursorBlinkRate",530),i("cursorScrollMargin",0),i("cursorHeight",1,vn,!0),i("singleCursorHeightPerLine",!0,vn,!0),i("workTime",100),i("workDelay",100),i("flattenSpans",!0,Cn,!0),i("addModeClass",!1,Cn,!0),i("pollInterval",100),i("undoDepth",200,function(r,n){return r.doc.history.undoDepth=n}),i("historyEventDelay",1250),i("viewportMargin",10,function(r){return r.refresh()},!0),i("maxHighlightLength",1e4,Cn,!0),i("moveInputWithCursor",!0,function(r,n){n||r.display.input.resetPosition()}),i("tabindex",null,function(r,n){return r.display.input.getField().tabIndex=n||""}),i("autofocus",null),i("direction","ltr",function(r,n){return r.doc.setDirection(n)},!0),i("phrases",null)}function Fu(e,t,i){var r=i&&i!=tn;if(!t!=!r){var n=e.display.dragFunctions,f=t?we:Qe;f(e.display.scroller,"dragstart",n.start),f(e.display.scroller,"dragenter",n.enter),f(e.display.scroller,"dragover",n.over),f(e.display.scroller,"dragleave",n.leave),f(e.display.scroller,"drop",n.drop)}}function Nu(e){e.options.lineWrapping?($(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(A(e.display.wrapper,"CodeMirror-wrap"),yr(e)),Mo(e),Bt(e),pn(e),setTimeout(function(){return Xi(e)},100)}function ze(e,t){var i=this;if(!(this instanceof ze))return new ze(e,t);this.options=t=t?ve(t):{},ve(ll,t,!1);var r=t.value;typeof r=="string"?r=new Pt(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var n=new ze.inputStyles[t.inputStyle](this),f=this.display=new Jc(e,r,n,t);f.wrapper.CodeMirror=this,al(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ua(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new U,keySeq:null,specialChars:null},t.autofocus&&!l&&f.input.focus(),m&&_<11&&setTimeout(function(){return i.display.input.reset(!0)},20),Wu(this),_u(),Ei(this),this.curOp.forceUpdate=!0,ba(this,r),t.autofocus&&!l||this.hasFocus()?setTimeout(function(){i.hasFocus()&&!i.state.focused&&Bo(i)},20):Ki(this);for(var S in io)io.hasOwnProperty(S)&&io[S](this,t[S],tn);da(this),t.finishInit&&t.finishInit(this);for(var x=0;x20*20}we(t.scroller,"touchstart",function(M){if(!We(e,M)&&!f(M)&&!Qo(e,M)){t.input.ensurePolled(),clearTimeout(i);var P=+new Date;t.activeTouch={start:P,moved:!1,prev:P-r.end<=300?r:null},M.touches.length==1&&(t.activeTouch.left=M.touches[0].pageX,t.activeTouch.top=M.touches[0].pageY)}}),we(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),we(t.scroller,"touchend",function(M){var P=t.activeTouch;if(P&&!Yr(t,M)&&P.left!=null&&!P.moved&&new Date-P.start<300){var z=e.coordsChar(t.activeTouch,"page"),Z;!P.prev||S(P,P.prev)?Z=new Be(z,z):!P.prev.prev||S(P,P.prev.prev)?Z=e.findWordAt(z):Z=new Be(le(z.line,0),pe(e.doc,le(z.line+1,0))),e.setSelection(Z.anchor,Z.head),e.focus(),Xe(M)}n()}),we(t.scroller,"touchcancel",n),we(t.scroller,"scroll",function(){t.scroller.clientHeight&&(_n(e,t.scroller.scrollTop),xi(e,t.scroller.scrollLeft,!0),ke(e,"scroll",e))}),we(t.scroller,"mousewheel",function(M){return ga(e,M)}),we(t.scroller,"DOMMouseScroll",function(M){return ga(e,M)}),we(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(M){We(e,M)||Qt(M)},over:function(M){We(e,M)||(gu(e,M),Qt(M))},start:function(M){return vu(e,M)},drop:st(e,pu),leave:function(M){We(e,M)||qa(e)}};var x=t.input.getField();we(x,"keyup",function(M){return tl.call(e,M)}),we(x,"keydown",st(e,el)),we(x,"keypress",st(e,rl)),we(x,"focus",function(M){return Bo(e,M)}),we(x,"blur",function(M){return Ki(e,M)})}var es=[];ze.defineInitHook=function(e){return es.push(e)};function Pn(e,t,i,r){var n=e.doc,f;i==null&&(i="add"),i=="smart"&&(n.mode.indent?f=Kr(e,t).state:i="prev");var S=e.options.tabSize,x=me(n,t),M=Ee(x.text,null,S);x.stateAfter&&(x.stateAfter=null);var P=x.text.match(/^\s*/)[0],z;if(!r&&!/\S/.test(x.text))z=0,i="not";else if(i=="smart"&&(z=n.mode.indent(f,x.text.slice(P.length),x.text),z==Y||z>150)){if(!r)return;i="prev"}i=="prev"?t>n.first?z=Ee(me(n,t-1).text,null,S):z=0:i=="add"?z=M+e.options.indentUnit:i=="subtract"?z=M-e.options.indentUnit:typeof i=="number"&&(z=M+i),z=Math.max(0,z);var Z="",Q=0;if(e.options.indentWithTabs)for(var J=Math.floor(z/S);J;--J)Q+=S,Z+=" ";if(QS,M=kr(t),P=null;if(x&&r.ranges.length>1)if(Sr&&Sr.text.join(` -`)==t){if(r.ranges.length%Sr.text.length==0){P=[];for(var z=0;z=0;Q--){var J=r.ranges[Q],re=J.from(),ae=J.to();J.empty()&&(i&&i>0?re=le(re.line,re.ch-i):e.state.overwrite&&!x?ae=le(ae.line,Math.min(me(f,ae.line).text.length,ae.ch+Ae(M).length)):x&&Sr&&Sr.lineWise&&Sr.text.join(` -`)==M.join(` -`)&&(re=ae=le(re.line,0)));var ue={from:re,to:ae,text:P?P[Q%P.length]:M,origin:n||(x?"paste":e.state.cutIncoming>S?"cut":"+input")};Vi(e.doc,ue),ot(e,"inputRead",e,ue)}t&&!x&&ul(e,t),Gi(e),e.curOp.updateInput<2&&(e.curOp.updateInput=Z),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function cl(e,t){var i=e.clipboardData&&e.clipboardData.getData("Text");if(i)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&Kt(t,function(){return ts(t,i,0,null,"paste")}),!0}function ul(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var i=e.doc.sel,r=i.ranges.length-1;r>=0;r--){var n=i.ranges[r];if(!(n.head.ch>100||r&&i.ranges[r-1].head.line==n.head.line)){var f=e.getModeAt(n.head),S=!1;if(f.electricChars){for(var x=0;x-1){S=Pn(e,n.head.line,"smart");break}}else f.electricInput&&f.electricInput.test(me(e.doc,n.head.line).text.slice(0,n.head.ch))&&(S=Pn(e,n.head.line,"smart"));S&&ot(e,"electricInput",e,n.head.line)}}}function fl(e){for(var t=[],i=[],r=0;rf&&(Pn(this,x.head.line,r,!0),f=x.head.line,S==this.doc.sel.primIndex&&Gi(this));else{var M=x.from(),P=x.to(),z=Math.max(f,M.line);f=Math.min(this.lastLine(),P.line-(P.ch?0:1))+1;for(var Z=z;Z0&&Xo(this.doc,S,new Be(M,Q[S].to()),K)}}}),getTokenAt:function(r,n){return Fi(this,r,n)},getLineTokens:function(r,n){return Fi(this,le(r),n,!0)},getTokenTypeAt:function(r){r=pe(this.doc,r);var n=Pi(this,me(this.doc,r.line)),f=0,S=(n.length-1)/2,x=r.ch,M;if(x==0)M=n[2];else for(;;){var P=f+S>>1;if((P?n[P*2-1]:0)>=x)S=P;else if(n[P*2+1]M&&(r=M,S=!0),x=me(this.doc,r)}else x=r;return Nn(this,x,{top:0,left:0},n||"page",f||S).top+(S?this.doc.height-$t(x):0)},defaultTextHeight:function(){return zi(this.display)},defaultCharWidth:function(){return qi(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(r,n,f,S,x){var M=this.display;r=mr(this,pe(this.doc,r));var P=r.bottom,z=r.left;if(n.style.position="absolute",n.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(n),M.sizer.appendChild(n),S=="over")P=r.top;else if(S=="above"||S=="near"){var Z=Math.max(M.wrapper.clientHeight,this.doc.height),Q=Math.max(M.sizer.clientWidth,M.lineSpace.clientWidth);(S=="above"||r.bottom+n.offsetHeight>Z)&&r.top>n.offsetHeight?P=r.top-n.offsetHeight:r.bottom+n.offsetHeight<=Z&&(P=r.bottom),z+n.offsetWidth>Q&&(z=Q-n.offsetWidth)}n.style.top=P+"px",n.style.left=n.style.right="",x=="right"?(z=M.sizer.clientWidth-n.offsetWidth,n.style.right="0px"):(x=="left"?z=0:x=="middle"&&(z=(M.sizer.clientWidth-n.offsetWidth)/2),n.style.left=z+"px"),f&&Fc(this,{left:z,top:P,right:z+n.offsetWidth,bottom:P+n.offsetHeight})},triggerOnKeyDown:kt(el),triggerOnKeyPress:kt(rl),triggerOnKeyUp:tl,triggerOnMouseDown:kt(il),execCommand:function(r){if(On.hasOwnProperty(r))return On[r].call(null,this)},triggerElectric:kt(function(r){ul(this,r)}),findPosH:function(r,n,f,S){var x=1;n<0&&(x=-1,n=-n);for(var M=pe(this.doc,r),P=0;P0&&z(f.charAt(S-1));)--S;for(;x.5||this.options.lineWrapping)&&Mo(this),ke(this,"refresh",this)}),swapDoc:kt(function(r){var n=this.doc;return n.cm=null,this.state.selectingText&&this.state.selectingText(),ba(this,r),pn(this),this.display.input.reset(),gn(this,r.scrollLeft,r.scrollTop),this.curOp.forceScroll=!0,ot(this,"swapDoc",this,n),n}),phrase:function(r){var n=this.options.phrases;return n&&Object.prototype.hasOwnProperty.call(n,r)?n[r]:r},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},At(e),e.registerHelper=function(r,n,f){i.hasOwnProperty(r)||(i[r]=e[r]={_global:[]}),i[r][n]=f},e.registerGlobalHelper=function(r,n,f,S){e.registerHelper(r,n,S),i[r]._global.push({pred:f,val:S})}}function rs(e,t,i,r,n){var f=t,S=i,x=me(e,t.line),M=n&&e.direction=="rtl"?-i:i;function P(){var ge=t.line+M;return ge=e.first+e.size?!1:(t=new le(ge,t.ch,t.sticky),x=me(e,ge))}function z(ge){var de;if(r=="codepoint"){var ye=x.text.charCodeAt(t.ch+(i>0?0:-1));if(isNaN(ye))de=null;else{var xe=i>0?ye>=55296&&ye<56320:ye>=56320&&ye<57343;de=new le(t.line,Math.max(0,Math.min(x.text.length,t.ch+i*(xe?2:1))),-i)}}else n?de=Cu(e.cm,x,t,i):de=Zo(x,t,i);if(de==null)if(!ge&&P())t=Vo(n,e.cm,x,t.line,M);else return!1;else t=de;return!0}if(r=="char"||r=="codepoint")z();else if(r=="column")z(!0);else if(r=="word"||r=="group")for(var Z=null,Q=r=="group",J=e.cm&&e.cm.getHelper(t,"wordChars"),re=!0;!(i<0&&!z(!re));re=!1){var ae=x.text.charAt(t.ch)||` + left: `+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(h),h.scrollIntoView(n),e.display.lineSpace.removeChild(h)}}}function Hc(e,t,i,r){r==null&&(r=0);var n;!e.options.lineWrapping&&t==i&&(i=t.sticky=="before"?le(t.line,t.ch+1,"before"):t,t=t.ch?le(t.line,t.sticky=="before"?t.ch-1:t.ch,"after"):t);for(var h=0;h<5;h++){var S=!1,x=mr(e,t),O=!i||i==t?x:mr(e,i);n={left:Math.min(x.left,O.left),top:Math.min(x.top,O.top)-r,right:Math.max(x.left,O.left),bottom:Math.max(x.bottom,O.bottom)+r};var P=Po(e,n),z=e.doc.scrollTop,Z=e.doc.scrollLeft;if(P.scrollTop!=null&&(_n(e,P.scrollTop),Math.abs(e.doc.scrollTop-z)>1&&(S=!0)),P.scrollLeft!=null&&(xi(e,P.scrollLeft),Math.abs(e.doc.scrollLeft-Z)>1&&(S=!0)),!S)break}return n}function Fc(e,t){var i=Po(e,t);i.scrollTop!=null&&_n(e,i.scrollTop),i.scrollLeft!=null&&xi(e,i.scrollLeft)}function Po(e,t){var i=e.display,r=zi(e.display);t.top<0&&(t.top=0);var n=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:i.scroller.scrollTop,h=Co(e),S={};t.bottom-t.top>h&&(t.bottom=t.top+h);var x=e.doc.height+So(i),O=t.topx-r;if(t.topn+h){var z=Math.min(t.top,(P?x:t.bottom)-h);z!=n&&(S.scrollTop=z)}var Z=e.options.fixedGutter?0:i.gutters.offsetWidth,Q=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:i.scroller.scrollLeft-Z,J=Si(e)-i.gutters.offsetWidth,re=t.right-t.left>J;return re&&(t.right=t.left+J),t.left<10?S.scrollLeft=0:t.leftJ+Q-3&&(S.scrollLeft=t.right+(re?0:10)-J),S}function Io(e,t){t!=null&&(Kn(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Gi(e){Kn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function gn(e,t,i){(t!=null||i!=null)&&Kn(e),t!=null&&(e.curOp.scrollLeft=t),i!=null&&(e.curOp.scrollTop=i)}function Nc(e,t){Kn(e),e.curOp.scrollToPos=t}function Kn(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var i=Js(e,t.from),r=Js(e,t.to);sa(e,i,r,t.margin)}}function sa(e,t,i,r){var n=Po(e,{left:Math.min(t.left,i.left),top:Math.min(t.top,i.top)-r,right:Math.max(t.right,i.right),bottom:Math.max(t.bottom,i.bottom)+r});gn(e,n.scrollLeft,n.scrollTop)}function _n(e,t){Math.abs(e.doc.scrollTop-t)<2||(E||Fo(e,{top:t}),aa(e,t,!0),E&&Fo(e),bn(e,100))}function aa(e,t,i){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!i)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function xi(e,t,i,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((i?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,ha(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function yn(e){var t=e.display,i=t.gutters.offsetWidth,r=Math.round(e.doc.height+So(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?i:0,docHeight:r,scrollHeight:r+Pr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:i}}var ki=function(e,t,i){this.cm=i;var r=this.vert=W("div",[W("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),n=this.horiz=W("div",[W("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=n.tabIndex=-1,e(r),e(n),we(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),we(n,"scroll",function(){n.clientWidth&&t(n.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,m&&_<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};ki.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,i=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(i){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var n=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+n)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=i?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var h=e.viewWidth-e.barLeft-(i?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+h)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:i?r:0,bottom:t?r:0}},ki.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},ki.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},ki.prototype.zeroWidthHack=function(){var e=a&&!C?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new U,this.disableVert=new U},ki.prototype.enableZeroWidthBar=function(e,t,i){e.style.pointerEvents="auto";function r(){var n=e.getBoundingClientRect(),h=i=="vert"?document.elementFromPoint(n.right-1,(n.top+n.bottom)/2):document.elementFromPoint((n.right+n.left)/2,n.bottom-1);h!=e?e.style.pointerEvents="none":t.set(1e3,r)}t.set(1e3,r)},ki.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var mn=function(){};mn.prototype.update=function(){return{bottom:0,right:0}},mn.prototype.setScrollLeft=function(){},mn.prototype.setScrollTop=function(){},mn.prototype.clear=function(){};function Xi(e,t){t||(t=yn(e));var i=e.display.barWidth,r=e.display.barHeight;la(e,t);for(var n=0;n<4&&i!=e.display.barWidth||r!=e.display.barHeight;n++)i!=e.display.barWidth&&e.options.lineWrapping&&zn(e),la(e,yn(e)),i=e.display.barWidth,r=e.display.barHeight}function la(e,t){var i=e.display,r=i.scrollbars.update(t);i.sizer.style.paddingRight=(i.barWidth=r.right)+"px",i.sizer.style.paddingBottom=(i.barHeight=r.bottom)+"px",i.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(i.scrollbarFiller.style.display="block",i.scrollbarFiller.style.height=r.bottom+"px",i.scrollbarFiller.style.width=r.right+"px"):i.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(i.gutterFiller.style.display="block",i.gutterFiller.style.height=r.bottom+"px",i.gutterFiller.style.width=t.gutterWidth+"px"):i.gutterFiller.style.display=""}var ca={native:ki,null:mn};function ua(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&M(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new ca[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),we(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,i){i=="horizontal"?xi(e,t):_n(e,t)},e),e.display.scrollbars.addClass&&$(e.display.wrapper,e.display.scrollbars.addClass)}var Wc=0;function Ei(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wc,markArrays:null},_c(e.curOp)}function Ti(e){var t=e.curOp;t&&mc(t,function(i){for(var r=0;r=i.viewTo)||i.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Gn(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function zc(e){e.updatedDisplay=e.mustUpdate&&Ho(e.cm,e.update)}function qc(e){var t=e.cm,i=t.display;e.updatedDisplay&&zn(t),e.barMeasure=yn(t),i.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=qs(t,i.maxLine,i.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(i.scroller.clientWidth,i.sizer.offsetLeft+e.adjustWidthTo+Pr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,i.sizer.offsetLeft+e.adjustWidthTo-Si(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=i.input.prepareSelection())}function Kc(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var i=+new Date+e.options.workTime,r=Kr(e,t.highlightFrontier),n=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(h){if(r.line>=e.display.viewFrom){var S=h.styles,x=h.text.length>e.options.maxHighlightLength?dt(t.mode,r.state):null,O=Bi(e,h,r,!0);x&&(r.state=x),h.styles=O.styles;var P=h.styleClasses,z=O.classes;z?h.styleClasses=z:P&&(h.styleClasses=null);for(var Z=!S||S.length!=h.styles.length||P!=z&&(!P||!z||P.bgClass!=z.bgClass||P.textClass!=z.textClass),Q=0;!Z&&Qi)return bn(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),n.length&&Kt(e,function(){for(var h=0;h=i.viewFrom&&t.visible.to<=i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo)&&i.renderedView==i.view&&ra(e)==0)return!1;da(e)&&(si(e),t.dims=To(e));var n=r.first+r.size,h=Math.max(t.visible.from-e.options.viewportMargin,r.first),S=Math.min(n,t.visible.to+e.options.viewportMargin);i.viewFromS&&i.viewTo-S<20&&(S=Math.min(n,i.viewTo)),vr&&(h=rr(e.doc,h),S=Xr(e.doc,S));var x=h!=i.viewFrom||S!=i.viewTo||i.lastWrapHeight!=t.wrapperHeight||i.lastWrapWidth!=t.wrapperWidth;Bc(e,h,S),i.viewOffset=$t(me(e.doc,i.viewFrom)),e.display.mover.style.top=i.viewOffset+"px";var O=ra(e);if(!x&&O==0&&!t.force&&i.renderedView==i.view&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo))return!1;var P=Zc(e);return O>4&&(i.lineDiv.style.display="none"),$c(e,i.updateLineNumbers,t.dims),O>4&&(i.lineDiv.style.display=""),i.renderedView=i.view,Vc(P),N(i.cursorDiv),N(i.selectionDiv),i.gutters.style.height=i.sizer.style.minHeight=0,x&&(i.lastWrapHeight=t.wrapperHeight,i.lastWrapWidth=t.wrapperWidth,bn(e,400)),i.updateLineNumbers=null,!0}function fa(e,t){for(var i=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==Si(e)){if(i&&i.top!=null&&(i={top:Math.min(e.doc.height+So(e.display)-Co(e),i.top)}),t.visible=qn(e.display,e.doc,i),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=qn(e.display,e.doc,i));if(!Ho(e,t))break;zn(e);var n=yn(e);vn(e),Xi(e,n),Wo(e,n),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Fo(e,t){var i=new Gn(e,t);if(Ho(e,i)){zn(e),fa(e,i);var r=yn(e);vn(e),Xi(e,r),Wo(e,r),i.finish()}}function $c(e,t,i){var r=e.display,n=e.options.lineNumbers,h=r.lineDiv,S=h.firstChild;function x(re){var ae=re.nextSibling;return v&&a&&e.display.currentWheelTarget==re?re.style.display="none":re.parentNode.removeChild(re),ae}for(var O=r.view,P=r.viewFrom,z=0;z-1&&(J=!1),Hs(e,Z,P,i)),J&&(N(Z.lineNumber),Z.lineNumber.appendChild(document.createTextNode(Or(e.options,P)))),S=Z.node.nextSibling}P+=Z.size}for(;S;)S=x(S)}function No(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",ot(e,"gutterChanged",e)}function Wo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Pr(e)+"px"}function ha(e){var t=e.display,i=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=Ao(t)-t.scroller.scrollLeft+e.doc.scrollLeft,n=t.gutters.offsetWidth,h=r+"px",S=0;Sx.clientWidth,P=x.scrollHeight>x.clientHeight;if(!!(r&&O||n&&P)){if(n&&a&&v){e:for(var z=t.target,Z=S.view;z!=x;z=z.parentNode)for(var Q=0;Q=0&&I(e,r.to())<=0)return i}return-1};var Be=function(e,t){this.anchor=e,this.head=t};Be.prototype.from=function(){return Te(this.anchor,this.head)},Be.prototype.to=function(){return ce(this.anchor,this.head)},Be.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function br(e,t,i){var r=e&&e.options.selectionsMayTouch,n=t[i];t.sort(function(Q,J){return I(Q.from(),J.from())}),i=ee(t,n);for(var h=1;h0:O>=0){var P=Te(x.from(),S.from()),z=ce(x.to(),S.to()),Z=x.empty()?S.from()==S.head:x.from()==x.head;h<=i&&--i,t.splice(--h,2,new Be(Z?z:P,Z?P:z))}}return new Jt(t,i)}function ai(e,t){return new Jt([new Be(e,t||e)],0)}function li(e){return e.text?le(e.from.line+e.text.length-1,Ae(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function _a(e,t){if(I(e,t.from)<0)return e;if(I(e,t.to)<=0)return li(t);var i=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=li(t).ch-t.to.ch),le(i,r)}function Uo(e,t){for(var i=[],r=0;r1&&e.remove(x.line+1,re-1),e.insert(x.line+1,he)}ot(e,"change",e,t)}function ci(e,t,i){function r(n,h,S){if(n.linked)for(var x=0;x1&&!e.done[e.done.length-2].ranges)return e.done.pop(),Ae(e.done)}function wa(e,t,i,r){var n=e.history;n.undone.length=0;var h=+new Date,S,x;if((n.lastOp==r||n.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&n.lastModTime>h-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)=="*"))&&(S=ru(n,n.lastOp==r)))x=Ae(S.changes),I(t.from,t.to)==0&&I(t.from,x.to)==0?x.to=li(t):S.changes.push(Ko(e,t));else{var O=Ae(n.done);for((!O||!O.ranges)&&Zn(e.sel,n.done),S={changes:[Ko(e,t)],generation:n.generation},n.done.push(S);n.done.length>n.undoDepth;)n.done.shift(),n.done[0].ranges||n.done.shift()}n.done.push(i),n.generation=++n.maxGeneration,n.lastModTime=n.lastSelTime=h,n.lastOp=n.lastSelOp=r,n.lastOrigin=n.lastSelOrigin=t.origin,x||ke(e,"historyAdded")}function iu(e,t,i,r){var n=t.charAt(0);return n=="*"||n=="+"&&i.ranges.length==r.ranges.length&&i.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function nu(e,t,i,r){var n=e.history,h=r&&r.origin;i==n.lastSelOp||h&&n.lastSelOrigin==h&&(n.lastModTime==n.lastSelTime&&n.lastOrigin==h||iu(e,h,Ae(n.done),t))?n.done[n.done.length-1]=t:Zn(t,n.done),n.lastSelTime=+new Date,n.lastSelOrigin=h,n.lastSelOp=i,r&&r.clearRedo!==!1&&Ca(n.undone)}function Zn(e,t){var i=Ae(t);i&&i.ranges&&i.equals(e)||t.push(e)}function La(e,t,i,r){var n=t["spans_"+e.id],h=0;e.iter(Math.max(e.first,i),Math.min(e.first+e.size,r),function(S){S.markedSpans&&((n||(n=t["spans_"+e.id]={}))[h]=S.markedSpans),++h})}function ou(e){if(!e)return null;for(var t,i=0;i-1&&(Ae(x)[Z]=P[Z],delete P[Z])}}return r}function Go(e,t,i,r){if(r){var n=e.anchor;if(i){var h=I(t,n)<0;h!=I(i,n)<0?(n=t,t=i):h!=I(t,i)<0&&(t=i)}return new Be(n,t)}else return new Be(i||t,t)}function Vn(e,t,i,r,n){n==null&&(n=e.cm&&(e.cm.display.shift||e.extend)),yt(e,new Jt([Go(e.sel.primary(),t,i,n)],0),r)}function ka(e,t,i){for(var r=[],n=e.cm&&(e.cm.display.shift||e.extend),h=0;h=t.ch:x.to>t.ch))){if(n&&(ke(O,"beforeCursorEnter"),O.explicitlyCleared))if(h.markedSpans){--S;continue}else break;if(!O.atomic)continue;if(i){var Z=O.find(r<0?1:-1),Q=void 0;if((r<0?z:P)&&(Z=Ra(e,Z,-r,Z&&Z.line==t.line?h:null)),Z&&Z.line==t.line&&(Q=I(Z,i))&&(r<0?Q<0:Q>0))return Zi(e,Z,t,r,n)}var J=O.find(r<0?-1:1);return(r<0?P:z)&&(J=Ra(e,J,r,J.line==t.line?h:null)),J?Zi(e,J,t,r,n):null}}return t}function Jn(e,t,i,r,n){var h=r||1,S=Zi(e,t,i,h,n)||!n&&Zi(e,t,i,h,!0)||Zi(e,t,i,-h,n)||!n&&Zi(e,t,i,-h,!0);return S||(e.cantEdit=!0,le(e.first,0))}function Ra(e,t,i,r){return i<0&&t.ch==0?t.line>e.first?pe(e,le(t.line-1)):null:i>0&&t.ch==(r||me(e,t.line)).text.length?t.line=0;--n)Pa(e,{from:r[n].from,to:r[n].to,text:n?[""]:t.text,origin:t.origin});else Pa(e,t)}}function Pa(e,t){if(!(t.text.length==1&&t.text[0]==""&&I(t.from,t.to)==0)){var i=Uo(e,t);wa(e,t,i,e.cm?e.cm.curOp.id:NaN),wn(e,t,i,zt(e,t));var r=[];ci(e,function(n,h){!h&&ee(r,n.history)==-1&&(Na(n.history,t),r.push(n.history)),wn(n,t,null,zt(n,t))})}}function Qn(e,t,i){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!i)){for(var n=e.history,h,S=e.sel,x=t=="undo"?n.done:n.undone,O=t=="undo"?n.undone:n.done,P=0;P=0;--J){var re=Q(J);if(re)return re.v}}}}function Ia(e,t){if(t!=0&&(e.first+=t,e.sel=new Jt(_e(e.sel.ranges,function(n){return new Be(le(n.anchor.line+t,n.anchor.ch),le(n.head.line+t,n.head.ch))}),e.sel.primIndex),e.cm)){Bt(e.cm,e.first,e.first-t,t);for(var i=e.cm.display,r=i.viewFrom;re.lastLine())){if(t.from.lineh&&(t={from:t.from,to:le(h,me(e,h).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ot(e,t.from,t.to),i||(i=Uo(e,t)),e.cm?lu(e.cm,t,r):qo(e,t,r),$n(e,i,K),e.cantEdit&&Jn(e,le(e.firstLine(),0))&&(e.cantEdit=!1)}}function lu(e,t,i){var r=e.doc,n=e.display,h=t.from,S=t.to,x=!1,O=h.line;e.options.lineWrapping||(O=Re(nt(me(r,h.line))),r.iter(O,S.line+1,function(J){if(J==n.maxLine)return x=!0,!0})),r.sel.contains(t.from,t.to)>-1&&fr(e),qo(r,t,i,ta(e)),e.options.lineWrapping||(r.iter(O,h.line+t.text.length,function(J){var re=ir(J);re>n.maxLineLength&&(n.maxLine=J,n.maxLineLength=re,n.maxLineChanged=!0,x=!1)}),x&&(e.curOp.updateMaxLine=!0)),In(r,h.line),bn(e,400);var P=t.text.length-(S.line-h.line)-1;t.full?Bt(e):h.line==S.line&&t.text.length==1&&!ma(e.doc,t)?oi(e,h.line,"text"):Bt(e,h.line,S.line+1,P);var z=Ke(e,"changes"),Z=Ke(e,"change");if(Z||z){var Q={from:h,to:S,text:t.text,removed:t.removed,origin:t.origin};Z&&ot(e,"change",e,Q),z&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(Q)}e.display.selForContextMenu=null}function $i(e,t,i,r,n){var h;r||(r=i),I(r,i)<0&&(h=[r,i],i=h[0],r=h[1]),typeof t=="string"&&(t=e.splitLines(t)),Vi(e,{from:i,to:r,text:t,origin:n})}function Ha(e,t,i,r){i1||!(this.children[0]instanceof xn))){var x=[];this.collapse(x),this.children=[new xn(x)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var S=n.lines.length%25+25,x=S;x10);e.parent.maybeSpill()}},iterN:function(e,t,i){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=P,e.display.maxLineLength=z,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&Bt(e,r,n+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ma(e.doc)),e&&ot(e,"markerCleared",e,this,r,n),t&&Ti(e),this.parent&&this.parent.clear()}},ui.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);for(var i,r,n=0;n0||S==0&&h.clearWhenEmpty!==!1)return h;if(h.replacedWith&&(h.collapsed=!0,h.widgetNode=B("span",[h.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||h.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(h.widgetNode.insertLeft=!0)),h.collapsed){if(qt(e,t.line,t,i,h)||t.line!=i.line&&qt(e,i.line,t,i,h))throw new Error("Inserting collapsed marker partially overlapping an existing one");se()}h.addToHistory&&wa(e,{from:t,to:i,origin:"markText"},e.sel,NaN);var x=t.line,O=e.cm,P;if(e.iter(x,i.line+1,function(Z){O&&h.collapsed&&!O.options.lineWrapping&&nt(Z)==O.display.maxLine&&(P=!0),h.collapsed&&x!=t.line&&it(Z,0),mi(Z,new te(h,x==t.line?t.ch:null,x==i.line?i.ch:null),e.cm&&e.cm.curOp),++x}),h.collapsed&&e.iter(t.line,i.line+1,function(Z){xt(e,Z)&&it(Z,0)}),h.clearOnEnter&&we(h,"beforeCursorEnter",function(){return h.clear()}),h.readOnly&&(mo(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),h.collapsed&&(h.id=++ja,h.atomic=!0),O){if(P&&(O.curOp.updateMaxLine=!0),h.collapsed)Bt(O,t.line,i.line+1);else if(h.className||h.startStyle||h.endStyle||h.css||h.attributes||h.title)for(var z=t.line;z<=i.line;z++)oi(O,z,"text");h.atomic&&Ma(O.doc),ot(O,"markerAdded",O,h)}return h}var Tn=function(e,t){this.markers=e,this.primary=t;for(var i=0;i=0;O--)Vi(this,r[O]);x?Ta(this,x):this.cm&&Gi(this.cm)}),undo:at(function(){Qn(this,"undo")}),redo:at(function(){Qn(this,"redo")}),undoSelection:at(function(){Qn(this,"undo",!0)}),redoSelection:at(function(){Qn(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,i=0,r=0;r=e.ch)&&t.push(n.marker.parent||n.marker)}return t},findMarks:function(e,t,i){e=pe(this,e),t=pe(this,t);var r=[],n=e.line;return this.iter(e.line,t.line+1,function(h){var S=h.markedSpans;if(S)for(var x=0;x=O.to||O.from==null&&n!=e.line||O.from!=null&&n==t.line&&O.from>=t.ch)&&(!i||i(O.marker))&&r.push(O.marker.parent||O.marker)}++n}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var i=t.markedSpans;if(i)for(var r=0;re)return t=e,!0;e-=h,++i}),pe(this,le(i,t))},indexFromPos:function(e){e=pe(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var z=e.dataTransfer.getData("Text");if(z){var Z;if(t.state.draggingText&&!t.state.draggingText.copy&&(Z=t.listSelections()),$n(t.doc,ai(i,i)),Z)for(var Q=0;Q=0;x--)$i(e.doc,"",r[x].from,r[x].to,"+delete");Gi(e)})}function Yo(e,t,i){var r=ti(e.text,t+i,i);return r<0||r>e.text.length?null:r}function Zo(e,t,i){var r=Yo(e,t.ch,i);return r==null?null:new le(t.line,r,i<0?"after":"before")}function Vo(e,t,i,r,n){if(e){t.doc.direction=="rtl"&&(n=-n);var h=ut(i,t.doc.direction);if(h){var S=n<0?Ae(h):h[0],x=n<0==(S.level==1),O=x?"after":"before",P;if(S.level>0||t.doc.direction=="rtl"){var z=Ui(t,i);P=n<0?i.text.length-1:0;var Z=Ir(t,z,P).top;P=Nt(function(Q){return Ir(t,z,Q).top==Z},n<0==(S.level==1)?S.from:S.to-1,P),O=="before"&&(P=Yo(i,P,1))}else P=n<0?S.to:S.from;return new le(r,P,O)}}return new le(r,n<0?i.text.length:0,n<0?"before":"after")}function Cu(e,t,i,r){var n=ut(t,e.doc.direction);if(!n)return Zo(t,i,r);i.ch>=t.text.length?(i.ch=t.text.length,i.sticky="before"):i.ch<=0&&(i.ch=0,i.sticky="after");var h=Ne(n,i.ch,i.sticky),S=n[h];if(e.doc.direction=="ltr"&&S.level%2==0&&(r>0?S.to>i.ch:S.from=S.from&&Q>=z.begin)){var J=Z?"before":"after";return new le(i.line,Q,J)}}var re=function(he,ge,de){for(var ye=function(He,lt){return lt?new le(i.line,x(He,1),"before"):new le(i.line,He,"after")};he>=0&&he0==(xe.level!=1),Me=Le?de.begin:x(de.end,-1);if(xe.from<=Me&&Me0?z.end:x(z.begin,-1);return ue!=null&&!(r>0&&ue==t.text.length)&&(ae=re(r>0?0:n.length-1,r,P(ue)),ae)?ae:null}var On={selectAll:Da,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),K)},killLine:function(e){return en(e,function(t){if(t.empty()){var i=me(e.doc,t.head.line).text.length;return t.head.ch==i&&t.head.line0)n=new le(n.line,n.ch+1),e.replaceRange(h.charAt(n.ch-1)+h.charAt(n.ch-2),le(n.line,n.ch-2),n,"+transpose");else if(n.line>e.doc.first){var S=me(e.doc,n.line-1).text;S&&(n=new le(n.line,1),e.replaceRange(h.charAt(0)+e.doc.lineSeparator()+S.charAt(S.length-1),le(n.line-1,S.length-1),n,"+transpose"))}}i.push(new Be(n,n))}e.setSelections(i)})},newlineAndIndent:function(e){return Kt(e,function(){for(var t=e.listSelections(),i=t.length-1;i>=0;i--)e.replaceRange(e.doc.lineSeparator(),t[i].anchor,t[i].head,"+input");t=e.listSelections();for(var r=0;re&&I(t,this.pos)==0&&i==this.button};var Dn,Bn;function Au(e,t){var i=+new Date;return Bn&&Bn.compare(i,e,t)?(Dn=Bn=null,"triple"):Dn&&Dn.compare(i,e,t)?(Bn=new Jo(i,e,t),Dn=null,"double"):(Dn=new Jo(i,e,t),Bn=null,"single")}function il(e){var t=this,i=t.display;if(!(We(t,e)||i.activeTouch&&i.input.supportsTouch())){if(i.input.ensurePolled(),i.shift=e.shiftKey,Yr(i,e)){v||(i.scroller.draggable=!1,setTimeout(function(){return i.scroller.draggable=!0},100));return}if(!Qo(t,e)){var r=wi(t,e),n=Wr(e),h=r?Au(r,n):"single";window.focus(),n==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&Mu(t,n,r,h,e))&&(n==1?r?Ru(t,r,h,e):Yt(e)==i.scroller&&Xe(e):n==2?(r&&Vn(t.doc,r),setTimeout(function(){return i.input.focus()},20)):n==3&&(R?t.display.input.onContextMenu(e):Do(t)))}}}function Mu(e,t,i,r,n){var h="Click";return r=="double"?h="Double"+h:r=="triple"&&(h="Triple"+h),h=(t==1?"Left":t==2?"Middle":"Right")+h,Rn(e,Ya(h,n),n,function(S){if(typeof S=="string"&&(S=On[S]),!S)return!1;var x=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),x=S(e,i)!=Y}finally{e.state.suppressEdits=!1}return x})}function Ou(e,t,i){var r=e.getOption("configureMouse"),n=r?r(e,t,i):{};if(n.unit==null){var h=u?i.shiftKey&&i.metaKey:i.altKey;n.unit=h?"rectangle":t=="single"?"char":t=="double"?"word":"line"}return(n.extend==null||e.doc.extend)&&(n.extend=e.doc.extend||i.shiftKey),n.addNew==null&&(n.addNew=a?i.metaKey:i.ctrlKey),n.moveOnDrag==null&&(n.moveOnDrag=!(a?i.altKey:i.ctrlKey)),n}function Ru(e,t,i,r){m?setTimeout(be(na,e),0):e.curOp.focus=G();var n=Ou(e,i,r),h=e.doc.sel,S;e.options.dragDrop&&Lr&&!e.isReadOnly()&&i=="single"&&(S=h.contains(t))>-1&&(I((S=h.ranges[S]).from(),t)<0||t.xRel>0)&&(I(S.to(),t)>0||t.xRel<0)?Du(e,r,t,n):Bu(e,r,t,n)}function Du(e,t,i,r){var n=e.display,h=!1,S=st(e,function(P){v&&(n.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:Do(e)),Qe(n.wrapper.ownerDocument,"mouseup",S),Qe(n.wrapper.ownerDocument,"mousemove",x),Qe(n.scroller,"dragstart",O),Qe(n.scroller,"drop",S),h||(Xe(P),r.addNew||Vn(e.doc,i,null,null,r.extend),v&&!p||m&&_==9?setTimeout(function(){n.wrapper.ownerDocument.body.focus({preventScroll:!0}),n.input.focus()},20):n.input.focus())}),x=function(P){h=h||Math.abs(t.clientX-P.clientX)+Math.abs(t.clientY-P.clientY)>=10},O=function(){return h=!0};v&&(n.scroller.draggable=!0),e.state.draggingText=S,S.copy=!r.moveOnDrag,we(n.wrapper.ownerDocument,"mouseup",S),we(n.wrapper.ownerDocument,"mousemove",x),we(n.scroller,"dragstart",O),we(n.scroller,"drop",S),e.state.delayingBlurEvent=!0,setTimeout(function(){return n.input.focus()},20),n.scroller.dragDrop&&n.scroller.dragDrop()}function nl(e,t,i){if(i=="char")return new Be(t,t);if(i=="word")return e.findWordAt(t);if(i=="line")return new Be(le(t.line,0),pe(e.doc,le(t.line+1,0)));var r=i(e,t);return new Be(r.from,r.to)}function Bu(e,t,i,r){m&&Do(e);var n=e.display,h=e.doc;Xe(t);var S,x,O=h.sel,P=O.ranges;if(r.addNew&&!r.extend?(x=h.sel.contains(i),x>-1?S=P[x]:S=new Be(i,i)):(S=h.sel.primary(),x=h.sel.primIndex),r.unit=="rectangle")r.addNew||(S=new Be(i,i)),i=wi(e,t,!0,!0),x=-1;else{var z=nl(e,i,r.unit);r.extend?S=Go(S,z.anchor,z.head,r.extend):S=z}r.addNew?x==-1?(x=P.length,yt(h,br(e,P.concat([S]),x),{scroll:!1,origin:"*mouse"})):P.length>1&&P[x].empty()&&r.unit=="char"&&!r.extend?(yt(h,br(e,P.slice(0,x).concat(P.slice(x+1)),0),{scroll:!1,origin:"*mouse"}),O=h.sel):Xo(h,x,S,Se):(x=0,yt(h,new Jt([S],0),Se),O=h.sel);var Z=i;function Q(de){if(I(Z,de)!=0)if(Z=de,r.unit=="rectangle"){for(var ye=[],xe=e.options.tabSize,Le=Ee(me(h,i.line).text,i.ch,xe),Me=Ee(me(h,de.line).text,de.ch,xe),He=Math.min(Le,Me),lt=Math.max(Le,Me),qe=Math.min(i.line,de.line),Gt=Math.min(e.lastLine(),Math.max(i.line,de.line));qe<=Gt;qe++){var It=me(h,qe).text,Ve=Ce(It,He,xe);He==lt?ye.push(new Be(le(qe,Ve),le(qe,Ve))):It.length>Ve&&ye.push(new Be(le(qe,Ve),le(qe,Ce(It,lt,xe))))}ye.length||ye.push(new Be(i,i)),yt(h,br(e,O.ranges.slice(0,x).concat(ye),x),{origin:"*mouse",scroll:!1}),e.scrollIntoView(de)}else{var Ht=S,pt=nl(e,de,r.unit),rt=Ht.anchor,$e;I(pt.anchor,rt)>0?($e=pt.head,rt=Te(Ht.from(),pt.anchor)):($e=pt.anchor,rt=ce(Ht.to(),pt.head));var Ge=O.ranges.slice(0);Ge[x]=Pu(e,new Be(pe(h,rt),$e)),yt(h,br(e,Ge,x),Se)}}var J=n.wrapper.getBoundingClientRect(),re=0;function ae(de){var ye=++re,xe=wi(e,de,!0,r.unit=="rectangle");if(!!xe)if(I(xe,Z)!=0){e.curOp.focus=G(),Q(xe);var Le=qn(n,h);(xe.line>=Le.to||xe.lineJ.bottom?20:0;Me&&setTimeout(st(e,function(){re==ye&&(n.scroller.scrollTop+=Me,ae(de))}),50)}}function ue(de){e.state.selectingText=!1,re=1/0,de&&(Xe(de),n.input.focus()),Qe(n.wrapper.ownerDocument,"mousemove",he),Qe(n.wrapper.ownerDocument,"mouseup",ge),h.history.lastSelOrigin=null}var he=st(e,function(de){de.buttons===0||!Wr(de)?ue(de):ae(de)}),ge=st(e,ue);e.state.selectingText=ge,we(n.wrapper.ownerDocument,"mousemove",he),we(n.wrapper.ownerDocument,"mouseup",ge)}function Pu(e,t){var i=t.anchor,r=t.head,n=me(e.doc,i.line);if(I(i,r)==0&&i.sticky==r.sticky)return t;var h=ut(n);if(!h)return t;var S=Ne(h,i.ch,i.sticky),x=h[S];if(x.from!=i.ch&&x.to!=i.ch)return t;var O=S+(x.from==i.ch==(x.level!=1)?0:1);if(O==0||O==h.length)return t;var P;if(r.line!=i.line)P=(r.line-i.line)*(e.doc.direction=="ltr"?1:-1)>0;else{var z=Ne(h,r.ch,r.sticky),Z=z-S||(r.ch-i.ch)*(x.level==1?-1:1);z==O-1||z==O?P=Z<0:P=Z>0}var Q=h[O+(P?-1:0)],J=P==(Q.level==1),re=J?Q.from:Q.to,ae=J?"after":"before";return i.ch==re&&i.sticky==ae?t:new Be(new le(i.line,re,ae),r)}function ol(e,t,i,r){var n,h;if(t.touches)n=t.touches[0].clientX,h=t.touches[0].clientY;else try{n=t.clientX,h=t.clientY}catch{return!1}if(n>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Xe(t);var S=e.display,x=S.lineDiv.getBoundingClientRect();if(h>x.bottom||!Ke(e,i))return ft(t);h-=x.top-S.viewOffset;for(var O=0;O=n){var z=Rt(e.doc,h),Z=e.display.gutterSpecs[O];return ke(e,i,e,z,Z.className,t),ft(t)}}}function Qo(e,t){return ol(e,t,"gutterClick",!0)}function sl(e,t){Yr(e.display,t)||Iu(e,t)||We(e,t,"contextmenu")||R||e.display.input.onContextMenu(t)}function Iu(e,t){return Ke(e,"gutterContextMenu")?ol(e,t,"gutterContextMenu",!1):!1}function al(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),pn(e)}var tn={toString:function(){return"CodeMirror.Init"}},ll={},io={};function Hu(e){var t=e.optionHandlers;function i(r,n,h,S){e.defaults[r]=n,h&&(t[r]=S?function(x,O,P){P!=tn&&h(x,O,P)}:h)}e.defineOption=i,e.Init=tn,i("value","",function(r,n){return r.setValue(n)},!0),i("mode",null,function(r,n){r.doc.modeOption=n,zo(r)},!0),i("indentUnit",2,zo,!0),i("indentWithTabs",!1),i("smartIndent",!0),i("tabSize",4,function(r){Cn(r),pn(r),Bt(r)},!0),i("lineSeparator",null,function(r,n){if(r.doc.lineSep=n,!!n){var h=[],S=r.doc.first;r.doc.iter(function(O){for(var P=0;;){var z=O.text.indexOf(n,P);if(z==-1)break;P=z+n.length,h.push(le(S,z))}S++});for(var x=h.length-1;x>=0;x--)$i(r.doc,n,h[x],le(h[x].line,h[x].ch+n.length))}}),i("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(r,n,h){r.state.specialChars=new RegExp(n.source+(n.test(" ")?"":"| "),"g"),h!=tn&&r.refresh()}),i("specialCharPlaceholder",hc,function(r){return r.refresh()},!0),i("electricChars",!0),i("inputStyle",l?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),i("spellcheck",!1,function(r,n){return r.getInputField().spellcheck=n},!0),i("autocorrect",!1,function(r,n){return r.getInputField().autocorrect=n},!0),i("autocapitalize",!1,function(r,n){return r.getInputField().autocapitalize=n},!0),i("rtlMoveVisually",!g),i("wholeLineUpdateBefore",!0),i("theme","default",function(r){al(r),Sn(r)},!0),i("keyMap","default",function(r,n,h){var S=to(n),x=h!=tn&&to(h);x&&x.detach&&x.detach(r,S),S.attach&&S.attach(r,x||null)}),i("extraKeys",null),i("configureMouse",null),i("lineWrapping",!1,Nu,!0),i("gutters",[],function(r,n){r.display.gutterSpecs=jo(n,r.options.lineNumbers),Sn(r)},!0),i("fixedGutter",!0,function(r,n){r.display.gutters.style.left=n?Ao(r.display)+"px":"0",r.refresh()},!0),i("coverGutterNextToScrollbar",!1,function(r){return Xi(r)},!0),i("scrollbarStyle","native",function(r){ua(r),Xi(r),r.display.scrollbars.setScrollTop(r.doc.scrollTop),r.display.scrollbars.setScrollLeft(r.doc.scrollLeft)},!0),i("lineNumbers",!1,function(r,n){r.display.gutterSpecs=jo(r.options.gutters,n),Sn(r)},!0),i("firstLineNumber",1,Sn,!0),i("lineNumberFormatter",function(r){return r},Sn,!0),i("showCursorWhenSelecting",!1,vn,!0),i("resetSelectionOnContextMenu",!0),i("lineWiseCopyCut",!0),i("pasteLinesPerSelection",!0),i("selectionsMayTouch",!1),i("readOnly",!1,function(r,n){n=="nocursor"&&(Ki(r),r.display.input.blur()),r.display.input.readOnlyChanged(n)}),i("screenReaderLabel",null,function(r,n){n=n===""?null:n,r.display.input.screenReaderLabelChanged(n)}),i("disableInput",!1,function(r,n){n||r.display.input.reset()},!0),i("dragDrop",!0,Fu),i("allowDropFileTypes",null),i("cursorBlinkRate",530),i("cursorScrollMargin",0),i("cursorHeight",1,vn,!0),i("singleCursorHeightPerLine",!0,vn,!0),i("workTime",100),i("workDelay",100),i("flattenSpans",!0,Cn,!0),i("addModeClass",!1,Cn,!0),i("pollInterval",100),i("undoDepth",200,function(r,n){return r.doc.history.undoDepth=n}),i("historyEventDelay",1250),i("viewportMargin",10,function(r){return r.refresh()},!0),i("maxHighlightLength",1e4,Cn,!0),i("moveInputWithCursor",!0,function(r,n){n||r.display.input.resetPosition()}),i("tabindex",null,function(r,n){return r.display.input.getField().tabIndex=n||""}),i("autofocus",null),i("direction","ltr",function(r,n){return r.doc.setDirection(n)},!0),i("phrases",null)}function Fu(e,t,i){var r=i&&i!=tn;if(!t!=!r){var n=e.display.dragFunctions,h=t?we:Qe;h(e.display.scroller,"dragstart",n.start),h(e.display.scroller,"dragenter",n.enter),h(e.display.scroller,"dragover",n.over),h(e.display.scroller,"dragleave",n.leave),h(e.display.scroller,"drop",n.drop)}}function Nu(e){e.options.lineWrapping?($(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(M(e.display.wrapper,"CodeMirror-wrap"),yr(e)),Mo(e),Bt(e),pn(e),setTimeout(function(){return Xi(e)},100)}function ze(e,t){var i=this;if(!(this instanceof ze))return new ze(e,t);this.options=t=t?ve(t):{},ve(ll,t,!1);var r=t.value;typeof r=="string"?r=new Pt(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var n=new ze.inputStyles[t.inputStyle](this),h=this.display=new Jc(e,r,n,t);h.wrapper.CodeMirror=this,al(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),ua(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new U,keySeq:null,specialChars:null},t.autofocus&&!l&&h.input.focus(),m&&_<11&&setTimeout(function(){return i.display.input.reset(!0)},20),Wu(this),_u(),Ei(this),this.curOp.forceUpdate=!0,ba(this,r),t.autofocus&&!l||this.hasFocus()?setTimeout(function(){i.hasFocus()&&!i.state.focused&&Bo(i)},20):Ki(this);for(var S in io)io.hasOwnProperty(S)&&io[S](this,t[S],tn);da(this),t.finishInit&&t.finishInit(this);for(var x=0;x20*20}we(t.scroller,"touchstart",function(O){if(!We(e,O)&&!h(O)&&!Qo(e,O)){t.input.ensurePolled(),clearTimeout(i);var P=+new Date;t.activeTouch={start:P,moved:!1,prev:P-r.end<=300?r:null},O.touches.length==1&&(t.activeTouch.left=O.touches[0].pageX,t.activeTouch.top=O.touches[0].pageY)}}),we(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),we(t.scroller,"touchend",function(O){var P=t.activeTouch;if(P&&!Yr(t,O)&&P.left!=null&&!P.moved&&new Date-P.start<300){var z=e.coordsChar(t.activeTouch,"page"),Z;!P.prev||S(P,P.prev)?Z=new Be(z,z):!P.prev.prev||S(P,P.prev.prev)?Z=e.findWordAt(z):Z=new Be(le(z.line,0),pe(e.doc,le(z.line+1,0))),e.setSelection(Z.anchor,Z.head),e.focus(),Xe(O)}n()}),we(t.scroller,"touchcancel",n),we(t.scroller,"scroll",function(){t.scroller.clientHeight&&(_n(e,t.scroller.scrollTop),xi(e,t.scroller.scrollLeft,!0),ke(e,"scroll",e))}),we(t.scroller,"mousewheel",function(O){return ga(e,O)}),we(t.scroller,"DOMMouseScroll",function(O){return ga(e,O)}),we(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(O){We(e,O)||Qt(O)},over:function(O){We(e,O)||(gu(e,O),Qt(O))},start:function(O){return vu(e,O)},drop:st(e,pu),leave:function(O){We(e,O)||qa(e)}};var x=t.input.getField();we(x,"keyup",function(O){return tl.call(e,O)}),we(x,"keydown",st(e,el)),we(x,"keypress",st(e,rl)),we(x,"focus",function(O){return Bo(e,O)}),we(x,"blur",function(O){return Ki(e,O)})}var es=[];ze.defineInitHook=function(e){return es.push(e)};function Pn(e,t,i,r){var n=e.doc,h;i==null&&(i="add"),i=="smart"&&(n.mode.indent?h=Kr(e,t).state:i="prev");var S=e.options.tabSize,x=me(n,t),O=Ee(x.text,null,S);x.stateAfter&&(x.stateAfter=null);var P=x.text.match(/^\s*/)[0],z;if(!r&&!/\S/.test(x.text))z=0,i="not";else if(i=="smart"&&(z=n.mode.indent(h,x.text.slice(P.length),x.text),z==Y||z>150)){if(!r)return;i="prev"}i=="prev"?t>n.first?z=Ee(me(n,t-1).text,null,S):z=0:i=="add"?z=O+e.options.indentUnit:i=="subtract"?z=O-e.options.indentUnit:typeof i=="number"&&(z=O+i),z=Math.max(0,z);var Z="",Q=0;if(e.options.indentWithTabs)for(var J=Math.floor(z/S);J;--J)Q+=S,Z+=" ";if(QS,O=kr(t),P=null;if(x&&r.ranges.length>1)if(Sr&&Sr.text.join(` +`)==t){if(r.ranges.length%Sr.text.length==0){P=[];for(var z=0;z=0;Q--){var J=r.ranges[Q],re=J.from(),ae=J.to();J.empty()&&(i&&i>0?re=le(re.line,re.ch-i):e.state.overwrite&&!x?ae=le(ae.line,Math.min(me(h,ae.line).text.length,ae.ch+Ae(O).length)):x&&Sr&&Sr.lineWise&&Sr.text.join(` +`)==O.join(` +`)&&(re=ae=le(re.line,0)));var ue={from:re,to:ae,text:P?P[Q%P.length]:O,origin:n||(x?"paste":e.state.cutIncoming>S?"cut":"+input")};Vi(e.doc,ue),ot(e,"inputRead",e,ue)}t&&!x&&ul(e,t),Gi(e),e.curOp.updateInput<2&&(e.curOp.updateInput=Z),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function cl(e,t){var i=e.clipboardData&&e.clipboardData.getData("Text");if(i)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&Kt(t,function(){return ts(t,i,0,null,"paste")}),!0}function ul(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var i=e.doc.sel,r=i.ranges.length-1;r>=0;r--){var n=i.ranges[r];if(!(n.head.ch>100||r&&i.ranges[r-1].head.line==n.head.line)){var h=e.getModeAt(n.head),S=!1;if(h.electricChars){for(var x=0;x-1){S=Pn(e,n.head.line,"smart");break}}else h.electricInput&&h.electricInput.test(me(e.doc,n.head.line).text.slice(0,n.head.ch))&&(S=Pn(e,n.head.line,"smart"));S&&ot(e,"electricInput",e,n.head.line)}}}function fl(e){for(var t=[],i=[],r=0;rh&&(Pn(this,x.head.line,r,!0),h=x.head.line,S==this.doc.sel.primIndex&&Gi(this));else{var O=x.from(),P=x.to(),z=Math.max(h,O.line);h=Math.min(this.lastLine(),P.line-(P.ch?0:1))+1;for(var Z=z;Z0&&Xo(this.doc,S,new Be(O,Q[S].to()),K)}}}),getTokenAt:function(r,n){return Fi(this,r,n)},getLineTokens:function(r,n){return Fi(this,le(r),n,!0)},getTokenTypeAt:function(r){r=pe(this.doc,r);var n=Pi(this,me(this.doc,r.line)),h=0,S=(n.length-1)/2,x=r.ch,O;if(x==0)O=n[2];else for(;;){var P=h+S>>1;if((P?n[P*2-1]:0)>=x)S=P;else if(n[P*2+1]O&&(r=O,S=!0),x=me(this.doc,r)}else x=r;return Nn(this,x,{top:0,left:0},n||"page",h||S).top+(S?this.doc.height-$t(x):0)},defaultTextHeight:function(){return zi(this.display)},defaultCharWidth:function(){return qi(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(r,n,h,S,x){var O=this.display;r=mr(this,pe(this.doc,r));var P=r.bottom,z=r.left;if(n.style.position="absolute",n.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(n),O.sizer.appendChild(n),S=="over")P=r.top;else if(S=="above"||S=="near"){var Z=Math.max(O.wrapper.clientHeight,this.doc.height),Q=Math.max(O.sizer.clientWidth,O.lineSpace.clientWidth);(S=="above"||r.bottom+n.offsetHeight>Z)&&r.top>n.offsetHeight?P=r.top-n.offsetHeight:r.bottom+n.offsetHeight<=Z&&(P=r.bottom),z+n.offsetWidth>Q&&(z=Q-n.offsetWidth)}n.style.top=P+"px",n.style.left=n.style.right="",x=="right"?(z=O.sizer.clientWidth-n.offsetWidth,n.style.right="0px"):(x=="left"?z=0:x=="middle"&&(z=(O.sizer.clientWidth-n.offsetWidth)/2),n.style.left=z+"px"),h&&Fc(this,{left:z,top:P,right:z+n.offsetWidth,bottom:P+n.offsetHeight})},triggerOnKeyDown:kt(el),triggerOnKeyPress:kt(rl),triggerOnKeyUp:tl,triggerOnMouseDown:kt(il),execCommand:function(r){if(On.hasOwnProperty(r))return On[r].call(null,this)},triggerElectric:kt(function(r){ul(this,r)}),findPosH:function(r,n,h,S){var x=1;n<0&&(x=-1,n=-n);for(var O=pe(this.doc,r),P=0;P0&&z(h.charAt(S-1));)--S;for(;x.5||this.options.lineWrapping)&&Mo(this),ke(this,"refresh",this)}),swapDoc:kt(function(r){var n=this.doc;return n.cm=null,this.state.selectingText&&this.state.selectingText(),ba(this,r),pn(this),this.display.input.reset(),gn(this,r.scrollLeft,r.scrollTop),this.curOp.forceScroll=!0,ot(this,"swapDoc",this,n),n}),phrase:function(r){var n=this.options.phrases;return n&&Object.prototype.hasOwnProperty.call(n,r)?n[r]:r},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},At(e),e.registerHelper=function(r,n,h){i.hasOwnProperty(r)||(i[r]=e[r]={_global:[]}),i[r][n]=h},e.registerGlobalHelper=function(r,n,h,S){e.registerHelper(r,n,S),i[r]._global.push({pred:h,val:S})}}function rs(e,t,i,r,n){var h=t,S=i,x=me(e,t.line),O=n&&e.direction=="rtl"?-i:i;function P(){var ge=t.line+O;return ge=e.first+e.size?!1:(t=new le(ge,t.ch,t.sticky),x=me(e,ge))}function z(ge){var de;if(r=="codepoint"){var ye=x.text.charCodeAt(t.ch+(i>0?0:-1));if(isNaN(ye))de=null;else{var xe=i>0?ye>=55296&&ye<56320:ye>=56320&&ye<57343;de=new le(t.line,Math.max(0,Math.min(x.text.length,t.ch+i*(xe?2:1))),-i)}}else n?de=Cu(e.cm,x,t,i):de=Zo(x,t,i);if(de==null)if(!ge&&P())t=Vo(n,e.cm,x,t.line,O);else return!1;else t=de;return!0}if(r=="char"||r=="codepoint")z();else if(r=="column")z(!0);else if(r=="word"||r=="group")for(var Z=null,Q=r=="group",J=e.cm&&e.cm.getHelper(t,"wordChars"),re=!0;!(i<0&&!z(!re));re=!1){var ae=x.text.charAt(t.ch)||` `,ue=wr(ae,J)?"w":Q&&ae==` -`?"n":!Q||/\s/.test(ae)?null:"p";if(Q&&!re&&!ue&&(ue="s"),Z&&Z!=ue){i<0&&(i=1,z(),t.sticky="after");break}if(ue&&(Z=ue),i>0&&!z(!re))break}var he=Jn(e,t,f,S,!0);return X(f,he)&&(he.hitSide=!0),he}function pl(e,t,i,r){var n=e.doc,f=t.left,S;if(r=="page"){var x=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),M=Math.max(x-.5*zi(e.display),3);S=(i>0?t.bottom:t.top)+i*M}else r=="line"&&(S=i>0?t.bottom+3:t.top-3);for(var P;P=ko(e,f,S),!!P.outside;){if(i<0?S<=0:S>=n.height){P.hitSide=!0;break}S+=i*5}return P}var Pe=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new U,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Pe.prototype.init=function(e){var t=this,i=this,r=i.cm,n=i.div=e.lineDiv;n.contentEditable=!0,hl(n,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function f(x){for(var M=x.target;M;M=M.parentNode){if(M==n)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(M.className))break}return!1}we(n,"paste",function(x){!f(x)||We(r,x)||cl(x,r)||_<=11&&setTimeout(st(r,function(){return t.updateFromDOM()}),20)}),we(n,"compositionstart",function(x){t.composing={data:x.data,done:!1}}),we(n,"compositionupdate",function(x){t.composing||(t.composing={data:x.data,done:!1})}),we(n,"compositionend",function(x){t.composing&&(x.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),we(n,"touchstart",function(){return i.forceCompositionEnd()}),we(n,"input",function(){t.composing||t.readFromDOMSoon()});function S(x){if(!(!f(x)||We(r,x))){if(r.somethingSelected())no({lineWise:!1,text:r.getSelections()}),x.type=="cut"&&r.replaceSelection("",null,"cut");else if(r.options.lineWiseCopyCut){var M=fl(r);no({lineWise:!0,text:M.text}),x.type=="cut"&&r.operation(function(){r.setSelections(M.ranges,0,K),r.replaceSelection("",null,"cut")})}else return;if(x.clipboardData){x.clipboardData.clearData();var P=Sr.text.join(` +`?"n":!Q||/\s/.test(ae)?null:"p";if(Q&&!re&&!ue&&(ue="s"),Z&&Z!=ue){i<0&&(i=1,z(),t.sticky="after");break}if(ue&&(Z=ue),i>0&&!z(!re))break}var he=Jn(e,t,h,S,!0);return X(h,he)&&(he.hitSide=!0),he}function pl(e,t,i,r){var n=e.doc,h=t.left,S;if(r=="page"){var x=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),O=Math.max(x-.5*zi(e.display),3);S=(i>0?t.bottom:t.top)+i*O}else r=="line"&&(S=i>0?t.bottom+3:t.top-3);for(var P;P=ko(e,h,S),!!P.outside;){if(i<0?S<=0:S>=n.height){P.hitSide=!0;break}S+=i*5}return P}var Pe=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new U,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Pe.prototype.init=function(e){var t=this,i=this,r=i.cm,n=i.div=e.lineDiv;n.contentEditable=!0,hl(n,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function h(x){for(var O=x.target;O;O=O.parentNode){if(O==n)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(O.className))break}return!1}we(n,"paste",function(x){!h(x)||We(r,x)||cl(x,r)||_<=11&&setTimeout(st(r,function(){return t.updateFromDOM()}),20)}),we(n,"compositionstart",function(x){t.composing={data:x.data,done:!1}}),we(n,"compositionupdate",function(x){t.composing||(t.composing={data:x.data,done:!1})}),we(n,"compositionend",function(x){t.composing&&(x.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),we(n,"touchstart",function(){return i.forceCompositionEnd()}),we(n,"input",function(){t.composing||t.readFromDOMSoon()});function S(x){if(!(!h(x)||We(r,x))){if(r.somethingSelected())no({lineWise:!1,text:r.getSelections()}),x.type=="cut"&&r.replaceSelection("",null,"cut");else if(r.options.lineWiseCopyCut){var O=fl(r);no({lineWise:!0,text:O.text}),x.type=="cut"&&r.operation(function(){r.setSelections(O.ranges,0,K),r.replaceSelection("",null,"cut")})}else return;if(x.clipboardData){x.clipboardData.clearData();var P=Sr.text.join(` `);if(x.clipboardData.setData("Text",P),x.clipboardData.getData("Text")==P){x.preventDefault();return}}var z=dl(),Z=z.firstChild;r.display.lineSpace.insertBefore(z,r.display.lineSpace.firstChild),Z.value=Sr.text.join(` -`);var Q=G();ie(Z),setTimeout(function(){r.display.lineSpace.removeChild(z),Q.focus(),Q==n&&i.showPrimarySelection()},50)}}we(n,"copy",S),we(n,"cut",S)},Pe.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Pe.prototype.prepareSelection=function(){var e=ia(this.cm,!1);return e.focus=G()==this.div,e},Pe.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Pe.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Pe.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,i=t.doc.sel.primary(),r=i.from(),n=i.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||n.line=t.display.viewFrom&&vl(t,r)||{node:x[0].measure.map[2],offset:0},P=n.linee.firstLine()&&(r=le(r.line-1,me(e.doc,r.line-1).length)),n.ch==me(e.doc,n.line).text.length&&n.linet.viewTo-1)return!1;var f,S,x;r.line==t.viewFrom||(f=Li(e,r.line))==0?(S=Re(t.view[0].line),x=t.view[0].node):(S=Re(t.view[f].line),x=t.view[f-1].node.nextSibling);var M=Li(e,n.line),P,z;if(M==t.view.length-1?(P=t.viewTo-1,z=t.lineDiv.lastChild):(P=Re(t.view[M+1].line)-1,z=t.view[M+1].node.previousSibling),!x)return!1;for(var Z=e.doc.splitLines(zu(e,x,z,S,P)),Q=Ot(e.doc,le(S,0),le(P,me(e.doc,P).text.length));Z.length>1&&Q.length>1;)if(Ae(Z)==Ae(Q))Z.pop(),Q.pop(),P--;else if(Z[0]==Q[0])Z.shift(),Q.shift(),S++;else break;for(var J=0,re=0,ae=Z[0],ue=Q[0],he=Math.min(ae.length,ue.length);Jr.ch&&ge.charCodeAt(ge.length-re-1)==de.charCodeAt(de.length-re-1);)J--,re++;Z[Z.length-1]=ge.slice(0,ge.length-re).replace(/^\u200b+/,""),Z[0]=Z[0].slice(J).replace(/\u200b+$/,"");var xe=le(S,J),Le=le(P,Q.length?Ae(Q).length-re:0);if(Z.length>1||Z[0]||I(xe,Le))return $i(e.doc,Z,xe,Le,"+input"),!0},Pe.prototype.ensurePolled=function(){this.forceCompositionEnd()},Pe.prototype.reset=function(){this.forceCompositionEnd()},Pe.prototype.forceCompositionEnd=function(){!this.composing||(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Pe.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80))},Pe.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Kt(this.cm,function(){return Bt(e.cm)})},Pe.prototype.setUneditable=function(e){e.contentEditable="false"},Pe.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||st(this.cm,ts)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},Pe.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!="nocursor")},Pe.prototype.onContextMenu=function(){},Pe.prototype.resetPosition=function(){},Pe.prototype.needsContentAttribute=!0;function vl(e,t){var i=wo(e,t.line);if(!i||i.hidden)return null;var r=me(e.doc,t.line),n=zs(i,r,t.line),f=ut(r,e.doc.direction),S="left";if(f){var x=Ne(f,t.ch);S=x%2?"right":"left"}var M=Gs(n.map,t.ch,S);return M.offset=M.collapse=="right"?M.end:M.start,M}function Uu(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function rn(e,t){return t&&(e.bad=!0),e}function zu(e,t,i,r,n){var f="",S=!1,x=e.doc.lineSeparator(),M=!1;function P(J){return function(re){return re.id==J}}function z(){S&&(f+=x,M&&(f+=x),S=M=!1)}function Z(J){J&&(z(),f+=J)}function Q(J){if(J.nodeType==1){var re=J.getAttribute("cm-text");if(re){Z(re);return}var ae=J.getAttribute("cm-marker"),ue;if(ae){var he=e.findMarks(le(r,0),le(n+1,0),P(+ae));he.length&&(ue=he[0].find(0))&&Z(Ot(e.doc,ue.from,ue.to).join(x));return}if(J.getAttribute("contenteditable")=="false")return;var ge=/^(pre|div|p|li|table|br)$/i.test(J.nodeName);if(!/^br$/i.test(J.nodeName)&&J.textContent.length==0)return;ge&&z();for(var de=0;de=9&&t.hasSelection&&(t.hasSelection=null),i.poll()}),we(n,"paste",function(S){We(r,S)||cl(S,r)||(r.state.pasteIncoming=+new Date,i.fastPoll())});function f(S){if(!We(r,S)){if(r.somethingSelected())no({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var x=fl(r);no({lineWise:!0,text:x.text}),S.type=="cut"?r.setSelections(x.ranges,null,K):(i.prevInput="",n.value=x.text.join(` -`),ie(n))}else return;S.type=="cut"&&(r.state.cutIncoming=+new Date)}}we(n,"cut",f),we(n,"copy",f),we(e.scroller,"paste",function(S){if(!(Yr(e,S)||We(r,S))){if(!n.dispatchEvent){r.state.pasteIncoming=+new Date,i.focus();return}var x=new Event("paste");x.clipboardData=S.clipboardData,n.dispatchEvent(x)}}),we(e.lineSpace,"selectstart",function(S){Yr(e,S)||Xe(S)}),we(n,"compositionstart",function(){var S=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:S,range:r.markText(S,r.getCursor("to"),{className:"CodeMirror-composing"})}}),we(n,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},Ye.prototype.createField=function(e){this.wrapper=dl(),this.textarea=this.wrapper.firstChild},Ye.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Ye.prototype.prepareSelection=function(){var e=this.cm,t=e.display,i=e.doc,r=ia(e);if(e.options.moveInputWithCursor){var n=mr(e,i.sel.primary().head,"div"),f=t.wrapper.getBoundingClientRect(),S=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,n.top+S.top-f.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,n.left+S.left-f.left))}return r},Ye.prototype.showSelection=function(e){var t=this.cm,i=t.display;D(i.cursorDiv,e.cursors),D(i.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Ye.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing)){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var i=t.getSelection();this.textarea.value=i,t.state.focused&&ie(this.textarea),m&&_>=9&&(this.hasSelection=i)}else e||(this.prevInput=this.textarea.value="",m&&_>=9&&(this.hasSelection=null))}},Ye.prototype.getField=function(){return this.textarea},Ye.prototype.supportsTouch=function(){return!1},Ye.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!l||G()!=this.textarea))try{this.textarea.focus()}catch{}},Ye.prototype.blur=function(){this.textarea.blur()},Ye.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ye.prototype.receivedFocus=function(){this.slowPoll()},Ye.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Ye.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function i(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,i)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,i)},Ye.prototype.poll=function(){var e=this,t=this.cm,i=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Ur(i)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var n=i.value;if(n==r&&!t.somethingSelected())return!1;if(m&&_>=9&&this.hasSelection===n||a&&/[\uf700-\uf7ff]/.test(n))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var f=n.charCodeAt(0);if(f==8203&&!r&&(r="\u200B"),f==8666)return this.reset(),this.cm.execCommand("undo")}for(var S=0,x=Math.min(r.length,n.length);S1e3||n.indexOf(` -`)>-1?i.value=e.prevInput="":e.prevInput=n,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ye.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ye.prototype.onKeyPress=function(){m&&_>=9&&(this.hasSelection=null),this.fastPoll()},Ye.prototype.onContextMenu=function(e){var t=this,i=t.cm,r=i.display,n=t.textarea;t.contextMenuPending&&t.contextMenuPending();var f=wi(i,e),S=r.scroller.scrollTop;if(!f||c)return;var x=i.options.resetSelectionOnContextMenu;x&&i.doc.sel.contains(f)==-1&&st(i,yt)(i.doc,ai(f),K);var M=n.style.cssText,P=t.wrapper.style.cssText,z=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",n.style.cssText=`position: absolute; width: 30px; height: 30px; +`);var Q=G();ie(Z),setTimeout(function(){r.display.lineSpace.removeChild(z),Q.focus(),Q==n&&i.showPrimarySelection()},50)}}we(n,"copy",S),we(n,"cut",S)},Pe.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Pe.prototype.prepareSelection=function(){var e=ia(this.cm,!1);return e.focus=G()==this.div,e},Pe.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Pe.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Pe.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,i=t.doc.sel.primary(),r=i.from(),n=i.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||n.line=t.display.viewFrom&&vl(t,r)||{node:x[0].measure.map[2],offset:0},P=n.linee.firstLine()&&(r=le(r.line-1,me(e.doc,r.line-1).length)),n.ch==me(e.doc,n.line).text.length&&n.linet.viewTo-1)return!1;var h,S,x;r.line==t.viewFrom||(h=Li(e,r.line))==0?(S=Re(t.view[0].line),x=t.view[0].node):(S=Re(t.view[h].line),x=t.view[h-1].node.nextSibling);var O=Li(e,n.line),P,z;if(O==t.view.length-1?(P=t.viewTo-1,z=t.lineDiv.lastChild):(P=Re(t.view[O+1].line)-1,z=t.view[O+1].node.previousSibling),!x)return!1;for(var Z=e.doc.splitLines(zu(e,x,z,S,P)),Q=Ot(e.doc,le(S,0),le(P,me(e.doc,P).text.length));Z.length>1&&Q.length>1;)if(Ae(Z)==Ae(Q))Z.pop(),Q.pop(),P--;else if(Z[0]==Q[0])Z.shift(),Q.shift(),S++;else break;for(var J=0,re=0,ae=Z[0],ue=Q[0],he=Math.min(ae.length,ue.length);Jr.ch&&ge.charCodeAt(ge.length-re-1)==de.charCodeAt(de.length-re-1);)J--,re++;Z[Z.length-1]=ge.slice(0,ge.length-re).replace(/^\u200b+/,""),Z[0]=Z[0].slice(J).replace(/\u200b+$/,"");var xe=le(S,J),Le=le(P,Q.length?Ae(Q).length-re:0);if(Z.length>1||Z[0]||I(xe,Le))return $i(e.doc,Z,xe,Le,"+input"),!0},Pe.prototype.ensurePolled=function(){this.forceCompositionEnd()},Pe.prototype.reset=function(){this.forceCompositionEnd()},Pe.prototype.forceCompositionEnd=function(){!this.composing||(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Pe.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80))},Pe.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Kt(this.cm,function(){return Bt(e.cm)})},Pe.prototype.setUneditable=function(e){e.contentEditable="false"},Pe.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||st(this.cm,ts)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},Pe.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!="nocursor")},Pe.prototype.onContextMenu=function(){},Pe.prototype.resetPosition=function(){},Pe.prototype.needsContentAttribute=!0;function vl(e,t){var i=wo(e,t.line);if(!i||i.hidden)return null;var r=me(e.doc,t.line),n=zs(i,r,t.line),h=ut(r,e.doc.direction),S="left";if(h){var x=Ne(h,t.ch);S=x%2?"right":"left"}var O=Gs(n.map,t.ch,S);return O.offset=O.collapse=="right"?O.end:O.start,O}function Uu(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function rn(e,t){return t&&(e.bad=!0),e}function zu(e,t,i,r,n){var h="",S=!1,x=e.doc.lineSeparator(),O=!1;function P(J){return function(re){return re.id==J}}function z(){S&&(h+=x,O&&(h+=x),S=O=!1)}function Z(J){J&&(z(),h+=J)}function Q(J){if(J.nodeType==1){var re=J.getAttribute("cm-text");if(re){Z(re);return}var ae=J.getAttribute("cm-marker"),ue;if(ae){var he=e.findMarks(le(r,0),le(n+1,0),P(+ae));he.length&&(ue=he[0].find(0))&&Z(Ot(e.doc,ue.from,ue.to).join(x));return}if(J.getAttribute("contenteditable")=="false")return;var ge=/^(pre|div|p|li|table|br)$/i.test(J.nodeName);if(!/^br$/i.test(J.nodeName)&&J.textContent.length==0)return;ge&&z();for(var de=0;de=9&&t.hasSelection&&(t.hasSelection=null),i.poll()}),we(n,"paste",function(S){We(r,S)||cl(S,r)||(r.state.pasteIncoming=+new Date,i.fastPoll())});function h(S){if(!We(r,S)){if(r.somethingSelected())no({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var x=fl(r);no({lineWise:!0,text:x.text}),S.type=="cut"?r.setSelections(x.ranges,null,K):(i.prevInput="",n.value=x.text.join(` +`),ie(n))}else return;S.type=="cut"&&(r.state.cutIncoming=+new Date)}}we(n,"cut",h),we(n,"copy",h),we(e.scroller,"paste",function(S){if(!(Yr(e,S)||We(r,S))){if(!n.dispatchEvent){r.state.pasteIncoming=+new Date,i.focus();return}var x=new Event("paste");x.clipboardData=S.clipboardData,n.dispatchEvent(x)}}),we(e.lineSpace,"selectstart",function(S){Yr(e,S)||Xe(S)}),we(n,"compositionstart",function(){var S=r.getCursor("from");i.composing&&i.composing.range.clear(),i.composing={start:S,range:r.markText(S,r.getCursor("to"),{className:"CodeMirror-composing"})}}),we(n,"compositionend",function(){i.composing&&(i.poll(),i.composing.range.clear(),i.composing=null)})},Ye.prototype.createField=function(e){this.wrapper=dl(),this.textarea=this.wrapper.firstChild},Ye.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Ye.prototype.prepareSelection=function(){var e=this.cm,t=e.display,i=e.doc,r=ia(e);if(e.options.moveInputWithCursor){var n=mr(e,i.sel.primary().head,"div"),h=t.wrapper.getBoundingClientRect(),S=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,n.top+S.top-h.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,n.left+S.left-h.left))}return r},Ye.prototype.showSelection=function(e){var t=this.cm,i=t.display;D(i.cursorDiv,e.cursors),D(i.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Ye.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing)){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var i=t.getSelection();this.textarea.value=i,t.state.focused&&ie(this.textarea),m&&_>=9&&(this.hasSelection=i)}else e||(this.prevInput=this.textarea.value="",m&&_>=9&&(this.hasSelection=null))}},Ye.prototype.getField=function(){return this.textarea},Ye.prototype.supportsTouch=function(){return!1},Ye.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!l||G()!=this.textarea))try{this.textarea.focus()}catch{}},Ye.prototype.blur=function(){this.textarea.blur()},Ye.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ye.prototype.receivedFocus=function(){this.slowPoll()},Ye.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Ye.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function i(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,i)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,i)},Ye.prototype.poll=function(){var e=this,t=this.cm,i=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Ur(i)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var n=i.value;if(n==r&&!t.somethingSelected())return!1;if(m&&_>=9&&this.hasSelection===n||a&&/[\uf700-\uf7ff]/.test(n))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var h=n.charCodeAt(0);if(h==8203&&!r&&(r="\u200B"),h==8666)return this.reset(),this.cm.execCommand("undo")}for(var S=0,x=Math.min(r.length,n.length);S1e3||n.indexOf(` +`)>-1?i.value=e.prevInput="":e.prevInput=n,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ye.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ye.prototype.onKeyPress=function(){m&&_>=9&&(this.hasSelection=null),this.fastPoll()},Ye.prototype.onContextMenu=function(e){var t=this,i=t.cm,r=i.display,n=t.textarea;t.contextMenuPending&&t.contextMenuPending();var h=wi(i,e),S=r.scroller.scrollTop;if(!h||c)return;var x=i.options.resetSelectionOnContextMenu;x&&i.doc.sel.contains(h)==-1&&st(i,yt)(i.doc,ai(h),K);var O=n.style.cssText,P=t.wrapper.style.cssText,z=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",n.style.cssText=`position: absolute; width: 30px; height: 30px; top: `+(e.clientY-z.top-5)+"px; left: "+(e.clientX-z.left-5)+`px; z-index: 1000; background: `+(m?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var Z;g&&(Z=window.scrollY),r.input.focus(),g&&window.scrollTo(null,Z),r.input.reset(),i.somethingSelected()||(n.value=t.prevInput=" "),t.contextMenuPending=J,r.selForContextMenu=i.doc.sel,clearTimeout(r.detectingSelectAll);function Q(){if(n.selectionStart!=null){var ae=i.somethingSelected(),ue="\u200B"+(ae?n.value:"");n.value="\u21DA",n.value=ue,t.prevInput=ae?"":"\u200B",n.selectionStart=1,n.selectionEnd=ue.length,r.selForContextMenu=i.doc.sel}}function J(){if(t.contextMenuPending==J&&(t.contextMenuPending=!1,t.wrapper.style.cssText=P,n.style.cssText=M,m&&_<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=S),n.selectionStart!=null)){(!m||m&&_<9)&&Q();var ae=0,ue=function(){r.selForContextMenu==i.doc.sel&&n.selectionStart==0&&n.selectionEnd>0&&t.prevInput=="\u200B"?st(i,Da)(i):ae++<10?r.detectingSelectAll=setTimeout(ue,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(ue,200)}}if(m&&_>=9&&Q(),O){Qt(e);var re=function(){Qe(window,"mouseup",re),setTimeout(J,20)};we(window,"mouseup",re)}else setTimeout(J,50)},Ye.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e=="nocursor",this.textarea.readOnly=!!e},Ye.prototype.setUneditable=function(){},Ye.prototype.needsContentAttribute=!1;function Ku(e,t){if(t=t?ve(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var i=G();t.autofocus=i==e||e.getAttribute("autofocus")!=null&&i==document.body}function r(){e.value=x.getValue()}var n;if(e.form&&(we(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var f=e.form;n=f.submit;try{var S=f.submit=function(){r(),f.submit=n,f.submit(),f.submit=S}}catch{}}t.finishInit=function(M){M.save=r,M.getTextArea=function(){return e},M.toTextArea=function(){M.toTextArea=isNaN,r(),e.parentNode.removeChild(M.getWrapperElement()),e.style.display="",e.form&&(Qe(e.form,"submit",r),!t.leaveSubmitMethodAlone&&typeof e.form.submit=="function"&&(e.form.submit=n))}},e.style.display="none";var x=ze(function(M){return e.parentNode.insertBefore(M,e.nextSibling)},t);return x}function Gu(e){e.off=Qe,e.on=we,e.wheelEventPixels=Qc,e.Doc=Pt,e.splitLines=kr,e.countColumn=Ee,e.findColumn=Ce,e.isWordChar=Cr,e.Pass=Y,e.signal=ke,e.Line=ni,e.changeEnd=li,e.scrollbarModel=ca,e.Pos=le,e.cmpPos=I,e.modes=gt,e.mimeModes=ht,e.resolveMode=dr,e.getMode=pr,e.modeExtensions=bt,e.extendMode=St,e.copyState=dt,e.startState=Ar,e.innerMode=Tr,e.commands=On,e.keyMap=Vr,e.keyName=Za,e.isModifierKey=Xa,e.lookupKey=Qi,e.normalizeKeyMap=Su,e.StringStream=Ie,e.SharedTextMarker=Tn,e.TextMarker=ui,e.LineWidget=En,e.e_preventDefault=Xe,e.e_stopPropagation=hr,e.e_stop=Qt,e.addClass=$,e.contains=j,e.rmClass=A,e.keyNames=fi}Hu(ze),ju(ze);var Xu="iter insert remove copy getEditor constructor".split(" ");for(var so in Pt.prototype)Pt.prototype.hasOwnProperty(so)&&ee(Xu,so)<0&&(ze.prototype[so]=function(e){return function(){return e.apply(this.doc,arguments)}}(Pt.prototype[so]));return At(Pt),ze.inputStyles={textarea:Ye,contenteditable:Pe},ze.defineMode=function(e){!ze.defaults.mode&&e!="null"&&(ze.defaults.mode=e),qr.apply(this,arguments)},ze.defineMIME=jt,ze.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),ze.defineMIME("text/plain","null"),ze.defineExtension=function(e,t){ze.prototype[e]=t},ze.defineDocExtension=function(e,t){Pt.prototype[e]=t},ze.fromTextArea=Ku,Gu(ze),ze.version="5.65.2",ze})});var hs=or((Cl,wl)=>{(function(V){typeof Cl=="object"&&typeof wl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";V.defineMode("javascript",function(H,R){var h=H.indentUnit,L=R.statementIndent,y=R.jsonld,m=R.json||y,_=R.trackScope!==!1,g=R.typescript,T=R.wordCharacters||/[\w$\xa1-\uffff]/,w=function(){function I(Ze){return{type:Ze,style:"keyword"}}var X=I("keyword a"),oe=I("keyword b"),ce=I("keyword c"),Te=I("keyword d"),Oe=I("operator"),pe={type:"atom",style:"atom"};return{if:I("if"),while:X,with:X,else:oe,do:oe,try:oe,finally:oe,return:Te,break:Te,continue:Te,new:I("new"),delete:ce,void:ce,throw:ce,debugger:I("debugger"),var:I("var"),const:I("var"),let:I("var"),function:I("function"),catch:I("catch"),for:I("for"),switch:I("switch"),case:I("case"),default:I("default"),in:Oe,typeof:Oe,instanceof:Oe,true:pe,false:pe,null:pe,undefined:pe,NaN:pe,Infinity:pe,this:I("this"),class:I("class"),super:I("atom"),yield:ce,export:I("export"),import:I("import"),extends:ce,await:ce}}(),c=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function C(I){for(var X=!1,oe,ce=!1;(oe=I.next())!=null;){if(!X){if(oe=="/"&&!ce)return;oe=="["?ce=!0:ce&&oe=="]"&&(ce=!1)}X=!X&&oe=="\\"}}var d,s;function o(I,X,oe){return d=I,s=oe,X}function l(I,X){var oe=I.next();if(oe=='"'||oe=="'")return X.tokenize=a(oe),X.tokenize(I,X);if(oe=="."&&I.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return o("number","number");if(oe=="."&&I.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(oe))return o(oe);if(oe=="="&&I.eat(">"))return o("=>","operator");if(oe=="0"&&I.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return o("number","number");if(/\d/.test(oe))return I.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),o("number","number");if(oe=="/")return I.eat("*")?(X.tokenize=u,u(I,X)):I.eat("/")?(I.skipToEnd(),o("comment","comment")):le(I,X,1)?(C(I),I.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),o("regexp","string-2")):(I.eat("="),o("operator","operator",I.current()));if(oe=="`")return X.tokenize=v,v(I,X);if(oe=="#"&&I.peek()=="!")return I.skipToEnd(),o("meta","meta");if(oe=="#"&&I.eatWhile(T))return o("variable","property");if(oe=="<"&&I.match("!--")||oe=="-"&&I.match("->")&&!/\S/.test(I.string.slice(0,I.start)))return I.skipToEnd(),o("comment","comment");if(c.test(oe))return(oe!=">"||!X.lexical||X.lexical.type!=">")&&(I.eat("=")?(oe=="!"||oe=="=")&&I.eat("="):/[<>*+\-|&?]/.test(oe)&&(I.eat(oe),oe==">"&&I.eat(oe))),oe=="?"&&I.eat(".")?o("."):o("operator","operator",I.current());if(T.test(oe)){I.eatWhile(T);var ce=I.current();if(X.lastType!="."){if(w.propertyIsEnumerable(ce)){var Te=w[ce];return o(Te.type,Te.style,ce)}if(ce=="async"&&I.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return o("async","keyword",ce)}return o("variable","variable",ce)}}function a(I){return function(X,oe){var ce=!1,Te;if(y&&X.peek()=="@"&&X.match(p))return oe.tokenize=l,o("jsonld-keyword","meta");for(;(Te=X.next())!=null&&!(Te==I&&!ce);)ce=!ce&&Te=="\\";return ce||(oe.tokenize=l),o("string","string")}}function u(I,X){for(var oe=!1,ce;ce=I.next();){if(ce=="/"&&oe){X.tokenize=l;break}oe=ce=="*"}return o("comment","comment")}function v(I,X){for(var oe=!1,ce;(ce=I.next())!=null;){if(!oe&&(ce=="`"||ce=="$"&&I.eat("{"))){X.tokenize=l;break}oe=!oe&&ce=="\\"}return o("quasi","string-2",I.current())}var b="([{}])";function E(I,X){X.fatArrowAt&&(X.fatArrowAt=null);var oe=I.string.indexOf("=>",I.start);if(!(oe<0)){if(g){var ce=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(I.string.slice(I.start,oe));ce&&(oe=ce.index)}for(var Te=0,Oe=!1,pe=oe-1;pe>=0;--pe){var Ze=I.string.charAt(pe),_t=b.indexOf(Ze);if(_t>=0&&_t<3){if(!Te){++pe;break}if(--Te==0){Ze=="("&&(Oe=!0);break}}else if(_t>=3&&_t<6)++Te;else if(T.test(Ze))Oe=!0;else if(/["'\/`]/.test(Ze))for(;;--pe){if(pe==0)return;var Rr=I.string.charAt(pe-1);if(Rr==Ze&&I.string.charAt(pe-2)!="\\"){pe--;break}}else if(Oe&&!Te){++pe;break}}Oe&&!Te&&(X.fatArrowAt=pe)}}var O={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function k(I,X,oe,ce,Te,Oe){this.indented=I,this.column=X,this.type=oe,this.prev=Te,this.info=Oe,ce!=null&&(this.align=ce)}function A(I,X){if(!_)return!1;for(var oe=I.localVars;oe;oe=oe.next)if(oe.name==X)return!0;for(var ce=I.context;ce;ce=ce.prev)for(var oe=ce.vars;oe;oe=oe.next)if(oe.name==X)return!0}function N(I,X,oe,ce,Te){var Oe=I.cc;for(D.state=I,D.stream=Te,D.marked=null,D.cc=Oe,D.style=X,I.lexical.hasOwnProperty("align")||(I.lexical.align=!0);;){var pe=Oe.length?Oe.pop():m?fe:K;if(pe(oe,ce)){for(;Oe.length&&Oe[Oe.length-1].lex;)Oe.pop()();return D.marked?D.marked:oe=="variable"&&A(I,ce)?"variable-2":X}}}var D={state:null,column:null,marked:null,cc:null};function W(){for(var I=arguments.length-1;I>=0;I--)D.cc.push(arguments[I])}function B(){return W.apply(null,arguments),!0}function F(I,X){for(var oe=X;oe;oe=oe.next)if(oe.name==I)return!0;return!1}function j(I){var X=D.state;if(D.marked="def",!!_){if(X.context){if(X.lexical.info=="var"&&X.context&&X.context.block){var oe=G(I,X.context);if(oe!=null){X.context=oe;return}}else if(!F(I,X.localVars)){X.localVars=new ie(I,X.localVars);return}}R.globalVars&&!F(I,X.globalVars)&&(X.globalVars=new ie(I,X.globalVars))}}function G(I,X){if(X)if(X.block){var oe=G(I,X.prev);return oe?oe==X.prev?X:new ne(oe,X.vars,!0):null}else return F(I,X.vars)?X:new ne(X.prev,new ie(I,X.vars),!1);else return null}function $(I){return I=="public"||I=="private"||I=="protected"||I=="abstract"||I=="readonly"}function ne(I,X,oe){this.prev=I,this.vars=X,this.block=oe}function ie(I,X){this.name=I,this.next=X}var be=new ie("this",new ie("arguments",null));function ve(){D.state.context=new ne(D.state.context,D.state.localVars,!1),D.state.localVars=be}function Ee(){D.state.context=new ne(D.state.context,D.state.localVars,!0),D.state.localVars=null}ve.lex=Ee.lex=!0;function U(){D.state.localVars=D.state.context.vars,D.state.context=D.state.context.prev}U.lex=!0;function ee(I,X){var oe=function(){var ce=D.state,Te=ce.indented;if(ce.lexical.type=="stat")Te=ce.lexical.indented;else for(var Oe=ce.lexical;Oe&&Oe.type==")"&&Oe.align;Oe=Oe.prev)Te=Oe.indented;ce.lexical=new k(Te,D.stream.column(),I,null,ce.lexical,X)};return oe.lex=!0,oe}function q(){var I=D.state;I.lexical.prev&&(I.lexical.type==")"&&(I.indented=I.lexical.indented),I.lexical=I.lexical.prev)}q.lex=!0;function Y(I){function X(oe){return oe==I?B():I==";"||oe=="}"||oe==")"||oe=="]"?W():B(X)}return X}function K(I,X){return I=="var"?B(ee("vardef",X),Lr,Y(";"),q):I=="keyword a"?B(ee("form"),De,K,q):I=="keyword b"?B(ee("form"),K,q):I=="keyword d"?D.stream.match(/^\s*$/,!1)?B():B(ee("stat"),Ae,Y(";"),q):I=="debugger"?B(Y(";")):I=="{"?B(ee("}"),Ee,ut,q,U):I==";"?B():I=="if"?(D.state.lexical.info=="else"&&D.state.cc[D.state.cc.length-1]==q&&D.state.cc.pop()(),B(ee("form"),De,K,q,Ur)):I=="function"?B(gt):I=="for"?B(ee("form"),Ee,zr,K,U,q):I=="class"||g&&X=="interface"?(D.marked="keyword",B(ee("form",I=="class"?I:X),pr,q)):I=="variable"?g&&X=="declare"?(D.marked="keyword",B(K)):g&&(X=="module"||X=="enum"||X=="type")&&D.stream.match(/^\s*\w/,!1)?(D.marked="keyword",X=="enum"?B(Rt):X=="type"?B(qr,Y("operator"),ke,Y(";")):B(ee("form"),et,Y("{"),ee("}"),ut,q,q)):g&&X=="namespace"?(D.marked="keyword",B(ee("form"),fe,K,q)):g&&X=="abstract"?(D.marked="keyword",B(K)):B(ee("stat"),Nr):I=="switch"?B(ee("form"),De,Y("{"),ee("}","switch"),Ee,ut,q,q,U):I=="case"?B(fe,Y(":")):I=="default"?B(Y(":")):I=="catch"?B(ee("form"),ve,Se,K,q,U):I=="export"?B(ee("stat"),Tr,q):I=="import"?B(ee("stat"),Ie,q):I=="async"?B(K):X=="@"?B(fe,K):W(ee("stat"),fe,Y(";"),q)}function Se(I){if(I=="(")return B(jt,Y(")"))}function fe(I,X){return Fe(I,X,!1)}function Ce(I,X){return Fe(I,X,!0)}function De(I){return I!="("?W():B(ee(")"),Ae,Y(")"),q)}function Fe(I,X,oe){if(D.state.fatArrowAt==D.stream.start){var ce=oe?Cr:lr;if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,Y("=>"),ce,U);if(I=="variable")return W(ve,et,Y("=>"),ce,U)}var Te=oe?je:_e;return O.hasOwnProperty(I)?B(Te):I=="function"?B(gt,Te):I=="class"||g&&X=="interface"?(D.marked="keyword",B(ee("form"),dr,q)):I=="keyword c"||I=="async"?B(oe?Ce:fe):I=="("?B(ee(")"),Ae,Y(")"),q,Te):I=="operator"||I=="spread"?B(oe?Ce:fe):I=="["?B(ee("]"),Re,q,Te):I=="{"?cr(Nt,"}",null,Te):I=="quasi"?W(Je,Te):I=="new"?B(wr(oe)):B()}function Ae(I){return I.match(/[;\}\)\],]/)?W():W(fe)}function _e(I,X){return I==","?B(Ae):je(I,X,!1)}function je(I,X,oe){var ce=oe==!1?_e:je,Te=oe==!1?fe:Ce;if(I=="=>")return B(ve,oe?Cr:lr,U);if(I=="operator")return/\+\+|--/.test(X)||g&&X=="!"?B(ce):g&&X=="<"&&D.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?B(ee(">"),Ne(ke,">"),q,ce):X=="?"?B(fe,Y(":"),Te):B(Te);if(I=="quasi")return W(Je,ce);if(I!=";"){if(I=="(")return cr(Ce,")","call",ce);if(I==".")return B(ti,ce);if(I=="[")return B(ee("]"),Ae,Y("]"),q,ce);if(g&&X=="as")return D.marked="keyword",B(ke,ce);if(I=="regexp")return D.state.lastType=D.marked="operator",D.stream.backUp(D.stream.pos-D.stream.start-1),B(Te)}}function Je(I,X){return I!="quasi"?W():X.slice(X.length-2)!="${"?B(Je):B(Ae,Tt)}function Tt(I){if(I=="}")return D.marked="string-2",D.state.tokenize=v,B(Je)}function lr(I){return E(D.stream,D.state),W(I=="{"?K:fe)}function Cr(I){return E(D.stream,D.state),W(I=="{"?K:Ce)}function wr(I){return function(X){return X=="."?B(I?pi:ei):X=="variable"&&g?B(Qt,I?je:_e):W(I?Ce:fe)}}function ei(I,X){if(X=="target")return D.marked="keyword",B(_e)}function pi(I,X){if(X=="target")return D.marked="keyword",B(je)}function Nr(I){return I==":"?B(q,K):W(_e,Y(";"),q)}function ti(I){if(I=="variable")return D.marked="property",B()}function Nt(I,X){if(I=="async")return D.marked="property",B(Nt);if(I=="variable"||D.style=="keyword"){if(D.marked="property",X=="get"||X=="set")return B(vi);var oe;return g&&D.state.fatArrowAt==D.stream.start&&(oe=D.stream.match(/^\s*:\s*/,!1))&&(D.state.fatArrowAt=D.stream.pos+oe[0].length),B(vt)}else{if(I=="number"||I=="string")return D.marked=y?"property":D.style+" property",B(vt);if(I=="jsonld-keyword")return B(vt);if(g&&$(X))return D.marked="keyword",B(Nt);if(I=="[")return B(fe,Wt,Y("]"),vt);if(I=="spread")return B(Ce,vt);if(X=="*")return D.marked="keyword",B(Nt);if(I==":")return W(vt)}}function vi(I){return I!="variable"?W(vt):(D.marked="property",B(gt))}function vt(I){if(I==":")return B(Ce);if(I=="(")return W(gt)}function Ne(I,X,oe){function ce(Te,Oe){if(oe?oe.indexOf(Te)>-1:Te==","){var pe=D.state.lexical;return pe.info=="call"&&(pe.pos=(pe.pos||0)+1),B(function(Ze,_t){return Ze==X||_t==X?W():W(I)},ce)}return Te==X||Oe==X?B():oe&&oe.indexOf(";")>-1?W(I):B(Y(X))}return function(Te,Oe){return Te==X||Oe==X?B():W(I,ce)}}function cr(I,X,oe){for(var ce=3;ce"),ke);if(I=="quasi")return W(At,ft)}function We(I){if(I=="=>")return B(ke)}function fr(I){return I.match(/[\}\)\]]/)?B():I==","||I==";"?B(fr):W(Ke,fr)}function Ke(I,X){if(I=="variable"||D.style=="keyword")return D.marked="property",B(Ke);if(X=="?"||I=="number"||I=="string")return B(Ke);if(I==":")return B(ke);if(I=="[")return B(Y("variable"),we,Y("]"),Ke);if(I=="(")return W(ht,Ke);if(!I.match(/[;\}\)\],]/))return B()}function At(I,X){return I!="quasi"?W():X.slice(X.length-2)!="${"?B(At):B(ke,Xe)}function Xe(I){if(I=="}")return D.marked="string-2",D.state.tokenize=v,B(At)}function hr(I,X){return I=="variable"&&D.stream.match(/^\s*[?:]/,!1)||X=="?"?B(hr):I==":"?B(ke):I=="spread"?B(hr):W(ke)}function ft(I,X){if(X=="<")return B(ee(">"),Ne(ke,">"),q,ft);if(X=="|"||I=="."||X=="&")return B(ke);if(I=="[")return B(ke,Y("]"),ft);if(X=="extends"||X=="implements")return D.marked="keyword",B(ke);if(X=="?")return B(ke,Y(":"),ke)}function Qt(I,X){if(X=="<")return B(ee(">"),Ne(ke,">"),q,ft)}function Yt(){return W(ke,Wr)}function Wr(I,X){if(X=="=")return B(ke)}function Lr(I,X){return X=="enum"?(D.marked="keyword",B(Rt)):W(et,Wt,Mt,kr)}function et(I,X){if(g&&$(X))return D.marked="keyword",B(et);if(I=="variable")return j(X),B();if(I=="spread")return B(et);if(I=="[")return cr(xr,"]");if(I=="{")return cr(jr,"}")}function jr(I,X){return I=="variable"&&!D.stream.match(/^\s*:/,!1)?(j(X),B(Mt)):(I=="variable"&&(D.marked="property"),I=="spread"?B(et):I=="}"?W():I=="["?B(fe,Y("]"),Y(":"),jr):B(Y(":"),et,Mt))}function xr(){return W(et,Mt)}function Mt(I,X){if(X=="=")return B(Ce)}function kr(I){if(I==",")return B(Lr)}function Ur(I,X){if(I=="keyword b"&&X=="else")return B(ee("form","else"),K,q)}function zr(I,X){if(X=="await")return B(zr);if(I=="(")return B(ee(")"),Er,q)}function Er(I){return I=="var"?B(Lr,Zt):I=="variable"?B(Zt):W(Zt)}function Zt(I,X){return I==")"?B():I==";"?B(Zt):X=="in"||X=="of"?(D.marked="keyword",B(fe,Zt)):W(fe,Zt)}function gt(I,X){if(X=="*")return D.marked="keyword",B(gt);if(I=="variable")return j(X),B(gt);if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,ur,K,U);if(g&&X=="<")return B(ee(">"),Ne(Yt,">"),q,gt)}function ht(I,X){if(X=="*")return D.marked="keyword",B(ht);if(I=="variable")return j(X),B(ht);if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,ur,U);if(g&&X=="<")return B(ee(">"),Ne(Yt,">"),q,ht)}function qr(I,X){if(I=="keyword"||I=="variable")return D.marked="type",B(qr);if(X=="<")return B(ee(">"),Ne(Yt,">"),q)}function jt(I,X){return X=="@"&&B(fe,jt),I=="spread"?B(jt):g&&$(X)?(D.marked="keyword",B(jt)):g&&I=="this"?B(Wt,Mt):W(et,Wt,Mt)}function dr(I,X){return I=="variable"?pr(I,X):bt(I,X)}function pr(I,X){if(I=="variable")return j(X),B(bt)}function bt(I,X){if(X=="<")return B(ee(">"),Ne(Yt,">"),q,bt);if(X=="extends"||X=="implements"||g&&I==",")return X=="implements"&&(D.marked="keyword"),B(g?ke:fe,bt);if(I=="{")return B(ee("}"),St,q)}function St(I,X){if(I=="async"||I=="variable"&&(X=="static"||X=="get"||X=="set"||g&&$(X))&&D.stream.match(/^\s+[\w$\xa1-\uffff]/,!1))return D.marked="keyword",B(St);if(I=="variable"||D.style=="keyword")return D.marked="property",B(dt,St);if(I=="number"||I=="string")return B(dt,St);if(I=="[")return B(fe,Wt,Y("]"),dt,St);if(X=="*")return D.marked="keyword",B(St);if(g&&I=="(")return W(ht,St);if(I==";"||I==",")return B(St);if(I=="}")return B();if(X=="@")return B(fe,St)}function dt(I,X){if(X=="!"||X=="?")return B(dt);if(I==":")return B(ke,Mt);if(X=="=")return B(Ce);var oe=D.state.lexical.prev,ce=oe&&oe.info=="interface";return W(ce?ht:gt)}function Tr(I,X){return X=="*"?(D.marked="keyword",B(it,Y(";"))):X=="default"?(D.marked="keyword",B(fe,Y(";"))):I=="{"?B(Ne(Ar,"}"),it,Y(";")):W(K)}function Ar(I,X){if(X=="as")return D.marked="keyword",B(Y("variable"));if(I=="variable")return W(Ce,Ar)}function Ie(I){return I=="string"?B():I=="("?W(fe):I=="."?W(_e):W(me,Ot,it)}function me(I,X){return I=="{"?cr(me,"}"):(I=="variable"&&j(X),X=="*"&&(D.marked="keyword"),B(Mr))}function Ot(I){if(I==",")return B(me,Ot)}function Mr(I,X){if(X=="as")return D.marked="keyword",B(me)}function it(I,X){if(X=="from")return D.marked="keyword",B(fe)}function Re(I){return I=="]"?B():W(Ne(Ce,"]"))}function Rt(){return W(ee("form"),et,Y("{"),ee("}"),Ne(er,"}"),q,q)}function er(){return W(et,Mt)}function Or(I,X){return I.lastType=="operator"||I.lastType==","||c.test(X.charAt(0))||/[,.]/.test(X.charAt(0))}function le(I,X,oe){return X.tokenize==l&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(X.lastType)||X.lastType=="quasi"&&/\{\s*$/.test(I.string.slice(0,I.pos-(oe||0)))}return{startState:function(I){var X={tokenize:l,lastType:"sof",cc:[],lexical:new k((I||0)-h,0,"block",!1),localVars:R.localVars,context:R.localVars&&new ne(null,null,!1),indented:I||0};return R.globalVars&&typeof R.globalVars=="object"&&(X.globalVars=R.globalVars),X},token:function(I,X){if(I.sol()&&(X.lexical.hasOwnProperty("align")||(X.lexical.align=!1),X.indented=I.indentation(),E(I,X)),X.tokenize!=u&&I.eatSpace())return null;var oe=X.tokenize(I,X);return d=="comment"?oe:(X.lastType=d=="operator"&&(s=="++"||s=="--")?"incdec":d,N(X,oe,d,s,I))},indent:function(I,X){if(I.tokenize==u||I.tokenize==v)return V.Pass;if(I.tokenize!=l)return 0;var oe=X&&X.charAt(0),ce=I.lexical,Te;if(!/^\s*else\b/.test(X))for(var Oe=I.cc.length-1;Oe>=0;--Oe){var pe=I.cc[Oe];if(pe==q)ce=ce.prev;else if(pe!=Ur&&pe!=U)break}for(;(ce.type=="stat"||ce.type=="form")&&(oe=="}"||(Te=I.cc[I.cc.length-1])&&(Te==_e||Te==je)&&!/^[,\.=+\-*:?[\(]/.test(X));)ce=ce.prev;L&&ce.type==")"&&ce.prev.type=="stat"&&(ce=ce.prev);var Ze=ce.type,_t=oe==Ze;return Ze=="vardef"?ce.indented+(I.lastType=="operator"||I.lastType==","?ce.info.length+1:0):Ze=="form"&&oe=="{"?ce.indented:Ze=="form"?ce.indented+h:Ze=="stat"?ce.indented+(Or(I,X)?L||h:0):ce.info=="switch"&&!_t&&R.doubleIndentSwitch!=!1?ce.indented+(/^(?:case|default)\b/.test(X)?h:2*h):ce.align?ce.column+(_t?0:1):ce.indented+(_t?0:h)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:m?null:"/*",blockCommentEnd:m?null:"*/",blockCommentContinue:m?null:" * ",lineComment:m?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:m?"json":"javascript",jsonldMode:y,jsonMode:m,expressionAllowed:le,skipExpression:function(I){N(I,"atom","atom","true",new V.StringStream("",2,null))}}}),V.registerHelper("wordChars","javascript",/[\w$]/),V.defineMIME("text/javascript","javascript"),V.defineMIME("text/ecmascript","javascript"),V.defineMIME("application/javascript","javascript"),V.defineMIME("application/x-javascript","javascript"),V.defineMIME("application/ecmascript","javascript"),V.defineMIME("application/json",{name:"javascript",json:!0}),V.defineMIME("application/x-json",{name:"javascript",json:!0}),V.defineMIME("application/manifest+json",{name:"javascript",json:!0}),V.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),V.defineMIME("text/typescript",{name:"javascript",typescript:!0}),V.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var ps=or((xl,kl)=>{(function(V){typeof xl=="object"&&typeof kl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";V.defineMode("perl",function(){var y={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},m="string-2",_=/[goseximacplud]/;function g(c,p,C,d,s){return p.chain=null,p.style=null,p.tail=null,p.tokenize=function(o,l){for(var a=!1,u,v=0;u=o.next();){if(u===C[v]&&!a)return C[++v]!==void 0?(l.chain=C[v],l.style=d,l.tail=s):s&&o.eatWhile(s),l.tokenize=w,d;a=!a&&u=="\\"}return d},p.tokenize(c,p)}function T(c,p,C){return p.tokenize=function(d,s){return d.string==C&&(s.tokenize=w),d.skipToEnd(),"string"},p.tokenize(c,p)}function w(c,p){if(c.eatSpace())return null;if(p.chain)return g(c,p,p.chain,p.style,p.tail);if(c.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(c.match(/^<<(?=[_a-zA-Z])/))return c.eatWhile(/\w/),T(c,p,c.current().substr(2));if(c.sol()&&c.match(/^\=item(?!\w)/))return T(c,p,"=cut");var C=c.next();if(C=='"'||C=="'"){if(R(c,3)=="<<"+C){var d=c.pos;c.eatWhile(/\w/);var s=c.current().substr(1);if(s&&c.eat(C))return T(c,p,s);c.pos=d}return g(c,p,[C],"string")}if(C=="q"){var o=H(c,-2);if(!(o&&/\w/.test(o))){if(o=H(c,0),o=="x"){if(o=H(c,1),o=="(")return L(c,2),g(c,p,[")"],m,_);if(o=="[")return L(c,2),g(c,p,["]"],m,_);if(o=="{")return L(c,2),g(c,p,["}"],m,_);if(o=="<")return L(c,2),g(c,p,[">"],m,_);if(/[\^'"!~\/]/.test(o))return L(c,1),g(c,p,[c.eat(o)],m,_)}else if(o=="q"){if(o=H(c,1),o=="(")return L(c,2),g(c,p,[")"],"string");if(o=="[")return L(c,2),g(c,p,["]"],"string");if(o=="{")return L(c,2),g(c,p,["}"],"string");if(o=="<")return L(c,2),g(c,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return L(c,1),g(c,p,[c.eat(o)],"string")}else if(o=="w"){if(o=H(c,1),o=="(")return L(c,2),g(c,p,[")"],"bracket");if(o=="[")return L(c,2),g(c,p,["]"],"bracket");if(o=="{")return L(c,2),g(c,p,["}"],"bracket");if(o=="<")return L(c,2),g(c,p,[">"],"bracket");if(/[\^'"!~\/]/.test(o))return L(c,1),g(c,p,[c.eat(o)],"bracket")}else if(o=="r"){if(o=H(c,1),o=="(")return L(c,2),g(c,p,[")"],m,_);if(o=="[")return L(c,2),g(c,p,["]"],m,_);if(o=="{")return L(c,2),g(c,p,["}"],m,_);if(o=="<")return L(c,2),g(c,p,[">"],m,_);if(/[\^'"!~\/]/.test(o))return L(c,1),g(c,p,[c.eat(o)],m,_)}else if(/[\^'"!~\/(\[{<]/.test(o)){if(o=="(")return L(c,1),g(c,p,[")"],"string");if(o=="[")return L(c,1),g(c,p,["]"],"string");if(o=="{")return L(c,1),g(c,p,["}"],"string");if(o=="<")return L(c,1),g(c,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return g(c,p,[c.eat(o)],"string")}}}if(C=="m"){var o=H(c,-2);if(!(o&&/\w/.test(o))&&(o=c.eat(/[(\[{<\^'"!~\/]/),o)){if(/[\^'"!~\/]/.test(o))return g(c,p,[o],m,_);if(o=="(")return g(c,p,[")"],m,_);if(o=="[")return g(c,p,["]"],m,_);if(o=="{")return g(c,p,["}"],m,_);if(o=="<")return g(c,p,[">"],m,_)}}if(C=="s"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?g(c,p,["]","]"],m,_):o=="{"?g(c,p,["}","}"],m,_):o=="<"?g(c,p,[">",">"],m,_):o=="("?g(c,p,[")",")"],m,_):g(c,p,[o,o],m,_)}if(C=="y"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?g(c,p,["]","]"],m,_):o=="{"?g(c,p,["}","}"],m,_):o=="<"?g(c,p,[">",">"],m,_):o=="("?g(c,p,[")",")"],m,_):g(c,p,[o,o],m,_)}if(C=="t"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat("r"),o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o)))return o=="["?g(c,p,["]","]"],m,_):o=="{"?g(c,p,["}","}"],m,_):o=="<"?g(c,p,[">",">"],m,_):o=="("?g(c,p,[")",")"],m,_):g(c,p,[o,o],m,_)}if(C=="`")return g(c,p,[C],"variable-2");if(C=="/")return/~\s*$/.test(R(c))?g(c,p,[C],m,_):"operator";if(C=="$"){var d=c.pos;if(c.eatWhile(/\d/)||c.eat("{")&&c.eatWhile(/\d/)&&c.eat("}"))return"variable-2";c.pos=d}if(/[$@%]/.test(C)){var d=c.pos;if(c.eat("^")&&c.eat(/[A-Z]/)||!/[@$%&]/.test(H(c,-2))&&c.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var o=c.current();if(y[o])return"variable-2"}c.pos=d}if(/[$@%&]/.test(C)&&(c.eatWhile(/[\w$]/)||c.eat("{")&&c.eatWhile(/[\w$]/)&&c.eat("}"))){var o=c.current();return y[o]?"variable-2":"variable"}if(C=="#"&&H(c,-2)!="$")return c.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(C)){var d=c.pos;if(c.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),y[c.current()])return"operator";c.pos=d}if(C=="_"&&c.pos==1){if(h(c,6)=="_END__")return g(c,p,["\0"],"comment");if(h(c,7)=="_DATA__")return g(c,p,["\0"],"variable-2");if(h(c,7)=="_C__")return g(c,p,["\0"],"string")}if(/\w/.test(C)){var d=c.pos;if(H(c,-2)=="{"&&(H(c,0)=="}"||c.eatWhile(/\w/)&&H(c,0)=="}"))return"string";c.pos=d}if(/[A-Z]/.test(C)){var l=H(c,-2),d=c.pos;if(c.eatWhile(/[A-Z_]/),/[\da-z]/.test(H(c,0)))c.pos=d;else{var o=y[c.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(C)){var l=H(c,-2);c.eatWhile(/\w/);var o=y[c.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}return null}return{startState:function(){return{tokenize:w,chain:null,style:null,tail:null}},token:function(c,p){return(p.tokenize||w)(c,p)},lineComment:"#"}}),V.registerHelper("wordChars","perl",/[\w$]/),V.defineMIME("text/x-perl","perl");function H(y,m){return y.string.charAt(y.pos+(m||0))}function R(y,m){if(m){var _=y.pos-m;return y.string.substr(_>=0?_:0,m)}else return y.string.substr(0,y.pos-1)}function h(y,m){var _=y.string.length,g=_-y.pos+1;return y.string.substr(y.pos,m&&m<_?m:g)}function L(y,m){var _=y.pos+m,g;_<=0?y.pos=0:_>=(g=y.string.length-1)?y.pos=g:y.pos=_}})});var Ol=or(Qr=>{"use strict";var co=Qr&&Qr.__assign||function(){return co=Object.assign||function(V){for(var H,R=1,h=arguments.length;R0&&R.hide()}),this.element.classList.remove(this.toastShowClass),this.element.classList.add(this.toastHideClass),this.trigger("hide"),this.animation){var h=function(){return R.remove()},L=function(){m||(R.element.addEventListener("transitionend",function(){return h()}),m=!0)},y=function(){R.show(),R.element.removeEventListener("transitionstart",function(){return L()}),R.element.removeEventListener("transitionend",function(){return h()}),R.element.removeEventListener("mouseover",function(){return y()}),R.element.addEventListener("mouseout",function(){return R.hide()})},m=!1;this.element.addEventListener("mouseover",function(){return y()}),this.element.addEventListener("transitionstart",function(){return L()});return}this.remove()}},V.prototype.remove=function(){this.element.parentNode===this.container&&(this.container.removeChild(this.element),this.trigger("remove"))},V.prototype.buildClose=function(H){var R=this,h=document.createElement("button");return h.setAttribute("title",H),h.appendChild(document.createTextNode(H)),h.addEventListener("click",function(){return R.hide()}),h},V.prototype.getContainer=function(H){var R=H.containerClass,h=H.containerElement,L=H.root,y=L.querySelector("".concat(h,".").concat(R));if(y)return y;var m=document.createElement(h);return m.classList.add(R),L.appendChild(m),m},V.prototype.on=function(H,R){this.events[H]||(this.events[H]=[]),this.events[H].push(R)},V.prototype.off=function(H,R){if(R===void 0&&(R=null),!R){this.events[H]=[];return}var h=this.events[H].indexOf(R);h===-1&&this.events[H].splice(h,1)},V.prototype.trigger=function(H){for(var R=this,h=[],L=1;L{(function(V,H){if(typeof go=="object"&&typeof Ts=="object")Ts.exports=H();else if(typeof define=="function"&&define.amd)define([],H);else{var R=H();for(var h in R)(typeof go=="object"?go:V)[h]=R[h]}})(self,function(){return(()=>{"use strict";var V={4567:function(R,h,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(h,"__esModule",{value:!0}),h.AccessibilityManager=void 0;var _=L(9042),g=L(6114),T=L(9924),w=L(3656),c=L(844),p=L(5596),C=L(9631),d=function(s){function o(l,a){var u=s.call(this)||this;u._terminal=l,u._renderService=a,u._liveRegionLineCount=0,u._charsToConsume=[],u._charsToAnnounce="",u._accessibilityTreeRoot=document.createElement("div"),u._accessibilityTreeRoot.classList.add("xterm-accessibility"),u._accessibilityTreeRoot.tabIndex=0,u._rowContainer=document.createElement("div"),u._rowContainer.setAttribute("role","list"),u._rowContainer.classList.add("xterm-accessibility-tree"),u._rowElements=[];for(var v=0;vl;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},o.prototype._createAccessibilityTreeNode=function(){var l=document.createElement("div");return l.setAttribute("role","listitem"),l.tabIndex=-1,this._refreshRowDimensions(l),l},o.prototype._onTab=function(l){for(var a=0;a0?this._charsToConsume.shift()!==l&&(this._charsToAnnounce+=l):this._charsToAnnounce+=l,l===` -`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=_.tooMuchOutput)),g.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout(function(){a._accessibilityTreeRoot.appendChild(a._liveRegion)},0))},o.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,g.isMac&&(0,C.removeElementFromParent)(this._liveRegion)},o.prototype._onKey=function(l){this._clearLiveRegion(),this._charsToConsume.push(l)},o.prototype._refreshRows=function(l,a){this._renderRowsDebouncer.refresh(l,a,this._terminal.rows)},o.prototype._renderRows=function(l,a){for(var u=this._terminal.buffer,v=u.lines.length.toString(),b=l;b<=a;b++){var E=u.translateBufferLineToString(u.ydisp+b,!0),O=(u.ydisp+b+1).toString(),k=this._rowElements[b];k&&(E.length===0?k.innerText="\xA0":k.textContent=E,k.setAttribute("aria-posinset",O),k.setAttribute("aria-setsize",v))}this._announceCharacters()},o.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var l=0;l{function L(g){return g.replace(/\r?\n/g,"\r")}function y(g,T){return T?"\x1B[200~"+g+"\x1B[201~":g}function m(g,T,w){g=y(g=L(g),w.decPrivateModes.bracketedPasteMode),w.triggerDataEvent(g,!0),T.value=""}function _(g,T,w){var c=w.getBoundingClientRect(),p=g.clientX-c.left-10,C=g.clientY-c.top-10;T.style.width="20px",T.style.height="20px",T.style.left=p+"px",T.style.top=C+"px",T.style.zIndex="1000",T.focus()}Object.defineProperty(h,"__esModule",{value:!0}),h.rightClickHandler=h.moveTextAreaUnderMouseCursor=h.paste=h.handlePasteEvent=h.copyHandler=h.bracketTextForPaste=h.prepareTextForTerminal=void 0,h.prepareTextForTerminal=L,h.bracketTextForPaste=y,h.copyHandler=function(g,T){g.clipboardData&&g.clipboardData.setData("text/plain",T.selectionText),g.preventDefault()},h.handlePasteEvent=function(g,T,w){g.stopPropagation(),g.clipboardData&&m(g.clipboardData.getData("text/plain"),T,w)},h.paste=m,h.moveTextAreaUnderMouseCursor=_,h.rightClickHandler=function(g,T,w,c,p){_(g,T,w),p&&c.rightClickSelect(g),T.value=c.selectionText,T.select()}},4774:(R,h)=>{var L,y,m,_;function g(w){var c=w.toString(16);return c.length<2?"0"+c:c}function T(w,c){return w>>0}}(L=h.channels||(h.channels={})),(y=h.color||(h.color={})).blend=function(w,c){var p=(255&c.rgba)/255;if(p===1)return{css:c.css,rgba:c.rgba};var C=c.rgba>>24&255,d=c.rgba>>16&255,s=c.rgba>>8&255,o=w.rgba>>24&255,l=w.rgba>>16&255,a=w.rgba>>8&255,u=o+Math.round((C-o)*p),v=l+Math.round((d-l)*p),b=a+Math.round((s-a)*p);return{css:L.toCss(u,v,b),rgba:L.toRgba(u,v,b)}},y.isOpaque=function(w){return(255&w.rgba)==255},y.ensureContrastRatio=function(w,c,p){var C=_.ensureContrastRatio(w.rgba,c.rgba,p);if(C)return _.toColor(C>>24&255,C>>16&255,C>>8&255)},y.opaque=function(w){var c=(255|w.rgba)>>>0,p=_.toChannels(c),C=p[0],d=p[1],s=p[2];return{css:L.toCss(C,d,s),rgba:c}},y.opacity=function(w,c){var p=Math.round(255*c),C=_.toChannels(w.rgba),d=C[0],s=C[1],o=C[2];return{css:L.toCss(d,s,o,p),rgba:L.toRgba(d,s,o,p)}},y.toColorRGB=function(w){return[w.rgba>>24&255,w.rgba>>16&255,w.rgba>>8&255]},(h.css||(h.css={})).toColor=function(w){switch(w.length){case 7:return{css:w,rgba:(parseInt(w.slice(1),16)<<8|255)>>>0};case 9:return{css:w,rgba:parseInt(w.slice(1),16)>>>0}}throw new Error("css.toColor: Unsupported css format")},function(w){function c(p,C,d){var s=p/255,o=C/255,l=d/255;return .2126*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.7152*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.0722*(l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4))}w.relativeLuminance=function(p){return c(p>>16&255,p>>8&255,255&p)},w.relativeLuminance2=c}(m=h.rgb||(h.rgb={})),function(w){function c(C,d,s){for(var o=C>>24&255,l=C>>16&255,a=C>>8&255,u=d>>24&255,v=d>>16&255,b=d>>8&255,E=T(m.relativeLuminance2(u,b,v),m.relativeLuminance2(o,l,a));E0||v>0||b>0);)u-=Math.max(0,Math.ceil(.1*u)),v-=Math.max(0,Math.ceil(.1*v)),b-=Math.max(0,Math.ceil(.1*b)),E=T(m.relativeLuminance2(u,b,v),m.relativeLuminance2(o,l,a));return(u<<24|v<<16|b<<8|255)>>>0}function p(C,d,s){for(var o=C>>24&255,l=C>>16&255,a=C>>8&255,u=d>>24&255,v=d>>16&255,b=d>>8&255,E=T(m.relativeLuminance2(u,b,v),m.relativeLuminance2(o,l,a));E>>0}w.ensureContrastRatio=function(C,d,s){var o=m.relativeLuminance(C>>8),l=m.relativeLuminance(d>>8);if(T(o,l)>24&255,C>>16&255,C>>8&255,255&C]},w.toColor=function(C,d,s){return{css:L.toCss(C,d,s),rgba:L.toRgba(C,d,s)}}}(_=h.rgba||(h.rgba={})),h.toPaddedHex=g,h.contrastRatio=T},7239:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.ColorContrastCache=void 0;var L=function(){function y(){this._color={},this._rgba={}}return y.prototype.clear=function(){this._color={},this._rgba={}},y.prototype.setCss=function(m,_,g){this._rgba[m]||(this._rgba[m]={}),this._rgba[m][_]=g},y.prototype.getCss=function(m,_){return this._rgba[m]?this._rgba[m][_]:void 0},y.prototype.setColor=function(m,_,g){this._color[m]||(this._color[m]={}),this._color[m][_]=g},y.prototype.getColor=function(m,_){return this._color[m]?this._color[m][_]:void 0},y}();h.ColorContrastCache=L},5680:function(R,h,L){var y=this&&this.__spreadArray||function(d,s,o){if(o||arguments.length===2)for(var l,a=0,u=s.length;a{Object.defineProperty(h,"__esModule",{value:!0}),h.removeElementFromParent=void 0,h.removeElementFromParent=function(){for(var L,y=[],m=0;m{Object.defineProperty(h,"__esModule",{value:!0}),h.addDisposableDomListener=void 0,h.addDisposableDomListener=function(L,y,m,_){L.addEventListener(y,m,_);var g=!1;return{dispose:function(){g||(g=!0,L.removeEventListener(y,m,_))}}}},3551:function(R,h,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}};Object.defineProperty(h,"__esModule",{value:!0}),h.MouseZone=h.Linkifier=void 0;var _=L(8460),g=L(2585),T=function(){function c(p,C,d){this._bufferService=p,this._logService=C,this._unicodeService=d,this._linkMatchers=[],this._nextLinkMatcherId=0,this._onShowLinkUnderline=new _.EventEmitter,this._onHideLinkUnderline=new _.EventEmitter,this._onLinkTooltip=new _.EventEmitter,this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(c.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!1,configurable:!0}),c.prototype.attachToDom=function(p,C){this._element=p,this._mouseZoneManager=C},c.prototype.linkifyRows=function(p,C){var d=this;this._mouseZoneManager&&(this._rowsToLinkify.start===void 0||this._rowsToLinkify.end===void 0?(this._rowsToLinkify.start=p,this._rowsToLinkify.end=C):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,p),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,C)),this._mouseZoneManager.clearAll(p,C),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout(function(){return d._linkifyRows()},c._timeBeforeLatency))},c.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var p=this._bufferService.buffer;if(this._rowsToLinkify.start!==void 0&&this._rowsToLinkify.end!==void 0){var C=p.ydisp+this._rowsToLinkify.start;if(!(C>=p.lines.length)){for(var d=p.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,s=Math.ceil(2e3/this._bufferService.cols),o=this._bufferService.buffer.iterator(!1,C,d,s,s);o.hasNext();)for(var l=o.next(),a=0;a=0;C--)if(p.priority<=this._linkMatchers[C].priority)return void this._linkMatchers.splice(C+1,0,p);this._linkMatchers.splice(0,0,p)}else this._linkMatchers.push(p)},c.prototype.deregisterLinkMatcher=function(p){for(var C=0;C>9&511:void 0;d.validationCallback?d.validationCallback(b,function(N){o._rowsTimeoutId||N&&o._addLink(E[1],E[0]-o._bufferService.buffer.ydisp,b,d,A)}):v._addLink(E[1],E[0]-v._bufferService.buffer.ydisp,b,d,A)},v=this;(s=l.exec(C))!==null&&u()!=="break";);},c.prototype._addLink=function(p,C,d,s,o){var l=this;if(this._mouseZoneManager&&this._element){var a=this._unicodeService.getStringCellWidth(d),u=p%this._bufferService.cols,v=C+Math.floor(p/this._bufferService.cols),b=(u+a)%this._bufferService.cols,E=v+Math.floor((u+a)/this._bufferService.cols);b===0&&(b=this._bufferService.cols,E--),this._mouseZoneManager.add(new w(u+1,v+1,b+1,E+1,function(O){if(s.handler)return s.handler(O,d);var k=window.open();k?(k.opener=null,k.location.href=d):console.warn("Opening link blocked as opener could not be cleared")},function(){l._onShowLinkUnderline.fire(l._createLinkHoverEvent(u,v,b,E,o)),l._element.classList.add("xterm-cursor-pointer")},function(O){l._onLinkTooltip.fire(l._createLinkHoverEvent(u,v,b,E,o)),s.hoverTooltipCallback&&s.hoverTooltipCallback(O,d,{start:{x:u,y:v},end:{x:b,y:E}})},function(){l._onHideLinkUnderline.fire(l._createLinkHoverEvent(u,v,b,E,o)),l._element.classList.remove("xterm-cursor-pointer"),s.hoverLeaveCallback&&s.hoverLeaveCallback()},function(O){return!s.willLinkActivate||s.willLinkActivate(O,d)}))}},c.prototype._createLinkHoverEvent=function(p,C,d,s,o){return{x1:p,y1:C,x2:d,y2:s,cols:this._bufferService.cols,fg:o}},c._timeBeforeLatency=200,c=y([m(0,g.IBufferService),m(1,g.ILogService),m(2,g.IUnicodeService)],c)}();h.Linkifier=T;var w=function(c,p,C,d,s,o,l,a,u){this.x1=c,this.y1=p,this.x2=C,this.y2=d,this.clickCallback=s,this.hoverCallback=o,this.tooltipCallback=l,this.leaveCallback=a,this.willLinkActivate=u};h.MouseZone=w},6465:function(R,h,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,v=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},g=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.Linkifier2=void 0;var T=L(2585),w=L(8460),c=L(844),p=L(3656),C=function(d){function s(o){var l=d.call(this)||this;return l._bufferService=o,l._linkProviders=[],l._linkCacheDisposables=[],l._isMouseOut=!0,l._activeLine=-1,l._onShowLinkUnderline=l.register(new w.EventEmitter),l._onHideLinkUnderline=l.register(new w.EventEmitter),l.register((0,c.getDisposeArrayDisposable)(l._linkCacheDisposables)),l}return m(s,d),Object.defineProperty(s.prototype,"currentLink",{get:function(){return this._currentLink},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),s.prototype.registerLinkProvider=function(o){var l=this;return this._linkProviders.push(o),{dispose:function(){var a=l._linkProviders.indexOf(o);a!==-1&&l._linkProviders.splice(a,1)}}},s.prototype.attachToDom=function(o,l,a){var u=this;this._element=o,this._mouseService=l,this._renderService=a,this.register((0,p.addDisposableDomListener)(this._element,"mouseleave",function(){u._isMouseOut=!0,u._clearCurrentLink()})),this.register((0,p.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,p.addDisposableDomListener)(this._element,"click",this._onClick.bind(this)))},s.prototype._onMouseMove=function(o){if(this._lastMouseEvent=o,this._element&&this._mouseService){var l=this._positionFromMouseEvent(o,this._element,this._mouseService);if(l){this._isMouseOut=!1;for(var a=o.composedPath(),u=0;uo?this._bufferService.cols:E.link.range.end.x,A=O;A<=k;A++){if(a.has(A)){v.splice(b--,1);break}a.add(A)}}},s.prototype._checkLinkProviderResult=function(o,l,a){var u,v=this;if(!this._activeProviderReplies)return a;for(var b=this._activeProviderReplies.get(o),E=!1,O=0;O=o&&this._currentLink.link.range.end.y<=l)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,c.disposeArray)(this._linkCacheDisposables))},s.prototype._handleNewLink=function(o){var l=this;if(this._element&&this._lastMouseEvent&&this._mouseService){var a=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);a&&this._linkAtPosition(o.link,a)&&(this._currentLink=o,this._currentLink.state={decorations:{underline:o.link.decorations===void 0||o.link.decorations.underline,pointerCursor:o.link.decorations===void 0||o.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,o.link,this._lastMouseEvent),o.link.decorations={},Object.defineProperties(o.link.decorations,{pointerCursor:{get:function(){var u,v;return(v=(u=l._currentLink)===null||u===void 0?void 0:u.state)===null||v===void 0?void 0:v.decorations.pointerCursor},set:function(u){var v,b;((v=l._currentLink)===null||v===void 0?void 0:v.state)&&l._currentLink.state.decorations.pointerCursor!==u&&(l._currentLink.state.decorations.pointerCursor=u,l._currentLink.state.isHovered&&((b=l._element)===null||b===void 0||b.classList.toggle("xterm-cursor-pointer",u)))}},underline:{get:function(){var u,v;return(v=(u=l._currentLink)===null||u===void 0?void 0:u.state)===null||v===void 0?void 0:v.decorations.underline},set:function(u){var v,b,E;((v=l._currentLink)===null||v===void 0?void 0:v.state)&&((E=(b=l._currentLink)===null||b===void 0?void 0:b.state)===null||E===void 0?void 0:E.decorations.underline)!==u&&(l._currentLink.state.decorations.underline=u,l._currentLink.state.isHovered&&l._fireUnderlineEvent(o.link,u))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedBufferChange(function(u){var v=u.start===0?0:u.start+1+l._bufferService.buffer.ydisp;l._clearCurrentLink(v,u.end+1+l._bufferService.buffer.ydisp)})))}},s.prototype._linkHover=function(o,l,a){var u;!((u=this._currentLink)===null||u===void 0)&&u.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(l,!0),this._currentLink.state.decorations.pointerCursor&&o.classList.add("xterm-cursor-pointer")),l.hover&&l.hover(a,l.text)},s.prototype._fireUnderlineEvent=function(o,l){var a=o.range,u=this._bufferService.buffer.ydisp,v=this._createLinkUnderlineEvent(a.start.x-1,a.start.y-u-1,a.end.x,a.end.y-u-1,void 0);(l?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(v)},s.prototype._linkLeave=function(o,l,a){var u;!((u=this._currentLink)===null||u===void 0)&&u.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(l,!1),this._currentLink.state.decorations.pointerCursor&&o.classList.remove("xterm-cursor-pointer")),l.leave&&l.leave(a,l.text)},s.prototype._linkAtPosition=function(o,l){var a=o.range.start.y===o.range.end.y,u=o.range.start.yl.y;return(a&&o.range.start.x<=l.x&&o.range.end.x>=l.x||u&&o.range.end.x>=l.x||v&&o.range.start.x<=l.x||u&&v)&&o.range.start.y<=l.y&&o.range.end.y>=l.y},s.prototype._positionFromMouseEvent=function(o,l,a){var u=a.getCoords(o,l,this._bufferService.cols,this._bufferService.rows);if(u)return{x:u[0],y:u[1]+this._bufferService.buffer.ydisp}},s.prototype._createLinkUnderlineEvent=function(o,l,a,u,v){return{x1:o,y1:l,x2:a,y2:u,cols:this._bufferService.cols,fg:v}},_([g(0,T.IBufferService)],s)}(c.Disposable);h.Linkifier2=C},9042:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.tooMuchOutput=h.promptLabel=void 0,h.promptLabel="Terminal input",h.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},6954:function(R,h,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,v=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},g=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.MouseZoneManager=void 0;var T=L(844),w=L(3656),c=L(4725),p=L(2585),C=function(d){function s(o,l,a,u,v,b){var E=d.call(this)||this;return E._element=o,E._screenElement=l,E._bufferService=a,E._mouseService=u,E._selectionService=v,E._optionsService=b,E._zones=[],E._areZonesActive=!1,E._lastHoverCoords=[void 0,void 0],E._initialSelectionLength=0,E.register((0,w.addDisposableDomListener)(E._element,"mousedown",function(O){return E._onMouseDown(O)})),E._mouseMoveListener=function(O){return E._onMouseMove(O)},E._mouseLeaveListener=function(O){return E._onMouseLeave(O)},E._clickListener=function(O){return E._onClick(O)},E}return m(s,d),s.prototype.dispose=function(){d.prototype.dispose.call(this),this._deactivate()},s.prototype.add=function(o){this._zones.push(o),this._zones.length===1&&this._activate()},s.prototype.clearAll=function(o,l){if(this._zones.length!==0){o&&l||(o=0,l=this._bufferService.rows-1);for(var a=0;ao&&u.y1<=l+1||u.y2>o&&u.y2<=l+1||u.y1l+1)&&(this._currentZone&&this._currentZone===u&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(a--,1))}this._zones.length===0&&this._deactivate()}},s.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},s.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},s.prototype._onMouseMove=function(o){this._lastHoverCoords[0]===o.pageX&&this._lastHoverCoords[1]===o.pageY||(this._onHover(o),this._lastHoverCoords=[o.pageX,o.pageY])},s.prototype._onHover=function(o){var l=this,a=this._findZoneEventAt(o);a!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),a&&(this._currentZone=a,a.hoverCallback&&a.hoverCallback(o),this._tooltipTimeout=window.setTimeout(function(){return l._onTooltip(o)},this._optionsService.rawOptions.linkTooltipHoverDuration)))},s.prototype._onTooltip=function(o){this._tooltipTimeout=void 0;var l=this._findZoneEventAt(o);l?.tooltipCallback(o)},s.prototype._onMouseDown=function(o){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var l=this._findZoneEventAt(o);l?.willLinkActivate(o)&&(o.preventDefault(),o.stopImmediatePropagation())}},s.prototype._onMouseLeave=function(o){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},s.prototype._onClick=function(o){var l=this._findZoneEventAt(o),a=this._getSelectionLength();l&&a===this._initialSelectionLength&&(l.clickCallback(o),o.preventDefault(),o.stopImmediatePropagation())},s.prototype._getSelectionLength=function(){var o=this._selectionService.selectionText;return o?o.length:0},s.prototype._findZoneEventAt=function(o){var l=this._mouseService.getCoords(o,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(l)for(var a=l[0],u=l[1],v=0;v=b.x1&&a=b.x1||u===b.y2&&ab.y1&&u{Object.defineProperty(h,"__esModule",{value:!0}),h.RenderDebouncer=void 0;var L=function(){function y(m){this._renderCallback=m}return y.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},y.prototype.refresh=function(m,_,g){var T=this;this._rowCount=g,m=m!==void 0?m:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,m):m,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){return T._innerRefresh()}))},y.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var m=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._animationFrame=void 0,this._renderCallback(m,_)}},y}();h.RenderDebouncer=L},5596:function(R,h,L){var y,m=this&&this.__extends||(y=function(g,T){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,c){w.__proto__=c}||function(w,c){for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(w[p]=c[p])},y(g,T)},function(g,T){if(typeof T!="function"&&T!==null)throw new TypeError("Class extends value "+String(T)+" is not a constructor or null");function w(){this.constructor=g}y(g,T),g.prototype=T===null?Object.create(T):(w.prototype=T.prototype,new w)});Object.defineProperty(h,"__esModule",{value:!0}),h.ScreenDprMonitor=void 0;var _=function(g){function T(){var w=g!==null&&g.apply(this,arguments)||this;return w._currentDevicePixelRatio=window.devicePixelRatio,w}return m(T,g),T.prototype.setListener=function(w){var c=this;this._listener&&this.clearListener(),this._listener=w,this._outerListener=function(){c._listener&&(c._listener(window.devicePixelRatio,c._currentDevicePixelRatio),c._updateDpr())},this._updateDpr()},T.prototype.dispose=function(){g.prototype.dispose.call(this),this.clearListener()},T.prototype._updateDpr=function(){var w;this._outerListener&&((w=this._resolutionMediaMatchList)===null||w===void 0||w.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},T.prototype.clearListener=function(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},T}(L(844).Disposable);h.ScreenDprMonitor=_},3236:function(R,h,L){var y,m=this&&this.__extends||(y=function(U,ee){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(q,Y){q.__proto__=Y}||function(q,Y){for(var K in Y)Object.prototype.hasOwnProperty.call(Y,K)&&(q[K]=Y[K])},y(U,ee)},function(U,ee){if(typeof ee!="function"&&ee!==null)throw new TypeError("Class extends value "+String(ee)+" is not a constructor or null");function q(){this.constructor=U}y(U,ee),U.prototype=ee===null?Object.create(ee):(q.prototype=ee.prototype,new q)});Object.defineProperty(h,"__esModule",{value:!0}),h.Terminal=void 0;var _=L(2950),g=L(1680),T=L(3614),w=L(2584),c=L(5435),p=L(3525),C=L(3551),d=L(9312),s=L(6114),o=L(3656),l=L(9042),a=L(357),u=L(6954),v=L(4567),b=L(1296),E=L(7399),O=L(8460),k=L(8437),A=L(5680),N=L(3230),D=L(4725),W=L(428),B=L(8934),F=L(6465),j=L(5114),G=L(8969),$=L(4774),ne=L(4269),ie=L(5941),be=L(7641),ve=typeof window<"u"?window.document:null,Ee=function(U){function ee(q){q===void 0&&(q={});var Y=U.call(this,q)||this;return Y.browser=s,Y._keyDownHandled=!1,Y._keyPressHandled=!1,Y._unprocessedDeadKey=!1,Y._onCursorMove=new O.EventEmitter,Y._onKey=new O.EventEmitter,Y._onRender=new O.EventEmitter,Y._onSelectionChange=new O.EventEmitter,Y._onTitleChange=new O.EventEmitter,Y._onBell=new O.EventEmitter,Y._onFocus=new O.EventEmitter,Y._onBlur=new O.EventEmitter,Y._onA11yCharEmitter=new O.EventEmitter,Y._onA11yTabEmitter=new O.EventEmitter,Y._setup(),Y.linkifier=Y._instantiationService.createInstance(C.Linkifier),Y.linkifier2=Y.register(Y._instantiationService.createInstance(F.Linkifier2)),Y.decorationService=Y.register(Y._instantiationService.createInstance(be.DecorationService)),Y.register(Y._inputHandler.onRequestBell(function(){return Y.bell()})),Y.register(Y._inputHandler.onRequestRefreshRows(function(K,Se){return Y.refresh(K,Se)})),Y.register(Y._inputHandler.onRequestSendFocus(function(){return Y._reportFocus()})),Y.register(Y._inputHandler.onRequestReset(function(){return Y.reset()})),Y.register(Y._inputHandler.onRequestWindowsOptionsReport(function(K){return Y._reportWindowsOptions(K)})),Y.register(Y._inputHandler.onColor(function(K){return Y._handleColorEvent(K)})),Y.register((0,O.forwardEvent)(Y._inputHandler.onCursorMove,Y._onCursorMove)),Y.register((0,O.forwardEvent)(Y._inputHandler.onTitleChange,Y._onTitleChange)),Y.register((0,O.forwardEvent)(Y._inputHandler.onA11yChar,Y._onA11yCharEmitter)),Y.register((0,O.forwardEvent)(Y._inputHandler.onA11yTab,Y._onA11yTabEmitter)),Y.register(Y._bufferService.onResize(function(K){return Y._afterResize(K.cols,K.rows)})),Y}return m(ee,U),Object.defineProperty(ee.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onBell",{get:function(){return this._onBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onA11yChar",{get:function(){return this._onA11yCharEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onA11yTab",{get:function(){return this._onA11yTabEmitter.event},enumerable:!1,configurable:!0}),ee.prototype._handleColorEvent=function(q){var Y,K;if(this._colorManager){for(var Se=0,fe=q;Se4)&&Y.coreMouseService.triggerMouseEvent({col:Tt.x-33,row:Tt.y-33,button:je,action:Je,ctrl:_e.ctrlKey,alt:_e.altKey,shift:_e.shiftKey})}var fe={mouseup:null,wheel:null,mousedrag:null,mousemove:null},Ce=function(_e){return Se(_e),_e.buttons||(q._document.removeEventListener("mouseup",fe.mouseup),fe.mousedrag&&q._document.removeEventListener("mousemove",fe.mousedrag)),q.cancel(_e)},De=function(_e){return Se(_e),q.cancel(_e,!0)},Fe=function(_e){_e.buttons&&Se(_e)},Ae=function(_e){_e.buttons||Se(_e)};this.register(this.coreMouseService.onProtocolChange(function(_e){_e?(q.optionsService.rawOptions.logLevel==="debug"&&q._logService.debug("Binding to mouse events:",q.coreMouseService.explainEvents(_e)),q.element.classList.add("enable-mouse-events"),q._selectionService.disable()):(q._logService.debug("Unbinding from mouse events."),q.element.classList.remove("enable-mouse-events"),q._selectionService.enable()),8&_e?fe.mousemove||(K.addEventListener("mousemove",Ae),fe.mousemove=Ae):(K.removeEventListener("mousemove",fe.mousemove),fe.mousemove=null),16&_e?fe.wheel||(K.addEventListener("wheel",De,{passive:!1}),fe.wheel=De):(K.removeEventListener("wheel",fe.wheel),fe.wheel=null),2&_e?fe.mouseup||(fe.mouseup=Ce):(q._document.removeEventListener("mouseup",fe.mouseup),fe.mouseup=null),4&_e?fe.mousedrag||(fe.mousedrag=Fe):(q._document.removeEventListener("mousemove",fe.mousedrag),fe.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,o.addDisposableDomListener)(K,"mousedown",function(_e){if(_e.preventDefault(),q.focus(),q.coreMouseService.areMouseEventsActive&&!q._selectionService.shouldForceSelection(_e))return Se(_e),fe.mouseup&&q._document.addEventListener("mouseup",fe.mouseup),fe.mousedrag&&q._document.addEventListener("mousemove",fe.mousedrag),q.cancel(_e)})),this.register((0,o.addDisposableDomListener)(K,"wheel",function(_e){if(!fe.wheel){if(!q.buffer.hasScrollback){var je=q.viewport.getLinesScrolled(_e);if(je===0)return;for(var Je=w.C0.ESC+(q.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(_e.deltaY<0?"A":"B"),Tt="",lr=0;lr47)},ee.prototype._keyUp=function(q){this._customKeyEventHandler&&this._customKeyEventHandler(q)===!1||(function(Y){return Y.keyCode===16||Y.keyCode===17||Y.keyCode===18}(q)||this.focus(),this.updateCursorStyle(q),this._keyPressHandled=!1)},ee.prototype._keyPress=function(q){var Y;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(q)===!1)return!1;if(this.cancel(q),q.charCode)Y=q.charCode;else if(q.which===null||q.which===void 0)Y=q.keyCode;else{if(q.which===0||q.charCode===0)return!1;Y=q.which}return!(!Y||(q.altKey||q.ctrlKey||q.metaKey)&&!this._isThirdLevelShift(this.browser,q)||(Y=String.fromCharCode(Y),this._onKey.fire({key:Y,domEvent:q}),this._showCursor(),this.coreService.triggerDataEvent(Y,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))},ee.prototype._inputEvent=function(q){if(q.data&&q.inputType==="insertText"&&!q.composed&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;var Y=q.data;return this.coreService.triggerDataEvent(Y,!0),this.cancel(q),!0}return!1},ee.prototype.bell=function(){var q;this._soundBell()&&((q=this._soundService)===null||q===void 0||q.playBellSound()),this._onBell.fire()},ee.prototype.resize=function(q,Y){q!==this.cols||Y!==this.rows?U.prototype.resize.call(this,q,Y):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()},ee.prototype._afterResize=function(q,Y){var K,Se;(K=this._charSizeService)===null||K===void 0||K.measure(),(Se=this.viewport)===null||Se===void 0||Se.syncScrollArea(!0)},ee.prototype.clear=function(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(var q=1;q{Object.defineProperty(h,"__esModule",{value:!0}),h.TimeBasedDebouncer=void 0;var L=function(){function y(m,_){_===void 0&&(_=1e3),this._renderCallback=m,this._debounceThresholdMS=_,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}return y.prototype.dispose=function(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)},y.prototype.refresh=function(m,_,g){var T=this;this._rowCount=g,m=m!==void 0?m:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,m):m,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_;var w=Date.now();if(w-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=w,this._innerRefresh();else if(!this._additionalRefreshRequested){var c=w-this._lastRefreshMs,p=this._debounceThresholdMS-c;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(function(){T._lastRefreshMs=Date.now(),T._innerRefresh(),T._additionalRefreshRequested=!1,T._refreshTimeoutID=void 0},p)}},y.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var m=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(m,_)}},y}();h.TimeBasedDebouncer=L},1680:function(R,h,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,v=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},g=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.Viewport=void 0;var T=L(844),w=L(3656),c=L(4725),p=L(2585),C=function(d){function s(o,l,a,u,v,b,E,O){var k=d.call(this)||this;return k._scrollLines=o,k._viewportElement=l,k._scrollArea=a,k._element=u,k._bufferService=v,k._optionsService=b,k._charSizeService=E,k._renderService=O,k.scrollBarWidth=0,k._currentRowHeight=0,k._currentScaledCellHeight=0,k._lastRecordedBufferLength=0,k._lastRecordedViewportHeight=0,k._lastRecordedBufferHeight=0,k._lastTouchY=0,k._lastScrollTop=0,k._lastHadScrollBar=!1,k._wheelPartialScroll=0,k._refreshAnimationFrame=null,k._ignoreNextScrollEvent=!1,k.scrollBarWidth=k._viewportElement.offsetWidth-k._scrollArea.offsetWidth||15,k._lastHadScrollBar=!0,k.register((0,w.addDisposableDomListener)(k._viewportElement,"scroll",k._onScroll.bind(k))),k._activeBuffer=k._bufferService.buffer,k.register(k._bufferService.buffers.onBufferActivate(function(A){return k._activeBuffer=A.activeBuffer})),k._renderDimensions=k._renderService.dimensions,k.register(k._renderService.onDimensionsChange(function(A){return k._renderDimensions=A})),setTimeout(function(){return k.syncScrollArea()},0),k}return m(s,d),s.prototype.onThemeChange=function(o){this._viewportElement.style.backgroundColor=o.background.css},s.prototype._refresh=function(o){var l=this;if(o)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=requestAnimationFrame(function(){return l._innerRefresh()}))},s.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var o=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==o&&(this._lastRecordedBufferHeight=o,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var l=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==l&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=l),this._optionsService.rawOptions.scrollback===0?this.scrollBarWidth=0:this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this._lastHadScrollBar=this.scrollBarWidth>0;var a=window.getComputedStyle(this._element),u=parseInt(a.paddingLeft)+parseInt(a.paddingRight);this._viewportElement.style.width=(this._renderService.dimensions.actualCellWidth*this._bufferService.cols+this.scrollBarWidth+(this._lastHadScrollBar?u:0)).toString()+"px",this._refreshAnimationFrame=null},s.prototype.syncScrollArea=function(o){if(o===void 0&&(o=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(o);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight?this._lastHadScrollBar!==this._optionsService.rawOptions.scrollback>0&&this._refresh(o):this._refresh(o)},s.prototype._onScroll=function(o){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent){if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);var l=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(l)}},s.prototype._bubbleScroll=function(o,l){var a=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(l<0&&this._viewportElement.scrollTop!==0||l>0&&a0?1:-1),this._wheelPartialScroll%=1):o.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(l*=this._bufferService.rows),l},s.prototype._applyScrollModifier=function(o,l){var a=this._optionsService.rawOptions.fastScrollModifier;return a==="alt"&&l.altKey||a==="ctrl"&&l.ctrlKey||a==="shift"&&l.shiftKey?o*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:o*this._optionsService.rawOptions.scrollSensitivity},s.prototype.onTouchStart=function(o){this._lastTouchY=o.touches[0].pageY},s.prototype.onTouchMove=function(o){var l=this._lastTouchY-o.touches[0].pageY;return this._lastTouchY=o.touches[0].pageY,l!==0&&(this._viewportElement.scrollTop+=l,this._bubbleScroll(o,l))},_([g(4,p.IBufferService),g(5,p.IOptionsService),g(6,c.ICharSizeService),g(7,c.IRenderService)],s)}(T.Disposable);h.Viewport=C},2950:function(R,h,L){var y=this&&this.__decorate||function(w,c,p,C){var d,s=arguments.length,o=s<3?c:C===null?C=Object.getOwnPropertyDescriptor(c,p):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(w,c,p,C);else for(var l=w.length-1;l>=0;l--)(d=w[l])&&(o=(s<3?d(o):s>3?d(c,p,o):d(c,p))||o);return s>3&&o&&Object.defineProperty(c,p,o),o},m=this&&this.__param||function(w,c){return function(p,C){c(p,C,w)}};Object.defineProperty(h,"__esModule",{value:!0}),h.CompositionHelper=void 0;var _=L(4725),g=L(2585),T=function(){function w(c,p,C,d,s,o){this._textarea=c,this._compositionView=p,this._bufferService=C,this._optionsService=d,this._coreService=s,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}return Object.defineProperty(w.prototype,"isComposing",{get:function(){return this._isComposing},enumerable:!1,configurable:!0}),w.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")},w.prototype.compositionupdate=function(c){var p=this;this._compositionView.textContent=c.data,this.updateCompositionElements(),setTimeout(function(){p._compositionPosition.end=p._textarea.value.length},0)},w.prototype.compositionend=function(){this._finalizeComposition(!0)},w.prototype.keydown=function(c){if(this._isComposing||this._isSendingComposition){if(c.keyCode===229||c.keyCode===16||c.keyCode===17||c.keyCode===18)return!1;this._finalizeComposition(!1)}return c.keyCode!==229||(this._handleAnyTextareaChanges(),!1)},w.prototype._finalizeComposition=function(c){var p=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,c){var C={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(function(){if(p._isSendingComposition){p._isSendingComposition=!1;var s;C.start+=p._dataAlreadySent.length,(s=p._isComposing?p._textarea.value.substring(C.start,C.end):p._textarea.value.substring(C.start)).length>0&&p._coreService.triggerDataEvent(s,!0)}},0)}else{this._isSendingComposition=!1;var d=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(d,!0)}},w.prototype._handleAnyTextareaChanges=function(){var c=this,p=this._textarea.value;setTimeout(function(){if(!c._isComposing){var C=c._textarea.value.replace(p,"");C.length>0&&(c._dataAlreadySent=C,c._coreService.triggerDataEvent(C,!0))}},0)},w.prototype.updateCompositionElements=function(c){var p=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var C=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),d=this._renderService.dimensions.actualCellHeight,s=this._bufferService.buffer.y*this._renderService.dimensions.actualCellHeight,o=C*this._renderService.dimensions.actualCellWidth;this._compositionView.style.left=o+"px",this._compositionView.style.top=s+"px",this._compositionView.style.height=d+"px",this._compositionView.style.lineHeight=d+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var l=this._compositionView.getBoundingClientRect();this._textarea.style.left=o+"px",this._textarea.style.top=s+"px",this._textarea.style.width=Math.max(l.width,1)+"px",this._textarea.style.height=Math.max(l.height,1)+"px",this._textarea.style.lineHeight=l.height+"px"}c||setTimeout(function(){return p.updateCompositionElements(!0)},0)}},y([m(2,g.IBufferService),m(3,g.IOptionsService),m(4,g.ICoreService),m(5,_.IRenderService)],w)}();h.CompositionHelper=T},9806:(R,h)=>{function L(y,m){var _=m.getBoundingClientRect();return[y.clientX-_.left,y.clientY-_.top]}Object.defineProperty(h,"__esModule",{value:!0}),h.getRawByteCoords=h.getCoords=h.getCoordsRelativeToElement=void 0,h.getCoordsRelativeToElement=L,h.getCoords=function(y,m,_,g,T,w,c,p){if(T){var C=L(y,m);if(C)return C[0]=Math.ceil((C[0]+(p?w/2:0))/w),C[1]=Math.ceil(C[1]/c),C[0]=Math.min(Math.max(C[0],1),_+(p?1:0)),C[1]=Math.min(Math.max(C[1],1),g),C}},h.getRawByteCoords=function(y){if(y)return{x:y[0]+32,y:y[1]+32}}},9504:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.moveToCellSequence=void 0;var y=L(2584);function m(p,C,d,s){var o=p-_(d,p),l=C-_(d,C),a=Math.abs(o-l)-function(u,v,b){for(var E=0,O=u-_(b,u),k=v-_(b,v),A=0;A=0&&CC?"A":"B"}function T(p,C,d,s,o,l){for(var a=p,u=C,v="";a!==d||u!==s;)a+=o?1:-1,o&&a>l.cols-1?(v+=l.buffer.translateBufferLineToString(u,!1,p,a),a=0,p=0,u++):!o&&a<0&&(v+=l.buffer.translateBufferLineToString(u,!1,0,p+1),p=a=l.cols-1,u--);return v+l.buffer.translateBufferLineToString(u,!1,p,a)}function w(p,C){var d=C?"O":"[";return y.C0.ESC+d+p}function c(p,C){p=Math.floor(p);for(var d="",s=0;s0?O-_(k,O):b;var D=O,W=function(B,F,j,G,$,ne){var ie;return ie=m(j,G,$,ne).length>0?G-_($,G):F,B=j&&iep?"D":"C",c(Math.abs(l-p),w(o,s));o=a>C?"D":"C";var u=Math.abs(a-C);return c(function(v,b){return b.cols-v}(a>C?p:l,d)+(u-1)*d.cols+1+((a>C?l:p)-1),w(o,s))}},4389:function(R,h,L){var y=this&&this.__assign||function(){return y=Object.assign||function(d){for(var s,o=1,l=arguments.length;o{Object.defineProperty(h,"__esModule",{value:!0}),h.BaseRenderLayer=void 0;var y=L(643),m=L(8803),_=L(1420),g=L(3734),T=L(1752),w=L(4774),c=L(9631),p=L(8978),C=function(){function d(s,o,l,a,u,v,b,E){this._container=s,this._alpha=a,this._colors=u,this._rendererId=v,this._bufferService=b,this._optionsService=E,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+o+"-layer"),this._canvas.style.zIndex=l.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return d.prototype.dispose=function(){var s;(0,c.removeElementFromParent)(this._canvas),(s=this._charAtlas)===null||s===void 0||s.dispose()},d.prototype._initCanvas=function(){this._ctx=(0,T.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},d.prototype.onOptionsChanged=function(){},d.prototype.onBlur=function(){},d.prototype.onFocus=function(){},d.prototype.onCursorMove=function(){},d.prototype.onGridChanged=function(s,o){},d.prototype.onSelectionChanged=function(s,o,l){l===void 0&&(l=!1)},d.prototype.setColors=function(s){this._refreshCharAtlas(s)},d.prototype._setTransparency=function(s){if(s!==this._alpha){var o=this._canvas;this._alpha=s,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,o),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},d.prototype._refreshCharAtlas=function(s){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,_.acquireCharAtlas)(this._optionsService.rawOptions,this._rendererId,s,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},d.prototype.resize=function(s){this._scaledCellWidth=s.scaledCellWidth,this._scaledCellHeight=s.scaledCellHeight,this._scaledCharWidth=s.scaledCharWidth,this._scaledCharHeight=s.scaledCharHeight,this._scaledCharLeft=s.scaledCharLeft,this._scaledCharTop=s.scaledCharTop,this._canvas.width=s.scaledCanvasWidth,this._canvas.height=s.scaledCanvasHeight,this._canvas.style.width=s.canvasWidth+"px",this._canvas.style.height=s.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},d.prototype.clearTextureAtlas=function(){var s;(s=this._charAtlas)===null||s===void 0||s.clear()},d.prototype._fillCells=function(s,o,l,a){this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight)},d.prototype._fillMiddleLineAtCells=function(s,o,l){l===void 0&&(l=1);var a=Math.ceil(.5*this._scaledCellHeight);this._ctx.fillRect(s*this._scaledCellWidth,(o+1)*this._scaledCellHeight-a-window.devicePixelRatio,l*this._scaledCellWidth,window.devicePixelRatio)},d.prototype._fillBottomLineAtCells=function(s,o,l){l===void 0&&(l=1),this._ctx.fillRect(s*this._scaledCellWidth,(o+1)*this._scaledCellHeight-window.devicePixelRatio-1,l*this._scaledCellWidth,window.devicePixelRatio)},d.prototype._fillLeftLineAtCell=function(s,o,l){this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,window.devicePixelRatio*l,this._scaledCellHeight)},d.prototype._strokeRectAtCell=function(s,o,l,a){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(s*this._scaledCellWidth+window.devicePixelRatio/2,o*this._scaledCellHeight+window.devicePixelRatio/2,l*this._scaledCellWidth-window.devicePixelRatio,a*this._scaledCellHeight-window.devicePixelRatio)},d.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},d.prototype._clearCells=function(s,o,l,a){this._alpha?this._ctx.clearRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight))},d.prototype._fillCharTrueColor=function(s,o,l){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline=m.TEXT_BASELINE,this._clipRow(l);var a=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(a=(0,p.tryDrawCustomChar)(this._ctx,s.getChars(),o*this._scaledCellWidth,l*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),a||this._ctx.fillText(s.getChars(),o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)},d.prototype._drawChars=function(s,o,l){var a,u,v,b=this._getContrastColor(s);b||s.isFgRGB()||s.isBgRGB()?this._drawUncachedChars(s,o,l,b):(s.isInverse()?(u=s.isBgDefault()?m.INVERTED_DEFAULT_COLOR:s.getBgColor(),v=s.isFgDefault()?m.INVERTED_DEFAULT_COLOR:s.getFgColor()):(v=s.isBgDefault()?y.DEFAULT_COLOR:s.getBgColor(),u=s.isFgDefault()?y.DEFAULT_COLOR:s.getFgColor()),u+=this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&u<8?8:0,this._currentGlyphIdentifier.chars=s.getChars()||y.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=s.getCode()||y.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=v,this._currentGlyphIdentifier.fg=u,this._currentGlyphIdentifier.bold=!!s.isBold(),this._currentGlyphIdentifier.dim=!!s.isDim(),this._currentGlyphIdentifier.italic=!!s.isItalic(),!((a=this._charAtlas)===null||a===void 0)&&a.draw(this._ctx,this._currentGlyphIdentifier,o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop)||this._drawUncachedChars(s,o,l))},d.prototype._drawUncachedChars=function(s,o,l,a){if(this._ctx.save(),this._ctx.font=this._getFont(!!s.isBold(),!!s.isItalic()),this._ctx.textBaseline=m.TEXT_BASELINE,s.isInverse())if(a)this._ctx.fillStyle=a.css;else if(s.isBgDefault())this._ctx.fillStyle=w.color.opaque(this._colors.background).css;else if(s.isBgRGB())this._ctx.fillStyle="rgb("+g.AttributeData.toColorRGB(s.getBgColor()).join(",")+")";else{var u=s.getBgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&u<8&&(u+=8),this._ctx.fillStyle=this._colors.ansi[u].css}else if(a)this._ctx.fillStyle=a.css;else if(s.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(s.isFgRGB())this._ctx.fillStyle="rgb("+g.AttributeData.toColorRGB(s.getFgColor()).join(",")+")";else{var v=s.getFgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&v<8&&(v+=8),this._ctx.fillStyle=this._colors.ansi[v].css}this._clipRow(l),s.isDim()&&(this._ctx.globalAlpha=m.DIM_OPACITY);var b=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(b=(0,p.tryDrawCustomChar)(this._ctx,s.getChars(),o*this._scaledCellWidth,l*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),b||this._ctx.fillText(s.getChars(),o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight),this._ctx.restore()},d.prototype._clipRow=function(s){this._ctx.beginPath(),this._ctx.rect(0,s*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},d.prototype._getFont=function(s,o){return(o?"italic":"")+" "+(s?this._optionsService.rawOptions.fontWeightBold:this._optionsService.rawOptions.fontWeight)+" "+this._optionsService.rawOptions.fontSize*window.devicePixelRatio+"px "+this._optionsService.rawOptions.fontFamily},d.prototype._getContrastColor=function(s){if(this._optionsService.rawOptions.minimumContrastRatio!==1){var o=this._colors.contrastCache.getColor(s.bg,s.fg);if(o!==void 0)return o||void 0;var l=s.getFgColor(),a=s.getFgColorMode(),u=s.getBgColor(),v=s.getBgColorMode(),b=!!s.isInverse(),E=!!s.isInverse();if(b){var O=l;l=u,u=O;var k=a;a=v,v=k}var A=this._resolveBackgroundRgba(v,u,b),N=this._resolveForegroundRgba(a,l,b,E),D=w.rgba.ensureContrastRatio(A,N,this._optionsService.rawOptions.minimumContrastRatio);if(D){var W={css:w.channels.toCss(D>>24&255,D>>16&255,D>>8&255),rgba:D};return this._colors.contrastCache.setColor(s.bg,s.fg,W),W}this._colors.contrastCache.setColor(s.bg,s.fg,null)}},d.prototype._resolveBackgroundRgba=function(s,o,l){switch(s){case 16777216:case 33554432:return this._colors.ansi[o].rgba;case 50331648:return o<<8;default:return l?this._colors.foreground.rgba:this._colors.background.rgba}},d.prototype._resolveForegroundRgba=function(s,o,l,a){switch(s){case 16777216:case 33554432:return this._optionsService.rawOptions.drawBoldTextInBrightColors&&a&&o<8&&(o+=8),this._colors.ansi[o].rgba;case 50331648:return o<<8;default:return l?this._colors.background.rgba:this._colors.foreground.rgba}},d}();h.BaseRenderLayer=C},2512:function(R,h,L){var y,m=this&&this.__extends||(y=function(o,l){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,u){a.__proto__=u}||function(a,u){for(var v in u)Object.prototype.hasOwnProperty.call(u,v)&&(a[v]=u[v])},y(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function a(){this.constructor=o}y(o,l),o.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}),_=this&&this.__decorate||function(o,l,a,u){var v,b=arguments.length,E=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(o,l,a,u);else for(var O=o.length-1;O>=0;O--)(v=o[O])&&(E=(b<3?v(E):b>3?v(l,a,E):v(l,a))||E);return b>3&&E&&Object.defineProperty(l,a,E),E},g=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(h,"__esModule",{value:!0}),h.CursorRenderLayer=void 0;var T=L(1546),w=L(511),c=L(2585),p=L(4725),C=600,d=function(o){function l(a,u,v,b,E,O,k,A,N){var D=o.call(this,a,"cursor",u,!0,v,b,O,k)||this;return D._onRequestRedraw=E,D._coreService=A,D._coreBrowserService=N,D._cell=new w.CellData,D._state={x:0,y:0,isFocused:!1,style:"",width:0},D._cursorRenderers={bar:D._renderBarCursor.bind(D),block:D._renderBlockCursor.bind(D),underline:D._renderUnderlineCursor.bind(D)},D}return m(l,o),l.prototype.dispose=function(){this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=void 0),o.prototype.dispose.call(this)},l.prototype.resize=function(a){o.prototype.resize.call(this,a),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},l.prototype.reset=function(){var a;this._clearCursor(),(a=this._cursorBlinkStateManager)===null||a===void 0||a.restartBlinkAnimation(),this.onOptionsChanged()},l.prototype.onBlur=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.pause(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onFocus=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.resume(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onOptionsChanged=function(){var a,u=this;this._optionsService.rawOptions.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new s(this._coreBrowserService.isFocused,function(){u._render(!0)})):((a=this._cursorBlinkStateManager)===null||a===void 0||a.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onCursorMove=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.restartBlinkAnimation()},l.prototype.onGridChanged=function(a,u){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},l.prototype._render=function(a){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var u=this._bufferService.buffer.ybase+this._bufferService.buffer.y,v=u-this._bufferService.buffer.ydisp;if(v<0||v>=this._bufferService.rows)this._clearCursor();else{var b=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1);if(this._bufferService.buffer.lines.get(u).loadCell(b,this._cell),this._cell.content!==void 0){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var E=this._optionsService.rawOptions.cursorStyle;return E&&E!=="block"?this._cursorRenderers[E](b,v,this._cell):this._renderBlurCursor(b,v,this._cell),this._ctx.restore(),this._state.x=b,this._state.y=v,this._state.isFocused=!1,this._state.style=E,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===b&&this._state.y===v&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.rawOptions.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.rawOptions.cursorStyle||"block"](b,v,this._cell),this._ctx.restore(),this._state.x=b,this._state.y=v,this._state.isFocused=!1,this._state.style=this._optionsService.rawOptions.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}}else this._clearCursor()},l.prototype._clearCursor=function(){this._state&&(window.devicePixelRatio<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},l.prototype._renderBarCursor=function(a,u,v){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(a,u,this._optionsService.rawOptions.cursorWidth),this._ctx.restore()},l.prototype._renderBlockCursor=function(a,u,v){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(a,u,v.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(v,a,u),this._ctx.restore()},l.prototype._renderUnderlineCursor=function(a,u,v){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(a,u),this._ctx.restore()},l.prototype._renderBlurCursor=function(a,u,v){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(a,u,v.getWidth(),1),this._ctx.restore()},_([g(5,c.IBufferService),g(6,c.IOptionsService),g(7,c.ICoreService),g(8,p.ICoreBrowserService)],l)}(T.BaseRenderLayer);h.CursorRenderLayer=d;var s=function(){function o(l,a){this._renderCallback=a,this.isCursorVisible=!0,l&&this._restartInterval()}return Object.defineProperty(o.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),o.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.restartBlinkAnimation=function(){var l=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){l._renderCallback(),l._animationFrame=void 0})))},o.prototype._restartInterval=function(l){var a=this;l===void 0&&(l=C),this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=window.setTimeout(function(){if(a._animationTimeRestarted){var u=C-(Date.now()-a._animationTimeRestarted);if(a._animationTimeRestarted=void 0,u>0)return void a._restartInterval(u)}a.isCursorVisible=!1,a._animationFrame=window.requestAnimationFrame(function(){a._renderCallback(),a._animationFrame=void 0}),a._blinkInterval=window.setInterval(function(){if(a._animationTimeRestarted){var v=C-(Date.now()-a._animationTimeRestarted);return a._animationTimeRestarted=void 0,void a._restartInterval(v)}a.isCursorVisible=!a.isCursorVisible,a._animationFrame=window.requestAnimationFrame(function(){a._renderCallback(),a._animationFrame=void 0})},C)},l)},o.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.resume=function(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()},o}()},8978:(R,h,L)=>{var y,m,_,g,T,w,c,p,C,d,s,o,l,a,u,v,b,E,O,k,A,N,D,W,B,F,j,G,$,ne,ie,be,ve,Ee,U,ee,q,Y,K,Se,fe,Ce,De,Fe,Ae,_e,je,Je,Tt,lr,Cr,wr,ei,pi,Nr,ti,Nt,vi,vt,Ne,cr,ut,Wt,we,ur,Qe,ke,We,fr,Ke,At,Xe,hr,ft,Qt,Yt,Wr,Lr,et,jr,xr,Mt,kr,Ur,zr,Er,Zt,gt,ht,qr,jt,dr,pr,bt,St,dt,Tr,Ar,Ie,me,Ot,Mr,it,Re,Rt,er,Or,le,I,X,oe,ce,Te,Oe,pe,Ze,_t,Rr,Ut,Bi,Pi,Kr,gi,Ii,_i,Hi,Fi,Ni;Object.defineProperty(h,"__esModule",{value:!0}),h.tryDrawCustomChar=h.boxDrawingDefinitions=h.blockElementDefinitions=void 0;var cn=L(1752);h.blockElementDefinitions={"\u2580":[{x:0,y:0,w:8,h:4}],"\u2581":[{x:0,y:7,w:8,h:1}],"\u2582":[{x:0,y:6,w:8,h:2}],"\u2583":[{x:0,y:5,w:8,h:3}],"\u2584":[{x:0,y:4,w:8,h:4}],"\u2585":[{x:0,y:3,w:8,h:5}],"\u2586":[{x:0,y:2,w:8,h:6}],"\u2587":[{x:0,y:1,w:8,h:7}],"\u2588":[{x:0,y:0,w:8,h:8}],"\u2589":[{x:0,y:0,w:7,h:8}],"\u258A":[{x:0,y:0,w:6,h:8}],"\u258B":[{x:0,y:0,w:5,h:8}],"\u258C":[{x:0,y:0,w:4,h:8}],"\u258D":[{x:0,y:0,w:3,h:8}],"\u258E":[{x:0,y:0,w:2,h:8}],"\u258F":[{x:0,y:0,w:1,h:8}],"\u2590":[{x:4,y:0,w:4,h:8}],"\u2594":[{x:0,y:0,w:9,h:1}],"\u2595":[{x:7,y:0,w:1,h:8}],"\u2596":[{x:0,y:4,w:4,h:4}],"\u2597":[{x:4,y:4,w:4,h:4}],"\u2598":[{x:0,y:0,w:4,h:4}],"\u2599":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u259A":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"\u259B":[{x:0,y:0,w:4,h:8},{x:0,y:0,w:4,h:8}],"\u259C":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"\u259D":[{x:4,y:0,w:4,h:4}],"\u259E":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"\u259F":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u{1FB70}":[{x:1,y:0,w:1,h:8}],"\u{1FB71}":[{x:2,y:0,w:1,h:8}],"\u{1FB72}":[{x:3,y:0,w:1,h:8}],"\u{1FB73}":[{x:4,y:0,w:1,h:8}],"\u{1FB74}":[{x:5,y:0,w:1,h:8}],"\u{1FB75}":[{x:6,y:0,w:1,h:8}],"\u{1FB76}":[{x:0,y:1,w:8,h:1}],"\u{1FB77}":[{x:0,y:2,w:8,h:1}],"\u{1FB78}":[{x:0,y:3,w:8,h:1}],"\u{1FB79}":[{x:0,y:4,w:8,h:1}],"\u{1FB7A}":[{x:0,y:5,w:8,h:1}],"\u{1FB7B}":[{x:0,y:6,w:8,h:1}],"\u{1FB7C}":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB7D}":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7E}":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7F}":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB80}":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB81}":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB82}":[{x:0,y:0,w:8,h:2}],"\u{1FB83}":[{x:0,y:0,w:8,h:3}],"\u{1FB84}":[{x:0,y:0,w:8,h:5}],"\u{1FB85}":[{x:0,y:0,w:8,h:6}],"\u{1FB86}":[{x:0,y:0,w:8,h:7}],"\u{1FB87}":[{x:6,y:0,w:2,h:8}],"\u{1FB88}":[{x:5,y:0,w:3,h:8}],"\u{1FB89}":[{x:3,y:0,w:5,h:8}],"\u{1FB8A}":[{x:2,y:0,w:6,h:8}],"\u{1FB8B}":[{x:1,y:0,w:7,h:8}],"\u{1FB95}":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"\u{1FB96}":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"\u{1FB97}":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};var yo={"\u2591":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"\u2592":[[1,0],[0,0],[0,1],[0,0]],"\u2593":[[0,1],[1,1],[1,0],[1,1]]};h.boxDrawingDefinitions={"\u2500":(y={},y[1]="M0,.5 L1,.5",y),"\u2501":(m={},m[3]="M0,.5 L1,.5",m),"\u2502":(_={},_[1]="M.5,0 L.5,1",_),"\u2503":(g={},g[3]="M.5,0 L.5,1",g),"\u250C":(T={},T[1]="M0.5,1 L.5,.5 L1,.5",T),"\u250F":(w={},w[3]="M0.5,1 L.5,.5 L1,.5",w),"\u2510":(c={},c[1]="M0,.5 L.5,.5 L.5,1",c),"\u2513":(p={},p[3]="M0,.5 L.5,.5 L.5,1",p),"\u2514":(C={},C[1]="M.5,0 L.5,.5 L1,.5",C),"\u2517":(d={},d[3]="M.5,0 L.5,.5 L1,.5",d),"\u2518":(s={},s[1]="M.5,0 L.5,.5 L0,.5",s),"\u251B":(o={},o[3]="M.5,0 L.5,.5 L0,.5",o),"\u251C":(l={},l[1]="M.5,0 L.5,1 M.5,.5 L1,.5",l),"\u2523":(a={},a[3]="M.5,0 L.5,1 M.5,.5 L1,.5",a),"\u2524":(u={},u[1]="M.5,0 L.5,1 M.5,.5 L0,.5",u),"\u252B":(v={},v[3]="M.5,0 L.5,1 M.5,.5 L0,.5",v),"\u252C":(b={},b[1]="M0,.5 L1,.5 M.5,.5 L.5,1",b),"\u2533":(E={},E[3]="M0,.5 L1,.5 M.5,.5 L.5,1",E),"\u2534":(O={},O[1]="M0,.5 L1,.5 M.5,.5 L.5,0",O),"\u253B":(k={},k[3]="M0,.5 L1,.5 M.5,.5 L.5,0",k),"\u253C":(A={},A[1]="M0,.5 L1,.5 M.5,0 L.5,1",A),"\u254B":(N={},N[3]="M0,.5 L1,.5 M.5,0 L.5,1",N),"\u2574":(D={},D[1]="M.5,.5 L0,.5",D),"\u2578":(W={},W[3]="M.5,.5 L0,.5",W),"\u2575":(B={},B[1]="M.5,.5 L.5,0",B),"\u2579":(F={},F[3]="M.5,.5 L.5,0",F),"\u2576":(j={},j[1]="M.5,.5 L1,.5",j),"\u257A":(G={},G[3]="M.5,.5 L1,.5",G),"\u2577":($={},$[1]="M.5,.5 L.5,1",$),"\u257B":(ne={},ne[3]="M.5,.5 L.5,1",ne),"\u2550":(ie={},ie[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},ie),"\u2551":(be={},be[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},be),"\u2552":(ve={},ve[1]=function(se,te){return"M.5,1 L.5,"+(.5-te)+" L1,"+(.5-te)+" M.5,"+(.5+te)+" L1,"+(.5+te)},ve),"\u2553":(Ee={},Ee[1]=function(se,te){return"M"+(.5-se)+",1 L"+(.5-se)+",.5 L1,.5 M"+(.5+se)+",.5 L"+(.5+se)+",1"},Ee),"\u2554":(U={},U[1]=function(se,te){return"M1,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1"},U),"\u2555":(ee={},ee[1]=function(se,te){return"M0,"+(.5-te)+" L.5,"+(.5-te)+" L.5,1 M0,"+(.5+te)+" L.5,"+(.5+te)},ee),"\u2556":(q={},q[1]=function(se,te){return"M"+(.5+se)+",1 L"+(.5+se)+",.5 L0,.5 M"+(.5-se)+",.5 L"+(.5-se)+",1"},q),"\u2557":(Y={},Y[1]=function(se,te){return"M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M0,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",1"},Y),"\u2558":(K={},K[1]=function(se,te){return"M.5,0 L.5,"+(.5+te)+" L1,"+(.5+te)+" M.5,"+(.5-te)+" L1,"+(.5-te)},K),"\u2559":(Se={},Se[1]=function(se,te){return"M1,.5 L"+(.5-se)+",.5 L"+(.5-se)+",0 M"+(.5+se)+",.5 L"+(.5+se)+",0"},Se),"\u255A":(fe={},fe[1]=function(se,te){return"M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0 M1,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",0"},fe),"\u255B":(Ce={},Ce[1]=function(se,te){return"M0,"+(.5+te)+" L.5,"+(.5+te)+" L.5,0 M0,"+(.5-te)+" L.5,"+(.5-te)},Ce),"\u255C":(De={},De[1]=function(se,te){return"M0,.5 L"+(.5+se)+",.5 L"+(.5+se)+",0 M"+(.5-se)+",.5 L"+(.5-se)+",0"},De),"\u255D":(Fe={},Fe[1]=function(se,te){return"M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M0,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",0"},Fe),"\u255E":(Ae={},Ae[1]=function(se,te){return"M.5,0 L.5,1 M.5,"+(.5-te)+" L1,"+(.5-te)+" M.5,"+(.5+te)+" L1,"+(.5+te)},Ae),"\u255F":(_e={},_e[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1 M"+(.5+se)+",.5 L1,.5"},_e),"\u2560":(je={},je[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},je),"\u2561":(Je={},Je[1]=function(se,te){return"M.5,0 L.5,1 M0,"+(.5-te)+" L.5,"+(.5-te)+" M0,"+(.5+te)+" L.5,"+(.5+te)},Je),"\u2562":(Tt={},Tt[1]=function(se,te){return"M0,.5 L"+(.5-se)+",.5 M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},Tt),"\u2563":(lr={},lr[1]=function(se,te){return"M"+(.5+se)+",0 L"+(.5+se)+",1 M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0"},lr),"\u2564":(Cr={},Cr[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)+" M.5,"+(.5+te)+" L.5,1"},Cr),"\u2565":(wr={},wr[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",.5 L"+(.5-se)+",1 M"+(.5+se)+",.5 L"+(.5+se)+",1"},wr),"\u2566":(ei={},ei[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1"},ei),"\u2567":(pi={},pi[1]=function(se,te){return"M.5,0 L.5,"+(.5-te)+" M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},pi),"\u2568":(Nr={},Nr[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",.5 L"+(.5-se)+",0 M"+(.5+se)+",.5 L"+(.5+se)+",0"},Nr),"\u2569":(ti={},ti[1]=function(se,te){return"M0,"+(.5+te)+" L1,"+(.5+te)+" M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},ti),"\u256A":(Nt={},Nt[1]=function(se,te){return"M.5,0 L.5,1 M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},Nt),"\u256B":(vi={},vi[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},vi),"\u256C":(vt={},vt[1]=function(se,te){return"M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1 M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},vt),"\u2571":(Ne={},Ne[1]="M1,0 L0,1",Ne),"\u2572":(cr={},cr[1]="M0,0 L1,1",cr),"\u2573":(ut={},ut[1]="M1,0 L0,1 M0,0 L1,1",ut),"\u257C":(Wt={},Wt[1]="M.5,.5 L0,.5",Wt[3]="M.5,.5 L1,.5",Wt),"\u257D":(we={},we[1]="M.5,.5 L.5,0",we[3]="M.5,.5 L.5,1",we),"\u257E":(ur={},ur[1]="M.5,.5 L1,.5",ur[3]="M.5,.5 L0,.5",ur),"\u257F":(Qe={},Qe[1]="M.5,.5 L.5,1",Qe[3]="M.5,.5 L.5,0",Qe),"\u250D":(ke={},ke[1]="M.5,.5 L.5,1",ke[3]="M.5,.5 L1,.5",ke),"\u250E":(We={},We[1]="M.5,.5 L1,.5",We[3]="M.5,.5 L.5,1",We),"\u2511":(fr={},fr[1]="M.5,.5 L.5,1",fr[3]="M.5,.5 L0,.5",fr),"\u2512":(Ke={},Ke[1]="M.5,.5 L0,.5",Ke[3]="M.5,.5 L.5,1",Ke),"\u2515":(At={},At[1]="M.5,.5 L.5,0",At[3]="M.5,.5 L1,.5",At),"\u2516":(Xe={},Xe[1]="M.5,.5 L1,.5",Xe[3]="M.5,.5 L.5,0",Xe),"\u2519":(hr={},hr[1]="M.5,.5 L.5,0",hr[3]="M.5,.5 L0,.5",hr),"\u251A":(ft={},ft[1]="M.5,.5 L0,.5",ft[3]="M.5,.5 L.5,0",ft),"\u251D":(Qt={},Qt[1]="M.5,0 L.5,1",Qt[3]="M.5,.5 L1,.5",Qt),"\u251E":(Yt={},Yt[1]="M0.5,1 L.5,.5 L1,.5",Yt[3]="M.5,.5 L.5,0",Yt),"\u251F":(Wr={},Wr[1]="M.5,0 L.5,.5 L1,.5",Wr[3]="M.5,.5 L.5,1",Wr),"\u2520":(Lr={},Lr[1]="M.5,.5 L1,.5",Lr[3]="M.5,0 L.5,1",Lr),"\u2521":(et={},et[1]="M.5,.5 L.5,1",et[3]="M.5,0 L.5,.5 L1,.5",et),"\u2522":(jr={},jr[1]="M.5,.5 L.5,0",jr[3]="M0.5,1 L.5,.5 L1,.5",jr),"\u2525":(xr={},xr[1]="M.5,0 L.5,1",xr[3]="M.5,.5 L0,.5",xr),"\u2526":(Mt={},Mt[1]="M0,.5 L.5,.5 L.5,1",Mt[3]="M.5,.5 L.5,0",Mt),"\u2527":(kr={},kr[1]="M.5,0 L.5,.5 L0,.5",kr[3]="M.5,.5 L.5,1",kr),"\u2528":(Ur={},Ur[1]="M.5,.5 L0,.5",Ur[3]="M.5,0 L.5,1",Ur),"\u2529":(zr={},zr[1]="M.5,.5 L.5,1",zr[3]="M.5,0 L.5,.5 L0,.5",zr),"\u252A":(Er={},Er[1]="M.5,.5 L.5,0",Er[3]="M0,.5 L.5,.5 L.5,1",Er),"\u252D":(Zt={},Zt[1]="M0.5,1 L.5,.5 L1,.5",Zt[3]="M.5,.5 L0,.5",Zt),"\u252E":(gt={},gt[1]="M0,.5 L.5,.5 L.5,1",gt[3]="M.5,.5 L1,.5",gt),"\u252F":(ht={},ht[1]="M.5,.5 L.5,1",ht[3]="M0,.5 L1,.5",ht),"\u2530":(qr={},qr[1]="M0,.5 L1,.5",qr[3]="M.5,.5 L.5,1",qr),"\u2531":(jt={},jt[1]="M.5,.5 L1,.5",jt[3]="M0,.5 L.5,.5 L.5,1",jt),"\u2532":(dr={},dr[1]="M.5,.5 L0,.5",dr[3]="M0.5,1 L.5,.5 L1,.5",dr),"\u2535":(pr={},pr[1]="M.5,0 L.5,.5 L1,.5",pr[3]="M.5,.5 L0,.5",pr),"\u2536":(bt={},bt[1]="M.5,0 L.5,.5 L0,.5",bt[3]="M.5,.5 L1,.5",bt),"\u2537":(St={},St[1]="M.5,.5 L.5,0",St[3]="M0,.5 L1,.5",St),"\u2538":(dt={},dt[1]="M0,.5 L1,.5",dt[3]="M.5,.5 L.5,0",dt),"\u2539":(Tr={},Tr[1]="M.5,.5 L1,.5",Tr[3]="M.5,0 L.5,.5 L0,.5",Tr),"\u253A":(Ar={},Ar[1]="M.5,.5 L0,.5",Ar[3]="M.5,0 L.5,.5 L1,.5",Ar),"\u253D":(Ie={},Ie[1]="M.5,0 L.5,1 M.5,.5 L1,.5",Ie[3]="M.5,.5 L0,.5",Ie),"\u253E":(me={},me[1]="M.5,0 L.5,1 M.5,.5 L0,.5",me[3]="M.5,.5 L1,.5",me),"\u253F":(Ot={},Ot[1]="M.5,0 L.5,1",Ot[3]="M0,.5 L1,.5",Ot),"\u2540":(Mr={},Mr[1]="M0,.5 L1,.5 M.5,.5 L.5,1",Mr[3]="M.5,.5 L.5,0",Mr),"\u2541":(it={},it[1]="M.5,.5 L.5,0 M0,.5 L1,.5",it[3]="M.5,.5 L.5,1",it),"\u2542":(Re={},Re[1]="M0,.5 L1,.5",Re[3]="M.5,0 L.5,1",Re),"\u2543":(Rt={},Rt[1]="M0.5,1 L.5,.5 L1,.5",Rt[3]="M.5,0 L.5,.5 L0,.5",Rt),"\u2544":(er={},er[1]="M0,.5 L.5,.5 L.5,1",er[3]="M.5,0 L.5,.5 L1,.5",er),"\u2545":(Or={},Or[1]="M.5,0 L.5,.5 L1,.5",Or[3]="M0,.5 L.5,.5 L.5,1",Or),"\u2546":(le={},le[1]="M.5,0 L.5,.5 L0,.5",le[3]="M0.5,1 L.5,.5 L1,.5",le),"\u2547":(I={},I[1]="M.5,.5 L.5,1",I[3]="M.5,.5 L.5,0 M0,.5 L1,.5",I),"\u2548":(X={},X[1]="M.5,.5 L.5,0",X[3]="M0,.5 L1,.5 M.5,.5 L.5,1",X),"\u2549":(oe={},oe[1]="M.5,.5 L1,.5",oe[3]="M.5,0 L.5,1 M.5,.5 L0,.5",oe),"\u254A":(ce={},ce[1]="M.5,.5 L0,.5",ce[3]="M.5,0 L.5,1 M.5,.5 L1,.5",ce),"\u254C":(Te={},Te[1]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",Te),"\u254D":(Oe={},Oe[3]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",Oe),"\u2504":(pe={},pe[1]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",pe),"\u2505":(Ze={},Ze[3]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",Ze),"\u2508":(_t={},_t[1]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",_t),"\u2509":(Rr={},Rr[3]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",Rr),"\u254E":(Ut={},Ut[1]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Ut),"\u254F":(Bi={},Bi[3]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Bi),"\u2506":(Pi={},Pi[1]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Pi),"\u2507":(Kr={},Kr[3]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Kr),"\u250A":(gi={},gi[1]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",gi),"\u250B":(Ii={},Ii[3]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",Ii),"\u256D":(_i={},_i[1]="C.5,1,.5,.5,1,.5",_i),"\u256E":(Hi={},Hi[1]="C.5,1,.5,.5,0,.5",Hi),"\u256F":(Fi={},Fi[1]="C.5,0,.5,.5,0,.5",Fi),"\u2570":(Ni={},Ni[1]="C.5,0,.5,.5,1,.5",Ni)},h.tryDrawCustomChar=function(se,te,Ct,yi,mi,tt){var tr=h.blockElementDefinitions[te];if(tr)return function(wt,Vt,ii,Dr,gr,Br){for(var Dt=0;Dt7&&parseInt(Ue.substr(7,2),16)||1;else{if(!Ue.startsWith("rgba"))throw new Error('Unexpected fillStyle color format "'+Ue+'" when drawing pattern glyph');Xr=(Dt=Ue.substring(5,Ue.length-1).split(",").map(function(ni){return parseFloat(ni)}))[0],xt=Dt[1],bi=Dt[2],$t=Dt[3]}for(var ir=0;ir{Object.defineProperty(h,"__esModule",{value:!0}),h.GridCache=void 0;var L=function(){function y(){this.cache=[]}return y.prototype.resize=function(m,_){for(var g=0;g=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},g=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.LinkRenderLayer=void 0;var T=L(1546),w=L(8803),c=L(2040),p=L(2585),C=function(d){function s(o,l,a,u,v,b,E,O){var k=d.call(this,o,"link",l,!0,a,u,E,O)||this;return v.onShowLinkUnderline(function(A){return k._onShowLinkUnderline(A)}),v.onHideLinkUnderline(function(A){return k._onHideLinkUnderline(A)}),b.onShowLinkUnderline(function(A){return k._onShowLinkUnderline(A)}),b.onHideLinkUnderline(function(A){return k._onHideLinkUnderline(A)}),k}return m(s,d),s.prototype.resize=function(o){d.prototype.resize.call(this,o),this._state=void 0},s.prototype.reset=function(){this._clearCurrentLink()},s.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var o=this._state.y2-this._state.y1-1;o>0&&this._clearCells(0,this._state.y1+1,this._state.cols,o),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},s.prototype._onShowLinkUnderline=function(o){if(o.fg===w.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:o.fg&&(0,c.is256Color)(o.fg)?this._ctx.fillStyle=this._colors.ansi[o.fg].css:this._ctx.fillStyle=this._colors.foreground.css,o.y1===o.y2)this._fillBottomLineAtCells(o.x1,o.y1,o.x2-o.x1);else{this._fillBottomLineAtCells(o.x1,o.y1,o.cols-o.x1);for(var l=o.y1+1;l=0;D--)(k=v[D])&&(N=(A<3?k(N):A>3?k(b,E,N):k(b,E))||N);return A>3&&N&&Object.defineProperty(b,E,N),N},g=this&&this.__param||function(v,b){return function(E,O){b(E,O,v)}};Object.defineProperty(h,"__esModule",{value:!0}),h.Renderer=void 0;var T=L(9596),w=L(4149),c=L(2512),p=L(5098),C=L(844),d=L(4725),s=L(2585),o=L(1420),l=L(8460),a=1,u=function(v){function b(E,O,k,A,N,D,W,B){var F=v.call(this)||this;F._colors=E,F._screenElement=O,F._bufferService=D,F._charSizeService=W,F._optionsService=B,F._id=a++,F._onRequestRedraw=new l.EventEmitter;var j=F._optionsService.rawOptions.allowTransparency;return F._renderLayers=[N.createInstance(T.TextRenderLayer,F._screenElement,0,F._colors,j,F._id),N.createInstance(w.SelectionRenderLayer,F._screenElement,1,F._colors,F._id),N.createInstance(p.LinkRenderLayer,F._screenElement,2,F._colors,F._id,k,A),N.createInstance(c.CursorRenderLayer,F._screenElement,3,F._colors,F._id,F._onRequestRedraw)],F.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},F._devicePixelRatio=window.devicePixelRatio,F._updateDimensions(),F.onOptionsChanged(),F}return m(b,v),Object.defineProperty(b.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),b.prototype.dispose=function(){for(var E=0,O=this._renderLayers;E{Object.defineProperty(h,"__esModule",{value:!0}),h.throwIfFalsy=void 0,h.throwIfFalsy=function(L){if(!L)throw new Error("value must not be falsy");return L}},4149:function(R,h,L){var y,m=this&&this.__extends||(y=function(p,C){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,s){d.__proto__=s}||function(d,s){for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(d[o]=s[o])},y(p,C)},function(p,C){if(typeof C!="function"&&C!==null)throw new TypeError("Class extends value "+String(C)+" is not a constructor or null");function d(){this.constructor=p}y(p,C),p.prototype=C===null?Object.create(C):(d.prototype=C.prototype,new d)}),_=this&&this.__decorate||function(p,C,d,s){var o,l=arguments.length,a=l<3?C:s===null?s=Object.getOwnPropertyDescriptor(C,d):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(p,C,d,s);else for(var u=p.length-1;u>=0;u--)(o=p[u])&&(a=(l<3?o(a):l>3?o(C,d,a):o(C,d))||a);return l>3&&a&&Object.defineProperty(C,d,a),a},g=this&&this.__param||function(p,C){return function(d,s){C(d,s,p)}};Object.defineProperty(h,"__esModule",{value:!0}),h.SelectionRenderLayer=void 0;var T=L(1546),w=L(2585),c=function(p){function C(d,s,o,l,a,u){var v=p.call(this,d,"selection",s,!0,o,l,a,u)||this;return v._clearState(),v}return m(C,p),C.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},C.prototype.resize=function(d){p.prototype.resize.call(this,d),this._clearState()},C.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},C.prototype.onSelectionChanged=function(d,s,o){if(this._didStateChange(d,s,o,this._bufferService.buffer.ydisp))if(this._clearAll(),d&&s){var l=d[1]-this._bufferService.buffer.ydisp,a=s[1]-this._bufferService.buffer.ydisp,u=Math.max(l,0),v=Math.min(a,this._bufferService.rows-1);if(u>=this._bufferService.rows||v<0)this._state.ydisp=this._bufferService.buffer.ydisp;else{if(this._ctx.fillStyle=this._colors.selectionTransparent.css,o){var b=d[0],E=s[0]-b,O=v-u+1;this._fillCells(b,u,E,O)}else{b=l===u?d[0]:0;var k=u===a?s[0]:this._bufferService.cols;this._fillCells(b,u,k-b,1);var A=Math.max(v-u-1,0);if(this._fillCells(0,u+1,this._bufferService.cols,A),u!==v){var N=a===v?s[0]:this._bufferService.cols;this._fillCells(0,v,N,1)}}this._state.start=[d[0],d[1]],this._state.end=[s[0],s[1]],this._state.columnSelectMode=o,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},C.prototype._didStateChange=function(d,s,o,l){return!this._areCoordinatesEqual(d,this._state.start)||!this._areCoordinatesEqual(s,this._state.end)||o!==this._state.columnSelectMode||l!==this._state.ydisp},C.prototype._areCoordinatesEqual=function(d,s){return!(!d||!s)&&d[0]===s[0]&&d[1]===s[1]},_([g(4,w.IBufferService),g(5,w.IOptionsService)],C)}(T.BaseRenderLayer);h.SelectionRenderLayer=c},9596:function(R,h,L){var y,m=this&&this.__extends||(y=function(a,u){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,b){v.__proto__=b}||function(v,b){for(var E in b)Object.prototype.hasOwnProperty.call(b,E)&&(v[E]=b[E])},y(a,u)},function(a,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");function v(){this.constructor=a}y(a,u),a.prototype=u===null?Object.create(u):(v.prototype=u.prototype,new v)}),_=this&&this.__decorate||function(a,u,v,b){var E,O=arguments.length,k=O<3?u:b===null?b=Object.getOwnPropertyDescriptor(u,v):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")k=Reflect.decorate(a,u,v,b);else for(var A=a.length-1;A>=0;A--)(E=a[A])&&(k=(O<3?E(k):O>3?E(u,v,k):E(u,v))||k);return O>3&&k&&Object.defineProperty(u,v,k),k},g=this&&this.__param||function(a,u){return function(v,b){u(v,b,a)}};Object.defineProperty(h,"__esModule",{value:!0}),h.TextRenderLayer=void 0;var T=L(3700),w=L(1546),c=L(3734),p=L(643),C=L(511),d=L(2585),s=L(4725),o=L(4269),l=function(a){function u(v,b,E,O,k,A,N,D){var W=a.call(this,v,"text",b,O,E,k,A,N)||this;return W._characterJoinerService=D,W._characterWidth=0,W._characterFont="",W._characterOverlapCache={},W._workCell=new C.CellData,W._state=new T.GridCache,W}return m(u,a),u.prototype.resize=function(v){a.prototype.resize.call(this,v);var b=this._getFont(!1,!1);this._characterWidth===v.scaledCharWidth&&this._characterFont===b||(this._characterWidth=v.scaledCharWidth,this._characterFont=b,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},u.prototype.reset=function(){this._state.clear(),this._clearAll()},u.prototype._forEachCell=function(v,b,E){for(var O=v;O<=b;O++)for(var k=O+this._bufferService.buffer.ydisp,A=this._bufferService.buffer.lines.get(k),N=this._characterJoinerService.getJoinedCharacters(k),D=0;D0&&D===N[0][0]){B=!0;var j=N.shift();W=new o.JoinedCellData(this._workCell,A.translateToString(!0,j[0],j[1]),j[1]-j[0]),F=j[1]-1}!B&&this._isOverlapping(W)&&Fthis._characterWidth;return this._ctx.restore(),this._characterOverlapCache[b]=E,E},_([g(5,d.IBufferService),g(6,d.IOptionsService),g(7,s.ICharacterJoinerService)],u)}(w.BaseRenderLayer);h.TextRenderLayer=l},9616:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.BaseCharAtlas=void 0;var L=function(){function y(){this._didWarmUp=!1}return y.prototype.dispose=function(){},y.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},y.prototype._doWarmUp=function(){},y.prototype.clear=function(){},y.prototype.beginFrame=function(){},y}();h.BaseCharAtlas=L},1420:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.removeTerminalFromCache=h.acquireCharAtlas=void 0;var y=L(2040),m=L(1906),_=[];h.acquireCharAtlas=function(g,T,w,c,p){for(var C=(0,y.generateConfig)(c,p,g,w),d=0;d<_.length;d++){var s=(o=_[d]).ownedBy.indexOf(T);if(s>=0){if((0,y.configEquals)(o.config,C))return o.atlas;o.ownedBy.length===1?(o.atlas.dispose(),_.splice(d,1)):o.ownedBy.splice(s,1);break}}for(d=0;d<_.length;d++){var o=_[d];if((0,y.configEquals)(o.config,C))return o.ownedBy.push(T),o.atlas}var l={atlas:new m.DynamicCharAtlas(document,C),config:C,ownedBy:[T]};return _.push(l),l.atlas},h.removeTerminalFromCache=function(g){for(var T=0;T<_.length;T++){var w=_[T].ownedBy.indexOf(g);if(w!==-1){_[T].ownedBy.length===1?(_[T].atlas.dispose(),_.splice(T,1)):_[T].ownedBy.splice(w,1);break}}}},2040:function(R,h,L){var y=this&&this.__spreadArray||function(_,g,T){if(T||arguments.length===2)for(var w,c=0,p=g.length;c{Object.defineProperty(h,"__esModule",{value:!0}),h.CHAR_ATLAS_CELL_SPACING=h.TEXT_BASELINE=h.DIM_OPACITY=h.INVERTED_DEFAULT_COLOR=void 0;var y=L(6114);h.INVERTED_DEFAULT_COLOR=257,h.DIM_OPACITY=.5,h.TEXT_BASELINE=y.isFirefox||y.isLegacyEdge?"bottom":"ideographic",h.CHAR_ATLAS_CELL_SPACING=1},1906:function(R,h,L){var y,m=this&&this.__extends||(y=function(b,E){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(O,k){O.__proto__=k}||function(O,k){for(var A in k)Object.prototype.hasOwnProperty.call(k,A)&&(O[A]=k[A])},y(b,E)},function(b,E){if(typeof E!="function"&&E!==null)throw new TypeError("Class extends value "+String(E)+" is not a constructor or null");function O(){this.constructor=b}y(b,E),b.prototype=E===null?Object.create(E):(O.prototype=E.prototype,new O)});Object.defineProperty(h,"__esModule",{value:!0}),h.NoneCharAtlas=h.DynamicCharAtlas=h.getGlyphCacheKey=void 0;var _=L(8803),g=L(9616),T=L(5680),w=L(7001),c=L(6114),p=L(1752),C=L(4774),d=1024,s=1024,o={css:"rgba(0, 0, 0, 0)",rgba:0};function l(b){return b.code<<21|b.bg<<12|b.fg<<3|(b.bold?0:4)+(b.dim?0:2)+(b.italic?0:1)}h.getGlyphCacheKey=l;var a=function(b){function E(O,k){var A=b.call(this)||this;A._config=k,A._drawToCacheCount=0,A._glyphsWaitingOnBitmap=[],A._bitmapCommitTimeout=null,A._bitmap=null,A._cacheCanvas=O.createElement("canvas"),A._cacheCanvas.width=d,A._cacheCanvas.height=s,A._cacheCtx=(0,p.throwIfFalsy)(A._cacheCanvas.getContext("2d",{alpha:!0}));var N=O.createElement("canvas");N.width=A._config.scaledCharWidth,N.height=A._config.scaledCharHeight,A._tmpCtx=(0,p.throwIfFalsy)(N.getContext("2d",{alpha:A._config.allowTransparency})),A._width=Math.floor(d/A._config.scaledCharWidth),A._height=Math.floor(s/A._config.scaledCharHeight);var D=A._width*A._height;return A._cacheMap=new w.LRUMap(D),A._cacheMap.prealloc(D),A}return m(E,b),E.prototype.dispose=function(){this._bitmapCommitTimeout!==null&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=null)},E.prototype.beginFrame=function(){this._drawToCacheCount=0},E.prototype.clear=function(){if(this._cacheMap.size>0){var O=this._width*this._height;this._cacheMap=new w.LRUMap(O),this._cacheMap.prealloc(O)}this._cacheCtx.clearRect(0,0,d,s),this._tmpCtx.clearRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight)},E.prototype.draw=function(O,k,A,N){if(k.code===32)return!0;if(!this._canCache(k))return!1;var D=l(k),W=this._cacheMap.get(D);if(W!=null)return this._drawFromCache(O,W,A,N),!0;if(this._drawToCacheCount<100){var B;B=this._cacheMap.size>>24,A=E.rgba>>>16&255,N=E.rgba>>>8&255,D=0;D{Object.defineProperty(h,"__esModule",{value:!0}),h.LRUMap=void 0;var L=function(){function y(m){this.capacity=m,this._map={},this._head=null,this._tail=null,this._nodePool=[],this.size=0}return y.prototype._unlinkNode=function(m){var _=m.prev,g=m.next;m===this._head&&(this._head=g),m===this._tail&&(this._tail=_),_!==null&&(_.next=g),g!==null&&(g.prev=_)},y.prototype._appendNode=function(m){var _=this._tail;_!==null&&(_.next=m),m.prev=_,m.next=null,this._tail=m,this._head===null&&(this._head=m)},y.prototype.prealloc=function(m){for(var _=this._nodePool,g=0;g=this.capacity)g=this._head,this._unlinkNode(g),delete this._map[g.key],g.key=m,g.value=_,this._map[m]=g;else{var T=this._nodePool;T.length>0?((g=T.pop()).key=m,g.value=_):g={prev:null,next:null,key:m,value:_},this._map[m]=g,this.size++}this._appendNode(g)},y}();h.LRUMap=L},1296:function(R,h,L){var y,m=this&&this.__extends||(y=function(O,k){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,N){A.__proto__=N}||function(A,N){for(var D in N)Object.prototype.hasOwnProperty.call(N,D)&&(A[D]=N[D])},y(O,k)},function(O,k){if(typeof k!="function"&&k!==null)throw new TypeError("Class extends value "+String(k)+" is not a constructor or null");function A(){this.constructor=O}y(O,k),O.prototype=k===null?Object.create(k):(A.prototype=k.prototype,new A)}),_=this&&this.__decorate||function(O,k,A,N){var D,W=arguments.length,B=W<3?k:N===null?N=Object.getOwnPropertyDescriptor(k,A):N;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")B=Reflect.decorate(O,k,A,N);else for(var F=O.length-1;F>=0;F--)(D=O[F])&&(B=(W<3?D(B):W>3?D(k,A,B):D(k,A))||B);return W>3&&B&&Object.defineProperty(k,A,B),B},g=this&&this.__param||function(O,k){return function(A,N){k(A,N,O)}};Object.defineProperty(h,"__esModule",{value:!0}),h.DomRenderer=void 0;var T=L(3787),w=L(8803),c=L(844),p=L(4725),C=L(2585),d=L(8460),s=L(4774),o=L(9631),l="xterm-dom-renderer-owner-",a="xterm-fg-",u="xterm-bg-",v="xterm-focus",b=1,E=function(O){function k(A,N,D,W,B,F,j,G,$,ne){var ie=O.call(this)||this;return ie._colors=A,ie._element=N,ie._screenElement=D,ie._viewportElement=W,ie._linkifier=B,ie._linkifier2=F,ie._charSizeService=G,ie._optionsService=$,ie._bufferService=ne,ie._terminalClass=b++,ie._rowElements=[],ie._rowContainer=document.createElement("div"),ie._rowContainer.classList.add("xterm-rows"),ie._rowContainer.style.lineHeight="normal",ie._rowContainer.setAttribute("aria-hidden","true"),ie._refreshRowElements(ie._bufferService.cols,ie._bufferService.rows),ie._selectionContainer=document.createElement("div"),ie._selectionContainer.classList.add("xterm-selection"),ie._selectionContainer.setAttribute("aria-hidden","true"),ie.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},ie._updateDimensions(),ie._injectCss(),ie._rowFactory=j.createInstance(T.DomRendererRowFactory,document,ie._colors),ie._element.classList.add(l+ie._terminalClass),ie._screenElement.appendChild(ie._rowContainer),ie._screenElement.appendChild(ie._selectionContainer),ie._linkifier.onShowLinkUnderline(function(be){return ie._onLinkHover(be)}),ie._linkifier.onHideLinkUnderline(function(be){return ie._onLinkLeave(be)}),ie._linkifier2.onShowLinkUnderline(function(be){return ie._onLinkHover(be)}),ie._linkifier2.onHideLinkUnderline(function(be){return ie._onLinkLeave(be)}),ie}return m(k,O),Object.defineProperty(k.prototype,"onRequestRedraw",{get:function(){return new d.EventEmitter().event},enumerable:!1,configurable:!0}),k.prototype.dispose=function(){this._element.classList.remove(l+this._terminalClass),(0,o.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),O.prototype.dispose.call(this)},k.prototype._updateDimensions=function(){this.dimensions.scaledCharWidth=this._charSizeService.width*window.devicePixelRatio,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;for(var A=0,N=this._rowElements;AN;)this._rowContainer.removeChild(this._rowElements.pop())},k.prototype.onResize=function(A,N){this._refreshRowElements(A,N),this._updateDimensions()},k.prototype.onCharSizeChanged=function(){this._updateDimensions()},k.prototype.onBlur=function(){this._rowContainer.classList.remove(v)},k.prototype.onFocus=function(){this._rowContainer.classList.add(v)},k.prototype.onSelectionChanged=function(A,N,D){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(A&&N){var W=A[1]-this._bufferService.buffer.ydisp,B=N[1]-this._bufferService.buffer.ydisp,F=Math.max(W,0),j=Math.min(B,this._bufferService.rows-1);if(!(F>=this._bufferService.rows||j<0)){var G=document.createDocumentFragment();if(D)G.appendChild(this._createSelectionElement(F,A[0],N[0],j-F+1));else{var $=W===F?A[0]:0,ne=F===B?N[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(F,$,ne));var ie=j-F-1;if(G.appendChild(this._createSelectionElement(F+1,0,this._bufferService.cols,ie)),F!==j){var be=B===j?N[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(j,0,be))}}this._selectionContainer.appendChild(G)}}},k.prototype._createSelectionElement=function(A,N,D,W){W===void 0&&(W=1);var B=document.createElement("div");return B.style.height=W*this.dimensions.actualCellHeight+"px",B.style.top=A*this.dimensions.actualCellHeight+"px",B.style.left=N*this.dimensions.actualCellWidth+"px",B.style.width=this.dimensions.actualCellWidth*(D-N)+"px",B},k.prototype.onCursorMove=function(){},k.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss()},k.prototype.clear=function(){for(var A=0,N=this._rowElements;A=B&&(A=0,D++)}},_([g(6,C.IInstantiationService),g(7,p.ICharSizeService),g(8,C.IOptionsService),g(9,C.IBufferService)],k)}(c.Disposable);h.DomRenderer=E},3787:function(R,h,L){var y=this&&this.__decorate||function(o,l,a,u){var v,b=arguments.length,E=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(o,l,a,u);else for(var O=o.length-1;O>=0;O--)(v=o[O])&&(E=(b<3?v(E):b>3?v(l,a,E):v(l,a))||E);return b>3&&E&&Object.defineProperty(l,a,E),E},m=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(h,"__esModule",{value:!0}),h.DomRendererRowFactory=h.CURSOR_STYLE_UNDERLINE_CLASS=h.CURSOR_STYLE_BAR_CLASS=h.CURSOR_STYLE_BLOCK_CLASS=h.CURSOR_BLINK_CLASS=h.CURSOR_CLASS=h.STRIKETHROUGH_CLASS=h.UNDERLINE_CLASS=h.ITALIC_CLASS=h.DIM_CLASS=h.BOLD_CLASS=void 0;var _=L(8803),g=L(643),T=L(511),w=L(2585),c=L(4774),p=L(4725),C=L(4269);h.BOLD_CLASS="xterm-bold",h.DIM_CLASS="xterm-dim",h.ITALIC_CLASS="xterm-italic",h.UNDERLINE_CLASS="xterm-underline",h.STRIKETHROUGH_CLASS="xterm-strikethrough",h.CURSOR_CLASS="xterm-cursor",h.CURSOR_BLINK_CLASS="xterm-cursor-blink",h.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",h.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",h.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var d=function(){function o(l,a,u,v,b){this._document=l,this._colors=a,this._characterJoinerService=u,this._optionsService=v,this._coreService=b,this._workCell=new T.CellData}return o.prototype.setColors=function(l){this._colors=l},o.prototype.createRow=function(l,a,u,v,b,E,O,k){for(var A=this._document.createDocumentFragment(),N=this._characterJoinerService.getJoinedCharacters(a),D=0,W=Math.min(l.length,k)-1;W>=0;W--)if(l.loadCell(W,this._workCell).getCode()!==g.NULL_CELL_CODE||u&&W===b){D=W+1;break}for(W=0;W0&&W===N[0][0]){F=!0;var $=N.shift();G=new C.JoinedCellData(this._workCell,l.translateToString(!0,$[0],$[1]),$[1]-$[0]),j=$[1]-1,B=G.getWidth()}var ne=this._document.createElement("span");if(B>1&&(ne.style.width=O*B+"px"),F&&(ne.style.display="inline",b>=W&&b<=j&&(b=W)),!this._coreService.isCursorHidden&&u&&W===b)switch(ne.classList.add(h.CURSOR_CLASS),E&&ne.classList.add(h.CURSOR_BLINK_CLASS),v){case"bar":ne.classList.add(h.CURSOR_STYLE_BAR_CLASS);break;case"underline":ne.classList.add(h.CURSOR_STYLE_UNDERLINE_CLASS);break;default:ne.classList.add(h.CURSOR_STYLE_BLOCK_CLASS)}G.isBold()&&ne.classList.add(h.BOLD_CLASS),G.isItalic()&&ne.classList.add(h.ITALIC_CLASS),G.isDim()&&ne.classList.add(h.DIM_CLASS),G.isUnderline()&&ne.classList.add(h.UNDERLINE_CLASS),G.isInvisible()?ne.textContent=g.WHITESPACE_CELL_CHAR:ne.textContent=G.getChars()||g.WHITESPACE_CELL_CHAR,G.isStrikethrough()&&ne.classList.add(h.STRIKETHROUGH_CLASS);var ie=G.getFgColor(),be=G.getFgColorMode(),ve=G.getBgColor(),Ee=G.getBgColorMode(),U=!!G.isInverse();if(U){var ee=ie;ie=ve,ve=ee;var q=be;be=Ee,Ee=q}switch(be){case 16777216:case 33554432:G.isBold()&&ie<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(ie+=8),this._applyMinimumContrast(ne,this._colors.background,this._colors.ansi[ie])||ne.classList.add("xterm-fg-"+ie);break;case 50331648:var Y=c.rgba.toColor(ie>>16&255,ie>>8&255,255&ie);this._applyMinimumContrast(ne,this._colors.background,Y)||this._addStyle(ne,"color:#"+s(ie.toString(16),"0",6));break;default:this._applyMinimumContrast(ne,this._colors.background,this._colors.foreground)||U&&ne.classList.add("xterm-fg-"+_.INVERTED_DEFAULT_COLOR)}switch(Ee){case 16777216:case 33554432:ne.classList.add("xterm-bg-"+ve);break;case 50331648:this._addStyle(ne,"background-color:#"+s(ve.toString(16),"0",6));break;default:U&&ne.classList.add("xterm-bg-"+_.INVERTED_DEFAULT_COLOR)}A.appendChild(ne),W=j}}return A},o.prototype._applyMinimumContrast=function(l,a,u){if(this._optionsService.rawOptions.minimumContrastRatio===1)return!1;var v=this._colors.contrastCache.getColor(this._workCell.bg,this._workCell.fg);return v===void 0&&(v=c.color.ensureContrastRatio(a,u,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor(this._workCell.bg,this._workCell.fg,v??null)),!!v&&(this._addStyle(l,"color:"+v.css),!0)},o.prototype._addStyle=function(l,a){l.setAttribute("style",""+(l.getAttribute("style")||"")+a+";")},y([m(2,p.ICharacterJoinerService),m(3,w.IOptionsService),m(4,w.ICoreService)],o)}();function s(o,l,a){for(;o.length{Object.defineProperty(h,"__esModule",{value:!0}),h.SelectionModel=void 0;var L=function(){function y(m){this._bufferService=m,this.isSelectAllActive=!1,this.selectionStartLength=0}return y.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(y.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"finalSelectionEnd",{get:function(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){var m=this.selectionStart[0]+this.selectionStartLength;return m>this._bufferService.cols?m%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(m/this._bufferService.cols)-1]:[m%this._bufferService.cols,this.selectionStart[1]+Math.floor(m/this._bufferService.cols)]:[m,this.selectionStart[1]]}return this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd}},enumerable:!1,configurable:!0}),y.prototype.areSelectionValuesReversed=function(){var m=this.selectionStart,_=this.selectionEnd;return!(!m||!_)&&(m[1]>_[1]||m[1]===_[1]&&m[0]>_[0])},y.prototype.onTrim=function(m){return this.selectionStart&&(this.selectionStart[1]-=m),this.selectionEnd&&(this.selectionEnd[1]-=m),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},y}();h.SelectionModel=L},428:function(R,h,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}};Object.defineProperty(h,"__esModule",{value:!0}),h.CharSizeService=void 0;var _=L(2585),g=L(8460),T=function(){function c(p,C,d){this._optionsService=d,this.width=0,this.height=0,this._onCharSizeChange=new g.EventEmitter,this._measureStrategy=new w(p,C,this._optionsService)}return Object.defineProperty(c.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!1,configurable:!0}),c.prototype.measure=function(){var p=this._measureStrategy.measure();p.width===this.width&&p.height===this.height||(this.width=p.width,this.height=p.height,this._onCharSizeChange.fire())},y([m(2,_.IOptionsService)],c)}();h.CharSizeService=T;var w=function(){function c(p,C,d){this._document=p,this._parentElement=C,this._optionsService=d,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return c.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var p=this._measureElement.getBoundingClientRect();return p.width!==0&&p.height!==0&&(this._result.width=p.width,this._result.height=Math.ceil(p.height)),this._result},c}()},4269:function(R,h,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)}),_=this&&this.__decorate||function(s,o,l,a){var u,v=arguments.length,b=v<3?o:a===null?a=Object.getOwnPropertyDescriptor(o,l):a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")b=Reflect.decorate(s,o,l,a);else for(var E=s.length-1;E>=0;E--)(u=s[E])&&(b=(v<3?u(b):v>3?u(o,l,b):u(o,l))||b);return v>3&&b&&Object.defineProperty(o,l,b),b},g=this&&this.__param||function(s,o){return function(l,a){o(l,a,s)}};Object.defineProperty(h,"__esModule",{value:!0}),h.CharacterJoinerService=h.JoinedCellData=void 0;var T=L(3734),w=L(643),c=L(511),p=L(2585),C=function(s){function o(l,a,u){var v=s.call(this)||this;return v.content=0,v.combinedData="",v.fg=l.fg,v.bg=l.bg,v.combinedData=a,v._width=u,v}return m(o,s),o.prototype.isCombined=function(){return 2097152},o.prototype.getWidth=function(){return this._width},o.prototype.getChars=function(){return this.combinedData},o.prototype.getCode=function(){return 2097151},o.prototype.setFromCharData=function(l){throw new Error("not implemented")},o.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},o}(T.AttributeData);h.JoinedCellData=C;var d=function(){function s(o){this._bufferService=o,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new c.CellData}return s.prototype.register=function(o){var l={id:this._nextCharacterJoinerId++,handler:o};return this._characterJoiners.push(l),l.id},s.prototype.deregister=function(o){for(var l=0;l1)for(var N=this._getJoinedRanges(u,E,b,l,v),D=0;D1)for(N=this._getJoinedRanges(u,E,b,l,v),D=0;D{Object.defineProperty(h,"__esModule",{value:!0}),h.CoreBrowserService=void 0;var L=function(){function y(m){this._textarea=m}return Object.defineProperty(y.prototype,"isFocused",{get:function(){return(this._textarea.getRootNode?this._textarea.getRootNode():document).activeElement===this._textarea&&document.hasFocus()},enumerable:!1,configurable:!0}),y}();h.CoreBrowserService=L},7641:function(R,h,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,v=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},g=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.Decoration=h.DecorationService=void 0;var T=L(8460),w=L(844),c=L(2585),p=function(d){function s(o){var l=d.call(this)||this;return l._instantiationService=o,l._decorations=[],l}return m(s,d),s.prototype.attachToDom=function(o,l){var a=this;this._renderService=l,this._screenElement=o,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),o.appendChild(this._container),this.register(this._renderService.onRenderedBufferChange(function(){return a.refresh()})),this.register(this._renderService.onDimensionsChange(function(){return a.refresh(!0)}))},s.prototype.registerDecoration=function(o){var l=this;if(!o.marker.isDisposed&&this._container){var a=this._instantiationService.createInstance(C,o,this._container);return this._decorations.push(a),a.onDispose(function(){return l._decorations.splice(l._decorations.indexOf(a),1)}),this._queueRefresh(),a}},s.prototype._queueRefresh=function(){var o=this;this._animationFrame===void 0&&(this._animationFrame=window.requestAnimationFrame(function(){o.refresh(),o._animationFrame=void 0}))},s.prototype.refresh=function(o){if(this._renderService)for(var l=0,a=this._decorations;lthis._bufferService.cols&&(this._element.style.display="none"),this.anchor==="right"?this._element.style.right=this.x?this.x*o.dimensions.actualCellWidth+"px":"":this._element.style.left=this.x?this.x*o.dimensions.actualCellWidth+"px":""},s.prototype._refreshStyle=function(o){if(this._element){var l=this.marker.line-this._bufferService.buffers.active.ydisp;l<0||l>this._bufferService.rows?this._element.style.display="none":(this._element.style.top=l*o.dimensions.actualCellHeight+"px",this._element.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block")}},s.prototype.dispose=function(){this.isDisposed||(this._element&&this._container.contains(this._element)&&this._container.removeChild(this._element),this.isDisposed=!0,this._onDispose.fire())},_([g(2,c.IBufferService)],s)}(w.Disposable);h.Decoration=C},8934:function(R,h,L){var y=this&&this.__decorate||function(w,c,p,C){var d,s=arguments.length,o=s<3?c:C===null?C=Object.getOwnPropertyDescriptor(c,p):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(w,c,p,C);else for(var l=w.length-1;l>=0;l--)(d=w[l])&&(o=(s<3?d(o):s>3?d(c,p,o):d(c,p))||o);return s>3&&o&&Object.defineProperty(c,p,o),o},m=this&&this.__param||function(w,c){return function(p,C){c(p,C,w)}};Object.defineProperty(h,"__esModule",{value:!0}),h.MouseService=void 0;var _=L(4725),g=L(9806),T=function(){function w(c,p){this._renderService=c,this._charSizeService=p}return w.prototype.getCoords=function(c,p,C,d,s){return(0,g.getCoords)(c,p,C,d,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,s)},w.prototype.getRawByteCoords=function(c,p,C,d){var s=this.getCoords(c,p,C,d);return(0,g.getRawByteCoords)(s)},y([m(0,_.IRenderService),m(1,_.ICharSizeService)],w)}();h.MouseService=T},3230:function(R,h,L){var y,m=this&&this.__extends||(y=function(l,a){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,v){u.__proto__=v}||function(u,v){for(var b in v)Object.prototype.hasOwnProperty.call(v,b)&&(u[b]=v[b])},y(l,a)},function(l,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function u(){this.constructor=l}y(l,a),l.prototype=a===null?Object.create(a):(u.prototype=a.prototype,new u)}),_=this&&this.__decorate||function(l,a,u,v){var b,E=arguments.length,O=E<3?a:v===null?v=Object.getOwnPropertyDescriptor(a,u):v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")O=Reflect.decorate(l,a,u,v);else for(var k=l.length-1;k>=0;k--)(b=l[k])&&(O=(E<3?b(O):E>3?b(a,u,O):b(a,u))||O);return E>3&&O&&Object.defineProperty(a,u,O),O},g=this&&this.__param||function(l,a){return function(u,v){a(u,v,l)}};Object.defineProperty(h,"__esModule",{value:!0}),h.RenderService=void 0;var T=L(6193),w=L(8460),c=L(844),p=L(5596),C=L(3656),d=L(2585),s=L(4725),o=function(l){function a(u,v,b,E,O,k){var A=l.call(this)||this;if(A._renderer=u,A._rowCount=v,A._charSizeService=O,A._isPaused=!1,A._needsFullRefresh=!1,A._isNextRenderRedrawOnly=!0,A._needsSelectionRefresh=!1,A._canvasWidth=0,A._canvasHeight=0,A._selectionState={start:void 0,end:void 0,columnSelectMode:!1},A._onDimensionsChange=new w.EventEmitter,A._onRender=new w.EventEmitter,A._onRefreshRequest=new w.EventEmitter,A.register({dispose:function(){return A._renderer.dispose()}}),A._renderDebouncer=new T.RenderDebouncer(function(D,W){return A._renderRows(D,W)}),A.register(A._renderDebouncer),A._screenDprMonitor=new p.ScreenDprMonitor,A._screenDprMonitor.setListener(function(){return A.onDevicePixelRatioChange()}),A.register(A._screenDprMonitor),A.register(k.onResize(function(){return A._fullRefresh()})),A.register(k.buffers.onBufferActivate(function(){var D;return(D=A._renderer)===null||D===void 0?void 0:D.clear()})),A.register(E.onOptionChange(function(){return A._renderer.onOptionsChanged()})),A.register(A._charSizeService.onCharSizeChange(function(){return A.onCharSizeChanged()})),A._renderer.onRequestRedraw(function(D){return A.refreshRows(D.start,D.end,!0)}),A.register((0,C.addDisposableDomListener)(window,"resize",function(){return A.onDevicePixelRatioChange()})),"IntersectionObserver"in window){var N=new IntersectionObserver(function(D){return A._onIntersectionChange(D[D.length-1])},{threshold:0});N.observe(b),A.register({dispose:function(){return N.disconnect()}})}return A}return m(a,l),Object.defineProperty(a.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"onRenderedBufferChange",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!1,configurable:!0}),a.prototype._onIntersectionChange=function(u){this._isPaused=u.isIntersecting===void 0?u.intersectionRatio===0:!u.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},a.prototype.refreshRows=function(u,v,b){b===void 0&&(b=!1),this._isPaused?this._needsFullRefresh=!0:(b||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(u,v,this._rowCount))},a.prototype._renderRows=function(u,v){this._renderer.renderRows(u,v),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRender.fire({start:u,end:v}),this._isNextRenderRedrawOnly=!0},a.prototype.resize=function(u,v){this._rowCount=v,this._fireOnCanvasResize()},a.prototype.changeOptions=function(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()},a.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},a.prototype.dispose=function(){l.prototype.dispose.call(this)},a.prototype.setRenderer=function(u){var v=this;this._renderer.dispose(),this._renderer=u,this._renderer.onRequestRedraw(function(b){return v.refreshRows(b.start,b.end,!0)}),this._needsSelectionRefresh=!0,this._fullRefresh()},a.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},a.prototype.clearTextureAtlas=function(){var u,v;(v=(u=this._renderer)===null||u===void 0?void 0:u.clearTextureAtlas)===null||v===void 0||v.call(u),this._fullRefresh()},a.prototype.setColors=function(u){this._renderer.setColors(u),this._fullRefresh()},a.prototype.onDevicePixelRatioChange=function(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},a.prototype.onResize=function(u,v){this._renderer.onResize(u,v),this._fullRefresh()},a.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},a.prototype.onBlur=function(){this._renderer.onBlur()},a.prototype.onFocus=function(){this._renderer.onFocus()},a.prototype.onSelectionChanged=function(u,v,b){this._selectionState.start=u,this._selectionState.end=v,this._selectionState.columnSelectMode=b,this._renderer.onSelectionChanged(u,v,b)},a.prototype.onCursorMove=function(){this._renderer.onCursorMove()},a.prototype.clear=function(){this._renderer.clear()},_([g(3,d.IOptionsService),g(4,s.ICharSizeService),g(5,d.IBufferService)],a)}(c.Disposable);h.RenderService=o},9312:function(R,h,L){var y,m=this&&this.__extends||(y=function(E,O){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,A){k.__proto__=A}||function(k,A){for(var N in A)Object.prototype.hasOwnProperty.call(A,N)&&(k[N]=A[N])},y(E,O)},function(E,O){if(typeof O!="function"&&O!==null)throw new TypeError("Class extends value "+String(O)+" is not a constructor or null");function k(){this.constructor=E}y(E,O),E.prototype=O===null?Object.create(O):(k.prototype=O.prototype,new k)}),_=this&&this.__decorate||function(E,O,k,A){var N,D=arguments.length,W=D<3?O:A===null?A=Object.getOwnPropertyDescriptor(O,k):A;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(E,O,k,A);else for(var B=E.length-1;B>=0;B--)(N=E[B])&&(W=(D<3?N(W):D>3?N(O,k,W):N(O,k))||W);return D>3&&W&&Object.defineProperty(O,k,W),W},g=this&&this.__param||function(E,O){return function(k,A){O(k,A,E)}};Object.defineProperty(h,"__esModule",{value:!0}),h.SelectionService=void 0;var T=L(6114),w=L(456),c=L(511),p=L(8460),C=L(4725),d=L(2585),s=L(9806),o=L(9504),l=L(844),a=L(4841),u=String.fromCharCode(160),v=new RegExp(u,"g"),b=function(E){function O(k,A,N,D,W,B,F,j){var G=E.call(this)||this;return G._element=k,G._screenElement=A,G._linkifier=N,G._bufferService=D,G._coreService=W,G._mouseService=B,G._optionsService=F,G._renderService=j,G._dragScrollAmount=0,G._enabled=!0,G._workCell=new c.CellData,G._mouseDownTimeStamp=0,G._oldHasSelection=!1,G._oldSelectionStart=void 0,G._oldSelectionEnd=void 0,G._onLinuxMouseSelection=G.register(new p.EventEmitter),G._onRedrawRequest=G.register(new p.EventEmitter),G._onSelectionChange=G.register(new p.EventEmitter),G._onRequestScrollLines=G.register(new p.EventEmitter),G._mouseMoveListener=function($){return G._onMouseMove($)},G._mouseUpListener=function($){return G._onMouseUp($)},G._coreService.onUserInput(function(){G.hasSelection&&G.clearSelection()}),G._trimListener=G._bufferService.buffer.lines.onTrim(function($){return G._onTrim($)}),G.register(G._bufferService.buffers.onBufferActivate(function($){return G._onBufferActivate($)})),G.enable(),G._model=new w.SelectionModel(G._bufferService),G._activeSelectionMode=0,G}return m(O,E),Object.defineProperty(O.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!1,configurable:!0}),Object.defineProperty(O.prototype,"onRequestRedraw",{get:function(){return this._onRedrawRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(O.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(O.prototype,"onRequestScrollLines",{get:function(){return this._onRequestScrollLines.event},enumerable:!1,configurable:!0}),O.prototype.dispose=function(){this._removeMouseDownListeners()},O.prototype.reset=function(){this.clearSelection()},O.prototype.disable=function(){this.clearSelection(),this._enabled=!1},O.prototype.enable=function(){this._enabled=!0},Object.defineProperty(O.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(O.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(O.prototype,"hasSelection",{get:function(){var k=this._model.finalSelectionStart,A=this._model.finalSelectionEnd;return!(!k||!A||k[0]===A[0]&&k[1]===A[1])},enumerable:!1,configurable:!0}),Object.defineProperty(O.prototype,"selectionText",{get:function(){var k=this._model.finalSelectionStart,A=this._model.finalSelectionEnd;if(!k||!A)return"";var N=this._bufferService.buffer,D=[];if(this._activeSelectionMode===3){if(k[0]===A[0])return"";for(var W=k[1];W<=A[1];W++){var B=N.translateBufferLineToString(W,!0,k[0],A[0]);D.push(B)}}else{var F=k[1]===A[1]?A[0]:void 0;for(D.push(N.translateBufferLineToString(k[1],!0,k[0],F)),W=k[1]+1;W<=A[1]-1;W++){var j=N.lines.get(W);B=N.translateBufferLineToString(W,!0),j?.isWrapped?D[D.length-1]+=B:D.push(B)}k[1]!==A[1]&&(j=N.lines.get(A[1]),B=N.translateBufferLineToString(A[1],!0,0,A[0]),j&&j.isWrapped?D[D.length-1]+=B:D.push(B))}return D.map(function(G){return G.replace(v," ")}).join(T.isWindows?`\r + outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var Z;v&&(Z=window.scrollY),r.input.focus(),v&&window.scrollTo(null,Z),r.input.reset(),i.somethingSelected()||(n.value=t.prevInput=" "),t.contextMenuPending=J,r.selForContextMenu=i.doc.sel,clearTimeout(r.detectingSelectAll);function Q(){if(n.selectionStart!=null){var ae=i.somethingSelected(),ue="\u200B"+(ae?n.value:"");n.value="\u21DA",n.value=ue,t.prevInput=ae?"":"\u200B",n.selectionStart=1,n.selectionEnd=ue.length,r.selForContextMenu=i.doc.sel}}function J(){if(t.contextMenuPending==J&&(t.contextMenuPending=!1,t.wrapper.style.cssText=P,n.style.cssText=O,m&&_<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=S),n.selectionStart!=null)){(!m||m&&_<9)&&Q();var ae=0,ue=function(){r.selForContextMenu==i.doc.sel&&n.selectionStart==0&&n.selectionEnd>0&&t.prevInput=="\u200B"?st(i,Da)(i):ae++<10?r.detectingSelectAll=setTimeout(ue,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(ue,200)}}if(m&&_>=9&&Q(),R){Qt(e);var re=function(){Qe(window,"mouseup",re),setTimeout(J,20)};we(window,"mouseup",re)}else setTimeout(J,50)},Ye.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e=="nocursor",this.textarea.readOnly=!!e},Ye.prototype.setUneditable=function(){},Ye.prototype.needsContentAttribute=!1;function Ku(e,t){if(t=t?ve(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var i=G();t.autofocus=i==e||e.getAttribute("autofocus")!=null&&i==document.body}function r(){e.value=x.getValue()}var n;if(e.form&&(we(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var h=e.form;n=h.submit;try{var S=h.submit=function(){r(),h.submit=n,h.submit(),h.submit=S}}catch{}}t.finishInit=function(O){O.save=r,O.getTextArea=function(){return e},O.toTextArea=function(){O.toTextArea=isNaN,r(),e.parentNode.removeChild(O.getWrapperElement()),e.style.display="",e.form&&(Qe(e.form,"submit",r),!t.leaveSubmitMethodAlone&&typeof e.form.submit=="function"&&(e.form.submit=n))}},e.style.display="none";var x=ze(function(O){return e.parentNode.insertBefore(O,e.nextSibling)},t);return x}function Gu(e){e.off=Qe,e.on=we,e.wheelEventPixels=Qc,e.Doc=Pt,e.splitLines=kr,e.countColumn=Ee,e.findColumn=Ce,e.isWordChar=Cr,e.Pass=Y,e.signal=ke,e.Line=ni,e.changeEnd=li,e.scrollbarModel=ca,e.Pos=le,e.cmpPos=I,e.modes=gt,e.mimeModes=ht,e.resolveMode=dr,e.getMode=pr,e.modeExtensions=bt,e.extendMode=St,e.copyState=dt,e.startState=Ar,e.innerMode=Tr,e.commands=On,e.keyMap=Vr,e.keyName=Za,e.isModifierKey=Xa,e.lookupKey=Qi,e.normalizeKeyMap=Su,e.StringStream=Ie,e.SharedTextMarker=Tn,e.TextMarker=ui,e.LineWidget=En,e.e_preventDefault=Xe,e.e_stopPropagation=hr,e.e_stop=Qt,e.addClass=$,e.contains=j,e.rmClass=M,e.keyNames=fi}Hu(ze),ju(ze);var Xu="iter insert remove copy getEditor constructor".split(" ");for(var so in Pt.prototype)Pt.prototype.hasOwnProperty(so)&&ee(Xu,so)<0&&(ze.prototype[so]=function(e){return function(){return e.apply(this.doc,arguments)}}(Pt.prototype[so]));return At(Pt),ze.inputStyles={textarea:Ye,contenteditable:Pe},ze.defineMode=function(e){!ze.defaults.mode&&e!="null"&&(ze.defaults.mode=e),qr.apply(this,arguments)},ze.defineMIME=jt,ze.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),ze.defineMIME("text/plain","null"),ze.defineExtension=function(e,t){ze.prototype[e]=t},ze.defineDocExtension=function(e,t){Pt.prototype[e]=t},ze.fromTextArea=Ku,Gu(ze),ze.version="5.65.2",ze})});var hs=or((Cl,wl)=>{(function(V){typeof Cl=="object"&&typeof wl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";V.defineMode("javascript",function(H,E){var f=H.indentUnit,L=E.statementIndent,y=E.jsonld,m=E.json||y,_=E.trackScope!==!1,v=E.typescript,A=E.wordCharacters||/[\w$\xa1-\uffff]/,w=function(){function I(Ze){return{type:Ze,style:"keyword"}}var X=I("keyword a"),oe=I("keyword b"),ce=I("keyword c"),Te=I("keyword d"),Oe=I("operator"),pe={type:"atom",style:"atom"};return{if:I("if"),while:X,with:X,else:oe,do:oe,try:oe,finally:oe,return:Te,break:Te,continue:Te,new:I("new"),delete:ce,void:ce,throw:ce,debugger:I("debugger"),var:I("var"),const:I("var"),let:I("var"),function:I("function"),catch:I("catch"),for:I("for"),switch:I("switch"),case:I("case"),default:I("default"),in:Oe,typeof:Oe,instanceof:Oe,true:pe,false:pe,null:pe,undefined:pe,NaN:pe,Infinity:pe,this:I("this"),class:I("class"),super:I("atom"),yield:ce,export:I("export"),import:I("import"),extends:ce,await:ce}}(),c=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function C(I){for(var X=!1,oe,ce=!1;(oe=I.next())!=null;){if(!X){if(oe=="/"&&!ce)return;oe=="["?ce=!0:ce&&oe=="]"&&(ce=!1)}X=!X&&oe=="\\"}}var d,s;function o(I,X,oe){return d=I,s=oe,X}function l(I,X){var oe=I.next();if(oe=='"'||oe=="'")return X.tokenize=a(oe),X.tokenize(I,X);if(oe=="."&&I.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return o("number","number");if(oe=="."&&I.match(".."))return o("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(oe))return o(oe);if(oe=="="&&I.eat(">"))return o("=>","operator");if(oe=="0"&&I.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return o("number","number");if(/\d/.test(oe))return I.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),o("number","number");if(oe=="/")return I.eat("*")?(X.tokenize=u,u(I,X)):I.eat("/")?(I.skipToEnd(),o("comment","comment")):le(I,X,1)?(C(I),I.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),o("regexp","string-2")):(I.eat("="),o("operator","operator",I.current()));if(oe=="`")return X.tokenize=g,g(I,X);if(oe=="#"&&I.peek()=="!")return I.skipToEnd(),o("meta","meta");if(oe=="#"&&I.eatWhile(A))return o("variable","property");if(oe=="<"&&I.match("!--")||oe=="-"&&I.match("->")&&!/\S/.test(I.string.slice(0,I.start)))return I.skipToEnd(),o("comment","comment");if(c.test(oe))return(oe!=">"||!X.lexical||X.lexical.type!=">")&&(I.eat("=")?(oe=="!"||oe=="=")&&I.eat("="):/[<>*+\-|&?]/.test(oe)&&(I.eat(oe),oe==">"&&I.eat(oe))),oe=="?"&&I.eat(".")?o("."):o("operator","operator",I.current());if(A.test(oe)){I.eatWhile(A);var ce=I.current();if(X.lastType!="."){if(w.propertyIsEnumerable(ce)){var Te=w[ce];return o(Te.type,Te.style,ce)}if(ce=="async"&&I.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return o("async","keyword",ce)}return o("variable","variable",ce)}}function a(I){return function(X,oe){var ce=!1,Te;if(y&&X.peek()=="@"&&X.match(p))return oe.tokenize=l,o("jsonld-keyword","meta");for(;(Te=X.next())!=null&&!(Te==I&&!ce);)ce=!ce&&Te=="\\";return ce||(oe.tokenize=l),o("string","string")}}function u(I,X){for(var oe=!1,ce;ce=I.next();){if(ce=="/"&&oe){X.tokenize=l;break}oe=ce=="*"}return o("comment","comment")}function g(I,X){for(var oe=!1,ce;(ce=I.next())!=null;){if(!oe&&(ce=="`"||ce=="$"&&I.eat("{"))){X.tokenize=l;break}oe=!oe&&ce=="\\"}return o("quasi","string-2",I.current())}var b="([{}])";function T(I,X){X.fatArrowAt&&(X.fatArrowAt=null);var oe=I.string.indexOf("=>",I.start);if(!(oe<0)){if(v){var ce=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(I.string.slice(I.start,oe));ce&&(oe=ce.index)}for(var Te=0,Oe=!1,pe=oe-1;pe>=0;--pe){var Ze=I.string.charAt(pe),_t=b.indexOf(Ze);if(_t>=0&&_t<3){if(!Te){++pe;break}if(--Te==0){Ze=="("&&(Oe=!0);break}}else if(_t>=3&&_t<6)++Te;else if(A.test(Ze))Oe=!0;else if(/["'\/`]/.test(Ze))for(;;--pe){if(pe==0)return;var Rr=I.string.charAt(pe-1);if(Rr==Ze&&I.string.charAt(pe-2)!="\\"){pe--;break}}else if(Oe&&!Te){++pe;break}}Oe&&!Te&&(X.fatArrowAt=pe)}}var R={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function k(I,X,oe,ce,Te,Oe){this.indented=I,this.column=X,this.type=oe,this.prev=Te,this.info=Oe,ce!=null&&(this.align=ce)}function M(I,X){if(!_)return!1;for(var oe=I.localVars;oe;oe=oe.next)if(oe.name==X)return!0;for(var ce=I.context;ce;ce=ce.prev)for(var oe=ce.vars;oe;oe=oe.next)if(oe.name==X)return!0}function N(I,X,oe,ce,Te){var Oe=I.cc;for(D.state=I,D.stream=Te,D.marked=null,D.cc=Oe,D.style=X,I.lexical.hasOwnProperty("align")||(I.lexical.align=!0);;){var pe=Oe.length?Oe.pop():m?fe:K;if(pe(oe,ce)){for(;Oe.length&&Oe[Oe.length-1].lex;)Oe.pop()();return D.marked?D.marked:oe=="variable"&&M(I,ce)?"variable-2":X}}}var D={state:null,column:null,marked:null,cc:null};function W(){for(var I=arguments.length-1;I>=0;I--)D.cc.push(arguments[I])}function B(){return W.apply(null,arguments),!0}function F(I,X){for(var oe=X;oe;oe=oe.next)if(oe.name==I)return!0;return!1}function j(I){var X=D.state;if(D.marked="def",!!_){if(X.context){if(X.lexical.info=="var"&&X.context&&X.context.block){var oe=G(I,X.context);if(oe!=null){X.context=oe;return}}else if(!F(I,X.localVars)){X.localVars=new ie(I,X.localVars);return}}E.globalVars&&!F(I,X.globalVars)&&(X.globalVars=new ie(I,X.globalVars))}}function G(I,X){if(X)if(X.block){var oe=G(I,X.prev);return oe?oe==X.prev?X:new ne(oe,X.vars,!0):null}else return F(I,X.vars)?X:new ne(X.prev,new ie(I,X.vars),!1);else return null}function $(I){return I=="public"||I=="private"||I=="protected"||I=="abstract"||I=="readonly"}function ne(I,X,oe){this.prev=I,this.vars=X,this.block=oe}function ie(I,X){this.name=I,this.next=X}var be=new ie("this",new ie("arguments",null));function ve(){D.state.context=new ne(D.state.context,D.state.localVars,!1),D.state.localVars=be}function Ee(){D.state.context=new ne(D.state.context,D.state.localVars,!0),D.state.localVars=null}ve.lex=Ee.lex=!0;function U(){D.state.localVars=D.state.context.vars,D.state.context=D.state.context.prev}U.lex=!0;function ee(I,X){var oe=function(){var ce=D.state,Te=ce.indented;if(ce.lexical.type=="stat")Te=ce.lexical.indented;else for(var Oe=ce.lexical;Oe&&Oe.type==")"&&Oe.align;Oe=Oe.prev)Te=Oe.indented;ce.lexical=new k(Te,D.stream.column(),I,null,ce.lexical,X)};return oe.lex=!0,oe}function q(){var I=D.state;I.lexical.prev&&(I.lexical.type==")"&&(I.indented=I.lexical.indented),I.lexical=I.lexical.prev)}q.lex=!0;function Y(I){function X(oe){return oe==I?B():I==";"||oe=="}"||oe==")"||oe=="]"?W():B(X)}return X}function K(I,X){return I=="var"?B(ee("vardef",X),Lr,Y(";"),q):I=="keyword a"?B(ee("form"),De,K,q):I=="keyword b"?B(ee("form"),K,q):I=="keyword d"?D.stream.match(/^\s*$/,!1)?B():B(ee("stat"),Ae,Y(";"),q):I=="debugger"?B(Y(";")):I=="{"?B(ee("}"),Ee,ut,q,U):I==";"?B():I=="if"?(D.state.lexical.info=="else"&&D.state.cc[D.state.cc.length-1]==q&&D.state.cc.pop()(),B(ee("form"),De,K,q,Ur)):I=="function"?B(gt):I=="for"?B(ee("form"),Ee,zr,K,U,q):I=="class"||v&&X=="interface"?(D.marked="keyword",B(ee("form",I=="class"?I:X),pr,q)):I=="variable"?v&&X=="declare"?(D.marked="keyword",B(K)):v&&(X=="module"||X=="enum"||X=="type")&&D.stream.match(/^\s*\w/,!1)?(D.marked="keyword",X=="enum"?B(Rt):X=="type"?B(qr,Y("operator"),ke,Y(";")):B(ee("form"),et,Y("{"),ee("}"),ut,q,q)):v&&X=="namespace"?(D.marked="keyword",B(ee("form"),fe,K,q)):v&&X=="abstract"?(D.marked="keyword",B(K)):B(ee("stat"),Nr):I=="switch"?B(ee("form"),De,Y("{"),ee("}","switch"),Ee,ut,q,q,U):I=="case"?B(fe,Y(":")):I=="default"?B(Y(":")):I=="catch"?B(ee("form"),ve,Se,K,q,U):I=="export"?B(ee("stat"),Tr,q):I=="import"?B(ee("stat"),Ie,q):I=="async"?B(K):X=="@"?B(fe,K):W(ee("stat"),fe,Y(";"),q)}function Se(I){if(I=="(")return B(jt,Y(")"))}function fe(I,X){return Fe(I,X,!1)}function Ce(I,X){return Fe(I,X,!0)}function De(I){return I!="("?W():B(ee(")"),Ae,Y(")"),q)}function Fe(I,X,oe){if(D.state.fatArrowAt==D.stream.start){var ce=oe?Cr:lr;if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,Y("=>"),ce,U);if(I=="variable")return W(ve,et,Y("=>"),ce,U)}var Te=oe?je:_e;return R.hasOwnProperty(I)?B(Te):I=="function"?B(gt,Te):I=="class"||v&&X=="interface"?(D.marked="keyword",B(ee("form"),dr,q)):I=="keyword c"||I=="async"?B(oe?Ce:fe):I=="("?B(ee(")"),Ae,Y(")"),q,Te):I=="operator"||I=="spread"?B(oe?Ce:fe):I=="["?B(ee("]"),Re,q,Te):I=="{"?cr(Nt,"}",null,Te):I=="quasi"?W(Je,Te):I=="new"?B(wr(oe)):B()}function Ae(I){return I.match(/[;\}\)\],]/)?W():W(fe)}function _e(I,X){return I==","?B(Ae):je(I,X,!1)}function je(I,X,oe){var ce=oe==!1?_e:je,Te=oe==!1?fe:Ce;if(I=="=>")return B(ve,oe?Cr:lr,U);if(I=="operator")return/\+\+|--/.test(X)||v&&X=="!"?B(ce):v&&X=="<"&&D.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?B(ee(">"),Ne(ke,">"),q,ce):X=="?"?B(fe,Y(":"),Te):B(Te);if(I=="quasi")return W(Je,ce);if(I!=";"){if(I=="(")return cr(Ce,")","call",ce);if(I==".")return B(ti,ce);if(I=="[")return B(ee("]"),Ae,Y("]"),q,ce);if(v&&X=="as")return D.marked="keyword",B(ke,ce);if(I=="regexp")return D.state.lastType=D.marked="operator",D.stream.backUp(D.stream.pos-D.stream.start-1),B(Te)}}function Je(I,X){return I!="quasi"?W():X.slice(X.length-2)!="${"?B(Je):B(Ae,Tt)}function Tt(I){if(I=="}")return D.marked="string-2",D.state.tokenize=g,B(Je)}function lr(I){return T(D.stream,D.state),W(I=="{"?K:fe)}function Cr(I){return T(D.stream,D.state),W(I=="{"?K:Ce)}function wr(I){return function(X){return X=="."?B(I?pi:ei):X=="variable"&&v?B(Qt,I?je:_e):W(I?Ce:fe)}}function ei(I,X){if(X=="target")return D.marked="keyword",B(_e)}function pi(I,X){if(X=="target")return D.marked="keyword",B(je)}function Nr(I){return I==":"?B(q,K):W(_e,Y(";"),q)}function ti(I){if(I=="variable")return D.marked="property",B()}function Nt(I,X){if(I=="async")return D.marked="property",B(Nt);if(I=="variable"||D.style=="keyword"){if(D.marked="property",X=="get"||X=="set")return B(vi);var oe;return v&&D.state.fatArrowAt==D.stream.start&&(oe=D.stream.match(/^\s*:\s*/,!1))&&(D.state.fatArrowAt=D.stream.pos+oe[0].length),B(vt)}else{if(I=="number"||I=="string")return D.marked=y?"property":D.style+" property",B(vt);if(I=="jsonld-keyword")return B(vt);if(v&&$(X))return D.marked="keyword",B(Nt);if(I=="[")return B(fe,Wt,Y("]"),vt);if(I=="spread")return B(Ce,vt);if(X=="*")return D.marked="keyword",B(Nt);if(I==":")return W(vt)}}function vi(I){return I!="variable"?W(vt):(D.marked="property",B(gt))}function vt(I){if(I==":")return B(Ce);if(I=="(")return W(gt)}function Ne(I,X,oe){function ce(Te,Oe){if(oe?oe.indexOf(Te)>-1:Te==","){var pe=D.state.lexical;return pe.info=="call"&&(pe.pos=(pe.pos||0)+1),B(function(Ze,_t){return Ze==X||_t==X?W():W(I)},ce)}return Te==X||Oe==X?B():oe&&oe.indexOf(";")>-1?W(I):B(Y(X))}return function(Te,Oe){return Te==X||Oe==X?B():W(I,ce)}}function cr(I,X,oe){for(var ce=3;ce"),ke);if(I=="quasi")return W(At,ft)}function We(I){if(I=="=>")return B(ke)}function fr(I){return I.match(/[\}\)\]]/)?B():I==","||I==";"?B(fr):W(Ke,fr)}function Ke(I,X){if(I=="variable"||D.style=="keyword")return D.marked="property",B(Ke);if(X=="?"||I=="number"||I=="string")return B(Ke);if(I==":")return B(ke);if(I=="[")return B(Y("variable"),we,Y("]"),Ke);if(I=="(")return W(ht,Ke);if(!I.match(/[;\}\)\],]/))return B()}function At(I,X){return I!="quasi"?W():X.slice(X.length-2)!="${"?B(At):B(ke,Xe)}function Xe(I){if(I=="}")return D.marked="string-2",D.state.tokenize=g,B(At)}function hr(I,X){return I=="variable"&&D.stream.match(/^\s*[?:]/,!1)||X=="?"?B(hr):I==":"?B(ke):I=="spread"?B(hr):W(ke)}function ft(I,X){if(X=="<")return B(ee(">"),Ne(ke,">"),q,ft);if(X=="|"||I=="."||X=="&")return B(ke);if(I=="[")return B(ke,Y("]"),ft);if(X=="extends"||X=="implements")return D.marked="keyword",B(ke);if(X=="?")return B(ke,Y(":"),ke)}function Qt(I,X){if(X=="<")return B(ee(">"),Ne(ke,">"),q,ft)}function Yt(){return W(ke,Wr)}function Wr(I,X){if(X=="=")return B(ke)}function Lr(I,X){return X=="enum"?(D.marked="keyword",B(Rt)):W(et,Wt,Mt,kr)}function et(I,X){if(v&&$(X))return D.marked="keyword",B(et);if(I=="variable")return j(X),B();if(I=="spread")return B(et);if(I=="[")return cr(xr,"]");if(I=="{")return cr(jr,"}")}function jr(I,X){return I=="variable"&&!D.stream.match(/^\s*:/,!1)?(j(X),B(Mt)):(I=="variable"&&(D.marked="property"),I=="spread"?B(et):I=="}"?W():I=="["?B(fe,Y("]"),Y(":"),jr):B(Y(":"),et,Mt))}function xr(){return W(et,Mt)}function Mt(I,X){if(X=="=")return B(Ce)}function kr(I){if(I==",")return B(Lr)}function Ur(I,X){if(I=="keyword b"&&X=="else")return B(ee("form","else"),K,q)}function zr(I,X){if(X=="await")return B(zr);if(I=="(")return B(ee(")"),Er,q)}function Er(I){return I=="var"?B(Lr,Zt):I=="variable"?B(Zt):W(Zt)}function Zt(I,X){return I==")"?B():I==";"?B(Zt):X=="in"||X=="of"?(D.marked="keyword",B(fe,Zt)):W(fe,Zt)}function gt(I,X){if(X=="*")return D.marked="keyword",B(gt);if(I=="variable")return j(X),B(gt);if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,ur,K,U);if(v&&X=="<")return B(ee(">"),Ne(Yt,">"),q,gt)}function ht(I,X){if(X=="*")return D.marked="keyword",B(ht);if(I=="variable")return j(X),B(ht);if(I=="(")return B(ve,ee(")"),Ne(jt,")"),q,ur,U);if(v&&X=="<")return B(ee(">"),Ne(Yt,">"),q,ht)}function qr(I,X){if(I=="keyword"||I=="variable")return D.marked="type",B(qr);if(X=="<")return B(ee(">"),Ne(Yt,">"),q)}function jt(I,X){return X=="@"&&B(fe,jt),I=="spread"?B(jt):v&&$(X)?(D.marked="keyword",B(jt)):v&&I=="this"?B(Wt,Mt):W(et,Wt,Mt)}function dr(I,X){return I=="variable"?pr(I,X):bt(I,X)}function pr(I,X){if(I=="variable")return j(X),B(bt)}function bt(I,X){if(X=="<")return B(ee(">"),Ne(Yt,">"),q,bt);if(X=="extends"||X=="implements"||v&&I==",")return X=="implements"&&(D.marked="keyword"),B(v?ke:fe,bt);if(I=="{")return B(ee("}"),St,q)}function St(I,X){if(I=="async"||I=="variable"&&(X=="static"||X=="get"||X=="set"||v&&$(X))&&D.stream.match(/^\s+[\w$\xa1-\uffff]/,!1))return D.marked="keyword",B(St);if(I=="variable"||D.style=="keyword")return D.marked="property",B(dt,St);if(I=="number"||I=="string")return B(dt,St);if(I=="[")return B(fe,Wt,Y("]"),dt,St);if(X=="*")return D.marked="keyword",B(St);if(v&&I=="(")return W(ht,St);if(I==";"||I==",")return B(St);if(I=="}")return B();if(X=="@")return B(fe,St)}function dt(I,X){if(X=="!"||X=="?")return B(dt);if(I==":")return B(ke,Mt);if(X=="=")return B(Ce);var oe=D.state.lexical.prev,ce=oe&&oe.info=="interface";return W(ce?ht:gt)}function Tr(I,X){return X=="*"?(D.marked="keyword",B(it,Y(";"))):X=="default"?(D.marked="keyword",B(fe,Y(";"))):I=="{"?B(Ne(Ar,"}"),it,Y(";")):W(K)}function Ar(I,X){if(X=="as")return D.marked="keyword",B(Y("variable"));if(I=="variable")return W(Ce,Ar)}function Ie(I){return I=="string"?B():I=="("?W(fe):I=="."?W(_e):W(me,Ot,it)}function me(I,X){return I=="{"?cr(me,"}"):(I=="variable"&&j(X),X=="*"&&(D.marked="keyword"),B(Mr))}function Ot(I){if(I==",")return B(me,Ot)}function Mr(I,X){if(X=="as")return D.marked="keyword",B(me)}function it(I,X){if(X=="from")return D.marked="keyword",B(fe)}function Re(I){return I=="]"?B():W(Ne(Ce,"]"))}function Rt(){return W(ee("form"),et,Y("{"),ee("}"),Ne(er,"}"),q,q)}function er(){return W(et,Mt)}function Or(I,X){return I.lastType=="operator"||I.lastType==","||c.test(X.charAt(0))||/[,.]/.test(X.charAt(0))}function le(I,X,oe){return X.tokenize==l&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(X.lastType)||X.lastType=="quasi"&&/\{\s*$/.test(I.string.slice(0,I.pos-(oe||0)))}return{startState:function(I){var X={tokenize:l,lastType:"sof",cc:[],lexical:new k((I||0)-f,0,"block",!1),localVars:E.localVars,context:E.localVars&&new ne(null,null,!1),indented:I||0};return E.globalVars&&typeof E.globalVars=="object"&&(X.globalVars=E.globalVars),X},token:function(I,X){if(I.sol()&&(X.lexical.hasOwnProperty("align")||(X.lexical.align=!1),X.indented=I.indentation(),T(I,X)),X.tokenize!=u&&I.eatSpace())return null;var oe=X.tokenize(I,X);return d=="comment"?oe:(X.lastType=d=="operator"&&(s=="++"||s=="--")?"incdec":d,N(X,oe,d,s,I))},indent:function(I,X){if(I.tokenize==u||I.tokenize==g)return V.Pass;if(I.tokenize!=l)return 0;var oe=X&&X.charAt(0),ce=I.lexical,Te;if(!/^\s*else\b/.test(X))for(var Oe=I.cc.length-1;Oe>=0;--Oe){var pe=I.cc[Oe];if(pe==q)ce=ce.prev;else if(pe!=Ur&&pe!=U)break}for(;(ce.type=="stat"||ce.type=="form")&&(oe=="}"||(Te=I.cc[I.cc.length-1])&&(Te==_e||Te==je)&&!/^[,\.=+\-*:?[\(]/.test(X));)ce=ce.prev;L&&ce.type==")"&&ce.prev.type=="stat"&&(ce=ce.prev);var Ze=ce.type,_t=oe==Ze;return Ze=="vardef"?ce.indented+(I.lastType=="operator"||I.lastType==","?ce.info.length+1:0):Ze=="form"&&oe=="{"?ce.indented:Ze=="form"?ce.indented+f:Ze=="stat"?ce.indented+(Or(I,X)?L||f:0):ce.info=="switch"&&!_t&&E.doubleIndentSwitch!=!1?ce.indented+(/^(?:case|default)\b/.test(X)?f:2*f):ce.align?ce.column+(_t?0:1):ce.indented+(_t?0:f)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:m?null:"/*",blockCommentEnd:m?null:"*/",blockCommentContinue:m?null:" * ",lineComment:m?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:m?"json":"javascript",jsonldMode:y,jsonMode:m,expressionAllowed:le,skipExpression:function(I){N(I,"atom","atom","true",new V.StringStream("",2,null))}}}),V.registerHelper("wordChars","javascript",/[\w$]/),V.defineMIME("text/javascript","javascript"),V.defineMIME("text/ecmascript","javascript"),V.defineMIME("application/javascript","javascript"),V.defineMIME("application/x-javascript","javascript"),V.defineMIME("application/ecmascript","javascript"),V.defineMIME("application/json",{name:"javascript",json:!0}),V.defineMIME("application/x-json",{name:"javascript",json:!0}),V.defineMIME("application/manifest+json",{name:"javascript",json:!0}),V.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),V.defineMIME("text/typescript",{name:"javascript",typescript:!0}),V.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var ps=or((xl,kl)=>{(function(V){typeof xl=="object"&&typeof kl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";V.defineMode("perl",function(){var y={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},m="string-2",_=/[goseximacplud]/;function v(c,p,C,d,s){return p.chain=null,p.style=null,p.tail=null,p.tokenize=function(o,l){for(var a=!1,u,g=0;u=o.next();){if(u===C[g]&&!a)return C[++g]!==void 0?(l.chain=C[g],l.style=d,l.tail=s):s&&o.eatWhile(s),l.tokenize=w,d;a=!a&&u=="\\"}return d},p.tokenize(c,p)}function A(c,p,C){return p.tokenize=function(d,s){return d.string==C&&(s.tokenize=w),d.skipToEnd(),"string"},p.tokenize(c,p)}function w(c,p){if(c.eatSpace())return null;if(p.chain)return v(c,p,p.chain,p.style,p.tail);if(c.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(c.match(/^<<(?=[_a-zA-Z])/))return c.eatWhile(/\w/),A(c,p,c.current().substr(2));if(c.sol()&&c.match(/^\=item(?!\w)/))return A(c,p,"=cut");var C=c.next();if(C=='"'||C=="'"){if(E(c,3)=="<<"+C){var d=c.pos;c.eatWhile(/\w/);var s=c.current().substr(1);if(s&&c.eat(C))return A(c,p,s);c.pos=d}return v(c,p,[C],"string")}if(C=="q"){var o=H(c,-2);if(!(o&&/\w/.test(o))){if(o=H(c,0),o=="x"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],m,_);if(o=="[")return L(c,2),v(c,p,["]"],m,_);if(o=="{")return L(c,2),v(c,p,["}"],m,_);if(o=="<")return L(c,2),v(c,p,[">"],m,_);if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],m,_)}else if(o=="q"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],"string");if(o=="[")return L(c,2),v(c,p,["]"],"string");if(o=="{")return L(c,2),v(c,p,["}"],"string");if(o=="<")return L(c,2),v(c,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],"string")}else if(o=="w"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],"bracket");if(o=="[")return L(c,2),v(c,p,["]"],"bracket");if(o=="{")return L(c,2),v(c,p,["}"],"bracket");if(o=="<")return L(c,2),v(c,p,[">"],"bracket");if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],"bracket")}else if(o=="r"){if(o=H(c,1),o=="(")return L(c,2),v(c,p,[")"],m,_);if(o=="[")return L(c,2),v(c,p,["]"],m,_);if(o=="{")return L(c,2),v(c,p,["}"],m,_);if(o=="<")return L(c,2),v(c,p,[">"],m,_);if(/[\^'"!~\/]/.test(o))return L(c,1),v(c,p,[c.eat(o)],m,_)}else if(/[\^'"!~\/(\[{<]/.test(o)){if(o=="(")return L(c,1),v(c,p,[")"],"string");if(o=="[")return L(c,1),v(c,p,["]"],"string");if(o=="{")return L(c,1),v(c,p,["}"],"string");if(o=="<")return L(c,1),v(c,p,[">"],"string");if(/[\^'"!~\/]/.test(o))return v(c,p,[c.eat(o)],"string")}}}if(C=="m"){var o=H(c,-2);if(!(o&&/\w/.test(o))&&(o=c.eat(/[(\[{<\^'"!~\/]/),o)){if(/[\^'"!~\/]/.test(o))return v(c,p,[o],m,_);if(o=="(")return v(c,p,[")"],m,_);if(o=="[")return v(c,p,["]"],m,_);if(o=="{")return v(c,p,["}"],m,_);if(o=="<")return v(c,p,[">"],m,_)}}if(C=="s"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?v(c,p,["]","]"],m,_):o=="{"?v(c,p,["}","}"],m,_):o=="<"?v(c,p,[">",">"],m,_):o=="("?v(c,p,[")",")"],m,_):v(c,p,[o,o],m,_)}if(C=="y"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o))return o=="["?v(c,p,["]","]"],m,_):o=="{"?v(c,p,["}","}"],m,_):o=="<"?v(c,p,[">",">"],m,_):o=="("?v(c,p,[")",")"],m,_):v(c,p,[o,o],m,_)}if(C=="t"){var o=/[\/>\]})\w]/.test(H(c,-2));if(!o&&(o=c.eat("r"),o&&(o=c.eat(/[(\[{<\^'"!~\/]/),o)))return o=="["?v(c,p,["]","]"],m,_):o=="{"?v(c,p,["}","}"],m,_):o=="<"?v(c,p,[">",">"],m,_):o=="("?v(c,p,[")",")"],m,_):v(c,p,[o,o],m,_)}if(C=="`")return v(c,p,[C],"variable-2");if(C=="/")return/~\s*$/.test(E(c))?v(c,p,[C],m,_):"operator";if(C=="$"){var d=c.pos;if(c.eatWhile(/\d/)||c.eat("{")&&c.eatWhile(/\d/)&&c.eat("}"))return"variable-2";c.pos=d}if(/[$@%]/.test(C)){var d=c.pos;if(c.eat("^")&&c.eat(/[A-Z]/)||!/[@$%&]/.test(H(c,-2))&&c.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var o=c.current();if(y[o])return"variable-2"}c.pos=d}if(/[$@%&]/.test(C)&&(c.eatWhile(/[\w$]/)||c.eat("{")&&c.eatWhile(/[\w$]/)&&c.eat("}"))){var o=c.current();return y[o]?"variable-2":"variable"}if(C=="#"&&H(c,-2)!="$")return c.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(C)){var d=c.pos;if(c.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),y[c.current()])return"operator";c.pos=d}if(C=="_"&&c.pos==1){if(f(c,6)=="_END__")return v(c,p,["\0"],"comment");if(f(c,7)=="_DATA__")return v(c,p,["\0"],"variable-2");if(f(c,7)=="_C__")return v(c,p,["\0"],"string")}if(/\w/.test(C)){var d=c.pos;if(H(c,-2)=="{"&&(H(c,0)=="}"||c.eatWhile(/\w/)&&H(c,0)=="}"))return"string";c.pos=d}if(/[A-Z]/.test(C)){var l=H(c,-2),d=c.pos;if(c.eatWhile(/[A-Z_]/),/[\da-z]/.test(H(c,0)))c.pos=d;else{var o=y[c.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(C)){var l=H(c,-2);c.eatWhile(/\w/);var o=y[c.current()];return o?(o[1]&&(o=o[0]),l!=":"?o==1?"keyword":o==2?"def":o==3?"atom":o==4?"operator":o==5?"variable-2":"meta":"meta"):"meta"}return null}return{startState:function(){return{tokenize:w,chain:null,style:null,tail:null}},token:function(c,p){return(p.tokenize||w)(c,p)},lineComment:"#"}}),V.registerHelper("wordChars","perl",/[\w$]/),V.defineMIME("text/x-perl","perl");function H(y,m){return y.string.charAt(y.pos+(m||0))}function E(y,m){if(m){var _=y.pos-m;return y.string.substr(_>=0?_:0,m)}else return y.string.substr(0,y.pos-1)}function f(y,m){var _=y.string.length,v=_-y.pos+1;return y.string.substr(y.pos,m&&m<_?m:v)}function L(y,m){var _=y.pos+m,v;_<=0?y.pos=0:_>=(v=y.string.length-1)?y.pos=v:y.pos=_}})});var Ol=or(Qr=>{"use strict";var co=Qr&&Qr.__assign||function(){return co=Object.assign||function(V){for(var H,E=1,f=arguments.length;E0&&E.hide()}),this.element.classList.remove(this.toastShowClass),this.element.classList.add(this.toastHideClass),this.trigger("hide"),this.animation){var f=function(){return E.remove()},L=function(){m||(E.element.addEventListener("transitionend",function(){return f()}),m=!0)},y=function(){E.show(),E.element.removeEventListener("transitionstart",function(){return L()}),E.element.removeEventListener("transitionend",function(){return f()}),E.element.removeEventListener("mouseover",function(){return y()}),E.element.addEventListener("mouseout",function(){return E.hide()})},m=!1;this.element.addEventListener("mouseover",function(){return y()}),this.element.addEventListener("transitionstart",function(){return L()});return}this.remove()}},V.prototype.remove=function(){this.element.parentNode===this.container&&(this.container.removeChild(this.element),this.trigger("remove"))},V.prototype.buildClose=function(H){var E=this,f=document.createElement("button");return f.setAttribute("title",H),f.appendChild(document.createTextNode(H)),f.addEventListener("click",function(){return E.hide()}),f},V.prototype.getContainer=function(H){var E=H.containerClass,f=H.containerElement,L=H.root,y=L.querySelector("".concat(f,".").concat(E));if(y)return y;var m=document.createElement(f);return m.classList.add(E),L.appendChild(m),m},V.prototype.on=function(H,E){this.events[H]||(this.events[H]=[]),this.events[H].push(E)},V.prototype.off=function(H,E){if(E===void 0&&(E=null),!E){this.events[H]=[];return}var f=this.events[H].indexOf(E);f===-1&&this.events[H].splice(f,1)},V.prototype.trigger=function(H){for(var E=this,f=[],L=1;L{(function(V,H){if(typeof go=="object"&&typeof Ts=="object")Ts.exports=H();else if(typeof define=="function"&&define.amd)define([],H);else{var E=H();for(var f in E)(typeof go=="object"?go:V)[f]=E[f]}})(self,function(){return(()=>{"use strict";var V={4567:function(E,f,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(f,"__esModule",{value:!0}),f.AccessibilityManager=void 0;var _=L(9042),v=L(6114),A=L(9924),w=L(3656),c=L(844),p=L(5596),C=L(9631),d=function(s){function o(l,a){var u=s.call(this)||this;u._terminal=l,u._renderService=a,u._liveRegionLineCount=0,u._charsToConsume=[],u._charsToAnnounce="",u._accessibilityTreeRoot=document.createElement("div"),u._accessibilityTreeRoot.classList.add("xterm-accessibility"),u._accessibilityTreeRoot.tabIndex=0,u._rowContainer=document.createElement("div"),u._rowContainer.setAttribute("role","list"),u._rowContainer.classList.add("xterm-accessibility-tree"),u._rowElements=[];for(var g=0;gl;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()},o.prototype._createAccessibilityTreeNode=function(){var l=document.createElement("div");return l.setAttribute("role","listitem"),l.tabIndex=-1,this._refreshRowDimensions(l),l},o.prototype._onTab=function(l){for(var a=0;a0?this._charsToConsume.shift()!==l&&(this._charsToAnnounce+=l):this._charsToAnnounce+=l,l===` +`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=_.tooMuchOutput)),v.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout(function(){a._accessibilityTreeRoot.appendChild(a._liveRegion)},0))},o.prototype._clearLiveRegion=function(){this._liveRegion.textContent="",this._liveRegionLineCount=0,v.isMac&&(0,C.removeElementFromParent)(this._liveRegion)},o.prototype._onKey=function(l){this._clearLiveRegion(),this._charsToConsume.push(l)},o.prototype._refreshRows=function(l,a){this._renderRowsDebouncer.refresh(l,a,this._terminal.rows)},o.prototype._renderRows=function(l,a){for(var u=this._terminal.buffer,g=u.lines.length.toString(),b=l;b<=a;b++){var T=u.translateBufferLineToString(u.ydisp+b,!0),R=(u.ydisp+b+1).toString(),k=this._rowElements[b];k&&(T.length===0?k.innerText="\xA0":k.textContent=T,k.setAttribute("aria-posinset",R),k.setAttribute("aria-setsize",g))}this._announceCharacters()},o.prototype._refreshRowsDimensions=function(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(var l=0;l{function L(v){return v.replace(/\r?\n/g,"\r")}function y(v,A){return A?"\x1B[200~"+v+"\x1B[201~":v}function m(v,A,w){v=y(v=L(v),w.decPrivateModes.bracketedPasteMode),w.triggerDataEvent(v,!0),A.value=""}function _(v,A,w){var c=w.getBoundingClientRect(),p=v.clientX-c.left-10,C=v.clientY-c.top-10;A.style.width="20px",A.style.height="20px",A.style.left=p+"px",A.style.top=C+"px",A.style.zIndex="1000",A.focus()}Object.defineProperty(f,"__esModule",{value:!0}),f.rightClickHandler=f.moveTextAreaUnderMouseCursor=f.paste=f.handlePasteEvent=f.copyHandler=f.bracketTextForPaste=f.prepareTextForTerminal=void 0,f.prepareTextForTerminal=L,f.bracketTextForPaste=y,f.copyHandler=function(v,A){v.clipboardData&&v.clipboardData.setData("text/plain",A.selectionText),v.preventDefault()},f.handlePasteEvent=function(v,A,w){v.stopPropagation(),v.clipboardData&&m(v.clipboardData.getData("text/plain"),A,w)},f.paste=m,f.moveTextAreaUnderMouseCursor=_,f.rightClickHandler=function(v,A,w,c,p){_(v,A,w),p&&c.rightClickSelect(v),A.value=c.selectionText,A.select()}},4774:(E,f)=>{var L,y,m,_;function v(w){var c=w.toString(16);return c.length<2?"0"+c:c}function A(w,c){return w>>0}}(L=f.channels||(f.channels={})),(y=f.color||(f.color={})).blend=function(w,c){var p=(255&c.rgba)/255;if(p===1)return{css:c.css,rgba:c.rgba};var C=c.rgba>>24&255,d=c.rgba>>16&255,s=c.rgba>>8&255,o=w.rgba>>24&255,l=w.rgba>>16&255,a=w.rgba>>8&255,u=o+Math.round((C-o)*p),g=l+Math.round((d-l)*p),b=a+Math.round((s-a)*p);return{css:L.toCss(u,g,b),rgba:L.toRgba(u,g,b)}},y.isOpaque=function(w){return(255&w.rgba)==255},y.ensureContrastRatio=function(w,c,p){var C=_.ensureContrastRatio(w.rgba,c.rgba,p);if(C)return _.toColor(C>>24&255,C>>16&255,C>>8&255)},y.opaque=function(w){var c=(255|w.rgba)>>>0,p=_.toChannels(c),C=p[0],d=p[1],s=p[2];return{css:L.toCss(C,d,s),rgba:c}},y.opacity=function(w,c){var p=Math.round(255*c),C=_.toChannels(w.rgba),d=C[0],s=C[1],o=C[2];return{css:L.toCss(d,s,o,p),rgba:L.toRgba(d,s,o,p)}},y.toColorRGB=function(w){return[w.rgba>>24&255,w.rgba>>16&255,w.rgba>>8&255]},(f.css||(f.css={})).toColor=function(w){switch(w.length){case 7:return{css:w,rgba:(parseInt(w.slice(1),16)<<8|255)>>>0};case 9:return{css:w,rgba:parseInt(w.slice(1),16)>>>0}}throw new Error("css.toColor: Unsupported css format")},function(w){function c(p,C,d){var s=p/255,o=C/255,l=d/255;return .2126*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.7152*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))+.0722*(l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4))}w.relativeLuminance=function(p){return c(p>>16&255,p>>8&255,255&p)},w.relativeLuminance2=c}(m=f.rgb||(f.rgb={})),function(w){function c(C,d,s){for(var o=C>>24&255,l=C>>16&255,a=C>>8&255,u=d>>24&255,g=d>>16&255,b=d>>8&255,T=A(m.relativeLuminance2(u,b,g),m.relativeLuminance2(o,l,a));T0||g>0||b>0);)u-=Math.max(0,Math.ceil(.1*u)),g-=Math.max(0,Math.ceil(.1*g)),b-=Math.max(0,Math.ceil(.1*b)),T=A(m.relativeLuminance2(u,b,g),m.relativeLuminance2(o,l,a));return(u<<24|g<<16|b<<8|255)>>>0}function p(C,d,s){for(var o=C>>24&255,l=C>>16&255,a=C>>8&255,u=d>>24&255,g=d>>16&255,b=d>>8&255,T=A(m.relativeLuminance2(u,b,g),m.relativeLuminance2(o,l,a));T>>0}w.ensureContrastRatio=function(C,d,s){var o=m.relativeLuminance(C>>8),l=m.relativeLuminance(d>>8);if(A(o,l)>24&255,C>>16&255,C>>8&255,255&C]},w.toColor=function(C,d,s){return{css:L.toCss(C,d,s),rgba:L.toRgba(C,d,s)}}}(_=f.rgba||(f.rgba={})),f.toPaddedHex=v,f.contrastRatio=A},7239:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ColorContrastCache=void 0;var L=function(){function y(){this._color={},this._rgba={}}return y.prototype.clear=function(){this._color={},this._rgba={}},y.prototype.setCss=function(m,_,v){this._rgba[m]||(this._rgba[m]={}),this._rgba[m][_]=v},y.prototype.getCss=function(m,_){return this._rgba[m]?this._rgba[m][_]:void 0},y.prototype.setColor=function(m,_,v){this._color[m]||(this._color[m]={}),this._color[m][_]=v},y.prototype.getColor=function(m,_){return this._color[m]?this._color[m][_]:void 0},y}();f.ColorContrastCache=L},5680:function(E,f,L){var y=this&&this.__spreadArray||function(d,s,o){if(o||arguments.length===2)for(var l,a=0,u=s.length;a{Object.defineProperty(f,"__esModule",{value:!0}),f.removeElementFromParent=void 0,f.removeElementFromParent=function(){for(var L,y=[],m=0;m{Object.defineProperty(f,"__esModule",{value:!0}),f.addDisposableDomListener=void 0,f.addDisposableDomListener=function(L,y,m,_){L.addEventListener(y,m,_);var v=!1;return{dispose:function(){v||(v=!0,L.removeEventListener(y,m,_))}}}},3551:function(E,f,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseZone=f.Linkifier=void 0;var _=L(8460),v=L(2585),A=function(){function c(p,C,d){this._bufferService=p,this._logService=C,this._unicodeService=d,this._linkMatchers=[],this._nextLinkMatcherId=0,this._onShowLinkUnderline=new _.EventEmitter,this._onHideLinkUnderline=new _.EventEmitter,this._onLinkTooltip=new _.EventEmitter,this._rowsToLinkify={start:void 0,end:void 0}}return Object.defineProperty(c.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onLinkTooltip",{get:function(){return this._onLinkTooltip.event},enumerable:!1,configurable:!0}),c.prototype.attachToDom=function(p,C){this._element=p,this._mouseZoneManager=C},c.prototype.linkifyRows=function(p,C){var d=this;this._mouseZoneManager&&(this._rowsToLinkify.start===void 0||this._rowsToLinkify.end===void 0?(this._rowsToLinkify.start=p,this._rowsToLinkify.end=C):(this._rowsToLinkify.start=Math.min(this._rowsToLinkify.start,p),this._rowsToLinkify.end=Math.max(this._rowsToLinkify.end,C)),this._mouseZoneManager.clearAll(p,C),this._rowsTimeoutId&&clearTimeout(this._rowsTimeoutId),this._rowsTimeoutId=setTimeout(function(){return d._linkifyRows()},c._timeBeforeLatency))},c.prototype._linkifyRows=function(){this._rowsTimeoutId=void 0;var p=this._bufferService.buffer;if(this._rowsToLinkify.start!==void 0&&this._rowsToLinkify.end!==void 0){var C=p.ydisp+this._rowsToLinkify.start;if(!(C>=p.lines.length)){for(var d=p.ydisp+Math.min(this._rowsToLinkify.end,this._bufferService.rows)+1,s=Math.ceil(2e3/this._bufferService.cols),o=this._bufferService.buffer.iterator(!1,C,d,s,s);o.hasNext();)for(var l=o.next(),a=0;a=0;C--)if(p.priority<=this._linkMatchers[C].priority)return void this._linkMatchers.splice(C+1,0,p);this._linkMatchers.splice(0,0,p)}else this._linkMatchers.push(p)},c.prototype.deregisterLinkMatcher=function(p){for(var C=0;C>9&511:void 0;d.validationCallback?d.validationCallback(b,function(N){o._rowsTimeoutId||N&&o._addLink(T[1],T[0]-o._bufferService.buffer.ydisp,b,d,M)}):g._addLink(T[1],T[0]-g._bufferService.buffer.ydisp,b,d,M)},g=this;(s=l.exec(C))!==null&&u()!=="break";);},c.prototype._addLink=function(p,C,d,s,o){var l=this;if(this._mouseZoneManager&&this._element){var a=this._unicodeService.getStringCellWidth(d),u=p%this._bufferService.cols,g=C+Math.floor(p/this._bufferService.cols),b=(u+a)%this._bufferService.cols,T=g+Math.floor((u+a)/this._bufferService.cols);b===0&&(b=this._bufferService.cols,T--),this._mouseZoneManager.add(new w(u+1,g+1,b+1,T+1,function(R){if(s.handler)return s.handler(R,d);var k=window.open();k?(k.opener=null,k.location.href=d):console.warn("Opening link blocked as opener could not be cleared")},function(){l._onShowLinkUnderline.fire(l._createLinkHoverEvent(u,g,b,T,o)),l._element.classList.add("xterm-cursor-pointer")},function(R){l._onLinkTooltip.fire(l._createLinkHoverEvent(u,g,b,T,o)),s.hoverTooltipCallback&&s.hoverTooltipCallback(R,d,{start:{x:u,y:g},end:{x:b,y:T}})},function(){l._onHideLinkUnderline.fire(l._createLinkHoverEvent(u,g,b,T,o)),l._element.classList.remove("xterm-cursor-pointer"),s.hoverLeaveCallback&&s.hoverLeaveCallback()},function(R){return!s.willLinkActivate||s.willLinkActivate(R,d)}))}},c.prototype._createLinkHoverEvent=function(p,C,d,s,o){return{x1:p,y1:C,x2:d,y2:s,cols:this._bufferService.cols,fg:o}},c._timeBeforeLatency=200,c=y([m(0,v.IBufferService),m(1,v.ILogService),m(2,v.IUnicodeService)],c)}();f.Linkifier=A;var w=function(c,p,C,d,s,o,l,a,u){this.x1=c,this.y1=p,this.x2=C,this.y2=d,this.clickCallback=s,this.hoverCallback=o,this.tooltipCallback=l,this.leaveCallback=a,this.willLinkActivate=u};f.MouseZone=w},6465:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Linkifier2=void 0;var A=L(2585),w=L(8460),c=L(844),p=L(3656),C=function(d){function s(o){var l=d.call(this)||this;return l._bufferService=o,l._linkProviders=[],l._linkCacheDisposables=[],l._isMouseOut=!0,l._activeLine=-1,l._onShowLinkUnderline=l.register(new w.EventEmitter),l._onHideLinkUnderline=l.register(new w.EventEmitter),l.register((0,c.getDisposeArrayDisposable)(l._linkCacheDisposables)),l}return m(s,d),Object.defineProperty(s.prototype,"currentLink",{get:function(){return this._currentLink},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onShowLinkUnderline",{get:function(){return this._onShowLinkUnderline.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onHideLinkUnderline",{get:function(){return this._onHideLinkUnderline.event},enumerable:!1,configurable:!0}),s.prototype.registerLinkProvider=function(o){var l=this;return this._linkProviders.push(o),{dispose:function(){var a=l._linkProviders.indexOf(o);a!==-1&&l._linkProviders.splice(a,1)}}},s.prototype.attachToDom=function(o,l,a){var u=this;this._element=o,this._mouseService=l,this._renderService=a,this.register((0,p.addDisposableDomListener)(this._element,"mouseleave",function(){u._isMouseOut=!0,u._clearCurrentLink()})),this.register((0,p.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,p.addDisposableDomListener)(this._element,"click",this._onClick.bind(this)))},s.prototype._onMouseMove=function(o){if(this._lastMouseEvent=o,this._element&&this._mouseService){var l=this._positionFromMouseEvent(o,this._element,this._mouseService);if(l){this._isMouseOut=!1;for(var a=o.composedPath(),u=0;uo?this._bufferService.cols:T.link.range.end.x,M=R;M<=k;M++){if(a.has(M)){g.splice(b--,1);break}a.add(M)}}},s.prototype._checkLinkProviderResult=function(o,l,a){var u,g=this;if(!this._activeProviderReplies)return a;for(var b=this._activeProviderReplies.get(o),T=!1,R=0;R=o&&this._currentLink.link.range.end.y<=l)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,c.disposeArray)(this._linkCacheDisposables))},s.prototype._handleNewLink=function(o){var l=this;if(this._element&&this._lastMouseEvent&&this._mouseService){var a=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);a&&this._linkAtPosition(o.link,a)&&(this._currentLink=o,this._currentLink.state={decorations:{underline:o.link.decorations===void 0||o.link.decorations.underline,pointerCursor:o.link.decorations===void 0||o.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,o.link,this._lastMouseEvent),o.link.decorations={},Object.defineProperties(o.link.decorations,{pointerCursor:{get:function(){var u,g;return(g=(u=l._currentLink)===null||u===void 0?void 0:u.state)===null||g===void 0?void 0:g.decorations.pointerCursor},set:function(u){var g,b;((g=l._currentLink)===null||g===void 0?void 0:g.state)&&l._currentLink.state.decorations.pointerCursor!==u&&(l._currentLink.state.decorations.pointerCursor=u,l._currentLink.state.isHovered&&((b=l._element)===null||b===void 0||b.classList.toggle("xterm-cursor-pointer",u)))}},underline:{get:function(){var u,g;return(g=(u=l._currentLink)===null||u===void 0?void 0:u.state)===null||g===void 0?void 0:g.decorations.underline},set:function(u){var g,b,T;((g=l._currentLink)===null||g===void 0?void 0:g.state)&&((T=(b=l._currentLink)===null||b===void 0?void 0:b.state)===null||T===void 0?void 0:T.decorations.underline)!==u&&(l._currentLink.state.decorations.underline=u,l._currentLink.state.isHovered&&l._fireUnderlineEvent(o.link,u))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedBufferChange(function(u){var g=u.start===0?0:u.start+1+l._bufferService.buffer.ydisp;l._clearCurrentLink(g,u.end+1+l._bufferService.buffer.ydisp)})))}},s.prototype._linkHover=function(o,l,a){var u;!((u=this._currentLink)===null||u===void 0)&&u.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(l,!0),this._currentLink.state.decorations.pointerCursor&&o.classList.add("xterm-cursor-pointer")),l.hover&&l.hover(a,l.text)},s.prototype._fireUnderlineEvent=function(o,l){var a=o.range,u=this._bufferService.buffer.ydisp,g=this._createLinkUnderlineEvent(a.start.x-1,a.start.y-u-1,a.end.x,a.end.y-u-1,void 0);(l?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(g)},s.prototype._linkLeave=function(o,l,a){var u;!((u=this._currentLink)===null||u===void 0)&&u.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(l,!1),this._currentLink.state.decorations.pointerCursor&&o.classList.remove("xterm-cursor-pointer")),l.leave&&l.leave(a,l.text)},s.prototype._linkAtPosition=function(o,l){var a=o.range.start.y===o.range.end.y,u=o.range.start.yl.y;return(a&&o.range.start.x<=l.x&&o.range.end.x>=l.x||u&&o.range.end.x>=l.x||g&&o.range.start.x<=l.x||u&&g)&&o.range.start.y<=l.y&&o.range.end.y>=l.y},s.prototype._positionFromMouseEvent=function(o,l,a){var u=a.getCoords(o,l,this._bufferService.cols,this._bufferService.rows);if(u)return{x:u[0],y:u[1]+this._bufferService.buffer.ydisp}},s.prototype._createLinkUnderlineEvent=function(o,l,a,u,g){return{x1:o,y1:l,x2:a,y2:u,cols:this._bufferService.cols,fg:g}},_([v(0,A.IBufferService)],s)}(c.Disposable);f.Linkifier2=C},9042:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.tooMuchOutput=f.promptLabel=void 0,f.promptLabel="Terminal input",f.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},6954:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseZoneManager=void 0;var A=L(844),w=L(3656),c=L(4725),p=L(2585),C=function(d){function s(o,l,a,u,g,b){var T=d.call(this)||this;return T._element=o,T._screenElement=l,T._bufferService=a,T._mouseService=u,T._selectionService=g,T._optionsService=b,T._zones=[],T._areZonesActive=!1,T._lastHoverCoords=[void 0,void 0],T._initialSelectionLength=0,T.register((0,w.addDisposableDomListener)(T._element,"mousedown",function(R){return T._onMouseDown(R)})),T._mouseMoveListener=function(R){return T._onMouseMove(R)},T._mouseLeaveListener=function(R){return T._onMouseLeave(R)},T._clickListener=function(R){return T._onClick(R)},T}return m(s,d),s.prototype.dispose=function(){d.prototype.dispose.call(this),this._deactivate()},s.prototype.add=function(o){this._zones.push(o),this._zones.length===1&&this._activate()},s.prototype.clearAll=function(o,l){if(this._zones.length!==0){o&&l||(o=0,l=this._bufferService.rows-1);for(var a=0;ao&&u.y1<=l+1||u.y2>o&&u.y2<=l+1||u.y1l+1)&&(this._currentZone&&this._currentZone===u&&(this._currentZone.leaveCallback(),this._currentZone=void 0),this._zones.splice(a--,1))}this._zones.length===0&&this._deactivate()}},s.prototype._activate=function(){this._areZonesActive||(this._areZonesActive=!0,this._element.addEventListener("mousemove",this._mouseMoveListener),this._element.addEventListener("mouseleave",this._mouseLeaveListener),this._element.addEventListener("click",this._clickListener))},s.prototype._deactivate=function(){this._areZonesActive&&(this._areZonesActive=!1,this._element.removeEventListener("mousemove",this._mouseMoveListener),this._element.removeEventListener("mouseleave",this._mouseLeaveListener),this._element.removeEventListener("click",this._clickListener))},s.prototype._onMouseMove=function(o){this._lastHoverCoords[0]===o.pageX&&this._lastHoverCoords[1]===o.pageY||(this._onHover(o),this._lastHoverCoords=[o.pageX,o.pageY])},s.prototype._onHover=function(o){var l=this,a=this._findZoneEventAt(o);a!==this._currentZone&&(this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout)),a&&(this._currentZone=a,a.hoverCallback&&a.hoverCallback(o),this._tooltipTimeout=window.setTimeout(function(){return l._onTooltip(o)},this._optionsService.rawOptions.linkTooltipHoverDuration)))},s.prototype._onTooltip=function(o){this._tooltipTimeout=void 0;var l=this._findZoneEventAt(o);l?.tooltipCallback(o)},s.prototype._onMouseDown=function(o){if(this._initialSelectionLength=this._getSelectionLength(),this._areZonesActive){var l=this._findZoneEventAt(o);l?.willLinkActivate(o)&&(o.preventDefault(),o.stopImmediatePropagation())}},s.prototype._onMouseLeave=function(o){this._currentZone&&(this._currentZone.leaveCallback(),this._currentZone=void 0,this._tooltipTimeout&&clearTimeout(this._tooltipTimeout))},s.prototype._onClick=function(o){var l=this._findZoneEventAt(o),a=this._getSelectionLength();l&&a===this._initialSelectionLength&&(l.clickCallback(o),o.preventDefault(),o.stopImmediatePropagation())},s.prototype._getSelectionLength=function(){var o=this._selectionService.selectionText;return o?o.length:0},s.prototype._findZoneEventAt=function(o){var l=this._mouseService.getCoords(o,this._screenElement,this._bufferService.cols,this._bufferService.rows);if(l)for(var a=l[0],u=l[1],g=0;g=b.x1&&a=b.x1||u===b.y2&&ab.y1&&u{Object.defineProperty(f,"__esModule",{value:!0}),f.RenderDebouncer=void 0;var L=function(){function y(m){this._renderCallback=m}return y.prototype.dispose=function(){this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},y.prototype.refresh=function(m,_,v){var A=this;this._rowCount=v,m=m!==void 0?m:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,m):m,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){return A._innerRefresh()}))},y.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var m=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._animationFrame=void 0,this._renderCallback(m,_)}},y}();f.RenderDebouncer=L},5596:function(E,f,L){var y,m=this&&this.__extends||(y=function(v,A){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,c){w.__proto__=c}||function(w,c){for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(w[p]=c[p])},y(v,A)},function(v,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");function w(){this.constructor=v}y(v,A),v.prototype=A===null?Object.create(A):(w.prototype=A.prototype,new w)});Object.defineProperty(f,"__esModule",{value:!0}),f.ScreenDprMonitor=void 0;var _=function(v){function A(){var w=v!==null&&v.apply(this,arguments)||this;return w._currentDevicePixelRatio=window.devicePixelRatio,w}return m(A,v),A.prototype.setListener=function(w){var c=this;this._listener&&this.clearListener(),this._listener=w,this._outerListener=function(){c._listener&&(c._listener(window.devicePixelRatio,c._currentDevicePixelRatio),c._updateDpr())},this._updateDpr()},A.prototype.dispose=function(){v.prototype.dispose.call(this),this.clearListener()},A.prototype._updateDpr=function(){var w;this._outerListener&&((w=this._resolutionMediaMatchList)===null||w===void 0||w.removeListener(this._outerListener),this._currentDevicePixelRatio=window.devicePixelRatio,this._resolutionMediaMatchList=window.matchMedia("screen and (resolution: "+window.devicePixelRatio+"dppx)"),this._resolutionMediaMatchList.addListener(this._outerListener))},A.prototype.clearListener=function(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)},A}(L(844).Disposable);f.ScreenDprMonitor=_},3236:function(E,f,L){var y,m=this&&this.__extends||(y=function(U,ee){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(q,Y){q.__proto__=Y}||function(q,Y){for(var K in Y)Object.prototype.hasOwnProperty.call(Y,K)&&(q[K]=Y[K])},y(U,ee)},function(U,ee){if(typeof ee!="function"&&ee!==null)throw new TypeError("Class extends value "+String(ee)+" is not a constructor or null");function q(){this.constructor=U}y(U,ee),U.prototype=ee===null?Object.create(ee):(q.prototype=ee.prototype,new q)});Object.defineProperty(f,"__esModule",{value:!0}),f.Terminal=void 0;var _=L(2950),v=L(1680),A=L(3614),w=L(2584),c=L(5435),p=L(3525),C=L(3551),d=L(9312),s=L(6114),o=L(3656),l=L(9042),a=L(357),u=L(6954),g=L(4567),b=L(1296),T=L(7399),R=L(8460),k=L(8437),M=L(5680),N=L(3230),D=L(4725),W=L(428),B=L(8934),F=L(6465),j=L(5114),G=L(8969),$=L(4774),ne=L(4269),ie=L(5941),be=L(7641),ve=typeof window<"u"?window.document:null,Ee=function(U){function ee(q){q===void 0&&(q={});var Y=U.call(this,q)||this;return Y.browser=s,Y._keyDownHandled=!1,Y._keyPressHandled=!1,Y._unprocessedDeadKey=!1,Y._onCursorMove=new R.EventEmitter,Y._onKey=new R.EventEmitter,Y._onRender=new R.EventEmitter,Y._onSelectionChange=new R.EventEmitter,Y._onTitleChange=new R.EventEmitter,Y._onBell=new R.EventEmitter,Y._onFocus=new R.EventEmitter,Y._onBlur=new R.EventEmitter,Y._onA11yCharEmitter=new R.EventEmitter,Y._onA11yTabEmitter=new R.EventEmitter,Y._setup(),Y.linkifier=Y._instantiationService.createInstance(C.Linkifier),Y.linkifier2=Y.register(Y._instantiationService.createInstance(F.Linkifier2)),Y.decorationService=Y.register(Y._instantiationService.createInstance(be.DecorationService)),Y.register(Y._inputHandler.onRequestBell(function(){return Y.bell()})),Y.register(Y._inputHandler.onRequestRefreshRows(function(K,Se){return Y.refresh(K,Se)})),Y.register(Y._inputHandler.onRequestSendFocus(function(){return Y._reportFocus()})),Y.register(Y._inputHandler.onRequestReset(function(){return Y.reset()})),Y.register(Y._inputHandler.onRequestWindowsOptionsReport(function(K){return Y._reportWindowsOptions(K)})),Y.register(Y._inputHandler.onColor(function(K){return Y._handleColorEvent(K)})),Y.register((0,R.forwardEvent)(Y._inputHandler.onCursorMove,Y._onCursorMove)),Y.register((0,R.forwardEvent)(Y._inputHandler.onTitleChange,Y._onTitleChange)),Y.register((0,R.forwardEvent)(Y._inputHandler.onA11yChar,Y._onA11yCharEmitter)),Y.register((0,R.forwardEvent)(Y._inputHandler.onA11yTab,Y._onA11yTabEmitter)),Y.register(Y._bufferService.onResize(function(K){return Y._afterResize(K.cols,K.rows)})),Y}return m(ee,U),Object.defineProperty(ee.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onKey",{get:function(){return this._onKey.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onRender",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onBell",{get:function(){return this._onBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onFocus",{get:function(){return this._onFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onBlur",{get:function(){return this._onBlur.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onA11yChar",{get:function(){return this._onA11yCharEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(ee.prototype,"onA11yTab",{get:function(){return this._onA11yTabEmitter.event},enumerable:!1,configurable:!0}),ee.prototype._handleColorEvent=function(q){var Y,K;if(this._colorManager){for(var Se=0,fe=q;Se4)&&Y.coreMouseService.triggerMouseEvent({col:Tt.x-33,row:Tt.y-33,button:je,action:Je,ctrl:_e.ctrlKey,alt:_e.altKey,shift:_e.shiftKey})}var fe={mouseup:null,wheel:null,mousedrag:null,mousemove:null},Ce=function(_e){return Se(_e),_e.buttons||(q._document.removeEventListener("mouseup",fe.mouseup),fe.mousedrag&&q._document.removeEventListener("mousemove",fe.mousedrag)),q.cancel(_e)},De=function(_e){return Se(_e),q.cancel(_e,!0)},Fe=function(_e){_e.buttons&&Se(_e)},Ae=function(_e){_e.buttons||Se(_e)};this.register(this.coreMouseService.onProtocolChange(function(_e){_e?(q.optionsService.rawOptions.logLevel==="debug"&&q._logService.debug("Binding to mouse events:",q.coreMouseService.explainEvents(_e)),q.element.classList.add("enable-mouse-events"),q._selectionService.disable()):(q._logService.debug("Unbinding from mouse events."),q.element.classList.remove("enable-mouse-events"),q._selectionService.enable()),8&_e?fe.mousemove||(K.addEventListener("mousemove",Ae),fe.mousemove=Ae):(K.removeEventListener("mousemove",fe.mousemove),fe.mousemove=null),16&_e?fe.wheel||(K.addEventListener("wheel",De,{passive:!1}),fe.wheel=De):(K.removeEventListener("wheel",fe.wheel),fe.wheel=null),2&_e?fe.mouseup||(fe.mouseup=Ce):(q._document.removeEventListener("mouseup",fe.mouseup),fe.mouseup=null),4&_e?fe.mousedrag||(fe.mousedrag=Fe):(q._document.removeEventListener("mousemove",fe.mousedrag),fe.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,o.addDisposableDomListener)(K,"mousedown",function(_e){if(_e.preventDefault(),q.focus(),q.coreMouseService.areMouseEventsActive&&!q._selectionService.shouldForceSelection(_e))return Se(_e),fe.mouseup&&q._document.addEventListener("mouseup",fe.mouseup),fe.mousedrag&&q._document.addEventListener("mousemove",fe.mousedrag),q.cancel(_e)})),this.register((0,o.addDisposableDomListener)(K,"wheel",function(_e){if(!fe.wheel){if(!q.buffer.hasScrollback){var je=q.viewport.getLinesScrolled(_e);if(je===0)return;for(var Je=w.C0.ESC+(q.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(_e.deltaY<0?"A":"B"),Tt="",lr=0;lr47)},ee.prototype._keyUp=function(q){this._customKeyEventHandler&&this._customKeyEventHandler(q)===!1||(function(Y){return Y.keyCode===16||Y.keyCode===17||Y.keyCode===18}(q)||this.focus(),this.updateCursorStyle(q),this._keyPressHandled=!1)},ee.prototype._keyPress=function(q){var Y;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(q)===!1)return!1;if(this.cancel(q),q.charCode)Y=q.charCode;else if(q.which===null||q.which===void 0)Y=q.keyCode;else{if(q.which===0||q.charCode===0)return!1;Y=q.which}return!(!Y||(q.altKey||q.ctrlKey||q.metaKey)&&!this._isThirdLevelShift(this.browser,q)||(Y=String.fromCharCode(Y),this._onKey.fire({key:Y,domEvent:q}),this._showCursor(),this.coreService.triggerDataEvent(Y,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))},ee.prototype._inputEvent=function(q){if(q.data&&q.inputType==="insertText"&&!q.composed&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;var Y=q.data;return this.coreService.triggerDataEvent(Y,!0),this.cancel(q),!0}return!1},ee.prototype.bell=function(){var q;this._soundBell()&&((q=this._soundService)===null||q===void 0||q.playBellSound()),this._onBell.fire()},ee.prototype.resize=function(q,Y){q!==this.cols||Y!==this.rows?U.prototype.resize.call(this,q,Y):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()},ee.prototype._afterResize=function(q,Y){var K,Se;(K=this._charSizeService)===null||K===void 0||K.measure(),(Se=this.viewport)===null||Se===void 0||Se.syncScrollArea(!0)},ee.prototype.clear=function(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(var q=1;q{Object.defineProperty(f,"__esModule",{value:!0}),f.TimeBasedDebouncer=void 0;var L=function(){function y(m,_){_===void 0&&(_=1e3),this._renderCallback=m,this._debounceThresholdMS=_,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}return y.prototype.dispose=function(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)},y.prototype.refresh=function(m,_,v){var A=this;this._rowCount=v,m=m!==void 0?m:0,_=_!==void 0?_:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,m):m,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,_):_;var w=Date.now();if(w-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=w,this._innerRefresh();else if(!this._additionalRefreshRequested){var c=w-this._lastRefreshMs,p=this._debounceThresholdMS-c;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(function(){A._lastRefreshMs=Date.now(),A._innerRefresh(),A._additionalRefreshRequested=!1,A._refreshTimeoutID=void 0},p)}},y.prototype._innerRefresh=function(){if(this._rowStart!==void 0&&this._rowEnd!==void 0&&this._rowCount!==void 0){var m=Math.max(this._rowStart,0),_=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(m,_)}},y}();f.TimeBasedDebouncer=L},1680:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Viewport=void 0;var A=L(844),w=L(3656),c=L(4725),p=L(2585),C=function(d){function s(o,l,a,u,g,b,T,R){var k=d.call(this)||this;return k._scrollLines=o,k._viewportElement=l,k._scrollArea=a,k._element=u,k._bufferService=g,k._optionsService=b,k._charSizeService=T,k._renderService=R,k.scrollBarWidth=0,k._currentRowHeight=0,k._currentScaledCellHeight=0,k._lastRecordedBufferLength=0,k._lastRecordedViewportHeight=0,k._lastRecordedBufferHeight=0,k._lastTouchY=0,k._lastScrollTop=0,k._lastHadScrollBar=!1,k._wheelPartialScroll=0,k._refreshAnimationFrame=null,k._ignoreNextScrollEvent=!1,k.scrollBarWidth=k._viewportElement.offsetWidth-k._scrollArea.offsetWidth||15,k._lastHadScrollBar=!0,k.register((0,w.addDisposableDomListener)(k._viewportElement,"scroll",k._onScroll.bind(k))),k._activeBuffer=k._bufferService.buffer,k.register(k._bufferService.buffers.onBufferActivate(function(M){return k._activeBuffer=M.activeBuffer})),k._renderDimensions=k._renderService.dimensions,k.register(k._renderService.onDimensionsChange(function(M){return k._renderDimensions=M})),setTimeout(function(){return k.syncScrollArea()},0),k}return m(s,d),s.prototype.onThemeChange=function(o){this._viewportElement.style.backgroundColor=o.background.css},s.prototype._refresh=function(o){var l=this;if(o)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=requestAnimationFrame(function(){return l._innerRefresh()}))},s.prototype._innerRefresh=function(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/window.devicePixelRatio,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;var o=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==o&&(this._lastRecordedBufferHeight=o,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}var l=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==l&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=l),this._optionsService.rawOptions.scrollback===0?this.scrollBarWidth=0:this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this._lastHadScrollBar=this.scrollBarWidth>0;var a=window.getComputedStyle(this._element),u=parseInt(a.paddingLeft)+parseInt(a.paddingRight);this._viewportElement.style.width=(this._renderService.dimensions.actualCellWidth*this._bufferService.cols+this.scrollBarWidth+(this._lastHadScrollBar?u:0)).toString()+"px",this._refreshAnimationFrame=null},s.prototype.syncScrollArea=function(o){if(o===void 0&&(o=!1),this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(o);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight?this._lastHadScrollBar!==this._optionsService.rawOptions.scrollback>0&&this._refresh(o):this._refresh(o)},s.prototype._onScroll=function(o){if(this._lastScrollTop=this._viewportElement.scrollTop,this._viewportElement.offsetParent){if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);var l=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(l)}},s.prototype._bubbleScroll=function(o,l){var a=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(l<0&&this._viewportElement.scrollTop!==0||l>0&&a0?1:-1),this._wheelPartialScroll%=1):o.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(l*=this._bufferService.rows),l},s.prototype._applyScrollModifier=function(o,l){var a=this._optionsService.rawOptions.fastScrollModifier;return a==="alt"&&l.altKey||a==="ctrl"&&l.ctrlKey||a==="shift"&&l.shiftKey?o*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:o*this._optionsService.rawOptions.scrollSensitivity},s.prototype.onTouchStart=function(o){this._lastTouchY=o.touches[0].pageY},s.prototype.onTouchMove=function(o){var l=this._lastTouchY-o.touches[0].pageY;return this._lastTouchY=o.touches[0].pageY,l!==0&&(this._viewportElement.scrollTop+=l,this._bubbleScroll(o,l))},_([v(4,p.IBufferService),v(5,p.IOptionsService),v(6,c.ICharSizeService),v(7,c.IRenderService)],s)}(A.Disposable);f.Viewport=C},2950:function(E,f,L){var y=this&&this.__decorate||function(w,c,p,C){var d,s=arguments.length,o=s<3?c:C===null?C=Object.getOwnPropertyDescriptor(c,p):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(w,c,p,C);else for(var l=w.length-1;l>=0;l--)(d=w[l])&&(o=(s<3?d(o):s>3?d(c,p,o):d(c,p))||o);return s>3&&o&&Object.defineProperty(c,p,o),o},m=this&&this.__param||function(w,c){return function(p,C){c(p,C,w)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CompositionHelper=void 0;var _=L(4725),v=L(2585),A=function(){function w(c,p,C,d,s,o){this._textarea=c,this._compositionView=p,this._bufferService=C,this._optionsService=d,this._coreService=s,this._renderService=o,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}return Object.defineProperty(w.prototype,"isComposing",{get:function(){return this._isComposing},enumerable:!1,configurable:!0}),w.prototype.compositionstart=function(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")},w.prototype.compositionupdate=function(c){var p=this;this._compositionView.textContent=c.data,this.updateCompositionElements(),setTimeout(function(){p._compositionPosition.end=p._textarea.value.length},0)},w.prototype.compositionend=function(){this._finalizeComposition(!0)},w.prototype.keydown=function(c){if(this._isComposing||this._isSendingComposition){if(c.keyCode===229||c.keyCode===16||c.keyCode===17||c.keyCode===18)return!1;this._finalizeComposition(!1)}return c.keyCode!==229||(this._handleAnyTextareaChanges(),!1)},w.prototype._finalizeComposition=function(c){var p=this;if(this._compositionView.classList.remove("active"),this._isComposing=!1,c){var C={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(function(){if(p._isSendingComposition){p._isSendingComposition=!1;var s;C.start+=p._dataAlreadySent.length,(s=p._isComposing?p._textarea.value.substring(C.start,C.end):p._textarea.value.substring(C.start)).length>0&&p._coreService.triggerDataEvent(s,!0)}},0)}else{this._isSendingComposition=!1;var d=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(d,!0)}},w.prototype._handleAnyTextareaChanges=function(){var c=this,p=this._textarea.value;setTimeout(function(){if(!c._isComposing){var C=c._textarea.value.replace(p,"");C.length>0&&(c._dataAlreadySent=C,c._coreService.triggerDataEvent(C,!0))}},0)},w.prototype.updateCompositionElements=function(c){var p=this;if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){var C=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),d=this._renderService.dimensions.actualCellHeight,s=this._bufferService.buffer.y*this._renderService.dimensions.actualCellHeight,o=C*this._renderService.dimensions.actualCellWidth;this._compositionView.style.left=o+"px",this._compositionView.style.top=s+"px",this._compositionView.style.height=d+"px",this._compositionView.style.lineHeight=d+"px",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var l=this._compositionView.getBoundingClientRect();this._textarea.style.left=o+"px",this._textarea.style.top=s+"px",this._textarea.style.width=Math.max(l.width,1)+"px",this._textarea.style.height=Math.max(l.height,1)+"px",this._textarea.style.lineHeight=l.height+"px"}c||setTimeout(function(){return p.updateCompositionElements(!0)},0)}},y([m(2,v.IBufferService),m(3,v.IOptionsService),m(4,v.ICoreService),m(5,_.IRenderService)],w)}();f.CompositionHelper=A},9806:(E,f)=>{function L(y,m){var _=m.getBoundingClientRect();return[y.clientX-_.left,y.clientY-_.top]}Object.defineProperty(f,"__esModule",{value:!0}),f.getRawByteCoords=f.getCoords=f.getCoordsRelativeToElement=void 0,f.getCoordsRelativeToElement=L,f.getCoords=function(y,m,_,v,A,w,c,p){if(A){var C=L(y,m);if(C)return C[0]=Math.ceil((C[0]+(p?w/2:0))/w),C[1]=Math.ceil(C[1]/c),C[0]=Math.min(Math.max(C[0],1),_+(p?1:0)),C[1]=Math.min(Math.max(C[1],1),v),C}},f.getRawByteCoords=function(y){if(y)return{x:y[0]+32,y:y[1]+32}}},9504:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.moveToCellSequence=void 0;var y=L(2584);function m(p,C,d,s){var o=p-_(d,p),l=C-_(d,C),a=Math.abs(o-l)-function(u,g,b){for(var T=0,R=u-_(b,u),k=g-_(b,g),M=0;M=0&&CC?"A":"B"}function A(p,C,d,s,o,l){for(var a=p,u=C,g="";a!==d||u!==s;)a+=o?1:-1,o&&a>l.cols-1?(g+=l.buffer.translateBufferLineToString(u,!1,p,a),a=0,p=0,u++):!o&&a<0&&(g+=l.buffer.translateBufferLineToString(u,!1,0,p+1),p=a=l.cols-1,u--);return g+l.buffer.translateBufferLineToString(u,!1,p,a)}function w(p,C){var d=C?"O":"[";return y.C0.ESC+d+p}function c(p,C){p=Math.floor(p);for(var d="",s=0;s0?R-_(k,R):b;var D=R,W=function(B,F,j,G,$,ne){var ie;return ie=m(j,G,$,ne).length>0?G-_($,G):F,B=j&&iep?"D":"C",c(Math.abs(l-p),w(o,s));o=a>C?"D":"C";var u=Math.abs(a-C);return c(function(g,b){return b.cols-g}(a>C?p:l,d)+(u-1)*d.cols+1+((a>C?l:p)-1),w(o,s))}},4389:function(E,f,L){var y=this&&this.__assign||function(){return y=Object.assign||function(d){for(var s,o=1,l=arguments.length;o{Object.defineProperty(f,"__esModule",{value:!0}),f.BaseRenderLayer=void 0;var y=L(643),m=L(8803),_=L(1420),v=L(3734),A=L(1752),w=L(4774),c=L(9631),p=L(8978),C=function(){function d(s,o,l,a,u,g,b,T){this._container=s,this._alpha=a,this._colors=u,this._rendererId=g,this._bufferService=b,this._optionsService=T,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._currentGlyphIdentifier={chars:"",code:0,bg:0,fg:0,bold:!1,dim:!1,italic:!1},this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-"+o+"-layer"),this._canvas.style.zIndex=l.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}return d.prototype.dispose=function(){var s;(0,c.removeElementFromParent)(this._canvas),(s=this._charAtlas)===null||s===void 0||s.dispose()},d.prototype._initCanvas=function(){this._ctx=(0,A.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()},d.prototype.onOptionsChanged=function(){},d.prototype.onBlur=function(){},d.prototype.onFocus=function(){},d.prototype.onCursorMove=function(){},d.prototype.onGridChanged=function(s,o){},d.prototype.onSelectionChanged=function(s,o,l){l===void 0&&(l=!1)},d.prototype.setColors=function(s){this._refreshCharAtlas(s)},d.prototype._setTransparency=function(s){if(s!==this._alpha){var o=this._canvas;this._alpha=s,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,o),this._refreshCharAtlas(this._colors),this.onGridChanged(0,this._bufferService.rows-1)}},d.prototype._refreshCharAtlas=function(s){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,_.acquireCharAtlas)(this._optionsService.rawOptions,this._rendererId,s,this._scaledCharWidth,this._scaledCharHeight),this._charAtlas.warmUp())},d.prototype.resize=function(s){this._scaledCellWidth=s.scaledCellWidth,this._scaledCellHeight=s.scaledCellHeight,this._scaledCharWidth=s.scaledCharWidth,this._scaledCharHeight=s.scaledCharHeight,this._scaledCharLeft=s.scaledCharLeft,this._scaledCharTop=s.scaledCharTop,this._canvas.width=s.scaledCanvasWidth,this._canvas.height=s.scaledCanvasHeight,this._canvas.style.width=s.canvasWidth+"px",this._canvas.style.height=s.canvasHeight+"px",this._alpha||this._clearAll(),this._refreshCharAtlas(this._colors)},d.prototype.clearTextureAtlas=function(){var s;(s=this._charAtlas)===null||s===void 0||s.clear()},d.prototype._fillCells=function(s,o,l,a){this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight)},d.prototype._fillMiddleLineAtCells=function(s,o,l){l===void 0&&(l=1);var a=Math.ceil(.5*this._scaledCellHeight);this._ctx.fillRect(s*this._scaledCellWidth,(o+1)*this._scaledCellHeight-a-window.devicePixelRatio,l*this._scaledCellWidth,window.devicePixelRatio)},d.prototype._fillBottomLineAtCells=function(s,o,l){l===void 0&&(l=1),this._ctx.fillRect(s*this._scaledCellWidth,(o+1)*this._scaledCellHeight-window.devicePixelRatio-1,l*this._scaledCellWidth,window.devicePixelRatio)},d.prototype._fillLeftLineAtCell=function(s,o,l){this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,window.devicePixelRatio*l,this._scaledCellHeight)},d.prototype._strokeRectAtCell=function(s,o,l,a){this._ctx.lineWidth=window.devicePixelRatio,this._ctx.strokeRect(s*this._scaledCellWidth+window.devicePixelRatio/2,o*this._scaledCellHeight+window.devicePixelRatio/2,l*this._scaledCellWidth-window.devicePixelRatio,a*this._scaledCellHeight-window.devicePixelRatio)},d.prototype._clearAll=function(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))},d.prototype._clearCells=function(s,o,l,a){this._alpha?this._ctx.clearRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(s*this._scaledCellWidth,o*this._scaledCellHeight,l*this._scaledCellWidth,a*this._scaledCellHeight))},d.prototype._fillCharTrueColor=function(s,o,l){this._ctx.font=this._getFont(!1,!1),this._ctx.textBaseline=m.TEXT_BASELINE,this._clipRow(l);var a=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(a=(0,p.tryDrawCustomChar)(this._ctx,s.getChars(),o*this._scaledCellWidth,l*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),a||this._ctx.fillText(s.getChars(),o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)},d.prototype._drawChars=function(s,o,l){var a,u,g,b=this._getContrastColor(s);b||s.isFgRGB()||s.isBgRGB()?this._drawUncachedChars(s,o,l,b):(s.isInverse()?(u=s.isBgDefault()?m.INVERTED_DEFAULT_COLOR:s.getBgColor(),g=s.isFgDefault()?m.INVERTED_DEFAULT_COLOR:s.getFgColor()):(g=s.isBgDefault()?y.DEFAULT_COLOR:s.getBgColor(),u=s.isFgDefault()?y.DEFAULT_COLOR:s.getFgColor()),u+=this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&u<8?8:0,this._currentGlyphIdentifier.chars=s.getChars()||y.WHITESPACE_CELL_CHAR,this._currentGlyphIdentifier.code=s.getCode()||y.WHITESPACE_CELL_CODE,this._currentGlyphIdentifier.bg=g,this._currentGlyphIdentifier.fg=u,this._currentGlyphIdentifier.bold=!!s.isBold(),this._currentGlyphIdentifier.dim=!!s.isDim(),this._currentGlyphIdentifier.italic=!!s.isItalic(),!((a=this._charAtlas)===null||a===void 0)&&a.draw(this._ctx,this._currentGlyphIdentifier,o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop)||this._drawUncachedChars(s,o,l))},d.prototype._drawUncachedChars=function(s,o,l,a){if(this._ctx.save(),this._ctx.font=this._getFont(!!s.isBold(),!!s.isItalic()),this._ctx.textBaseline=m.TEXT_BASELINE,s.isInverse())if(a)this._ctx.fillStyle=a.css;else if(s.isBgDefault())this._ctx.fillStyle=w.color.opaque(this._colors.background).css;else if(s.isBgRGB())this._ctx.fillStyle="rgb("+v.AttributeData.toColorRGB(s.getBgColor()).join(",")+")";else{var u=s.getBgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&u<8&&(u+=8),this._ctx.fillStyle=this._colors.ansi[u].css}else if(a)this._ctx.fillStyle=a.css;else if(s.isFgDefault())this._ctx.fillStyle=this._colors.foreground.css;else if(s.isFgRGB())this._ctx.fillStyle="rgb("+v.AttributeData.toColorRGB(s.getFgColor()).join(",")+")";else{var g=s.getFgColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&s.isBold()&&g<8&&(g+=8),this._ctx.fillStyle=this._colors.ansi[g].css}this._clipRow(l),s.isDim()&&(this._ctx.globalAlpha=m.DIM_OPACITY);var b=!1;this._optionsService.rawOptions.customGlyphs!==!1&&(b=(0,p.tryDrawCustomChar)(this._ctx,s.getChars(),o*this._scaledCellWidth,l*this._scaledCellHeight,this._scaledCellWidth,this._scaledCellHeight)),b||this._ctx.fillText(s.getChars(),o*this._scaledCellWidth+this._scaledCharLeft,l*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight),this._ctx.restore()},d.prototype._clipRow=function(s){this._ctx.beginPath(),this._ctx.rect(0,s*this._scaledCellHeight,this._bufferService.cols*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()},d.prototype._getFont=function(s,o){return(o?"italic":"")+" "+(s?this._optionsService.rawOptions.fontWeightBold:this._optionsService.rawOptions.fontWeight)+" "+this._optionsService.rawOptions.fontSize*window.devicePixelRatio+"px "+this._optionsService.rawOptions.fontFamily},d.prototype._getContrastColor=function(s){if(this._optionsService.rawOptions.minimumContrastRatio!==1){var o=this._colors.contrastCache.getColor(s.bg,s.fg);if(o!==void 0)return o||void 0;var l=s.getFgColor(),a=s.getFgColorMode(),u=s.getBgColor(),g=s.getBgColorMode(),b=!!s.isInverse(),T=!!s.isInverse();if(b){var R=l;l=u,u=R;var k=a;a=g,g=k}var M=this._resolveBackgroundRgba(g,u,b),N=this._resolveForegroundRgba(a,l,b,T),D=w.rgba.ensureContrastRatio(M,N,this._optionsService.rawOptions.minimumContrastRatio);if(D){var W={css:w.channels.toCss(D>>24&255,D>>16&255,D>>8&255),rgba:D};return this._colors.contrastCache.setColor(s.bg,s.fg,W),W}this._colors.contrastCache.setColor(s.bg,s.fg,null)}},d.prototype._resolveBackgroundRgba=function(s,o,l){switch(s){case 16777216:case 33554432:return this._colors.ansi[o].rgba;case 50331648:return o<<8;default:return l?this._colors.foreground.rgba:this._colors.background.rgba}},d.prototype._resolveForegroundRgba=function(s,o,l,a){switch(s){case 16777216:case 33554432:return this._optionsService.rawOptions.drawBoldTextInBrightColors&&a&&o<8&&(o+=8),this._colors.ansi[o].rgba;case 50331648:return o<<8;default:return l?this._colors.background.rgba:this._colors.foreground.rgba}},d}();f.BaseRenderLayer=C},2512:function(E,f,L){var y,m=this&&this.__extends||(y=function(o,l){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,u){a.__proto__=u}||function(a,u){for(var g in u)Object.prototype.hasOwnProperty.call(u,g)&&(a[g]=u[g])},y(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function a(){this.constructor=o}y(o,l),o.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}),_=this&&this.__decorate||function(o,l,a,u){var g,b=arguments.length,T=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(o,l,a,u);else for(var R=o.length-1;R>=0;R--)(g=o[R])&&(T=(b<3?g(T):b>3?g(l,a,T):g(l,a))||T);return b>3&&T&&Object.defineProperty(l,a,T),T},v=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CursorRenderLayer=void 0;var A=L(1546),w=L(511),c=L(2585),p=L(4725),C=600,d=function(o){function l(a,u,g,b,T,R,k,M,N){var D=o.call(this,a,"cursor",u,!0,g,b,R,k)||this;return D._onRequestRedraw=T,D._coreService=M,D._coreBrowserService=N,D._cell=new w.CellData,D._state={x:0,y:0,isFocused:!1,style:"",width:0},D._cursorRenderers={bar:D._renderBarCursor.bind(D),block:D._renderBlockCursor.bind(D),underline:D._renderUnderlineCursor.bind(D)},D}return m(l,o),l.prototype.dispose=function(){this._cursorBlinkStateManager&&(this._cursorBlinkStateManager.dispose(),this._cursorBlinkStateManager=void 0),o.prototype.dispose.call(this)},l.prototype.resize=function(a){o.prototype.resize.call(this,a),this._state={x:0,y:0,isFocused:!1,style:"",width:0}},l.prototype.reset=function(){var a;this._clearCursor(),(a=this._cursorBlinkStateManager)===null||a===void 0||a.restartBlinkAnimation(),this.onOptionsChanged()},l.prototype.onBlur=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.pause(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onFocus=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.resume(),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onOptionsChanged=function(){var a,u=this;this._optionsService.rawOptions.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new s(this._coreBrowserService.isFocused,function(){u._render(!0)})):((a=this._cursorBlinkStateManager)===null||a===void 0||a.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRedraw.fire({start:this._bufferService.buffer.y,end:this._bufferService.buffer.y})},l.prototype.onCursorMove=function(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.restartBlinkAnimation()},l.prototype.onGridChanged=function(a,u){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(!1):this._cursorBlinkStateManager.restartBlinkAnimation()},l.prototype._render=function(a){if(this._coreService.isCursorInitialized&&!this._coreService.isCursorHidden){var u=this._bufferService.buffer.ybase+this._bufferService.buffer.y,g=u-this._bufferService.buffer.ydisp;if(g<0||g>=this._bufferService.rows)this._clearCursor();else{var b=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1);if(this._bufferService.buffer.lines.get(u).loadCell(b,this._cell),this._cell.content!==void 0){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;var T=this._optionsService.rawOptions.cursorStyle;return T&&T!=="block"?this._cursorRenderers[T](b,g,this._cell):this._renderBlurCursor(b,g,this._cell),this._ctx.restore(),this._state.x=b,this._state.y=g,this._state.isFocused=!1,this._state.style=T,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===b&&this._state.y===g&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===this._optionsService.rawOptions.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[this._optionsService.rawOptions.cursorStyle||"block"](b,g,this._cell),this._ctx.restore(),this._state.x=b,this._state.y=g,this._state.isFocused=!1,this._state.style=this._optionsService.rawOptions.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}}else this._clearCursor()},l.prototype._clearCursor=function(){this._state&&(window.devicePixelRatio<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})},l.prototype._renderBarCursor=function(a,u,g){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(a,u,this._optionsService.rawOptions.cursorWidth),this._ctx.restore()},l.prototype._renderBlockCursor=function(a,u,g){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(a,u,g.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(g,a,u),this._ctx.restore()},l.prototype._renderUnderlineCursor=function(a,u,g){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(a,u),this._ctx.restore()},l.prototype._renderBlurCursor=function(a,u,g){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(a,u,g.getWidth(),1),this._ctx.restore()},_([v(5,c.IBufferService),v(6,c.IOptionsService),v(7,c.ICoreService),v(8,p.ICoreBrowserService)],l)}(A.BaseRenderLayer);f.CursorRenderLayer=d;var s=function(){function o(l,a){this._renderCallback=a,this.isCursorVisible=!0,l&&this._restartInterval()}return Object.defineProperty(o.prototype,"isPaused",{get:function(){return!(this._blinkStartTimeout||this._blinkInterval)},enumerable:!1,configurable:!0}),o.prototype.dispose=function(){this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.restartBlinkAnimation=function(){var l=this;this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=window.requestAnimationFrame(function(){l._renderCallback(),l._animationFrame=void 0})))},o.prototype._restartInterval=function(l){var a=this;l===void 0&&(l=C),this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=window.setTimeout(function(){if(a._animationTimeRestarted){var u=C-(Date.now()-a._animationTimeRestarted);if(a._animationTimeRestarted=void 0,u>0)return void a._restartInterval(u)}a.isCursorVisible=!1,a._animationFrame=window.requestAnimationFrame(function(){a._renderCallback(),a._animationFrame=void 0}),a._blinkInterval=window.setInterval(function(){if(a._animationTimeRestarted){var g=C-(Date.now()-a._animationTimeRestarted);return a._animationTimeRestarted=void 0,void a._restartInterval(g)}a.isCursorVisible=!a.isCursorVisible,a._animationFrame=window.requestAnimationFrame(function(){a._renderCallback(),a._animationFrame=void 0})},C)},l)},o.prototype.pause=function(){this.isCursorVisible=!0,this._blinkInterval&&(window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)},o.prototype.resume=function(){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation()},o}()},8978:(E,f,L)=>{var y,m,_,v,A,w,c,p,C,d,s,o,l,a,u,g,b,T,R,k,M,N,D,W,B,F,j,G,$,ne,ie,be,ve,Ee,U,ee,q,Y,K,Se,fe,Ce,De,Fe,Ae,_e,je,Je,Tt,lr,Cr,wr,ei,pi,Nr,ti,Nt,vi,vt,Ne,cr,ut,Wt,we,ur,Qe,ke,We,fr,Ke,At,Xe,hr,ft,Qt,Yt,Wr,Lr,et,jr,xr,Mt,kr,Ur,zr,Er,Zt,gt,ht,qr,jt,dr,pr,bt,St,dt,Tr,Ar,Ie,me,Ot,Mr,it,Re,Rt,er,Or,le,I,X,oe,ce,Te,Oe,pe,Ze,_t,Rr,Ut,Bi,Pi,Kr,gi,Ii,_i,Hi,Fi,Ni;Object.defineProperty(f,"__esModule",{value:!0}),f.tryDrawCustomChar=f.boxDrawingDefinitions=f.blockElementDefinitions=void 0;var cn=L(1752);f.blockElementDefinitions={"\u2580":[{x:0,y:0,w:8,h:4}],"\u2581":[{x:0,y:7,w:8,h:1}],"\u2582":[{x:0,y:6,w:8,h:2}],"\u2583":[{x:0,y:5,w:8,h:3}],"\u2584":[{x:0,y:4,w:8,h:4}],"\u2585":[{x:0,y:3,w:8,h:5}],"\u2586":[{x:0,y:2,w:8,h:6}],"\u2587":[{x:0,y:1,w:8,h:7}],"\u2588":[{x:0,y:0,w:8,h:8}],"\u2589":[{x:0,y:0,w:7,h:8}],"\u258A":[{x:0,y:0,w:6,h:8}],"\u258B":[{x:0,y:0,w:5,h:8}],"\u258C":[{x:0,y:0,w:4,h:8}],"\u258D":[{x:0,y:0,w:3,h:8}],"\u258E":[{x:0,y:0,w:2,h:8}],"\u258F":[{x:0,y:0,w:1,h:8}],"\u2590":[{x:4,y:0,w:4,h:8}],"\u2594":[{x:0,y:0,w:9,h:1}],"\u2595":[{x:7,y:0,w:1,h:8}],"\u2596":[{x:0,y:4,w:4,h:4}],"\u2597":[{x:4,y:4,w:4,h:4}],"\u2598":[{x:0,y:0,w:4,h:4}],"\u2599":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u259A":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"\u259B":[{x:0,y:0,w:4,h:8},{x:0,y:0,w:4,h:8}],"\u259C":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"\u259D":[{x:4,y:0,w:4,h:4}],"\u259E":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"\u259F":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u{1FB70}":[{x:1,y:0,w:1,h:8}],"\u{1FB71}":[{x:2,y:0,w:1,h:8}],"\u{1FB72}":[{x:3,y:0,w:1,h:8}],"\u{1FB73}":[{x:4,y:0,w:1,h:8}],"\u{1FB74}":[{x:5,y:0,w:1,h:8}],"\u{1FB75}":[{x:6,y:0,w:1,h:8}],"\u{1FB76}":[{x:0,y:1,w:8,h:1}],"\u{1FB77}":[{x:0,y:2,w:8,h:1}],"\u{1FB78}":[{x:0,y:3,w:8,h:1}],"\u{1FB79}":[{x:0,y:4,w:8,h:1}],"\u{1FB7A}":[{x:0,y:5,w:8,h:1}],"\u{1FB7B}":[{x:0,y:6,w:8,h:1}],"\u{1FB7C}":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB7D}":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7E}":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7F}":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB80}":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB81}":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB82}":[{x:0,y:0,w:8,h:2}],"\u{1FB83}":[{x:0,y:0,w:8,h:3}],"\u{1FB84}":[{x:0,y:0,w:8,h:5}],"\u{1FB85}":[{x:0,y:0,w:8,h:6}],"\u{1FB86}":[{x:0,y:0,w:8,h:7}],"\u{1FB87}":[{x:6,y:0,w:2,h:8}],"\u{1FB88}":[{x:5,y:0,w:3,h:8}],"\u{1FB89}":[{x:3,y:0,w:5,h:8}],"\u{1FB8A}":[{x:2,y:0,w:6,h:8}],"\u{1FB8B}":[{x:1,y:0,w:7,h:8}],"\u{1FB95}":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"\u{1FB96}":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"\u{1FB97}":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};var yo={"\u2591":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"\u2592":[[1,0],[0,0],[0,1],[0,0]],"\u2593":[[0,1],[1,1],[1,0],[1,1]]};f.boxDrawingDefinitions={"\u2500":(y={},y[1]="M0,.5 L1,.5",y),"\u2501":(m={},m[3]="M0,.5 L1,.5",m),"\u2502":(_={},_[1]="M.5,0 L.5,1",_),"\u2503":(v={},v[3]="M.5,0 L.5,1",v),"\u250C":(A={},A[1]="M0.5,1 L.5,.5 L1,.5",A),"\u250F":(w={},w[3]="M0.5,1 L.5,.5 L1,.5",w),"\u2510":(c={},c[1]="M0,.5 L.5,.5 L.5,1",c),"\u2513":(p={},p[3]="M0,.5 L.5,.5 L.5,1",p),"\u2514":(C={},C[1]="M.5,0 L.5,.5 L1,.5",C),"\u2517":(d={},d[3]="M.5,0 L.5,.5 L1,.5",d),"\u2518":(s={},s[1]="M.5,0 L.5,.5 L0,.5",s),"\u251B":(o={},o[3]="M.5,0 L.5,.5 L0,.5",o),"\u251C":(l={},l[1]="M.5,0 L.5,1 M.5,.5 L1,.5",l),"\u2523":(a={},a[3]="M.5,0 L.5,1 M.5,.5 L1,.5",a),"\u2524":(u={},u[1]="M.5,0 L.5,1 M.5,.5 L0,.5",u),"\u252B":(g={},g[3]="M.5,0 L.5,1 M.5,.5 L0,.5",g),"\u252C":(b={},b[1]="M0,.5 L1,.5 M.5,.5 L.5,1",b),"\u2533":(T={},T[3]="M0,.5 L1,.5 M.5,.5 L.5,1",T),"\u2534":(R={},R[1]="M0,.5 L1,.5 M.5,.5 L.5,0",R),"\u253B":(k={},k[3]="M0,.5 L1,.5 M.5,.5 L.5,0",k),"\u253C":(M={},M[1]="M0,.5 L1,.5 M.5,0 L.5,1",M),"\u254B":(N={},N[3]="M0,.5 L1,.5 M.5,0 L.5,1",N),"\u2574":(D={},D[1]="M.5,.5 L0,.5",D),"\u2578":(W={},W[3]="M.5,.5 L0,.5",W),"\u2575":(B={},B[1]="M.5,.5 L.5,0",B),"\u2579":(F={},F[3]="M.5,.5 L.5,0",F),"\u2576":(j={},j[1]="M.5,.5 L1,.5",j),"\u257A":(G={},G[3]="M.5,.5 L1,.5",G),"\u2577":($={},$[1]="M.5,.5 L.5,1",$),"\u257B":(ne={},ne[3]="M.5,.5 L.5,1",ne),"\u2550":(ie={},ie[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},ie),"\u2551":(be={},be[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},be),"\u2552":(ve={},ve[1]=function(se,te){return"M.5,1 L.5,"+(.5-te)+" L1,"+(.5-te)+" M.5,"+(.5+te)+" L1,"+(.5+te)},ve),"\u2553":(Ee={},Ee[1]=function(se,te){return"M"+(.5-se)+",1 L"+(.5-se)+",.5 L1,.5 M"+(.5+se)+",.5 L"+(.5+se)+",1"},Ee),"\u2554":(U={},U[1]=function(se,te){return"M1,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1"},U),"\u2555":(ee={},ee[1]=function(se,te){return"M0,"+(.5-te)+" L.5,"+(.5-te)+" L.5,1 M0,"+(.5+te)+" L.5,"+(.5+te)},ee),"\u2556":(q={},q[1]=function(se,te){return"M"+(.5+se)+",1 L"+(.5+se)+",.5 L0,.5 M"+(.5-se)+",.5 L"+(.5-se)+",1"},q),"\u2557":(Y={},Y[1]=function(se,te){return"M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M0,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",1"},Y),"\u2558":(K={},K[1]=function(se,te){return"M.5,0 L.5,"+(.5+te)+" L1,"+(.5+te)+" M.5,"+(.5-te)+" L1,"+(.5-te)},K),"\u2559":(Se={},Se[1]=function(se,te){return"M1,.5 L"+(.5-se)+",.5 L"+(.5-se)+",0 M"+(.5+se)+",.5 L"+(.5+se)+",0"},Se),"\u255A":(fe={},fe[1]=function(se,te){return"M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0 M1,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",0"},fe),"\u255B":(Ce={},Ce[1]=function(se,te){return"M0,"+(.5+te)+" L.5,"+(.5+te)+" L.5,0 M0,"+(.5-te)+" L.5,"+(.5-te)},Ce),"\u255C":(De={},De[1]=function(se,te){return"M0,.5 L"+(.5+se)+",.5 L"+(.5+se)+",0 M"+(.5-se)+",.5 L"+(.5-se)+",0"},De),"\u255D":(Fe={},Fe[1]=function(se,te){return"M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M0,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",0"},Fe),"\u255E":(Ae={},Ae[1]=function(se,te){return"M.5,0 L.5,1 M.5,"+(.5-te)+" L1,"+(.5-te)+" M.5,"+(.5+te)+" L1,"+(.5+te)},Ae),"\u255F":(_e={},_e[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1 M"+(.5+se)+",.5 L1,.5"},_e),"\u2560":(je={},je[1]=function(se,te){return"M"+(.5-se)+",0 L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},je),"\u2561":(Je={},Je[1]=function(se,te){return"M.5,0 L.5,1 M0,"+(.5-te)+" L.5,"+(.5-te)+" M0,"+(.5+te)+" L.5,"+(.5+te)},Je),"\u2562":(Tt={},Tt[1]=function(se,te){return"M0,.5 L"+(.5-se)+",.5 M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},Tt),"\u2563":(lr={},lr[1]=function(se,te){return"M"+(.5+se)+",0 L"+(.5+se)+",1 M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0"},lr),"\u2564":(Cr={},Cr[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)+" M.5,"+(.5+te)+" L.5,1"},Cr),"\u2565":(wr={},wr[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",.5 L"+(.5-se)+",1 M"+(.5+se)+",.5 L"+(.5+se)+",1"},wr),"\u2566":(ei={},ei[1]=function(se,te){return"M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1"},ei),"\u2567":(pi={},pi[1]=function(se,te){return"M.5,0 L.5,"+(.5-te)+" M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},pi),"\u2568":(Nr={},Nr[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",.5 L"+(.5-se)+",0 M"+(.5+se)+",.5 L"+(.5+se)+",0"},Nr),"\u2569":(ti={},ti[1]=function(se,te){return"M0,"+(.5+te)+" L1,"+(.5+te)+" M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},ti),"\u256A":(Nt={},Nt[1]=function(se,te){return"M.5,0 L.5,1 M0,"+(.5-te)+" L1,"+(.5-te)+" M0,"+(.5+te)+" L1,"+(.5+te)},Nt),"\u256B":(vi={},vi[1]=function(se,te){return"M0,.5 L1,.5 M"+(.5-se)+",0 L"+(.5-se)+",1 M"+(.5+se)+",0 L"+(.5+se)+",1"},vi),"\u256C":(vt={},vt[1]=function(se,te){return"M0,"+(.5+te)+" L"+(.5-se)+","+(.5+te)+" L"+(.5-se)+",1 M1,"+(.5+te)+" L"+(.5+se)+","+(.5+te)+" L"+(.5+se)+",1 M0,"+(.5-te)+" L"+(.5-se)+","+(.5-te)+" L"+(.5-se)+",0 M1,"+(.5-te)+" L"+(.5+se)+","+(.5-te)+" L"+(.5+se)+",0"},vt),"\u2571":(Ne={},Ne[1]="M1,0 L0,1",Ne),"\u2572":(cr={},cr[1]="M0,0 L1,1",cr),"\u2573":(ut={},ut[1]="M1,0 L0,1 M0,0 L1,1",ut),"\u257C":(Wt={},Wt[1]="M.5,.5 L0,.5",Wt[3]="M.5,.5 L1,.5",Wt),"\u257D":(we={},we[1]="M.5,.5 L.5,0",we[3]="M.5,.5 L.5,1",we),"\u257E":(ur={},ur[1]="M.5,.5 L1,.5",ur[3]="M.5,.5 L0,.5",ur),"\u257F":(Qe={},Qe[1]="M.5,.5 L.5,1",Qe[3]="M.5,.5 L.5,0",Qe),"\u250D":(ke={},ke[1]="M.5,.5 L.5,1",ke[3]="M.5,.5 L1,.5",ke),"\u250E":(We={},We[1]="M.5,.5 L1,.5",We[3]="M.5,.5 L.5,1",We),"\u2511":(fr={},fr[1]="M.5,.5 L.5,1",fr[3]="M.5,.5 L0,.5",fr),"\u2512":(Ke={},Ke[1]="M.5,.5 L0,.5",Ke[3]="M.5,.5 L.5,1",Ke),"\u2515":(At={},At[1]="M.5,.5 L.5,0",At[3]="M.5,.5 L1,.5",At),"\u2516":(Xe={},Xe[1]="M.5,.5 L1,.5",Xe[3]="M.5,.5 L.5,0",Xe),"\u2519":(hr={},hr[1]="M.5,.5 L.5,0",hr[3]="M.5,.5 L0,.5",hr),"\u251A":(ft={},ft[1]="M.5,.5 L0,.5",ft[3]="M.5,.5 L.5,0",ft),"\u251D":(Qt={},Qt[1]="M.5,0 L.5,1",Qt[3]="M.5,.5 L1,.5",Qt),"\u251E":(Yt={},Yt[1]="M0.5,1 L.5,.5 L1,.5",Yt[3]="M.5,.5 L.5,0",Yt),"\u251F":(Wr={},Wr[1]="M.5,0 L.5,.5 L1,.5",Wr[3]="M.5,.5 L.5,1",Wr),"\u2520":(Lr={},Lr[1]="M.5,.5 L1,.5",Lr[3]="M.5,0 L.5,1",Lr),"\u2521":(et={},et[1]="M.5,.5 L.5,1",et[3]="M.5,0 L.5,.5 L1,.5",et),"\u2522":(jr={},jr[1]="M.5,.5 L.5,0",jr[3]="M0.5,1 L.5,.5 L1,.5",jr),"\u2525":(xr={},xr[1]="M.5,0 L.5,1",xr[3]="M.5,.5 L0,.5",xr),"\u2526":(Mt={},Mt[1]="M0,.5 L.5,.5 L.5,1",Mt[3]="M.5,.5 L.5,0",Mt),"\u2527":(kr={},kr[1]="M.5,0 L.5,.5 L0,.5",kr[3]="M.5,.5 L.5,1",kr),"\u2528":(Ur={},Ur[1]="M.5,.5 L0,.5",Ur[3]="M.5,0 L.5,1",Ur),"\u2529":(zr={},zr[1]="M.5,.5 L.5,1",zr[3]="M.5,0 L.5,.5 L0,.5",zr),"\u252A":(Er={},Er[1]="M.5,.5 L.5,0",Er[3]="M0,.5 L.5,.5 L.5,1",Er),"\u252D":(Zt={},Zt[1]="M0.5,1 L.5,.5 L1,.5",Zt[3]="M.5,.5 L0,.5",Zt),"\u252E":(gt={},gt[1]="M0,.5 L.5,.5 L.5,1",gt[3]="M.5,.5 L1,.5",gt),"\u252F":(ht={},ht[1]="M.5,.5 L.5,1",ht[3]="M0,.5 L1,.5",ht),"\u2530":(qr={},qr[1]="M0,.5 L1,.5",qr[3]="M.5,.5 L.5,1",qr),"\u2531":(jt={},jt[1]="M.5,.5 L1,.5",jt[3]="M0,.5 L.5,.5 L.5,1",jt),"\u2532":(dr={},dr[1]="M.5,.5 L0,.5",dr[3]="M0.5,1 L.5,.5 L1,.5",dr),"\u2535":(pr={},pr[1]="M.5,0 L.5,.5 L1,.5",pr[3]="M.5,.5 L0,.5",pr),"\u2536":(bt={},bt[1]="M.5,0 L.5,.5 L0,.5",bt[3]="M.5,.5 L1,.5",bt),"\u2537":(St={},St[1]="M.5,.5 L.5,0",St[3]="M0,.5 L1,.5",St),"\u2538":(dt={},dt[1]="M0,.5 L1,.5",dt[3]="M.5,.5 L.5,0",dt),"\u2539":(Tr={},Tr[1]="M.5,.5 L1,.5",Tr[3]="M.5,0 L.5,.5 L0,.5",Tr),"\u253A":(Ar={},Ar[1]="M.5,.5 L0,.5",Ar[3]="M.5,0 L.5,.5 L1,.5",Ar),"\u253D":(Ie={},Ie[1]="M.5,0 L.5,1 M.5,.5 L1,.5",Ie[3]="M.5,.5 L0,.5",Ie),"\u253E":(me={},me[1]="M.5,0 L.5,1 M.5,.5 L0,.5",me[3]="M.5,.5 L1,.5",me),"\u253F":(Ot={},Ot[1]="M.5,0 L.5,1",Ot[3]="M0,.5 L1,.5",Ot),"\u2540":(Mr={},Mr[1]="M0,.5 L1,.5 M.5,.5 L.5,1",Mr[3]="M.5,.5 L.5,0",Mr),"\u2541":(it={},it[1]="M.5,.5 L.5,0 M0,.5 L1,.5",it[3]="M.5,.5 L.5,1",it),"\u2542":(Re={},Re[1]="M0,.5 L1,.5",Re[3]="M.5,0 L.5,1",Re),"\u2543":(Rt={},Rt[1]="M0.5,1 L.5,.5 L1,.5",Rt[3]="M.5,0 L.5,.5 L0,.5",Rt),"\u2544":(er={},er[1]="M0,.5 L.5,.5 L.5,1",er[3]="M.5,0 L.5,.5 L1,.5",er),"\u2545":(Or={},Or[1]="M.5,0 L.5,.5 L1,.5",Or[3]="M0,.5 L.5,.5 L.5,1",Or),"\u2546":(le={},le[1]="M.5,0 L.5,.5 L0,.5",le[3]="M0.5,1 L.5,.5 L1,.5",le),"\u2547":(I={},I[1]="M.5,.5 L.5,1",I[3]="M.5,.5 L.5,0 M0,.5 L1,.5",I),"\u2548":(X={},X[1]="M.5,.5 L.5,0",X[3]="M0,.5 L1,.5 M.5,.5 L.5,1",X),"\u2549":(oe={},oe[1]="M.5,.5 L1,.5",oe[3]="M.5,0 L.5,1 M.5,.5 L0,.5",oe),"\u254A":(ce={},ce[1]="M.5,.5 L0,.5",ce[3]="M.5,0 L.5,1 M.5,.5 L1,.5",ce),"\u254C":(Te={},Te[1]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",Te),"\u254D":(Oe={},Oe[3]="M.1,.5 L.4,.5 M.6,.5 L.9,.5",Oe),"\u2504":(pe={},pe[1]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",pe),"\u2505":(Ze={},Ze[3]="M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5",Ze),"\u2508":(_t={},_t[1]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",_t),"\u2509":(Rr={},Rr[3]="M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5",Rr),"\u254E":(Ut={},Ut[1]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Ut),"\u254F":(Bi={},Bi[3]="M.5,.1 L.5,.4 M.5,.6 L.5,.9",Bi),"\u2506":(Pi={},Pi[1]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Pi),"\u2507":(Kr={},Kr[3]="M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333",Kr),"\u250A":(gi={},gi[1]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",gi),"\u250B":(Ii={},Ii[3]="M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95",Ii),"\u256D":(_i={},_i[1]="C.5,1,.5,.5,1,.5",_i),"\u256E":(Hi={},Hi[1]="C.5,1,.5,.5,0,.5",Hi),"\u256F":(Fi={},Fi[1]="C.5,0,.5,.5,0,.5",Fi),"\u2570":(Ni={},Ni[1]="C.5,0,.5,.5,1,.5",Ni)},f.tryDrawCustomChar=function(se,te,Ct,yi,mi,tt){var tr=f.blockElementDefinitions[te];if(tr)return function(wt,Vt,ii,Dr,gr,Br){for(var Dt=0;Dt7&&parseInt(Ue.substr(7,2),16)||1;else{if(!Ue.startsWith("rgba"))throw new Error('Unexpected fillStyle color format "'+Ue+'" when drawing pattern glyph');Xr=(Dt=Ue.substring(5,Ue.length-1).split(",").map(function(ni){return parseFloat(ni)}))[0],xt=Dt[1],bi=Dt[2],$t=Dt[3]}for(var ir=0;ir{Object.defineProperty(f,"__esModule",{value:!0}),f.GridCache=void 0;var L=function(){function y(){this.cache=[]}return y.prototype.resize=function(m,_){for(var v=0;v=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.LinkRenderLayer=void 0;var A=L(1546),w=L(8803),c=L(2040),p=L(2585),C=function(d){function s(o,l,a,u,g,b,T,R){var k=d.call(this,o,"link",l,!0,a,u,T,R)||this;return g.onShowLinkUnderline(function(M){return k._onShowLinkUnderline(M)}),g.onHideLinkUnderline(function(M){return k._onHideLinkUnderline(M)}),b.onShowLinkUnderline(function(M){return k._onShowLinkUnderline(M)}),b.onHideLinkUnderline(function(M){return k._onHideLinkUnderline(M)}),k}return m(s,d),s.prototype.resize=function(o){d.prototype.resize.call(this,o),this._state=void 0},s.prototype.reset=function(){this._clearCurrentLink()},s.prototype._clearCurrentLink=function(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);var o=this._state.y2-this._state.y1-1;o>0&&this._clearCells(0,this._state.y1+1,this._state.cols,o),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}},s.prototype._onShowLinkUnderline=function(o){if(o.fg===w.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:o.fg&&(0,c.is256Color)(o.fg)?this._ctx.fillStyle=this._colors.ansi[o.fg].css:this._ctx.fillStyle=this._colors.foreground.css,o.y1===o.y2)this._fillBottomLineAtCells(o.x1,o.y1,o.x2-o.x1);else{this._fillBottomLineAtCells(o.x1,o.y1,o.cols-o.x1);for(var l=o.y1+1;l=0;D--)(k=g[D])&&(N=(M<3?k(N):M>3?k(b,T,N):k(b,T))||N);return M>3&&N&&Object.defineProperty(b,T,N),N},v=this&&this.__param||function(g,b){return function(T,R){b(T,R,g)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Renderer=void 0;var A=L(9596),w=L(4149),c=L(2512),p=L(5098),C=L(844),d=L(4725),s=L(2585),o=L(1420),l=L(8460),a=1,u=function(g){function b(T,R,k,M,N,D,W,B){var F=g.call(this)||this;F._colors=T,F._screenElement=R,F._bufferService=D,F._charSizeService=W,F._optionsService=B,F._id=a++,F._onRequestRedraw=new l.EventEmitter;var j=F._optionsService.rawOptions.allowTransparency;return F._renderLayers=[N.createInstance(A.TextRenderLayer,F._screenElement,0,F._colors,j,F._id),N.createInstance(w.SelectionRenderLayer,F._screenElement,1,F._colors,F._id),N.createInstance(p.LinkRenderLayer,F._screenElement,2,F._colors,F._id,k,M),N.createInstance(c.CursorRenderLayer,F._screenElement,3,F._colors,F._id,F._onRequestRedraw)],F.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},F._devicePixelRatio=window.devicePixelRatio,F._updateDimensions(),F.onOptionsChanged(),F}return m(b,g),Object.defineProperty(b.prototype,"onRequestRedraw",{get:function(){return this._onRequestRedraw.event},enumerable:!1,configurable:!0}),b.prototype.dispose=function(){for(var T=0,R=this._renderLayers;T{Object.defineProperty(f,"__esModule",{value:!0}),f.throwIfFalsy=void 0,f.throwIfFalsy=function(L){if(!L)throw new Error("value must not be falsy");return L}},4149:function(E,f,L){var y,m=this&&this.__extends||(y=function(p,C){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,s){d.__proto__=s}||function(d,s){for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(d[o]=s[o])},y(p,C)},function(p,C){if(typeof C!="function"&&C!==null)throw new TypeError("Class extends value "+String(C)+" is not a constructor or null");function d(){this.constructor=p}y(p,C),p.prototype=C===null?Object.create(C):(d.prototype=C.prototype,new d)}),_=this&&this.__decorate||function(p,C,d,s){var o,l=arguments.length,a=l<3?C:s===null?s=Object.getOwnPropertyDescriptor(C,d):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(p,C,d,s);else for(var u=p.length-1;u>=0;u--)(o=p[u])&&(a=(l<3?o(a):l>3?o(C,d,a):o(C,d))||a);return l>3&&a&&Object.defineProperty(C,d,a),a},v=this&&this.__param||function(p,C){return function(d,s){C(d,s,p)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionRenderLayer=void 0;var A=L(1546),w=L(2585),c=function(p){function C(d,s,o,l,a,u){var g=p.call(this,d,"selection",s,!0,o,l,a,u)||this;return g._clearState(),g}return m(C,p),C.prototype._clearState=function(){this._state={start:void 0,end:void 0,columnSelectMode:void 0,ydisp:void 0}},C.prototype.resize=function(d){p.prototype.resize.call(this,d),this._clearState()},C.prototype.reset=function(){this._state.start&&this._state.end&&(this._clearState(),this._clearAll())},C.prototype.onSelectionChanged=function(d,s,o){if(this._didStateChange(d,s,o,this._bufferService.buffer.ydisp))if(this._clearAll(),d&&s){var l=d[1]-this._bufferService.buffer.ydisp,a=s[1]-this._bufferService.buffer.ydisp,u=Math.max(l,0),g=Math.min(a,this._bufferService.rows-1);if(u>=this._bufferService.rows||g<0)this._state.ydisp=this._bufferService.buffer.ydisp;else{if(this._ctx.fillStyle=this._colors.selectionTransparent.css,o){var b=d[0],T=s[0]-b,R=g-u+1;this._fillCells(b,u,T,R)}else{b=l===u?d[0]:0;var k=u===a?s[0]:this._bufferService.cols;this._fillCells(b,u,k-b,1);var M=Math.max(g-u-1,0);if(this._fillCells(0,u+1,this._bufferService.cols,M),u!==g){var N=a===g?s[0]:this._bufferService.cols;this._fillCells(0,g,N,1)}}this._state.start=[d[0],d[1]],this._state.end=[s[0],s[1]],this._state.columnSelectMode=o,this._state.ydisp=this._bufferService.buffer.ydisp}}else this._clearState()},C.prototype._didStateChange=function(d,s,o,l){return!this._areCoordinatesEqual(d,this._state.start)||!this._areCoordinatesEqual(s,this._state.end)||o!==this._state.columnSelectMode||l!==this._state.ydisp},C.prototype._areCoordinatesEqual=function(d,s){return!(!d||!s)&&d[0]===s[0]&&d[1]===s[1]},_([v(4,w.IBufferService),v(5,w.IOptionsService)],C)}(A.BaseRenderLayer);f.SelectionRenderLayer=c},9596:function(E,f,L){var y,m=this&&this.__extends||(y=function(a,u){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(g,b){g.__proto__=b}||function(g,b){for(var T in b)Object.prototype.hasOwnProperty.call(b,T)&&(g[T]=b[T])},y(a,u)},function(a,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");function g(){this.constructor=a}y(a,u),a.prototype=u===null?Object.create(u):(g.prototype=u.prototype,new g)}),_=this&&this.__decorate||function(a,u,g,b){var T,R=arguments.length,k=R<3?u:b===null?b=Object.getOwnPropertyDescriptor(u,g):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")k=Reflect.decorate(a,u,g,b);else for(var M=a.length-1;M>=0;M--)(T=a[M])&&(k=(R<3?T(k):R>3?T(u,g,k):T(u,g))||k);return R>3&&k&&Object.defineProperty(u,g,k),k},v=this&&this.__param||function(a,u){return function(g,b){u(g,b,a)}};Object.defineProperty(f,"__esModule",{value:!0}),f.TextRenderLayer=void 0;var A=L(3700),w=L(1546),c=L(3734),p=L(643),C=L(511),d=L(2585),s=L(4725),o=L(4269),l=function(a){function u(g,b,T,R,k,M,N,D){var W=a.call(this,g,"text",b,R,T,k,M,N)||this;return W._characterJoinerService=D,W._characterWidth=0,W._characterFont="",W._characterOverlapCache={},W._workCell=new C.CellData,W._state=new A.GridCache,W}return m(u,a),u.prototype.resize=function(g){a.prototype.resize.call(this,g);var b=this._getFont(!1,!1);this._characterWidth===g.scaledCharWidth&&this._characterFont===b||(this._characterWidth=g.scaledCharWidth,this._characterFont=b,this._characterOverlapCache={}),this._state.clear(),this._state.resize(this._bufferService.cols,this._bufferService.rows)},u.prototype.reset=function(){this._state.clear(),this._clearAll()},u.prototype._forEachCell=function(g,b,T){for(var R=g;R<=b;R++)for(var k=R+this._bufferService.buffer.ydisp,M=this._bufferService.buffer.lines.get(k),N=this._characterJoinerService.getJoinedCharacters(k),D=0;D0&&D===N[0][0]){B=!0;var j=N.shift();W=new o.JoinedCellData(this._workCell,M.translateToString(!0,j[0],j[1]),j[1]-j[0]),F=j[1]-1}!B&&this._isOverlapping(W)&&Fthis._characterWidth;return this._ctx.restore(),this._characterOverlapCache[b]=T,T},_([v(5,d.IBufferService),v(6,d.IOptionsService),v(7,s.ICharacterJoinerService)],u)}(w.BaseRenderLayer);f.TextRenderLayer=l},9616:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BaseCharAtlas=void 0;var L=function(){function y(){this._didWarmUp=!1}return y.prototype.dispose=function(){},y.prototype.warmUp=function(){this._didWarmUp||(this._doWarmUp(),this._didWarmUp=!0)},y.prototype._doWarmUp=function(){},y.prototype.clear=function(){},y.prototype.beginFrame=function(){},y}();f.BaseCharAtlas=L},1420:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.removeTerminalFromCache=f.acquireCharAtlas=void 0;var y=L(2040),m=L(1906),_=[];f.acquireCharAtlas=function(v,A,w,c,p){for(var C=(0,y.generateConfig)(c,p,v,w),d=0;d<_.length;d++){var s=(o=_[d]).ownedBy.indexOf(A);if(s>=0){if((0,y.configEquals)(o.config,C))return o.atlas;o.ownedBy.length===1?(o.atlas.dispose(),_.splice(d,1)):o.ownedBy.splice(s,1);break}}for(d=0;d<_.length;d++){var o=_[d];if((0,y.configEquals)(o.config,C))return o.ownedBy.push(A),o.atlas}var l={atlas:new m.DynamicCharAtlas(document,C),config:C,ownedBy:[A]};return _.push(l),l.atlas},f.removeTerminalFromCache=function(v){for(var A=0;A<_.length;A++){var w=_[A].ownedBy.indexOf(v);if(w!==-1){_[A].ownedBy.length===1?(_[A].atlas.dispose(),_.splice(A,1)):_[A].ownedBy.splice(w,1);break}}}},2040:function(E,f,L){var y=this&&this.__spreadArray||function(_,v,A){if(A||arguments.length===2)for(var w,c=0,p=v.length;c{Object.defineProperty(f,"__esModule",{value:!0}),f.CHAR_ATLAS_CELL_SPACING=f.TEXT_BASELINE=f.DIM_OPACITY=f.INVERTED_DEFAULT_COLOR=void 0;var y=L(6114);f.INVERTED_DEFAULT_COLOR=257,f.DIM_OPACITY=.5,f.TEXT_BASELINE=y.isFirefox||y.isLegacyEdge?"bottom":"ideographic",f.CHAR_ATLAS_CELL_SPACING=1},1906:function(E,f,L){var y,m=this&&this.__extends||(y=function(b,T){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(R,k){R.__proto__=k}||function(R,k){for(var M in k)Object.prototype.hasOwnProperty.call(k,M)&&(R[M]=k[M])},y(b,T)},function(b,T){if(typeof T!="function"&&T!==null)throw new TypeError("Class extends value "+String(T)+" is not a constructor or null");function R(){this.constructor=b}y(b,T),b.prototype=T===null?Object.create(T):(R.prototype=T.prototype,new R)});Object.defineProperty(f,"__esModule",{value:!0}),f.NoneCharAtlas=f.DynamicCharAtlas=f.getGlyphCacheKey=void 0;var _=L(8803),v=L(9616),A=L(5680),w=L(7001),c=L(6114),p=L(1752),C=L(4774),d=1024,s=1024,o={css:"rgba(0, 0, 0, 0)",rgba:0};function l(b){return b.code<<21|b.bg<<12|b.fg<<3|(b.bold?0:4)+(b.dim?0:2)+(b.italic?0:1)}f.getGlyphCacheKey=l;var a=function(b){function T(R,k){var M=b.call(this)||this;M._config=k,M._drawToCacheCount=0,M._glyphsWaitingOnBitmap=[],M._bitmapCommitTimeout=null,M._bitmap=null,M._cacheCanvas=R.createElement("canvas"),M._cacheCanvas.width=d,M._cacheCanvas.height=s,M._cacheCtx=(0,p.throwIfFalsy)(M._cacheCanvas.getContext("2d",{alpha:!0}));var N=R.createElement("canvas");N.width=M._config.scaledCharWidth,N.height=M._config.scaledCharHeight,M._tmpCtx=(0,p.throwIfFalsy)(N.getContext("2d",{alpha:M._config.allowTransparency})),M._width=Math.floor(d/M._config.scaledCharWidth),M._height=Math.floor(s/M._config.scaledCharHeight);var D=M._width*M._height;return M._cacheMap=new w.LRUMap(D),M._cacheMap.prealloc(D),M}return m(T,b),T.prototype.dispose=function(){this._bitmapCommitTimeout!==null&&(window.clearTimeout(this._bitmapCommitTimeout),this._bitmapCommitTimeout=null)},T.prototype.beginFrame=function(){this._drawToCacheCount=0},T.prototype.clear=function(){if(this._cacheMap.size>0){var R=this._width*this._height;this._cacheMap=new w.LRUMap(R),this._cacheMap.prealloc(R)}this._cacheCtx.clearRect(0,0,d,s),this._tmpCtx.clearRect(0,0,this._config.scaledCharWidth,this._config.scaledCharHeight)},T.prototype.draw=function(R,k,M,N){if(k.code===32)return!0;if(!this._canCache(k))return!1;var D=l(k),W=this._cacheMap.get(D);if(W!=null)return this._drawFromCache(R,W,M,N),!0;if(this._drawToCacheCount<100){var B;B=this._cacheMap.size>>24,M=T.rgba>>>16&255,N=T.rgba>>>8&255,D=0;D{Object.defineProperty(f,"__esModule",{value:!0}),f.LRUMap=void 0;var L=function(){function y(m){this.capacity=m,this._map={},this._head=null,this._tail=null,this._nodePool=[],this.size=0}return y.prototype._unlinkNode=function(m){var _=m.prev,v=m.next;m===this._head&&(this._head=v),m===this._tail&&(this._tail=_),_!==null&&(_.next=v),v!==null&&(v.prev=_)},y.prototype._appendNode=function(m){var _=this._tail;_!==null&&(_.next=m),m.prev=_,m.next=null,this._tail=m,this._head===null&&(this._head=m)},y.prototype.prealloc=function(m){for(var _=this._nodePool,v=0;v=this.capacity)v=this._head,this._unlinkNode(v),delete this._map[v.key],v.key=m,v.value=_,this._map[m]=v;else{var A=this._nodePool;A.length>0?((v=A.pop()).key=m,v.value=_):v={prev:null,next:null,key:m,value:_},this._map[m]=v,this.size++}this._appendNode(v)},y}();f.LRUMap=L},1296:function(E,f,L){var y,m=this&&this.__extends||(y=function(R,k){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(M,N){M.__proto__=N}||function(M,N){for(var D in N)Object.prototype.hasOwnProperty.call(N,D)&&(M[D]=N[D])},y(R,k)},function(R,k){if(typeof k!="function"&&k!==null)throw new TypeError("Class extends value "+String(k)+" is not a constructor or null");function M(){this.constructor=R}y(R,k),R.prototype=k===null?Object.create(k):(M.prototype=k.prototype,new M)}),_=this&&this.__decorate||function(R,k,M,N){var D,W=arguments.length,B=W<3?k:N===null?N=Object.getOwnPropertyDescriptor(k,M):N;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")B=Reflect.decorate(R,k,M,N);else for(var F=R.length-1;F>=0;F--)(D=R[F])&&(B=(W<3?D(B):W>3?D(k,M,B):D(k,M))||B);return W>3&&B&&Object.defineProperty(k,M,B),B},v=this&&this.__param||function(R,k){return function(M,N){k(M,N,R)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DomRenderer=void 0;var A=L(3787),w=L(8803),c=L(844),p=L(4725),C=L(2585),d=L(8460),s=L(4774),o=L(9631),l="xterm-dom-renderer-owner-",a="xterm-fg-",u="xterm-bg-",g="xterm-focus",b=1,T=function(R){function k(M,N,D,W,B,F,j,G,$,ne){var ie=R.call(this)||this;return ie._colors=M,ie._element=N,ie._screenElement=D,ie._viewportElement=W,ie._linkifier=B,ie._linkifier2=F,ie._charSizeService=G,ie._optionsService=$,ie._bufferService=ne,ie._terminalClass=b++,ie._rowElements=[],ie._rowContainer=document.createElement("div"),ie._rowContainer.classList.add("xterm-rows"),ie._rowContainer.style.lineHeight="normal",ie._rowContainer.setAttribute("aria-hidden","true"),ie._refreshRowElements(ie._bufferService.cols,ie._bufferService.rows),ie._selectionContainer=document.createElement("div"),ie._selectionContainer.classList.add("xterm-selection"),ie._selectionContainer.setAttribute("aria-hidden","true"),ie.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},ie._updateDimensions(),ie._injectCss(),ie._rowFactory=j.createInstance(A.DomRendererRowFactory,document,ie._colors),ie._element.classList.add(l+ie._terminalClass),ie._screenElement.appendChild(ie._rowContainer),ie._screenElement.appendChild(ie._selectionContainer),ie._linkifier.onShowLinkUnderline(function(be){return ie._onLinkHover(be)}),ie._linkifier.onHideLinkUnderline(function(be){return ie._onLinkLeave(be)}),ie._linkifier2.onShowLinkUnderline(function(be){return ie._onLinkHover(be)}),ie._linkifier2.onHideLinkUnderline(function(be){return ie._onLinkLeave(be)}),ie}return m(k,R),Object.defineProperty(k.prototype,"onRequestRedraw",{get:function(){return new d.EventEmitter().event},enumerable:!1,configurable:!0}),k.prototype.dispose=function(){this._element.classList.remove(l+this._terminalClass),(0,o.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),R.prototype.dispose.call(this)},k.prototype._updateDimensions=function(){this.dimensions.scaledCharWidth=this._charSizeService.width*window.devicePixelRatio,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*window.devicePixelRatio),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/window.devicePixelRatio),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/window.devicePixelRatio),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;for(var M=0,N=this._rowElements;MN;)this._rowContainer.removeChild(this._rowElements.pop())},k.prototype.onResize=function(M,N){this._refreshRowElements(M,N),this._updateDimensions()},k.prototype.onCharSizeChanged=function(){this._updateDimensions()},k.prototype.onBlur=function(){this._rowContainer.classList.remove(g)},k.prototype.onFocus=function(){this._rowContainer.classList.add(g)},k.prototype.onSelectionChanged=function(M,N,D){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(M&&N){var W=M[1]-this._bufferService.buffer.ydisp,B=N[1]-this._bufferService.buffer.ydisp,F=Math.max(W,0),j=Math.min(B,this._bufferService.rows-1);if(!(F>=this._bufferService.rows||j<0)){var G=document.createDocumentFragment();if(D)G.appendChild(this._createSelectionElement(F,M[0],N[0],j-F+1));else{var $=W===F?M[0]:0,ne=F===B?N[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(F,$,ne));var ie=j-F-1;if(G.appendChild(this._createSelectionElement(F+1,0,this._bufferService.cols,ie)),F!==j){var be=B===j?N[0]:this._bufferService.cols;G.appendChild(this._createSelectionElement(j,0,be))}}this._selectionContainer.appendChild(G)}}},k.prototype._createSelectionElement=function(M,N,D,W){W===void 0&&(W=1);var B=document.createElement("div");return B.style.height=W*this.dimensions.actualCellHeight+"px",B.style.top=M*this.dimensions.actualCellHeight+"px",B.style.left=N*this.dimensions.actualCellWidth+"px",B.style.width=this.dimensions.actualCellWidth*(D-N)+"px",B},k.prototype.onCursorMove=function(){},k.prototype.onOptionsChanged=function(){this._updateDimensions(),this._injectCss()},k.prototype.clear=function(){for(var M=0,N=this._rowElements;M=B&&(M=0,D++)}},_([v(6,C.IInstantiationService),v(7,p.ICharSizeService),v(8,C.IOptionsService),v(9,C.IBufferService)],k)}(c.Disposable);f.DomRenderer=T},3787:function(E,f,L){var y=this&&this.__decorate||function(o,l,a,u){var g,b=arguments.length,T=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(o,l,a,u);else for(var R=o.length-1;R>=0;R--)(g=o[R])&&(T=(b<3?g(T):b>3?g(l,a,T):g(l,a))||T);return b>3&&T&&Object.defineProperty(l,a,T),T},m=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DomRendererRowFactory=f.CURSOR_STYLE_UNDERLINE_CLASS=f.CURSOR_STYLE_BAR_CLASS=f.CURSOR_STYLE_BLOCK_CLASS=f.CURSOR_BLINK_CLASS=f.CURSOR_CLASS=f.STRIKETHROUGH_CLASS=f.UNDERLINE_CLASS=f.ITALIC_CLASS=f.DIM_CLASS=f.BOLD_CLASS=void 0;var _=L(8803),v=L(643),A=L(511),w=L(2585),c=L(4774),p=L(4725),C=L(4269);f.BOLD_CLASS="xterm-bold",f.DIM_CLASS="xterm-dim",f.ITALIC_CLASS="xterm-italic",f.UNDERLINE_CLASS="xterm-underline",f.STRIKETHROUGH_CLASS="xterm-strikethrough",f.CURSOR_CLASS="xterm-cursor",f.CURSOR_BLINK_CLASS="xterm-cursor-blink",f.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",f.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",f.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";var d=function(){function o(l,a,u,g,b){this._document=l,this._colors=a,this._characterJoinerService=u,this._optionsService=g,this._coreService=b,this._workCell=new A.CellData}return o.prototype.setColors=function(l){this._colors=l},o.prototype.createRow=function(l,a,u,g,b,T,R,k){for(var M=this._document.createDocumentFragment(),N=this._characterJoinerService.getJoinedCharacters(a),D=0,W=Math.min(l.length,k)-1;W>=0;W--)if(l.loadCell(W,this._workCell).getCode()!==v.NULL_CELL_CODE||u&&W===b){D=W+1;break}for(W=0;W0&&W===N[0][0]){F=!0;var $=N.shift();G=new C.JoinedCellData(this._workCell,l.translateToString(!0,$[0],$[1]),$[1]-$[0]),j=$[1]-1,B=G.getWidth()}var ne=this._document.createElement("span");if(B>1&&(ne.style.width=R*B+"px"),F&&(ne.style.display="inline",b>=W&&b<=j&&(b=W)),!this._coreService.isCursorHidden&&u&&W===b)switch(ne.classList.add(f.CURSOR_CLASS),T&&ne.classList.add(f.CURSOR_BLINK_CLASS),g){case"bar":ne.classList.add(f.CURSOR_STYLE_BAR_CLASS);break;case"underline":ne.classList.add(f.CURSOR_STYLE_UNDERLINE_CLASS);break;default:ne.classList.add(f.CURSOR_STYLE_BLOCK_CLASS)}G.isBold()&&ne.classList.add(f.BOLD_CLASS),G.isItalic()&&ne.classList.add(f.ITALIC_CLASS),G.isDim()&&ne.classList.add(f.DIM_CLASS),G.isUnderline()&&ne.classList.add(f.UNDERLINE_CLASS),G.isInvisible()?ne.textContent=v.WHITESPACE_CELL_CHAR:ne.textContent=G.getChars()||v.WHITESPACE_CELL_CHAR,G.isStrikethrough()&&ne.classList.add(f.STRIKETHROUGH_CLASS);var ie=G.getFgColor(),be=G.getFgColorMode(),ve=G.getBgColor(),Ee=G.getBgColorMode(),U=!!G.isInverse();if(U){var ee=ie;ie=ve,ve=ee;var q=be;be=Ee,Ee=q}switch(be){case 16777216:case 33554432:G.isBold()&&ie<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(ie+=8),this._applyMinimumContrast(ne,this._colors.background,this._colors.ansi[ie])||ne.classList.add("xterm-fg-"+ie);break;case 50331648:var Y=c.rgba.toColor(ie>>16&255,ie>>8&255,255&ie);this._applyMinimumContrast(ne,this._colors.background,Y)||this._addStyle(ne,"color:#"+s(ie.toString(16),"0",6));break;default:this._applyMinimumContrast(ne,this._colors.background,this._colors.foreground)||U&&ne.classList.add("xterm-fg-"+_.INVERTED_DEFAULT_COLOR)}switch(Ee){case 16777216:case 33554432:ne.classList.add("xterm-bg-"+ve);break;case 50331648:this._addStyle(ne,"background-color:#"+s(ve.toString(16),"0",6));break;default:U&&ne.classList.add("xterm-bg-"+_.INVERTED_DEFAULT_COLOR)}M.appendChild(ne),W=j}}return M},o.prototype._applyMinimumContrast=function(l,a,u){if(this._optionsService.rawOptions.minimumContrastRatio===1)return!1;var g=this._colors.contrastCache.getColor(this._workCell.bg,this._workCell.fg);return g===void 0&&(g=c.color.ensureContrastRatio(a,u,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor(this._workCell.bg,this._workCell.fg,g??null)),!!g&&(this._addStyle(l,"color:"+g.css),!0)},o.prototype._addStyle=function(l,a){l.setAttribute("style",""+(l.getAttribute("style")||"")+a+";")},y([m(2,p.ICharacterJoinerService),m(3,w.IOptionsService),m(4,w.ICoreService)],o)}();function s(o,l,a){for(;o.length{Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionModel=void 0;var L=function(){function y(m){this._bufferService=m,this.isSelectAllActive=!1,this.selectionStartLength=0}return y.prototype.clearSelection=function(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(y.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"finalSelectionEnd",{get:function(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){var m=this.selectionStart[0]+this.selectionStartLength;return m>this._bufferService.cols?m%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(m/this._bufferService.cols)-1]:[m%this._bufferService.cols,this.selectionStart[1]+Math.floor(m/this._bufferService.cols)]:[m,this.selectionStart[1]]}return this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd}},enumerable:!1,configurable:!0}),y.prototype.areSelectionValuesReversed=function(){var m=this.selectionStart,_=this.selectionEnd;return!(!m||!_)&&(m[1]>_[1]||m[1]===_[1]&&m[0]>_[0])},y.prototype.onTrim=function(m){return this.selectionStart&&(this.selectionStart[1]-=m),this.selectionEnd&&(this.selectionEnd[1]-=m),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},y}();f.SelectionModel=L},428:function(E,f,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CharSizeService=void 0;var _=L(2585),v=L(8460),A=function(){function c(p,C,d){this._optionsService=d,this.width=0,this.height=0,this._onCharSizeChange=new v.EventEmitter,this._measureStrategy=new w(p,C,this._optionsService)}return Object.defineProperty(c.prototype,"hasValidSize",{get:function(){return this.width>0&&this.height>0},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"onCharSizeChange",{get:function(){return this._onCharSizeChange.event},enumerable:!1,configurable:!0}),c.prototype.measure=function(){var p=this._measureStrategy.measure();p.width===this.width&&p.height===this.height||(this.width=p.width,this.height=p.height,this._onCharSizeChange.fire())},y([m(2,_.IOptionsService)],c)}();f.CharSizeService=A;var w=function(){function c(p,C,d){this._document=p,this._parentElement=C,this._optionsService=d,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}return c.prototype.measure=function(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=this._optionsService.rawOptions.fontSize+"px";var p=this._measureElement.getBoundingClientRect();return p.width!==0&&p.height!==0&&(this._result.width=p.width,this._result.height=Math.ceil(p.height)),this._result},c}()},4269:function(E,f,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)}),_=this&&this.__decorate||function(s,o,l,a){var u,g=arguments.length,b=g<3?o:a===null?a=Object.getOwnPropertyDescriptor(o,l):a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")b=Reflect.decorate(s,o,l,a);else for(var T=s.length-1;T>=0;T--)(u=s[T])&&(b=(g<3?u(b):g>3?u(o,l,b):u(o,l))||b);return g>3&&b&&Object.defineProperty(o,l,b),b},v=this&&this.__param||function(s,o){return function(l,a){o(l,a,s)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CharacterJoinerService=f.JoinedCellData=void 0;var A=L(3734),w=L(643),c=L(511),p=L(2585),C=function(s){function o(l,a,u){var g=s.call(this)||this;return g.content=0,g.combinedData="",g.fg=l.fg,g.bg=l.bg,g.combinedData=a,g._width=u,g}return m(o,s),o.prototype.isCombined=function(){return 2097152},o.prototype.getWidth=function(){return this._width},o.prototype.getChars=function(){return this.combinedData},o.prototype.getCode=function(){return 2097151},o.prototype.setFromCharData=function(l){throw new Error("not implemented")},o.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},o}(A.AttributeData);f.JoinedCellData=C;var d=function(){function s(o){this._bufferService=o,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new c.CellData}return s.prototype.register=function(o){var l={id:this._nextCharacterJoinerId++,handler:o};return this._characterJoiners.push(l),l.id},s.prototype.deregister=function(o){for(var l=0;l1)for(var N=this._getJoinedRanges(u,T,b,l,g),D=0;D1)for(N=this._getJoinedRanges(u,T,b,l,g),D=0;D{Object.defineProperty(f,"__esModule",{value:!0}),f.CoreBrowserService=void 0;var L=function(){function y(m){this._textarea=m}return Object.defineProperty(y.prototype,"isFocused",{get:function(){return(this._textarea.getRootNode?this._textarea.getRootNode():document).activeElement===this._textarea&&document.hasFocus()},enumerable:!1,configurable:!0}),y}();f.CoreBrowserService=L},7641:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.Decoration=f.DecorationService=void 0;var A=L(8460),w=L(844),c=L(2585),p=function(d){function s(o){var l=d.call(this)||this;return l._instantiationService=o,l._decorations=[],l}return m(s,d),s.prototype.attachToDom=function(o,l){var a=this;this._renderService=l,this._screenElement=o,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),o.appendChild(this._container),this.register(this._renderService.onRenderedBufferChange(function(){return a.refresh()})),this.register(this._renderService.onDimensionsChange(function(){return a.refresh(!0)}))},s.prototype.registerDecoration=function(o){var l=this;if(!o.marker.isDisposed&&this._container){var a=this._instantiationService.createInstance(C,o,this._container);return this._decorations.push(a),a.onDispose(function(){return l._decorations.splice(l._decorations.indexOf(a),1)}),this._queueRefresh(),a}},s.prototype._queueRefresh=function(){var o=this;this._animationFrame===void 0&&(this._animationFrame=window.requestAnimationFrame(function(){o.refresh(),o._animationFrame=void 0}))},s.prototype.refresh=function(o){if(this._renderService)for(var l=0,a=this._decorations;lthis._bufferService.cols&&(this._element.style.display="none"),this.anchor==="right"?this._element.style.right=this.x?this.x*o.dimensions.actualCellWidth+"px":"":this._element.style.left=this.x?this.x*o.dimensions.actualCellWidth+"px":""},s.prototype._refreshStyle=function(o){if(this._element){var l=this.marker.line-this._bufferService.buffers.active.ydisp;l<0||l>this._bufferService.rows?this._element.style.display="none":(this._element.style.top=l*o.dimensions.actualCellHeight+"px",this._element.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block")}},s.prototype.dispose=function(){this.isDisposed||(this._element&&this._container.contains(this._element)&&this._container.removeChild(this._element),this.isDisposed=!0,this._onDispose.fire())},_([v(2,c.IBufferService)],s)}(w.Disposable);f.Decoration=C},8934:function(E,f,L){var y=this&&this.__decorate||function(w,c,p,C){var d,s=arguments.length,o=s<3?c:C===null?C=Object.getOwnPropertyDescriptor(c,p):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(w,c,p,C);else for(var l=w.length-1;l>=0;l--)(d=w[l])&&(o=(s<3?d(o):s>3?d(c,p,o):d(c,p))||o);return s>3&&o&&Object.defineProperty(c,p,o),o},m=this&&this.__param||function(w,c){return function(p,C){c(p,C,w)}};Object.defineProperty(f,"__esModule",{value:!0}),f.MouseService=void 0;var _=L(4725),v=L(9806),A=function(){function w(c,p){this._renderService=c,this._charSizeService=p}return w.prototype.getCoords=function(c,p,C,d,s){return(0,v.getCoords)(c,p,C,d,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,s)},w.prototype.getRawByteCoords=function(c,p,C,d){var s=this.getCoords(c,p,C,d);return(0,v.getRawByteCoords)(s)},y([m(0,_.IRenderService),m(1,_.ICharSizeService)],w)}();f.MouseService=A},3230:function(E,f,L){var y,m=this&&this.__extends||(y=function(l,a){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,g){u.__proto__=g}||function(u,g){for(var b in g)Object.prototype.hasOwnProperty.call(g,b)&&(u[b]=g[b])},y(l,a)},function(l,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");function u(){this.constructor=l}y(l,a),l.prototype=a===null?Object.create(a):(u.prototype=a.prototype,new u)}),_=this&&this.__decorate||function(l,a,u,g){var b,T=arguments.length,R=T<3?a:g===null?g=Object.getOwnPropertyDescriptor(a,u):g;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")R=Reflect.decorate(l,a,u,g);else for(var k=l.length-1;k>=0;k--)(b=l[k])&&(R=(T<3?b(R):T>3?b(a,u,R):b(a,u))||R);return T>3&&R&&Object.defineProperty(a,u,R),R},v=this&&this.__param||function(l,a){return function(u,g){a(u,g,l)}};Object.defineProperty(f,"__esModule",{value:!0}),f.RenderService=void 0;var A=L(6193),w=L(8460),c=L(844),p=L(5596),C=L(3656),d=L(2585),s=L(4725),o=function(l){function a(u,g,b,T,R,k){var M=l.call(this)||this;if(M._renderer=u,M._rowCount=g,M._charSizeService=R,M._isPaused=!1,M._needsFullRefresh=!1,M._isNextRenderRedrawOnly=!0,M._needsSelectionRefresh=!1,M._canvasWidth=0,M._canvasHeight=0,M._selectionState={start:void 0,end:void 0,columnSelectMode:!1},M._onDimensionsChange=new w.EventEmitter,M._onRender=new w.EventEmitter,M._onRefreshRequest=new w.EventEmitter,M.register({dispose:function(){return M._renderer.dispose()}}),M._renderDebouncer=new A.RenderDebouncer(function(D,W){return M._renderRows(D,W)}),M.register(M._renderDebouncer),M._screenDprMonitor=new p.ScreenDprMonitor,M._screenDprMonitor.setListener(function(){return M.onDevicePixelRatioChange()}),M.register(M._screenDprMonitor),M.register(k.onResize(function(){return M._fullRefresh()})),M.register(k.buffers.onBufferActivate(function(){var D;return(D=M._renderer)===null||D===void 0?void 0:D.clear()})),M.register(T.onOptionChange(function(){return M._renderer.onOptionsChanged()})),M.register(M._charSizeService.onCharSizeChange(function(){return M.onCharSizeChanged()})),M._renderer.onRequestRedraw(function(D){return M.refreshRows(D.start,D.end,!0)}),M.register((0,C.addDisposableDomListener)(window,"resize",function(){return M.onDevicePixelRatioChange()})),"IntersectionObserver"in window){var N=new IntersectionObserver(function(D){return M._onIntersectionChange(D[D.length-1])},{threshold:0});N.observe(b),M.register({dispose:function(){return N.disconnect()}})}return M}return m(a,l),Object.defineProperty(a.prototype,"onDimensionsChange",{get:function(){return this._onDimensionsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"onRenderedBufferChange",{get:function(){return this._onRender.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"onRefreshRequest",{get:function(){return this._onRefreshRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"dimensions",{get:function(){return this._renderer.dimensions},enumerable:!1,configurable:!0}),a.prototype._onIntersectionChange=function(u){this._isPaused=u.isIntersecting===void 0?u.intersectionRatio===0:!u.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)},a.prototype.refreshRows=function(u,g,b){b===void 0&&(b=!1),this._isPaused?this._needsFullRefresh=!0:(b||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(u,g,this._rowCount))},a.prototype._renderRows=function(u,g){this._renderer.renderRows(u,g),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRender.fire({start:u,end:g}),this._isNextRenderRedrawOnly=!0},a.prototype.resize=function(u,g){this._rowCount=g,this._fireOnCanvasResize()},a.prototype.changeOptions=function(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()},a.prototype._fireOnCanvasResize=function(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)},a.prototype.dispose=function(){l.prototype.dispose.call(this)},a.prototype.setRenderer=function(u){var g=this;this._renderer.dispose(),this._renderer=u,this._renderer.onRequestRedraw(function(b){return g.refreshRows(b.start,b.end,!0)}),this._needsSelectionRefresh=!0,this._fullRefresh()},a.prototype._fullRefresh=function(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)},a.prototype.clearTextureAtlas=function(){var u,g;(g=(u=this._renderer)===null||u===void 0?void 0:u.clearTextureAtlas)===null||g===void 0||g.call(u),this._fullRefresh()},a.prototype.setColors=function(u){this._renderer.setColors(u),this._fullRefresh()},a.prototype.onDevicePixelRatioChange=function(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)},a.prototype.onResize=function(u,g){this._renderer.onResize(u,g),this._fullRefresh()},a.prototype.onCharSizeChanged=function(){this._renderer.onCharSizeChanged()},a.prototype.onBlur=function(){this._renderer.onBlur()},a.prototype.onFocus=function(){this._renderer.onFocus()},a.prototype.onSelectionChanged=function(u,g,b){this._selectionState.start=u,this._selectionState.end=g,this._selectionState.columnSelectMode=b,this._renderer.onSelectionChanged(u,g,b)},a.prototype.onCursorMove=function(){this._renderer.onCursorMove()},a.prototype.clear=function(){this._renderer.clear()},_([v(3,d.IOptionsService),v(4,s.ICharSizeService),v(5,d.IBufferService)],a)}(c.Disposable);f.RenderService=o},9312:function(E,f,L){var y,m=this&&this.__extends||(y=function(T,R){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(k,M){k.__proto__=M}||function(k,M){for(var N in M)Object.prototype.hasOwnProperty.call(M,N)&&(k[N]=M[N])},y(T,R)},function(T,R){if(typeof R!="function"&&R!==null)throw new TypeError("Class extends value "+String(R)+" is not a constructor or null");function k(){this.constructor=T}y(T,R),T.prototype=R===null?Object.create(R):(k.prototype=R.prototype,new k)}),_=this&&this.__decorate||function(T,R,k,M){var N,D=arguments.length,W=D<3?R:M===null?M=Object.getOwnPropertyDescriptor(R,k):M;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")W=Reflect.decorate(T,R,k,M);else for(var B=T.length-1;B>=0;B--)(N=T[B])&&(W=(D<3?N(W):D>3?N(R,k,W):N(R,k))||W);return D>3&&W&&Object.defineProperty(R,k,W),W},v=this&&this.__param||function(T,R){return function(k,M){R(k,M,T)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SelectionService=void 0;var A=L(6114),w=L(456),c=L(511),p=L(8460),C=L(4725),d=L(2585),s=L(9806),o=L(9504),l=L(844),a=L(4841),u=String.fromCharCode(160),g=new RegExp(u,"g"),b=function(T){function R(k,M,N,D,W,B,F,j){var G=T.call(this)||this;return G._element=k,G._screenElement=M,G._linkifier=N,G._bufferService=D,G._coreService=W,G._mouseService=B,G._optionsService=F,G._renderService=j,G._dragScrollAmount=0,G._enabled=!0,G._workCell=new c.CellData,G._mouseDownTimeStamp=0,G._oldHasSelection=!1,G._oldSelectionStart=void 0,G._oldSelectionEnd=void 0,G._onLinuxMouseSelection=G.register(new p.EventEmitter),G._onRedrawRequest=G.register(new p.EventEmitter),G._onSelectionChange=G.register(new p.EventEmitter),G._onRequestScrollLines=G.register(new p.EventEmitter),G._mouseMoveListener=function($){return G._onMouseMove($)},G._mouseUpListener=function($){return G._onMouseUp($)},G._coreService.onUserInput(function(){G.hasSelection&&G.clearSelection()}),G._trimListener=G._bufferService.buffer.lines.onTrim(function($){return G._onTrim($)}),G.register(G._bufferService.buffers.onBufferActivate(function($){return G._onBufferActivate($)})),G.enable(),G._model=new w.SelectionModel(G._bufferService),G._activeSelectionMode=0,G}return m(R,T),Object.defineProperty(R.prototype,"onLinuxMouseSelection",{get:function(){return this._onLinuxMouseSelection.event},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"onRequestRedraw",{get:function(){return this._onRedrawRequest.event},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"onSelectionChange",{get:function(){return this._onSelectionChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"onRequestScrollLines",{get:function(){return this._onRequestScrollLines.event},enumerable:!1,configurable:!0}),R.prototype.dispose=function(){this._removeMouseDownListeners()},R.prototype.reset=function(){this.clearSelection()},R.prototype.disable=function(){this.clearSelection(),this._enabled=!1},R.prototype.enable=function(){this._enabled=!0},Object.defineProperty(R.prototype,"selectionStart",{get:function(){return this._model.finalSelectionStart},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"selectionEnd",{get:function(){return this._model.finalSelectionEnd},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"hasSelection",{get:function(){var k=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;return!(!k||!M||k[0]===M[0]&&k[1]===M[1])},enumerable:!1,configurable:!0}),Object.defineProperty(R.prototype,"selectionText",{get:function(){var k=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;if(!k||!M)return"";var N=this._bufferService.buffer,D=[];if(this._activeSelectionMode===3){if(k[0]===M[0])return"";for(var W=k[1];W<=M[1];W++){var B=N.translateBufferLineToString(W,!0,k[0],M[0]);D.push(B)}}else{var F=k[1]===M[1]?M[0]:void 0;for(D.push(N.translateBufferLineToString(k[1],!0,k[0],F)),W=k[1]+1;W<=M[1]-1;W++){var j=N.lines.get(W);B=N.translateBufferLineToString(W,!0),j?.isWrapped?D[D.length-1]+=B:D.push(B)}k[1]!==M[1]&&(j=N.lines.get(M[1]),B=N.translateBufferLineToString(M[1],!0,0,M[0]),j&&j.isWrapped?D[D.length-1]+=B:D.push(B))}return D.map(function(G){return G.replace(g," ")}).join(A.isWindows?`\r `:` -`)},enumerable:!1,configurable:!0}),O.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()},O.prototype.refresh=function(k){var A=this;this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(function(){return A._refresh()})),T.isLinux&&k&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)},O.prototype._refresh=function(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})},O.prototype._isClickInSelection=function(k){var A=this._getMouseBufferCoords(k),N=this._model.finalSelectionStart,D=this._model.finalSelectionEnd;return!!(N&&D&&A)&&this._areCoordsInSelection(A,N,D)},O.prototype._areCoordsInSelection=function(k,A,N){return k[1]>A[1]&&k[1]=A[0]&&k[0]=A[0]},O.prototype._selectWordAtCursor=function(k,A){var N,D,W=(D=(N=this._linkifier.currentLink)===null||N===void 0?void 0:N.link)===null||D===void 0?void 0:D.range;if(W)return this._model.selectionStart=[W.start.x-1,W.start.y-1],this._model.selectionStartLength=(0,a.getRangeLength)(W,this._bufferService.cols),this._model.selectionEnd=void 0,!0;var B=this._getMouseBufferCoords(k);return!!B&&(this._selectWordAt(B,A),this._model.selectionEnd=void 0,!0)},O.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},O.prototype.selectLines=function(k,A){this._model.clearSelection(),k=Math.max(k,0),A=Math.min(A,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,k],this._model.selectionEnd=[this._bufferService.cols,A],this.refresh(),this._onSelectionChange.fire()},O.prototype._onTrim=function(k){this._model.onTrim(k)&&this.refresh()},O.prototype._getMouseBufferCoords=function(k){var A=this._mouseService.getCoords(k,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(A)return A[0]--,A[1]--,A[1]+=this._bufferService.buffer.ydisp,A},O.prototype._getMouseEventScrollAmount=function(k){var A=(0,s.getCoordsRelativeToElement)(k,this._screenElement)[1],N=this._renderService.dimensions.canvasHeight;return A>=0&&A<=N?0:(A>N&&(A-=N),A=Math.min(Math.max(A,-50),50),(A/=50)/Math.abs(A)+Math.round(14*A))},O.prototype.shouldForceSelection=function(k){return T.isMac?k.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:k.shiftKey},O.prototype.onMouseDown=function(k){if(this._mouseDownTimeStamp=k.timeStamp,(k.button!==2||!this.hasSelection)&&k.button===0){if(!this._enabled){if(!this.shouldForceSelection(k))return;k.stopPropagation()}k.preventDefault(),this._dragScrollAmount=0,this._enabled&&k.shiftKey?this._onIncrementalClick(k):k.detail===1?this._onSingleClick(k):k.detail===2?this._onDoubleClick(k):k.detail===3&&this._onTripleClick(k),this._addMouseDownListeners(),this.refresh(!0)}},O.prototype._addMouseDownListeners=function(){var k=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval(function(){return k._dragScroll()},50)},O.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},O.prototype._onIncrementalClick=function(k){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(k))},O.prototype._onSingleClick=function(k){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(k)?3:0,this._model.selectionStart=this._getMouseBufferCoords(k),this._model.selectionStart){this._model.selectionEnd=void 0;var A=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);A&&A.length!==this._model.selectionStart[0]&&A.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}},O.prototype._onDoubleClick=function(k){this._selectWordAtCursor(k,!0)&&(this._activeSelectionMode=1)},O.prototype._onTripleClick=function(k){var A=this._getMouseBufferCoords(k);A&&(this._activeSelectionMode=2,this._selectLineAt(A[1]))},O.prototype.shouldColumnSelect=function(k){return k.altKey&&!(T.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)},O.prototype._onMouseMove=function(k){if(k.stopImmediatePropagation(),this._model.selectionStart){var A=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(k),this._model.selectionEnd){this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var N=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(k.ydisp+this._bufferService.rows,k.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=k.ydisp),this.refresh()}},O.prototype._onMouseUp=function(k){var A=k.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&A<500&&k.altKey&&this._optionsService.getOption("altClickMovesCursor")){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var N=this._mouseService.getCoords(k,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(N&&N[0]!==void 0&&N[1]!==void 0){var D=(0,o.moveToCellSequence)(N[0]-1,N[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(D,!0)}}}else this._fireEventIfSelectionChanged()},O.prototype._fireEventIfSelectionChanged=function(){var k=this._model.finalSelectionStart,A=this._model.finalSelectionEnd,N=!(!k||!A||k[0]===A[0]&&k[1]===A[1]);N?k&&A&&(this._oldSelectionStart&&this._oldSelectionEnd&&k[0]===this._oldSelectionStart[0]&&k[1]===this._oldSelectionStart[1]&&A[0]===this._oldSelectionEnd[0]&&A[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(k,A,N)):this._oldHasSelection&&this._fireOnSelectionChange(k,A,N)},O.prototype._fireOnSelectionChange=function(k,A,N){this._oldSelectionStart=k,this._oldSelectionEnd=A,this._oldHasSelection=N,this._onSelectionChange.fire()},O.prototype._onBufferActivate=function(k){var A=this;this.clearSelection(),this._trimListener.dispose(),this._trimListener=k.activeBuffer.lines.onTrim(function(N){return A._onTrim(N)})},O.prototype._convertViewportColToCharacterIndex=function(k,A){for(var N=A[0],D=0;A[0]>=D;D++){var W=k.loadCell(D,this._workCell).getChars().length;this._workCell.getWidth()===0?N--:W>1&&A[0]!==D&&(N+=W-1)}return N},O.prototype.setSelection=function(k,A,N){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[k,A],this._model.selectionStartLength=N,this.refresh()},O.prototype.rightClickSelect=function(k){this._isClickInSelection(k)||(this._selectWordAtCursor(k,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())},O.prototype._getWordAt=function(k,A,N,D){if(N===void 0&&(N=!0),D===void 0&&(D=!0),!(k[0]>=this._bufferService.cols)){var W=this._bufferService.buffer,B=W.lines.get(k[1]);if(B){var F=W.translateBufferLineToString(k[1],!1),j=this._convertViewportColToCharacterIndex(B,k),G=j,$=k[0]-j,ne=0,ie=0,be=0,ve=0;if(F.charAt(j)===" "){for(;j>0&&F.charAt(j-1)===" ";)j--;for(;G1&&(ve+=ee-1,G+=ee-1);Ee>0&&j>0&&!this._isCharWordSeparator(B.loadCell(Ee-1,this._workCell));){B.loadCell(Ee-1,this._workCell);var q=this._workCell.getChars().length;this._workCell.getWidth()===0?(ne++,Ee--):q>1&&(be+=q-1,j-=q-1),j--,Ee--}for(;U1&&(ve+=Y-1,G+=Y-1),G++,U++}}G++;var K=j+$-ne+be,Se=Math.min(this._bufferService.cols,G-j+ne+ie-be-ve);if(A||F.slice(j,G).trim()!==""){if(N&&K===0&&B.getCodePoint(0)!==32){var fe=W.lines.get(k[1]-1);if(fe&&B.isWrapped&&fe.getCodePoint(this._bufferService.cols-1)!==32){var Ce=this._getWordAt([this._bufferService.cols-1,k[1]-1],!1,!0,!1);if(Ce){var De=this._bufferService.cols-Ce.start;K-=De,Se+=De}}}if(D&&K+Se===this._bufferService.cols&&B.getCodePoint(this._bufferService.cols-1)!==32){var Fe=W.lines.get(k[1]+1);if(Fe?.isWrapped&&Fe.getCodePoint(0)!==32){var Ae=this._getWordAt([0,k[1]+1],!1,!1,!0);Ae&&(Se+=Ae.length)}}return{start:K,length:Se}}}}},O.prototype._selectWordAt=function(k,A){var N=this._getWordAt(k,A);if(N){for(;N.start<0;)N.start+=this._bufferService.cols,k[1]--;this._model.selectionStart=[N.start,k[1]],this._model.selectionStartLength=N.length}},O.prototype._selectToWordAt=function(k){var A=this._getWordAt(k,!0);if(A){for(var N=k[1];A.start<0;)A.start+=this._bufferService.cols,N--;if(!this._model.areSelectionValuesReversed())for(;A.start+A.length>this._bufferService.cols;)A.length-=this._bufferService.cols,N++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?A.start:A.start+A.length,N]}},O.prototype._isCharWordSeparator=function(k){return k.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(k.getChars())>=0},O.prototype._selectLineAt=function(k){var A=this._bufferService.buffer.getWrappedRangeForLine(k);this._model.selectionStart=[0,A.first],this._model.selectionEnd=[this._bufferService.cols,A.last],this._model.selectionStartLength=0},_([g(3,d.IBufferService),g(4,d.ICoreService),g(5,C.IMouseService),g(6,d.IOptionsService),g(7,C.IRenderService)],O)}(l.Disposable);h.SelectionService=b},4725:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.IDecorationService=h.ICharacterJoinerService=h.ISoundService=h.ISelectionService=h.IRenderService=h.IMouseService=h.ICoreBrowserService=h.ICharSizeService=void 0;var y=L(8343);h.ICharSizeService=(0,y.createDecorator)("CharSizeService"),h.ICoreBrowserService=(0,y.createDecorator)("CoreBrowserService"),h.IMouseService=(0,y.createDecorator)("MouseService"),h.IRenderService=(0,y.createDecorator)("RenderService"),h.ISelectionService=(0,y.createDecorator)("SelectionService"),h.ISoundService=(0,y.createDecorator)("SoundService"),h.ICharacterJoinerService=(0,y.createDecorator)("CharacterJoinerService"),h.IDecorationService=(0,y.createDecorator)("DecorationService")},357:function(R,h,L){var y=this&&this.__decorate||function(T,w,c,p){var C,d=arguments.length,s=d<3?w:p===null?p=Object.getOwnPropertyDescriptor(w,c):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(T,w,c,p);else for(var o=T.length-1;o>=0;o--)(C=T[o])&&(s=(d<3?C(s):d>3?C(w,c,s):C(w,c))||s);return d>3&&s&&Object.defineProperty(w,c,s),s},m=this&&this.__param||function(T,w){return function(c,p){w(c,p,T)}};Object.defineProperty(h,"__esModule",{value:!0}),h.SoundService=void 0;var _=L(2585),g=function(){function T(w){this._optionsService=w}return Object.defineProperty(T,"audioContext",{get:function(){if(!T._audioContext){var w=window.AudioContext||window.webkitAudioContext;if(!w)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;T._audioContext=new w}return T._audioContext},enumerable:!1,configurable:!0}),T.prototype.playBellSound=function(){var w=T.audioContext;if(w){var c=w.createBufferSource();w.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)),function(p){c.buffer=p,c.connect(w.destination),c.start(0)})}},T.prototype._base64ToArrayBuffer=function(w){for(var c=window.atob(w),p=c.length,C=new Uint8Array(p),d=0;d{Object.defineProperty(h,"__esModule",{value:!0}),h.CircularList=void 0;var y=L(8460),m=function(){function _(g){this._maxLength=g,this.onDeleteEmitter=new y.EventEmitter,this.onInsertEmitter=new y.EventEmitter,this.onTrimEmitter=new y.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(_.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"maxLength",{get:function(){return this._maxLength},set:function(g){if(this._maxLength!==g){for(var T=new Array(g),w=0;wthis._length)for(var T=this._length;T=g;p--)this._array[this._getCyclicIndex(p+w.length)]=this._array[this._getCyclicIndex(p)];for(p=0;pthis._maxLength){var C=this._length+w.length-this._maxLength;this._startIndex+=C,this._length=this._maxLength,this.onTrimEmitter.fire(C)}else this._length+=w.length},_.prototype.trimStart=function(g){g>this._length&&(g=this._length),this._startIndex+=g,this._length-=g,this.onTrimEmitter.fire(g)},_.prototype.shiftElements=function(g,T,w){if(!(T<=0)){if(g<0||g>=this._length)throw new Error("start argument out of range");if(g+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(var c=T-1;c>=0;c--)this.set(g+c+w,this.get(g+c));var p=g+T+w-this._length;if(p>0)for(this._length+=p;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(c=0;c{Object.defineProperty(h,"__esModule",{value:!0}),h.clone=void 0,h.clone=function L(y,m){if(m===void 0&&(m=5),typeof y!="object")return y;var _=Array.isArray(y)?[]:{};for(var g in y)_[g]=m<=1?y[g]:y[g]&&L(y[g],m-1);return _}},8969:function(R,h,L){var y,m=this&&this.__extends||(y=function(k,A){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(N,D){N.__proto__=D}||function(N,D){for(var W in D)Object.prototype.hasOwnProperty.call(D,W)&&(N[W]=D[W])},y(k,A)},function(k,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");function N(){this.constructor=k}y(k,A),k.prototype=A===null?Object.create(A):(N.prototype=A.prototype,new N)});Object.defineProperty(h,"__esModule",{value:!0}),h.CoreTerminal=void 0;var _=L(844),g=L(2585),T=L(4348),w=L(7866),c=L(744),p=L(7302),C=L(6975),d=L(8460),s=L(1753),o=L(3730),l=L(1480),a=L(7994),u=L(9282),v=L(5435),b=L(5981),E=!1,O=function(k){function A(N){var D=k.call(this)||this;return D._onBinary=new d.EventEmitter,D._onData=new d.EventEmitter,D._onLineFeed=new d.EventEmitter,D._onResize=new d.EventEmitter,D._onScroll=new d.EventEmitter,D._instantiationService=new T.InstantiationService,D.optionsService=new p.OptionsService(N),D._instantiationService.setService(g.IOptionsService,D.optionsService),D._bufferService=D.register(D._instantiationService.createInstance(c.BufferService)),D._instantiationService.setService(g.IBufferService,D._bufferService),D._logService=D._instantiationService.createInstance(w.LogService),D._instantiationService.setService(g.ILogService,D._logService),D.coreService=D.register(D._instantiationService.createInstance(C.CoreService,function(){return D.scrollToBottom()})),D._instantiationService.setService(g.ICoreService,D.coreService),D.coreMouseService=D._instantiationService.createInstance(s.CoreMouseService),D._instantiationService.setService(g.ICoreMouseService,D.coreMouseService),D._dirtyRowService=D._instantiationService.createInstance(o.DirtyRowService),D._instantiationService.setService(g.IDirtyRowService,D._dirtyRowService),D.unicodeService=D._instantiationService.createInstance(l.UnicodeService),D._instantiationService.setService(g.IUnicodeService,D.unicodeService),D._charsetService=D._instantiationService.createInstance(a.CharsetService),D._instantiationService.setService(g.ICharsetService,D._charsetService),D._inputHandler=new v.InputHandler(D._bufferService,D._charsetService,D.coreService,D._dirtyRowService,D._logService,D.optionsService,D.coreMouseService,D.unicodeService),D.register((0,d.forwardEvent)(D._inputHandler.onLineFeed,D._onLineFeed)),D.register(D._inputHandler),D.register((0,d.forwardEvent)(D._bufferService.onResize,D._onResize)),D.register((0,d.forwardEvent)(D.coreService.onData,D._onData)),D.register((0,d.forwardEvent)(D.coreService.onBinary,D._onBinary)),D.register(D.optionsService.onOptionChange(function(W){return D._updateOptions(W)})),D.register(D._bufferService.onScroll(function(W){D._onScroll.fire({position:D._bufferService.buffer.ydisp,source:0}),D._dirtyRowService.markRangeDirty(D._bufferService.buffer.scrollTop,D._bufferService.buffer.scrollBottom)})),D.register(D._inputHandler.onScroll(function(W){D._onScroll.fire({position:D._bufferService.buffer.ydisp,source:0}),D._dirtyRowService.markRangeDirty(D._bufferService.buffer.scrollTop,D._bufferService.buffer.scrollBottom)})),D._writeBuffer=new b.WriteBuffer(function(W,B){return D._inputHandler.parse(W,B)}),D}return m(A,k),Object.defineProperty(A.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"onScroll",{get:function(){var N=this;return this._onScrollApi||(this._onScrollApi=new d.EventEmitter,this.register(this._onScroll.event(function(D){var W;(W=N._onScrollApi)===null||W===void 0||W.fire(D.position)}))),this._onScrollApi.event},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"options",{get:function(){return this.optionsService.options},set:function(N){for(var D in N)this.optionsService.options[D]=N[D]},enumerable:!1,configurable:!0}),A.prototype.dispose=function(){var N;this._isDisposed||(k.prototype.dispose.call(this),(N=this._windowsMode)===null||N===void 0||N.dispose(),this._windowsMode=void 0)},A.prototype.write=function(N,D){this._writeBuffer.write(N,D)},A.prototype.writeSync=function(N,D){this._logService.logLevel<=g.LogLevelEnum.WARN&&!E&&(this._logService.warn("writeSync is unreliable and will be removed soon."),E=!0),this._writeBuffer.writeSync(N,D)},A.prototype.resize=function(N,D){isNaN(N)||isNaN(D)||(N=Math.max(N,c.MINIMUM_COLS),D=Math.max(D,c.MINIMUM_ROWS),this._bufferService.resize(N,D))},A.prototype.scroll=function(N,D){D===void 0&&(D=!1),this._bufferService.scroll(N,D)},A.prototype.scrollLines=function(N,D,W){this._bufferService.scrollLines(N,D,W)},A.prototype.scrollPages=function(N){this._bufferService.scrollPages(N)},A.prototype.scrollToTop=function(){this._bufferService.scrollToTop()},A.prototype.scrollToBottom=function(){this._bufferService.scrollToBottom()},A.prototype.scrollToLine=function(N){this._bufferService.scrollToLine(N)},A.prototype.registerEscHandler=function(N,D){return this._inputHandler.registerEscHandler(N,D)},A.prototype.registerDcsHandler=function(N,D){return this._inputHandler.registerDcsHandler(N,D)},A.prototype.registerCsiHandler=function(N,D){return this._inputHandler.registerCsiHandler(N,D)},A.prototype.registerOscHandler=function(N,D){return this._inputHandler.registerOscHandler(N,D)},A.prototype._setup=function(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()},A.prototype.reset=function(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()},A.prototype._updateOptions=function(N){var D;switch(N){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():((D=this._windowsMode)===null||D===void 0||D.dispose(),this._windowsMode=void 0)}},A.prototype._enableWindowsMode=function(){var N=this;if(!this._windowsMode){var D=[];D.push(this.onLineFeed(u.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},function(){return(0,u.updateWindowsModeWrappedState)(N._bufferService),!1})),this._windowsMode={dispose:function(){for(var W=0,B=D;W{Object.defineProperty(h,"__esModule",{value:!0}),h.forwardEvent=h.EventEmitter=void 0;var L=function(){function y(){this._listeners=[],this._disposed=!1}return Object.defineProperty(y.prototype,"event",{get:function(){var m=this;return this._event||(this._event=function(_){return m._listeners.push(_),{dispose:function(){if(!m._disposed){for(var g=0;g24)return B.setWinLines||!1;switch(W){case 1:return!!B.restoreWin;case 2:return!!B.minimizeWin;case 3:return!!B.setWinPosition;case 4:return!!B.setWinSizePixels;case 5:return!!B.raiseWin;case 6:return!!B.lowerWin;case 7:return!!B.refreshWin;case 8:return!!B.setWinSizeChars;case 9:return!!B.maximizeWin;case 10:return!!B.fullscreenWin;case 11:return!!B.getWinState;case 13:return!!B.getWinPosition;case 14:return!!B.getWinSizePixels;case 15:return!!B.getScreenSizePixels;case 16:return!!B.getCellSizePixels;case 18:return!!B.getWinSizeChars;case 19:return!!B.getScreenSizeChars;case 20:return!!B.getIconTitle;case 21:return!!B.getWinTitle;case 22:return!!B.pushTitle;case 23:return!!B.popTitle;case 24:return!!B.setWinLines}return!1}(function(W){W[W.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",W[W.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(_=h.WindowsOptionsReportType||(h.WindowsOptionsReportType={}));var N=function(){function W(B,F,j,G){this._bufferService=B,this._coreService=F,this._logService=j,this._optionsService=G,this._data=new Uint32Array(0)}return W.prototype.hook=function(B){this._data=new Uint32Array(0)},W.prototype.put=function(B,F,j){this._data=(0,p.concat)(this._data,B.subarray(F,j))},W.prototype.unhook=function(B){if(!B)return this._data=new Uint32Array(0),!0;var F=(0,C.utf32ToString)(this._data);switch(this._data=new Uint32Array(0),F){case'"q':this._coreService.triggerDataEvent(g.C0.ESC+'P1$r0"q'+g.C0.ESC+"\\");break;case'"p':this._coreService.triggerDataEvent(g.C0.ESC+'P1$r61;1"p'+g.C0.ESC+"\\");break;case"r":var j=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";this._coreService.triggerDataEvent(g.C0.ESC+"P1$r"+j+g.C0.ESC+"\\");break;case"m":this._coreService.triggerDataEvent(g.C0.ESC+"P1$r0m"+g.C0.ESC+"\\");break;case" q":var G={block:2,underline:4,bar:6}[this._optionsService.rawOptions.cursorStyle];G-=this._optionsService.rawOptions.cursorBlink?1:0,this._coreService.triggerDataEvent(g.C0.ESC+"P1$r"+G+" q"+g.C0.ESC+"\\");break;default:this._logService.debug("Unknown DCS $q %s",F),this._coreService.triggerDataEvent(g.C0.ESC+"P0$r"+g.C0.ESC+"\\")}return!0},W}(),D=function(W){function B(F,j,G,$,ne,ie,be,ve,Ee){Ee===void 0&&(Ee=new w.EscapeSequenceParser);var U=W.call(this)||this;U._bufferService=F,U._charsetService=j,U._coreService=G,U._dirtyRowService=$,U._logService=ne,U._optionsService=ie,U._coreMouseService=be,U._unicodeService=ve,U._parser=Ee,U._parseBuffer=new Uint32Array(4096),U._stringDecoder=new C.StringToUtf32,U._utf8Decoder=new C.Utf8ToUtf32,U._workCell=new l.CellData,U._windowTitle="",U._iconName="",U._windowTitleStack=[],U._iconNameStack=[],U._curAttrData=d.DEFAULT_ATTR_DATA.clone(),U._eraseAttrDataInternal=d.DEFAULT_ATTR_DATA.clone(),U._onRequestBell=new s.EventEmitter,U._onRequestRefreshRows=new s.EventEmitter,U._onRequestReset=new s.EventEmitter,U._onRequestSendFocus=new s.EventEmitter,U._onRequestSyncScrollBar=new s.EventEmitter,U._onRequestWindowsOptionsReport=new s.EventEmitter,U._onA11yChar=new s.EventEmitter,U._onA11yTab=new s.EventEmitter,U._onCursorMove=new s.EventEmitter,U._onLineFeed=new s.EventEmitter,U._onScroll=new s.EventEmitter,U._onTitleChange=new s.EventEmitter,U._onColor=new s.EventEmitter,U._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},U._specialColors=[256,257,258],U.register(U._parser),U._activeBuffer=U._bufferService.buffer,U.register(U._bufferService.buffers.onBufferActivate(function(K){return U._activeBuffer=K.activeBuffer})),U._parser.setCsiHandlerFallback(function(K,Se){U._logService.debug("Unknown CSI code: ",{identifier:U._parser.identToString(K),params:Se.toArray()})}),U._parser.setEscHandlerFallback(function(K){U._logService.debug("Unknown ESC code: ",{identifier:U._parser.identToString(K)})}),U._parser.setExecuteHandlerFallback(function(K){U._logService.debug("Unknown EXECUTE code: ",{code:K})}),U._parser.setOscHandlerFallback(function(K,Se,fe){U._logService.debug("Unknown OSC code: ",{identifier:K,action:Se,data:fe})}),U._parser.setDcsHandlerFallback(function(K,Se,fe){Se==="HOOK"&&(fe=fe.toArray()),U._logService.debug("Unknown DCS code: ",{identifier:U._parser.identToString(K),action:Se,payload:fe})}),U._parser.setPrintHandler(function(K,Se,fe){return U.print(K,Se,fe)}),U._parser.registerCsiHandler({final:"@"},function(K){return U.insertChars(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"@"},function(K){return U.scrollLeft(K)}),U._parser.registerCsiHandler({final:"A"},function(K){return U.cursorUp(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"A"},function(K){return U.scrollRight(K)}),U._parser.registerCsiHandler({final:"B"},function(K){return U.cursorDown(K)}),U._parser.registerCsiHandler({final:"C"},function(K){return U.cursorForward(K)}),U._parser.registerCsiHandler({final:"D"},function(K){return U.cursorBackward(K)}),U._parser.registerCsiHandler({final:"E"},function(K){return U.cursorNextLine(K)}),U._parser.registerCsiHandler({final:"F"},function(K){return U.cursorPrecedingLine(K)}),U._parser.registerCsiHandler({final:"G"},function(K){return U.cursorCharAbsolute(K)}),U._parser.registerCsiHandler({final:"H"},function(K){return U.cursorPosition(K)}),U._parser.registerCsiHandler({final:"I"},function(K){return U.cursorForwardTab(K)}),U._parser.registerCsiHandler({final:"J"},function(K){return U.eraseInDisplay(K)}),U._parser.registerCsiHandler({prefix:"?",final:"J"},function(K){return U.eraseInDisplay(K)}),U._parser.registerCsiHandler({final:"K"},function(K){return U.eraseInLine(K)}),U._parser.registerCsiHandler({prefix:"?",final:"K"},function(K){return U.eraseInLine(K)}),U._parser.registerCsiHandler({final:"L"},function(K){return U.insertLines(K)}),U._parser.registerCsiHandler({final:"M"},function(K){return U.deleteLines(K)}),U._parser.registerCsiHandler({final:"P"},function(K){return U.deleteChars(K)}),U._parser.registerCsiHandler({final:"S"},function(K){return U.scrollUp(K)}),U._parser.registerCsiHandler({final:"T"},function(K){return U.scrollDown(K)}),U._parser.registerCsiHandler({final:"X"},function(K){return U.eraseChars(K)}),U._parser.registerCsiHandler({final:"Z"},function(K){return U.cursorBackwardTab(K)}),U._parser.registerCsiHandler({final:"`"},function(K){return U.charPosAbsolute(K)}),U._parser.registerCsiHandler({final:"a"},function(K){return U.hPositionRelative(K)}),U._parser.registerCsiHandler({final:"b"},function(K){return U.repeatPrecedingCharacter(K)}),U._parser.registerCsiHandler({final:"c"},function(K){return U.sendDeviceAttributesPrimary(K)}),U._parser.registerCsiHandler({prefix:">",final:"c"},function(K){return U.sendDeviceAttributesSecondary(K)}),U._parser.registerCsiHandler({final:"d"},function(K){return U.linePosAbsolute(K)}),U._parser.registerCsiHandler({final:"e"},function(K){return U.vPositionRelative(K)}),U._parser.registerCsiHandler({final:"f"},function(K){return U.hVPosition(K)}),U._parser.registerCsiHandler({final:"g"},function(K){return U.tabClear(K)}),U._parser.registerCsiHandler({final:"h"},function(K){return U.setMode(K)}),U._parser.registerCsiHandler({prefix:"?",final:"h"},function(K){return U.setModePrivate(K)}),U._parser.registerCsiHandler({final:"l"},function(K){return U.resetMode(K)}),U._parser.registerCsiHandler({prefix:"?",final:"l"},function(K){return U.resetModePrivate(K)}),U._parser.registerCsiHandler({final:"m"},function(K){return U.charAttributes(K)}),U._parser.registerCsiHandler({final:"n"},function(K){return U.deviceStatus(K)}),U._parser.registerCsiHandler({prefix:"?",final:"n"},function(K){return U.deviceStatusPrivate(K)}),U._parser.registerCsiHandler({intermediates:"!",final:"p"},function(K){return U.softReset(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"q"},function(K){return U.setCursorStyle(K)}),U._parser.registerCsiHandler({final:"r"},function(K){return U.setScrollRegion(K)}),U._parser.registerCsiHandler({final:"s"},function(K){return U.saveCursor(K)}),U._parser.registerCsiHandler({final:"t"},function(K){return U.windowOptions(K)}),U._parser.registerCsiHandler({final:"u"},function(K){return U.restoreCursor(K)}),U._parser.registerCsiHandler({intermediates:"'",final:"}"},function(K){return U.insertColumns(K)}),U._parser.registerCsiHandler({intermediates:"'",final:"~"},function(K){return U.deleteColumns(K)}),U._parser.setExecuteHandler(g.C0.BEL,function(){return U.bell()}),U._parser.setExecuteHandler(g.C0.LF,function(){return U.lineFeed()}),U._parser.setExecuteHandler(g.C0.VT,function(){return U.lineFeed()}),U._parser.setExecuteHandler(g.C0.FF,function(){return U.lineFeed()}),U._parser.setExecuteHandler(g.C0.CR,function(){return U.carriageReturn()}),U._parser.setExecuteHandler(g.C0.BS,function(){return U.backspace()}),U._parser.setExecuteHandler(g.C0.HT,function(){return U.tab()}),U._parser.setExecuteHandler(g.C0.SO,function(){return U.shiftOut()}),U._parser.setExecuteHandler(g.C0.SI,function(){return U.shiftIn()}),U._parser.setExecuteHandler(g.C1.IND,function(){return U.index()}),U._parser.setExecuteHandler(g.C1.NEL,function(){return U.nextLine()}),U._parser.setExecuteHandler(g.C1.HTS,function(){return U.tabSet()}),U._parser.registerOscHandler(0,new v.OscHandler(function(K){return U.setTitle(K),U.setIconName(K),!0})),U._parser.registerOscHandler(1,new v.OscHandler(function(K){return U.setIconName(K)})),U._parser.registerOscHandler(2,new v.OscHandler(function(K){return U.setTitle(K)})),U._parser.registerOscHandler(4,new v.OscHandler(function(K){return U.setOrReportIndexedColor(K)})),U._parser.registerOscHandler(10,new v.OscHandler(function(K){return U.setOrReportFgColor(K)})),U._parser.registerOscHandler(11,new v.OscHandler(function(K){return U.setOrReportBgColor(K)})),U._parser.registerOscHandler(12,new v.OscHandler(function(K){return U.setOrReportCursorColor(K)})),U._parser.registerOscHandler(104,new v.OscHandler(function(K){return U.restoreIndexedColor(K)})),U._parser.registerOscHandler(110,new v.OscHandler(function(K){return U.restoreFgColor(K)})),U._parser.registerOscHandler(111,new v.OscHandler(function(K){return U.restoreBgColor(K)})),U._parser.registerOscHandler(112,new v.OscHandler(function(K){return U.restoreCursorColor(K)})),U._parser.registerEscHandler({final:"7"},function(){return U.saveCursor()}),U._parser.registerEscHandler({final:"8"},function(){return U.restoreCursor()}),U._parser.registerEscHandler({final:"D"},function(){return U.index()}),U._parser.registerEscHandler({final:"E"},function(){return U.nextLine()}),U._parser.registerEscHandler({final:"H"},function(){return U.tabSet()}),U._parser.registerEscHandler({final:"M"},function(){return U.reverseIndex()}),U._parser.registerEscHandler({final:"="},function(){return U.keypadApplicationMode()}),U._parser.registerEscHandler({final:">"},function(){return U.keypadNumericMode()}),U._parser.registerEscHandler({final:"c"},function(){return U.fullReset()}),U._parser.registerEscHandler({final:"n"},function(){return U.setgLevel(2)}),U._parser.registerEscHandler({final:"o"},function(){return U.setgLevel(3)}),U._parser.registerEscHandler({final:"|"},function(){return U.setgLevel(3)}),U._parser.registerEscHandler({final:"}"},function(){return U.setgLevel(2)}),U._parser.registerEscHandler({final:"~"},function(){return U.setgLevel(1)}),U._parser.registerEscHandler({intermediates:"%",final:"@"},function(){return U.selectDefaultCharset()}),U._parser.registerEscHandler({intermediates:"%",final:"G"},function(){return U.selectDefaultCharset()});var ee=function(K){q._parser.registerEscHandler({intermediates:"(",final:K},function(){return U.selectCharset("("+K)}),q._parser.registerEscHandler({intermediates:")",final:K},function(){return U.selectCharset(")"+K)}),q._parser.registerEscHandler({intermediates:"*",final:K},function(){return U.selectCharset("*"+K)}),q._parser.registerEscHandler({intermediates:"+",final:K},function(){return U.selectCharset("+"+K)}),q._parser.registerEscHandler({intermediates:"-",final:K},function(){return U.selectCharset("-"+K)}),q._parser.registerEscHandler({intermediates:".",final:K},function(){return U.selectCharset("."+K)}),q._parser.registerEscHandler({intermediates:"/",final:K},function(){return U.selectCharset("/"+K)})},q=this;for(var Y in T.CHARSETS)ee(Y);return U._parser.registerEscHandler({intermediates:"#",final:"8"},function(){return U.screenAlignmentPattern()}),U._parser.setErrorHandler(function(K){return U._logService.error("Parsing error: ",K),K}),U._parser.registerDcsHandler({intermediates:"$",final:"q"},new N(U._bufferService,U._coreService,U._logService,U._optionsService)),U}return m(B,W),Object.defineProperty(B.prototype,"onRequestBell",{get:function(){return this._onRequestBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestReset",{get:function(){return this._onRequestReset.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestSendFocus",{get:function(){return this._onRequestSendFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestSyncScrollBar",{get:function(){return this._onRequestSyncScrollBar.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestWindowsOptionsReport",{get:function(){return this._onRequestWindowsOptionsReport.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onA11yChar",{get:function(){return this._onA11yChar.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onA11yTab",{get:function(){return this._onA11yTab.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onColor",{get:function(){return this._onColor.event},enumerable:!1,configurable:!0}),B.prototype.dispose=function(){W.prototype.dispose.call(this)},B.prototype._preserveStack=function(F,j,G,$){this._parseStack.paused=!0,this._parseStack.cursorStartX=F,this._parseStack.cursorStartY=j,this._parseStack.decodedLength=G,this._parseStack.position=$},B.prototype._logSlowResolvingAsync=function(F){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([F,new Promise(function(j,G){return setTimeout(function(){return G("#SLOW_TIMEOUT")},5e3)})]).catch(function(j){if(j!=="#SLOW_TIMEOUT")throw j;console.warn("async parser handler taking longer than 5000 ms")})},B.prototype.parse=function(F,j){var G,$=this._activeBuffer.x,ne=this._activeBuffer.y,ie=0,be=this._parseStack.paused;if(be){if(G=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,j))return this._logSlowResolvingAsync(G),G;$=this._parseStack.cursorStartX,ne=this._parseStack.cursorStartY,this._parseStack.paused=!1,F.length>k&&(ie=this._parseStack.position+k)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+(typeof F=="string"?' "'+F+'"':' "'+Array.prototype.map.call(F,function(ee){return String.fromCharCode(ee)}).join("")+'"'),typeof F=="string"?F.split("").map(function(ee){return ee.charCodeAt(0)}):F),this._parseBuffer.lengthk)for(var ve=ie;ve0&&q.getWidth(this._activeBuffer.x-1)===2&&q.setCellFromCodePoint(this._activeBuffer.x-1,0,1,ee.fg,ee.bg,ee.extended);for(var Y=j;Y=ve){if(Ee){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),q=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=ve-1,ne===2)continue}if(U&&(q.insertCells(this._activeBuffer.x,ne,this._activeBuffer.getNullCell(ee),ee),q.getWidth(ve-1)===2&&q.setCellFromCodePoint(ve-1,o.NULL_CELL_CODE,o.NULL_CELL_WIDTH,ee.fg,ee.bg,ee.extended)),q.setCellFromCodePoint(this._activeBuffer.x++,$,ne,ee.fg,ee.bg,ee.extended),ne>0)for(;--ne;)q.setCellFromCodePoint(this._activeBuffer.x++,0,0,ee.fg,ee.bg,ee.extended)}else q.getWidth(this._activeBuffer.x-1)?q.addCodepointToCell(this._activeBuffer.x-1,$):q.addCodepointToCell(this._activeBuffer.x-2,$)}G-j>0&&(q.loadCell(this._activeBuffer.x-1,this._workCell),this._workCell.getWidth()===2||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&q.getWidth(this._activeBuffer.x)===0&&!q.hasContent(this._activeBuffer.x)&&q.setCellFromCodePoint(this._activeBuffer.x,0,1,ee.fg,ee.bg,ee.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype.registerCsiHandler=function(F,j){var G=this;return F.final!=="t"||F.prefix||F.intermediates?this._parser.registerCsiHandler(F,j):this._parser.registerCsiHandler(F,function($){return!A($.params[0],G._optionsService.rawOptions.windowOptions)||j($)})},B.prototype.registerDcsHandler=function(F,j){return this._parser.registerDcsHandler(F,new b.DcsHandler(j))},B.prototype.registerEscHandler=function(F,j){return this._parser.registerEscHandler(F,j)},B.prototype.registerOscHandler=function(F,j){return this._parser.registerOscHandler(F,new v.OscHandler(j))},B.prototype.bell=function(){return this._onRequestBell.fire(),!0},B.prototype.lineFeed=function(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0},B.prototype.carriageReturn=function(){return this._activeBuffer.x=0,!0},B.prototype.backspace=function(){var F;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))===null||F===void 0?void 0:F.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;var j=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);j.hasWidth(this._activeBuffer.x)&&!j.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0},B.prototype.tab=function(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;var F=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-F),!0},B.prototype.shiftOut=function(){return this._charsetService.setgLevel(1),!0},B.prototype.shiftIn=function(){return this._charsetService.setgLevel(0),!0},B.prototype._restrictCursor=function(F){F===void 0&&(F=this._bufferService.cols-1),this._activeBuffer.x=Math.min(F,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype._setCursor=function(F,j){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=F,this._activeBuffer.y=this._activeBuffer.scrollTop+j):(this._activeBuffer.x=F,this._activeBuffer.y=j),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype._moveCursor=function(F,j){this._restrictCursor(),this._setCursor(this._activeBuffer.x+F,this._activeBuffer.y+j)},B.prototype.cursorUp=function(F){var j=this._activeBuffer.y-this._activeBuffer.scrollTop;return j>=0?this._moveCursor(0,-Math.min(j,F.params[0]||1)):this._moveCursor(0,-(F.params[0]||1)),!0},B.prototype.cursorDown=function(F){var j=this._activeBuffer.scrollBottom-this._activeBuffer.y;return j>=0?this._moveCursor(0,Math.min(j,F.params[0]||1)):this._moveCursor(0,F.params[0]||1),!0},B.prototype.cursorForward=function(F){return this._moveCursor(F.params[0]||1,0),!0},B.prototype.cursorBackward=function(F){return this._moveCursor(-(F.params[0]||1),0),!0},B.prototype.cursorNextLine=function(F){return this.cursorDown(F),this._activeBuffer.x=0,!0},B.prototype.cursorPrecedingLine=function(F){return this.cursorUp(F),this._activeBuffer.x=0,!0},B.prototype.cursorCharAbsolute=function(F){return this._setCursor((F.params[0]||1)-1,this._activeBuffer.y),!0},B.prototype.cursorPosition=function(F){return this._setCursor(F.length>=2?(F.params[1]||1)-1:0,(F.params[0]||1)-1),!0},B.prototype.charPosAbsolute=function(F){return this._setCursor((F.params[0]||1)-1,this._activeBuffer.y),!0},B.prototype.hPositionRelative=function(F){return this._moveCursor(F.params[0]||1,0),!0},B.prototype.linePosAbsolute=function(F){return this._setCursor(this._activeBuffer.x,(F.params[0]||1)-1),!0},B.prototype.vPositionRelative=function(F){return this._moveCursor(0,F.params[0]||1),!0},B.prototype.hVPosition=function(F){return this.cursorPosition(F),!0},B.prototype.tabClear=function(F){var j=F.params[0];return j===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:j===3&&(this._activeBuffer.tabs={}),!0},B.prototype.cursorForwardTab=function(F){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var j=F.params[0]||1;j--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0},B.prototype.cursorBackwardTab=function(F){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var j=F.params[0]||1;j--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0},B.prototype._eraseInBufferLine=function(F,j,G,$){$===void 0&&($=!1);var ne=this._activeBuffer.lines.get(this._activeBuffer.ybase+F);ne.replaceCells(j,G,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),$&&(ne.isWrapped=!1)},B.prototype._resetBufferLine=function(F){var j=this._activeBuffer.lines.get(this._activeBuffer.ybase+F);j.fill(this._activeBuffer.getNullCell(this._eraseAttrData())),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+F),j.isWrapped=!1},B.prototype.eraseInDisplay=function(F){var j;switch(this._restrictCursor(this._bufferService.cols),F.params[0]){case 0:for(j=this._activeBuffer.y,this._dirtyRowService.markDirty(j),this._eraseInBufferLine(j++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);j=this._bufferService.cols&&(this._activeBuffer.lines.get(j+1).isWrapped=!1);j--;)this._resetBufferLine(j);this._dirtyRowService.markDirty(0);break;case 2:for(j=this._bufferService.rows,this._dirtyRowService.markDirty(j-1);j--;)this._resetBufferLine(j);this._dirtyRowService.markDirty(0);break;case 3:var G=this._activeBuffer.lines.length-this._bufferService.rows;G>0&&(this._activeBuffer.lines.trimStart(G),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-G,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-G,0),this._onScroll.fire(0))}return!0},B.prototype.eraseInLine=function(F){switch(this._restrictCursor(this._bufferService.cols),F.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0},B.prototype.insertLines=function(F){this._restrictCursor();var j=F.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(g.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(g.C0.ESC+"[?6c")),!0},B.prototype.sendDeviceAttributesSecondary=function(F){return F.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(g.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(g.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(F.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(g.C0.ESC+"[>83;40003;0c")),!0},B.prototype._is=function(F){return(this._optionsService.rawOptions.termName+"").indexOf(F)===0},B.prototype.setMode=function(F){for(var j=0;j=2||$[1]===2&&ie+ne>=5)break;$[1]&&(ne=1)}while(++ie+j5)&&(F=1),j.extended.underlineStyle=F,j.fg|=268435456,F===0&&(j.fg&=-268435457),j.updateExtended()},B.prototype.charAttributes=function(F){if(F.length===1&&F.params[0]===0)return this._curAttrData.fg=d.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=d.DEFAULT_ATTR_DATA.bg,!0;for(var j,G=F.length,$=this._curAttrData,ne=0;ne=30&&j<=37?($.fg&=-50331904,$.fg|=16777216|j-30):j>=40&&j<=47?($.bg&=-50331904,$.bg|=16777216|j-40):j>=90&&j<=97?($.fg&=-50331904,$.fg|=16777224|j-90):j>=100&&j<=107?($.bg&=-50331904,$.bg|=16777224|j-100):j===0?($.fg=d.DEFAULT_ATTR_DATA.fg,$.bg=d.DEFAULT_ATTR_DATA.bg):j===1?$.fg|=134217728:j===3?$.bg|=67108864:j===4?($.fg|=268435456,this._processUnderline(F.hasSubParams(ne)?F.getSubParams(ne)[0]:1,$)):j===5?$.fg|=536870912:j===7?$.fg|=67108864:j===8?$.fg|=1073741824:j===9?$.fg|=2147483648:j===2?$.bg|=134217728:j===21?this._processUnderline(2,$):j===22?($.fg&=-134217729,$.bg&=-134217729):j===23?$.bg&=-67108865:j===24?$.fg&=-268435457:j===25?$.fg&=-536870913:j===27?$.fg&=-67108865:j===28?$.fg&=-1073741825:j===29?$.fg&=2147483647:j===39?($.fg&=-67108864,$.fg|=16777215&d.DEFAULT_ATTR_DATA.fg):j===49?($.bg&=-67108864,$.bg|=16777215&d.DEFAULT_ATTR_DATA.bg):j===38||j===48||j===58?ne+=this._extractColor(F,ne,$):j===59?($.extended=$.extended.clone(),$.extended.underlineColor=-1,$.updateExtended()):j===100?($.fg&=-67108864,$.fg|=16777215&d.DEFAULT_ATTR_DATA.fg,$.bg&=-67108864,$.bg|=16777215&d.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",j);return!0},B.prototype.deviceStatus=function(F){switch(F.params[0]){case 5:this._coreService.triggerDataEvent(g.C0.ESC+"[0n");break;case 6:var j=this._activeBuffer.y+1,G=this._activeBuffer.x+1;this._coreService.triggerDataEvent(g.C0.ESC+"["+j+";"+G+"R")}return!0},B.prototype.deviceStatusPrivate=function(F){if(F.params[0]===6){var j=this._activeBuffer.y+1,G=this._activeBuffer.x+1;this._coreService.triggerDataEvent(g.C0.ESC+"[?"+j+";"+G+"R")}return!0},B.prototype.softReset=function(F){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=d.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0},B.prototype.setCursorStyle=function(F){var j=F.params[0]||1;switch(j){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var G=j%2==1;return this._optionsService.options.cursorBlink=G,!0},B.prototype.setScrollRegion=function(F){var j,G=F.params[0]||1;return(F.length<2||(j=F.params[1])>this._bufferService.rows||j===0)&&(j=this._bufferService.rows),j>G&&(this._activeBuffer.scrollTop=G-1,this._activeBuffer.scrollBottom=j-1,this._setCursor(0,0)),!0},B.prototype.windowOptions=function(F){if(!A(F.params[0],this._optionsService.rawOptions.windowOptions))return!0;var j=F.length>1?F.params[1]:0;switch(F.params[0]){case 14:j!==2&&this._onRequestWindowsOptionsReport.fire(_.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(_.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(g.C0.ESC+"[8;"+this._bufferService.rows+";"+this._bufferService.cols+"t");break;case 22:j!==0&&j!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),j!==0&&j!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:j!==0&&j!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),j!==0&&j!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0},B.prototype.saveCursor=function(F){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0},B.prototype.restoreCursor=function(F){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0},B.prototype.setTitle=function(F){return this._windowTitle=F,this._onTitleChange.fire(F),!0},B.prototype.setIconName=function(F){return this._iconName=F,!0},B.prototype.setOrReportIndexedColor=function(F){for(var j=[],G=F.split(";");G.length>1;){var $=G.shift(),ne=G.shift();if(/^\d+$/.exec($)){var ie=parseInt($);if(0<=ie&&ie<256)if(ne==="?")j.push({type:0,index:ie});else{var be=(0,E.parseColor)(ne);be&&j.push({type:1,index:ie,color:be})}}}return j.length&&this._onColor.fire(j),!0},B.prototype._setOrReportSpecialColor=function(F,j){for(var G=F.split(";"),$=0;$=this._specialColors.length);++$,++j)if(G[$]==="?")this._onColor.fire([{type:0,index:this._specialColors[j]}]);else{var ne=(0,E.parseColor)(G[$]);ne&&this._onColor.fire([{type:1,index:this._specialColors[j],color:ne}])}return!0},B.prototype.setOrReportFgColor=function(F){return this._setOrReportSpecialColor(F,0)},B.prototype.setOrReportBgColor=function(F){return this._setOrReportSpecialColor(F,1)},B.prototype.setOrReportCursorColor=function(F){return this._setOrReportSpecialColor(F,2)},B.prototype.restoreIndexedColor=function(F){if(!F)return this._onColor.fire([{type:2}]),!0;for(var j=[],G=F.split(";"),$=0;$=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0},B.prototype.tabSet=function(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0},B.prototype.reverseIndex=function(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){var F=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,F,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0},B.prototype.fullReset=function(){return this._parser.reset(),this._onRequestReset.fire(),!0},B.prototype.reset=function(){this._curAttrData=d.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=d.DEFAULT_ATTR_DATA.clone()},B.prototype._eraseAttrData=function(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal},B.prototype.setgLevel=function(F){return this._charsetService.setgLevel(F),!0},B.prototype.screenAlignmentPattern=function(){var F=new l.CellData;F.content=1<<22|"E".charCodeAt(0),F.fg=this._curAttrData.fg,F.bg=this._curAttrData.bg,this._setCursor(0,0);for(var j=0;j{Object.defineProperty(h,"__esModule",{value:!0}),h.getDisposeArrayDisposable=h.disposeArray=h.Disposable=void 0;var L=function(){function m(){this._disposables=[],this._isDisposed=!1}return m.prototype.dispose=function(){this._isDisposed=!0;for(var _=0,g=this._disposables;_{Object.defineProperty(h,"__esModule",{value:!0}),h.isLinux=h.isWindows=h.isIphone=h.isIpad=h.isMac=h.isSafari=h.isLegacyEdge=h.isFirefox=void 0;var L=typeof navigator>"u",y=L?"node":navigator.userAgent,m=L?"node":navigator.platform;h.isFirefox=y.includes("Firefox"),h.isLegacyEdge=y.includes("Edge"),h.isSafari=/^((?!chrome|android).)*safari/i.test(y),h.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(m),h.isIpad=m==="iPad",h.isIphone=m==="iPhone",h.isWindows=["Windows","Win16","Win32","WinCE"].includes(m),h.isLinux=m.indexOf("Linux")>=0},8273:(R,h)=>{function L(y,m,_,g){if(_===void 0&&(_=0),g===void 0&&(g=y.length),_>=y.length)return y;_=(y.length+_)%y.length,g=g>=y.length?y.length:(y.length+g)%y.length;for(var T=_;T{Object.defineProperty(h,"__esModule",{value:!0}),h.updateWindowsModeWrappedState=void 0;var y=L(643);h.updateWindowsModeWrappedState=function(m){var _=m.buffer.lines.get(m.buffer.ybase+m.buffer.y-1),g=_?.get(m.cols-1),T=m.buffer.lines.get(m.buffer.ybase+m.buffer.y);T&&g&&(T.isWrapped=g[y.CHAR_DATA_CODE_INDEX]!==y.NULL_CELL_CODE&&g[y.CHAR_DATA_CODE_INDEX]!==y.WHITESPACE_CELL_CODE)}},3734:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.ExtendedAttrs=h.AttributeData=void 0;var L=function(){function m(){this.fg=0,this.bg=0,this.extended=new y}return m.toColorRGB=function(_){return[_>>>16&255,_>>>8&255,255&_]},m.fromColorRGB=function(_){return(255&_[0])<<16|(255&_[1])<<8|255&_[2]},m.prototype.clone=function(){var _=new m;return _.fg=this.fg,_.bg=this.bg,_.extended=this.extended.clone(),_},m.prototype.isInverse=function(){return 67108864&this.fg},m.prototype.isBold=function(){return 134217728&this.fg},m.prototype.isUnderline=function(){return 268435456&this.fg},m.prototype.isBlink=function(){return 536870912&this.fg},m.prototype.isInvisible=function(){return 1073741824&this.fg},m.prototype.isItalic=function(){return 67108864&this.bg},m.prototype.isDim=function(){return 134217728&this.bg},m.prototype.isStrikethrough=function(){return 2147483648&this.fg},m.prototype.getFgColorMode=function(){return 50331648&this.fg},m.prototype.getBgColorMode=function(){return 50331648&this.bg},m.prototype.isFgRGB=function(){return(50331648&this.fg)==50331648},m.prototype.isBgRGB=function(){return(50331648&this.bg)==50331648},m.prototype.isFgPalette=function(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432},m.prototype.isBgPalette=function(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432},m.prototype.isFgDefault=function(){return(50331648&this.fg)==0},m.prototype.isBgDefault=function(){return(50331648&this.bg)==0},m.prototype.isAttributeDefault=function(){return this.fg===0&&this.bg===0},m.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},m.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},m.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},m.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},m.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},m.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},m.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()},m.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()},m.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()},m.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},m}();h.AttributeData=L;var y=function(){function m(_,g){_===void 0&&(_=0),g===void 0&&(g=-1),this.underlineStyle=_,this.underlineColor=g}return m.prototype.clone=function(){return new m(this.underlineStyle,this.underlineColor)},m.prototype.isEmpty=function(){return this.underlineStyle===0},m}();h.ExtendedAttrs=y},9092:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.BufferStringIterator=h.Buffer=h.MAX_BUFFER_SIZE=void 0;var y=L(6349),m=L(8437),_=L(511),g=L(643),T=L(4634),w=L(4863),c=L(7116),p=L(3734);h.MAX_BUFFER_SIZE=4294967295;var C=function(){function s(o,l,a){this._hasScrollback=o,this._optionsService=l,this._bufferService=a,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=m.DEFAULT_ATTR_DATA.clone(),this.savedCharset=c.DEFAULT_CHARSET,this.markers=[],this._nullCell=_.CellData.fromCharData([0,g.NULL_CELL_CHAR,g.NULL_CELL_WIDTH,g.NULL_CELL_CODE]),this._whitespaceCell=_.CellData.fromCharData([0,g.WHITESPACE_CELL_CHAR,g.WHITESPACE_CELL_WIDTH,g.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new y.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}return s.prototype.getNullCell=function(o){return o?(this._nullCell.fg=o.fg,this._nullCell.bg=o.bg,this._nullCell.extended=o.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new p.ExtendedAttrs),this._nullCell},s.prototype.getWhitespaceCell=function(o){return o?(this._whitespaceCell.fg=o.fg,this._whitespaceCell.bg=o.bg,this._whitespaceCell.extended=o.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new p.ExtendedAttrs),this._whitespaceCell},s.prototype.getBlankLine=function(o,l){return new m.BufferLine(this._bufferService.cols,this.getNullCell(o),l)},Object.defineProperty(s.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>this._rows},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isCursorInViewport",{get:function(){var o=this.ybase+this.y-this.ydisp;return o>=0&&oh.MAX_BUFFER_SIZE?h.MAX_BUFFER_SIZE:l},s.prototype.fillViewportRows=function(o){if(this.lines.length===0){o===void 0&&(o=m.DEFAULT_ATTR_DATA);for(var l=this._rows;l--;)this.lines.push(this.getBlankLine(o))}},s.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new y.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},s.prototype.resize=function(o,l){var a=this.getNullCell(m.DEFAULT_ATTR_DATA),u=this._getCorrectBufferLength(l);if(u>this.lines.maxLength&&(this.lines.maxLength=u),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+b+1?(this.ybase--,b++,this.ydisp>0&&this.ydisp--):this.lines.push(new m.BufferLine(o,a)));else for(E=this._rows;E>l;E--)this.lines.length>l+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(u0&&(this.lines.trimStart(O),this.ybase=Math.max(this.ybase-O,0),this.ydisp=Math.max(this.ydisp-O,0),this.savedY=Math.max(this.savedY-O,0)),this.lines.maxLength=u}this.x=Math.min(this.x,o-1),this.y=Math.min(this.y,l-1),b&&(this.y+=b),this.savedX=Math.min(this.savedX,o-1),this.scrollTop=0}if(this.scrollBottom=l-1,this._isReflowEnabled&&(this._reflow(o,l),this._cols>o))for(v=0;vthis._cols?this._reflowLarger(o,l):this._reflowSmaller(o,l))},s.prototype._reflowLarger=function(o,l){var a=(0,T.reflowLargerGetLinesToRemove)(this.lines,this._cols,o,this.ybase+this.y,this.getNullCell(m.DEFAULT_ATTR_DATA));if(a.length>0){var u=(0,T.reflowLargerCreateNewLayout)(this.lines,a);(0,T.reflowLargerApplyNewLayout)(this.lines,u.layout),this._reflowLargerAdjustViewport(o,l,u.countRemoved)}},s.prototype._reflowLargerAdjustViewport=function(o,l,a){for(var u=this.getNullCell(m.DEFAULT_ATTR_DATA),v=a;v-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;b--){var E=this.lines.get(b);if(!(!E||!E.isWrapped&&E.getTrimmedLength()<=o)){for(var O=[E];E.isWrapped&&b>0;)E=this.lines.get(--b),O.unshift(E);var k=this.ybase+this.y;if(!(k>=b&&k0&&(u.push({start:b+O.length+v,newLines:B}),v+=B.length),O.push.apply(O,B);var G=D.length-1,$=D[G];$===0&&($=D[--G]);for(var ne=O.length-W-1,ie=N;ne>=0;){var be=Math.min(ie,$);if(O[G]===void 0)break;if(O[G].copyCellsFrom(O[ne],ie-be,$-be,be,!0),($-=be)==0&&($=D[--G]),(ie-=be)==0){ne--;var ve=Math.max(ne,0);ie=(0,T.getWrappedLineTrimmedLength)(O,ve,this._cols)}}for(F=0;F0;)this.ybase===0?this.y0){var U=[],ee=[];for(F=0;F=0;F--)if(Se&&Se.start>Y+fe){for(var Ce=Se.newLines.length-1;Ce>=0;Ce--)this.lines.set(F--,Se.newLines[Ce]);F++,U.push({index:Y+1,amount:Se.newLines.length}),fe+=Se.newLines.length,Se=u[++K]}else this.lines.set(F,ee[Y--]);var De=0;for(F=U.length-1;F>=0;F--)U[F].index+=De,this.lines.onInsertEmitter.fire(U[F]),De+=U[F].amount;var Fe=Math.max(0,q+v-this.lines.maxLength);Fe>0&&this.lines.onTrimEmitter.fire(Fe)}},s.prototype.stringIndexToBufferIndex=function(o,l,a){for(a===void 0&&(a=!1);l;){var u=this.lines.get(o);if(!u)return[-1,-1];for(var v=a?u.getTrimmedLength():u.length,b=0;b0&&this.lines.get(l).isWrapped;)l--;for(;a+10;);return o>=this._cols?this._cols-1:o<0?0:o},s.prototype.nextStop=function(o){for(o==null&&(o=this.x);!this.tabs[++o]&&o=this._cols?this._cols-1:o<0?0:o},s.prototype.clearMarkers=function(o){if(this._isClearing=!0,o!==void 0)for(var l=0;l=u.index&&(a.line+=u.amount)})),a.register(this.lines.onDelete(function(u){a.line>=u.index&&a.lineu.index&&(a.line-=u.amount)})),a.register(a.onDispose(function(){return l._removeMarker(a)})),a},s.prototype._removeMarker=function(o){this._isClearing||this.markers.splice(this.markers.indexOf(o),1)},s.prototype.iterator=function(o,l,a,u,v){return new d(this,o,l,a,u,v)},s}();h.Buffer=C;var d=function(){function s(o,l,a,u,v,b){a===void 0&&(a=0),u===void 0&&(u=o.lines.length),v===void 0&&(v=0),b===void 0&&(b=0),this._buffer=o,this._trimRight=l,this._startIndex=a,this._endIndex=u,this._startOverscan=v,this._endOverscan=b,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return s.prototype.hasNext=function(){return this._currentthis._endIndex+this._endOverscan&&(o.last=this._endIndex+this._endOverscan),o.first=Math.max(o.first,0),o.last=Math.min(o.last,this._buffer.lines.length);for(var l="",a=o.first;a<=o.last;++a)l+=this._buffer.translateBufferLineToString(a,this._trimRight);return this._current=o.last+1,{range:o,content:l}},s}();h.BufferStringIterator=d},8437:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.BufferLine=h.DEFAULT_ATTR_DATA=void 0;var y=L(482),m=L(643),_=L(511),g=L(3734);h.DEFAULT_ATTR_DATA=Object.freeze(new g.AttributeData);var T=function(){function w(c,p,C){C===void 0&&(C=!1),this.isWrapped=C,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*c);for(var d=p||_.CellData.fromCharData([0,m.NULL_CELL_CHAR,m.NULL_CELL_WIDTH,m.NULL_CELL_CODE]),s=0;s>22,2097152&p?this._combined[c].charCodeAt(this._combined[c].length-1):C]},w.prototype.set=function(c,p){this._data[3*c+1]=p[m.CHAR_DATA_ATTR_INDEX],p[m.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[c]=p[1],this._data[3*c+0]=2097152|c|p[m.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*c+0]=p[m.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[m.CHAR_DATA_WIDTH_INDEX]<<22},w.prototype.getWidth=function(c){return this._data[3*c+0]>>22},w.prototype.hasWidth=function(c){return 12582912&this._data[3*c+0]},w.prototype.getFg=function(c){return this._data[3*c+1]},w.prototype.getBg=function(c){return this._data[3*c+2]},w.prototype.hasContent=function(c){return 4194303&this._data[3*c+0]},w.prototype.getCodePoint=function(c){var p=this._data[3*c+0];return 2097152&p?this._combined[c].charCodeAt(this._combined[c].length-1):2097151&p},w.prototype.isCombined=function(c){return 2097152&this._data[3*c+0]},w.prototype.getString=function(c){var p=this._data[3*c+0];return 2097152&p?this._combined[c]:2097151&p?(0,y.stringFromCodePoint)(2097151&p):""},w.prototype.loadCell=function(c,p){var C=3*c;return p.content=this._data[C+0],p.fg=this._data[C+1],p.bg=this._data[C+2],2097152&p.content&&(p.combinedData=this._combined[c]),268435456&p.bg&&(p.extended=this._extendedAttrs[c]),p},w.prototype.setCell=function(c,p){2097152&p.content&&(this._combined[c]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[c]=p.extended),this._data[3*c+0]=p.content,this._data[3*c+1]=p.fg,this._data[3*c+2]=p.bg},w.prototype.setCellFromCodePoint=function(c,p,C,d,s,o){268435456&s&&(this._extendedAttrs[c]=o),this._data[3*c+0]=p|C<<22,this._data[3*c+1]=d,this._data[3*c+2]=s},w.prototype.addCodepointToCell=function(c,p){var C=this._data[3*c+0];2097152&C?this._combined[c]+=(0,y.stringFromCodePoint)(p):(2097151&C?(this._combined[c]=(0,y.stringFromCodePoint)(2097151&C)+(0,y.stringFromCodePoint)(p),C&=-2097152,C|=2097152):C=p|1<<22,this._data[3*c+0]=C)},w.prototype.insertCells=function(c,p,C,d){if((c%=this.length)&&this.getWidth(c-1)===2&&this.setCellFromCodePoint(c-1,0,1,d?.fg||0,d?.bg||0,d?.extended||new g.ExtendedAttrs),p=0;--o)this.setCell(c+p+o,this.loadCell(c+o,s));for(o=0;othis.length){var C=new Uint32Array(3*c);this.length&&(3*c=c&&delete this._combined[o]}}else this._data=new Uint32Array(0),this._combined={};this.length=c}},w.prototype.fill=function(c){this._combined={},this._extendedAttrs={};for(var p=0;p=0;--c)if(4194303&this._data[3*c+0])return c+(this._data[3*c+0]>>22);return 0},w.prototype.copyCellsFrom=function(c,p,C,d,s){var o=c._data;if(s)for(var l=d-1;l>=0;l--)for(var a=0;a<3;a++)this._data[3*(C+l)+a]=o[3*(p+l)+a];else for(l=0;l=p&&(this._combined[v-p+C]=c._combined[v])}},w.prototype.translateToString=function(c,p,C){c===void 0&&(c=!1),p===void 0&&(p=0),C===void 0&&(C=this.length),c&&(C=Math.min(C,this.getTrimmedLength()));for(var d="";p>22||1}return d},w}();h.BufferLine=T},4841:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.getRangeLength=void 0,h.getRangeLength=function(L,y){if(L.start.y>L.end.y)throw new Error("Buffer range end ("+L.end.x+", "+L.end.y+") cannot be before start ("+L.start.x+", "+L.start.y+")");return y*(L.end.y-L.start.y)+(L.end.x-L.start.x+1)}},4634:(R,h)=>{function L(y,m,_){if(m===y.length-1)return y[m].getTrimmedLength();var g=!y[m].hasContent(_-1)&&y[m].getWidth(_-1)===1,T=y[m+1].getWidth(0)===2;return g&&T?_-1:_}Object.defineProperty(h,"__esModule",{value:!0}),h.getWrappedLineTrimmedLength=h.reflowSmallerGetNewLineLengths=h.reflowLargerApplyNewLayout=h.reflowLargerCreateNewLayout=h.reflowLargerGetLinesToRemove=void 0,h.reflowLargerGetLinesToRemove=function(y,m,_,g,T){for(var w=[],c=0;c=c&&g0&&(k>s||d[k].getTrimmedLength()===0);k--)O++;O>0&&(w.push(c+d.length-O),w.push(O)),c+=d.length-1}}}return w},h.reflowLargerCreateNewLayout=function(y,m){for(var _=[],g=0,T=m[g],w=0,c=0;cC&&(w-=C,c++);var d=y[c].getWidth(w-1)===2;d&&w--;var s=d?_-1:_;g.push(s),p+=s}return g},h.getWrappedLineTrimmedLength=L},5295:function(R,h,L){var y,m=this&&this.__extends||(y=function(w,c){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,C){p.__proto__=C}||function(p,C){for(var d in C)Object.prototype.hasOwnProperty.call(C,d)&&(p[d]=C[d])},y(w,c)},function(w,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function p(){this.constructor=w}y(w,c),w.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)});Object.defineProperty(h,"__esModule",{value:!0}),h.BufferSet=void 0;var _=L(9092),g=L(8460),T=function(w){function c(p,C){var d=w.call(this)||this;return d._optionsService=p,d._bufferService=C,d._onBufferActivate=d.register(new g.EventEmitter),d.reset(),d}return m(c,w),Object.defineProperty(c.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!1,configurable:!0}),c.prototype.reset=function(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()},Object.defineProperty(c.prototype,"alt",{get:function(){return this._alt},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"normal",{get:function(){return this._normal},enumerable:!1,configurable:!0}),c.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},c.prototype.activateAltBuffer=function(p){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(p),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},c.prototype.resize=function(p,C){this._normal.resize(p,C),this._alt.resize(p,C)},c.prototype.setupTabStops=function(p){this._normal.setupTabStops(p),this._alt.setupTabStops(p)},c}(L(844).Disposable);h.BufferSet=T},511:function(R,h,L){var y,m=this&&this.__extends||(y=function(c,p){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,d){C.__proto__=d}||function(C,d){for(var s in d)Object.prototype.hasOwnProperty.call(d,s)&&(C[s]=d[s])},y(c,p)},function(c,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");function C(){this.constructor=c}y(c,p),c.prototype=p===null?Object.create(p):(C.prototype=p.prototype,new C)});Object.defineProperty(h,"__esModule",{value:!0}),h.CellData=void 0;var _=L(482),g=L(643),T=L(3734),w=function(c){function p(){var C=c!==null&&c.apply(this,arguments)||this;return C.content=0,C.fg=0,C.bg=0,C.extended=new T.ExtendedAttrs,C.combinedData="",C}return m(p,c),p.fromCharData=function(C){var d=new p;return d.setFromCharData(C),d},p.prototype.isCombined=function(){return 2097152&this.content},p.prototype.getWidth=function(){return this.content>>22},p.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,_.stringFromCodePoint)(2097151&this.content):""},p.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},p.prototype.setFromCharData=function(C){this.fg=C[g.CHAR_DATA_ATTR_INDEX],this.bg=0;var d=!1;if(C[g.CHAR_DATA_CHAR_INDEX].length>2)d=!0;else if(C[g.CHAR_DATA_CHAR_INDEX].length===2){var s=C[g.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=s&&s<=56319){var o=C[g.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=o&&o<=57343?this.content=1024*(s-55296)+o-56320+65536|C[g.CHAR_DATA_WIDTH_INDEX]<<22:d=!0}else d=!0}else this.content=C[g.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|C[g.CHAR_DATA_WIDTH_INDEX]<<22;d&&(this.combinedData=C[g.CHAR_DATA_CHAR_INDEX],this.content=2097152|C[g.CHAR_DATA_WIDTH_INDEX]<<22)},p.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},p}(T.AttributeData);h.CellData=w},643:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.WHITESPACE_CELL_CODE=h.WHITESPACE_CELL_WIDTH=h.WHITESPACE_CELL_CHAR=h.NULL_CELL_CODE=h.NULL_CELL_WIDTH=h.NULL_CELL_CHAR=h.CHAR_DATA_CODE_INDEX=h.CHAR_DATA_WIDTH_INDEX=h.CHAR_DATA_CHAR_INDEX=h.CHAR_DATA_ATTR_INDEX=h.DEFAULT_ATTR=h.DEFAULT_COLOR=void 0,h.DEFAULT_COLOR=256,h.DEFAULT_ATTR=256|h.DEFAULT_COLOR<<9,h.CHAR_DATA_ATTR_INDEX=0,h.CHAR_DATA_CHAR_INDEX=1,h.CHAR_DATA_WIDTH_INDEX=2,h.CHAR_DATA_CODE_INDEX=3,h.NULL_CELL_CHAR="",h.NULL_CELL_WIDTH=1,h.NULL_CELL_CODE=0,h.WHITESPACE_CELL_CHAR=" ",h.WHITESPACE_CELL_WIDTH=1,h.WHITESPACE_CELL_CODE=32},4863:function(R,h,L){var y,m=this&&this.__extends||(y=function(T,w){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var C in p)Object.prototype.hasOwnProperty.call(p,C)&&(c[C]=p[C])},y(T,w)},function(T,w){if(typeof w!="function"&&w!==null)throw new TypeError("Class extends value "+String(w)+" is not a constructor or null");function c(){this.constructor=T}y(T,w),T.prototype=w===null?Object.create(w):(c.prototype=w.prototype,new c)});Object.defineProperty(h,"__esModule",{value:!0}),h.Marker=void 0;var _=L(8460),g=function(T){function w(c){var p=T.call(this)||this;return p.line=c,p._id=w._nextId++,p.isDisposed=!1,p._onDispose=new _.EventEmitter,p}return m(w,T),Object.defineProperty(w.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(w.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!1,configurable:!0}),w.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),T.prototype.dispose.call(this))},w._nextId=1,w}(L(844).Disposable);h.Marker=g},7116:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.DEFAULT_CHARSET=h.CHARSETS=void 0,h.CHARSETS={},h.DEFAULT_CHARSET=h.CHARSETS.B,h.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},h.CHARSETS.A={"#":"\xA3"},h.CHARSETS.B=void 0,h.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},h.CHARSETS.C=h.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},h.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},h.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},h.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},h.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},h.CHARSETS.E=h.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},h.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},h.CHARSETS.H=h.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},h.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},2584:(R,h)=>{var L,y;Object.defineProperty(h,"__esModule",{value:!0}),h.C1=h.C0=void 0,(y=h.C0||(h.C0={})).NUL="\0",y.SOH="",y.STX="",y.ETX="",y.EOT="",y.ENQ="",y.ACK="",y.BEL="\x07",y.BS="\b",y.HT=" ",y.LF=` -`,y.VT="\v",y.FF="\f",y.CR="\r",y.SO="",y.SI="",y.DLE="",y.DC1="",y.DC2="",y.DC3="",y.DC4="",y.NAK="",y.SYN="",y.ETB="",y.CAN="",y.EM="",y.SUB="",y.ESC="\x1B",y.FS="",y.GS="",y.RS="",y.US="",y.SP=" ",y.DEL="\x7F",(L=h.C1||(h.C1={})).PAD="\x80",L.HOP="\x81",L.BPH="\x82",L.NBH="\x83",L.IND="\x84",L.NEL="\x85",L.SSA="\x86",L.ESA="\x87",L.HTS="\x88",L.HTJ="\x89",L.VTS="\x8A",L.PLD="\x8B",L.PLU="\x8C",L.RI="\x8D",L.SS2="\x8E",L.SS3="\x8F",L.DCS="\x90",L.PU1="\x91",L.PU2="\x92",L.STS="\x93",L.CCH="\x94",L.MW="\x95",L.SPA="\x96",L.EPA="\x97",L.SOS="\x98",L.SGCI="\x99",L.SCI="\x9A",L.CSI="\x9B",L.ST="\x9C",L.OSC="\x9D",L.PM="\x9E",L.APC="\x9F"},7399:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.evaluateKeyboardEvent=void 0;var y=L(2584),m={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};h.evaluateKeyboardEvent=function(_,g,T,w){var c={type:0,cancel:!1,key:void 0},p=(_.shiftKey?1:0)|(_.altKey?2:0)|(_.ctrlKey?4:0)|(_.metaKey?8:0);switch(_.keyCode){case 0:_.key==="UIKeyInputUpArrow"?c.key=g?y.C0.ESC+"OA":y.C0.ESC+"[A":_.key==="UIKeyInputLeftArrow"?c.key=g?y.C0.ESC+"OD":y.C0.ESC+"[D":_.key==="UIKeyInputRightArrow"?c.key=g?y.C0.ESC+"OC":y.C0.ESC+"[C":_.key==="UIKeyInputDownArrow"&&(c.key=g?y.C0.ESC+"OB":y.C0.ESC+"[B");break;case 8:if(_.shiftKey){c.key=y.C0.BS;break}if(_.altKey){c.key=y.C0.ESC+y.C0.DEL;break}c.key=y.C0.DEL;break;case 9:if(_.shiftKey){c.key=y.C0.ESC+"[Z";break}c.key=y.C0.HT,c.cancel=!0;break;case 13:c.key=_.altKey?y.C0.ESC+y.C0.CR:y.C0.CR,c.cancel=!0;break;case 27:c.key=y.C0.ESC,_.altKey&&(c.key=y.C0.ESC+y.C0.ESC),c.cancel=!0;break;case 37:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"D",c.key===y.C0.ESC+"[1;3D"&&(c.key=y.C0.ESC+(T?"b":"[1;5D"))):c.key=g?y.C0.ESC+"OD":y.C0.ESC+"[D";break;case 39:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"C",c.key===y.C0.ESC+"[1;3C"&&(c.key=y.C0.ESC+(T?"f":"[1;5C"))):c.key=g?y.C0.ESC+"OC":y.C0.ESC+"[C";break;case 38:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"A",T||c.key!==y.C0.ESC+"[1;3A"||(c.key=y.C0.ESC+"[1;5A")):c.key=g?y.C0.ESC+"OA":y.C0.ESC+"[A";break;case 40:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"B",T||c.key!==y.C0.ESC+"[1;3B"||(c.key=y.C0.ESC+"[1;5B")):c.key=g?y.C0.ESC+"OB":y.C0.ESC+"[B";break;case 45:_.shiftKey||_.ctrlKey||(c.key=y.C0.ESC+"[2~");break;case 46:c.key=p?y.C0.ESC+"[3;"+(p+1)+"~":y.C0.ESC+"[3~";break;case 36:c.key=p?y.C0.ESC+"[1;"+(p+1)+"H":g?y.C0.ESC+"OH":y.C0.ESC+"[H";break;case 35:c.key=p?y.C0.ESC+"[1;"+(p+1)+"F":g?y.C0.ESC+"OF":y.C0.ESC+"[F";break;case 33:_.shiftKey?c.type=2:c.key=y.C0.ESC+"[5~";break;case 34:_.shiftKey?c.type=3:c.key=y.C0.ESC+"[6~";break;case 112:c.key=p?y.C0.ESC+"[1;"+(p+1)+"P":y.C0.ESC+"OP";break;case 113:c.key=p?y.C0.ESC+"[1;"+(p+1)+"Q":y.C0.ESC+"OQ";break;case 114:c.key=p?y.C0.ESC+"[1;"+(p+1)+"R":y.C0.ESC+"OR";break;case 115:c.key=p?y.C0.ESC+"[1;"+(p+1)+"S":y.C0.ESC+"OS";break;case 116:c.key=p?y.C0.ESC+"[15;"+(p+1)+"~":y.C0.ESC+"[15~";break;case 117:c.key=p?y.C0.ESC+"[17;"+(p+1)+"~":y.C0.ESC+"[17~";break;case 118:c.key=p?y.C0.ESC+"[18;"+(p+1)+"~":y.C0.ESC+"[18~";break;case 119:c.key=p?y.C0.ESC+"[19;"+(p+1)+"~":y.C0.ESC+"[19~";break;case 120:c.key=p?y.C0.ESC+"[20;"+(p+1)+"~":y.C0.ESC+"[20~";break;case 121:c.key=p?y.C0.ESC+"[21;"+(p+1)+"~":y.C0.ESC+"[21~";break;case 122:c.key=p?y.C0.ESC+"[23;"+(p+1)+"~":y.C0.ESC+"[23~";break;case 123:c.key=p?y.C0.ESC+"[24;"+(p+1)+"~":y.C0.ESC+"[24~";break;default:if(!_.ctrlKey||_.shiftKey||_.altKey||_.metaKey)if(T&&!w||!_.altKey||_.metaKey)!T||_.altKey||_.ctrlKey||_.shiftKey||!_.metaKey?_.key&&!_.ctrlKey&&!_.altKey&&!_.metaKey&&_.keyCode>=48&&_.key.length===1?c.key=_.key:_.key&&_.ctrlKey&&_.key==="_"&&(c.key=y.C0.US):_.keyCode===65&&(c.type=1);else{var C=m[_.keyCode],d=C?.[_.shiftKey?1:0];if(d)c.key=y.C0.ESC+d;else if(_.keyCode>=65&&_.keyCode<=90){var s=_.ctrlKey?_.keyCode-64:_.keyCode+32;c.key=y.C0.ESC+String.fromCharCode(s)}}else _.keyCode>=65&&_.keyCode<=90?c.key=String.fromCharCode(_.keyCode-64):_.keyCode===32?c.key=y.C0.NUL:_.keyCode>=51&&_.keyCode<=55?c.key=String.fromCharCode(_.keyCode-51+27):_.keyCode===56?c.key=y.C0.DEL:_.keyCode===219?c.key=y.C0.ESC:_.keyCode===220?c.key=y.C0.FS:_.keyCode===221&&(c.key=y.C0.GS)}return c}},482:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.Utf8ToUtf32=h.StringToUtf32=h.utf32ToString=h.stringFromCodePoint=void 0,h.stringFromCodePoint=function(m){return m>65535?(m-=65536,String.fromCharCode(55296+(m>>10))+String.fromCharCode(m%1024+56320)):String.fromCharCode(m)},h.utf32ToString=function(m,_,g){_===void 0&&(_=0),g===void 0&&(g=m.length);for(var T="",w=_;w65535?(c-=65536,T+=String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):T+=String.fromCharCode(c)}return T};var L=function(){function m(){this._interim=0}return m.prototype.clear=function(){this._interim=0},m.prototype.decode=function(_,g){var T=_.length;if(!T)return 0;var w=0,c=0;this._interim&&(56320<=(d=_.charCodeAt(c++))&&d<=57343?g[w++]=1024*(this._interim-55296)+d-56320+65536:(g[w++]=this._interim,g[w++]=d),this._interim=0);for(var p=c;p=T)return this._interim=C,w;var d;56320<=(d=_.charCodeAt(p))&&d<=57343?g[w++]=1024*(C-55296)+d-56320+65536:(g[w++]=C,g[w++]=d)}else C!==65279&&(g[w++]=C)}return w},m}();h.StringToUtf32=L;var y=function(){function m(){this.interim=new Uint8Array(3)}return m.prototype.clear=function(){this.interim.fill(0)},m.prototype.decode=function(_,g){var T=_.length;if(!T)return 0;var w,c,p,C,d=0,s=0,o=0;if(this.interim[0]){var l=!1,a=this.interim[0];a&=(224&a)==192?31:(240&a)==224?15:7;for(var u=0,v=void 0;(v=63&this.interim[++u])&&u<4;)a<<=6,a|=v;for(var b=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,E=b-u;o=T)return 0;if((192&(v=_[o++]))!=128){o--,l=!0;break}this.interim[u++]=v,a<<=6,a|=63&v}l||(b===2?a<128?o--:g[d++]=a:b===3?a<2048||a>=55296&&a<=57343||a===65279||(g[d++]=a):a<65536||a>1114111||(g[d++]=a)),this.interim.fill(0)}for(var O=T-4,k=o;k=T)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if((s=(31&w)<<6|63&c)<128){k--;continue}g[d++]=s}else if((240&w)==224){if(k>=T)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if(k>=T)return this.interim[0]=w,this.interim[1]=c,d;if((192&(p=_[k++]))!=128){k--;continue}if((s=(15&w)<<12|(63&c)<<6|63&p)<2048||s>=55296&&s<=57343||s===65279)continue;g[d++]=s}else if((248&w)==240){if(k>=T)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if(k>=T)return this.interim[0]=w,this.interim[1]=c,d;if((192&(p=_[k++]))!=128){k--;continue}if(k>=T)return this.interim[0]=w,this.interim[1]=c,this.interim[2]=p,d;if((192&(C=_[k++]))!=128){k--;continue}if((s=(7&w)<<18|(63&c)<<12|(63&p)<<6|63&C)<65536||s>1114111)continue;g[d++]=s}}return d},m}();h.Utf8ToUtf32=y},225:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.UnicodeV6=void 0;var y,m=L(8273),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],g=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],T=function(){function w(){if(this.version="6",!y){y=new Uint8Array(65536),(0,m.fill)(y,1),y[0]=0,(0,m.fill)(y,0,1,32),(0,m.fill)(y,0,127,160),(0,m.fill)(y,2,4352,4448),y[9001]=2,y[9002]=2,(0,m.fill)(y,2,11904,42192),y[12351]=1,(0,m.fill)(y,2,44032,55204),(0,m.fill)(y,2,63744,64256),(0,m.fill)(y,2,65040,65050),(0,m.fill)(y,2,65072,65136),(0,m.fill)(y,2,65280,65377),(0,m.fill)(y,2,65504,65511);for(var c=0;c<_.length;++c)(0,m.fill)(y,0,_[c][0],_[c][1]+1)}}return w.prototype.wcwidth=function(c){return c<32?0:c<127?1:c<65536?y[c]:function(p,C){var d,s=0,o=C.length-1;if(pC[o][1])return!1;for(;o>=s;)if(p>C[d=s+o>>1][1])s=d+1;else{if(!(p=131072&&c<=196605||c>=196608&&c<=262141?2:1},w}();h.UnicodeV6=T},5981:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.WriteBuffer=void 0;var L=typeof queueMicrotask>"u"?function(m){Promise.resolve().then(m)}:queueMicrotask,y=function(){function m(_){this._action=_,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0}return m.prototype.writeSync=function(_,g){if(g!==void 0&&this._syncCalls>g)this._syncCalls=0;else if(this._pendingData+=_.length,this._writeBuffer.push(_),this._callbacks.push(void 0),this._syncCalls++,!this._isSyncWriting){var T;for(this._isSyncWriting=!0;T=this._writeBuffer.shift();){this._action(T);var w=this._callbacks.shift();w&&w()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}},m.prototype.write=function(_,g){var T=this;if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(function(){return T._innerWrite()})),this._pendingData+=_.length,this._writeBuffer.push(_),this._callbacks.push(g)},m.prototype._innerWrite=function(_,g){var T=this;_===void 0&&(_=0),g===void 0&&(g=!0);for(var w=_||Date.now();this._writeBuffer.length>this._bufferOffset;){var c=this._writeBuffer[this._bufferOffset],p=this._action(c,g);if(p)return void p.catch(function(d){return L(function(){throw d}),Promise.resolve(!1)}).then(function(d){return Date.now()-w>=12?setTimeout(function(){return T._innerWrite(0,d)}):T._innerWrite(w,d)});var C=this._callbacks[this._bufferOffset];if(C&&C(),this._bufferOffset++,this._pendingData-=c.length,Date.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(function(){return T._innerWrite()})):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0)},m}();h.WriteBuffer=y},5941:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.toRgbString=h.parseColor=void 0;var L=/^([\da-f]{1})\/([\da-f]{1})\/([\da-f]{1})$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,y=/^[\da-f]+$/;function m(_,g){var T=_.toString(16),w=T.length<2?"0"+T:T;switch(g){case 4:return T[0];case 8:return w;case 12:return(w+w).slice(0,3);default:return w+w}}h.parseColor=function(_){if(_){var g=_.toLowerCase();if(g.indexOf("rgb:")===0){g=g.slice(4);var T=L.exec(g);if(T){var w=T[1]?15:T[4]?255:T[7]?4095:65535;return[Math.round(parseInt(T[1]||T[4]||T[7]||T[10],16)/w*255),Math.round(parseInt(T[2]||T[5]||T[8]||T[11],16)/w*255),Math.round(parseInt(T[3]||T[6]||T[9]||T[12],16)/w*255)]}}else if(g.indexOf("#")===0&&(g=g.slice(1),y.exec(g)&&[3,6,9,12].includes(g.length))){for(var c=g.length/3,p=[0,0,0],C=0;C<3;++C){var d=parseInt(g.slice(c*C,c*C+c),16);p[C]=c===1?d<<4:c===2?d:c===3?d>>4:d>>8}return p}}},h.toRgbString=function(_,g){g===void 0&&(g=16);var T=_[0],w=_[1],c=_[2];return"rgb:"+m(T,g)+"/"+m(w,g)+"/"+m(c,g)}},5770:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.PAYLOAD_LIMIT=void 0,h.PAYLOAD_LIMIT=1e7},6351:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.DcsHandler=h.DcsParser=void 0;var y=L(482),m=L(8742),_=L(5770),g=[],T=function(){function p(){this._handlers=Object.create(null),this._active=g,this._ident=0,this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return p.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=g},p.prototype.registerHandler=function(C,d){this._handlers[C]===void 0&&(this._handlers[C]=[]);var s=this._handlers[C];return s.push(d),{dispose:function(){var o=s.indexOf(d);o!==-1&&s.splice(o,1)}}},p.prototype.clearHandler=function(C){this._handlers[C]&&delete this._handlers[C]},p.prototype.setHandlerFallback=function(C){this._handlerFb=C},p.prototype.reset=function(){if(this._active.length)for(var C=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;C>=0;--C)this._active[C].unhook(!1);this._stack.paused=!1,this._active=g,this._ident=0},p.prototype.hook=function(C,d){if(this.reset(),this._ident=C,this._active=this._handlers[C]||g,this._active.length)for(var s=this._active.length-1;s>=0;s--)this._active[s].hook(d);else this._handlerFb(this._ident,"HOOK",d)},p.prototype.put=function(C,d,s){if(this._active.length)for(var o=this._active.length-1;o>=0;o--)this._active[o].put(C,d,s);else this._handlerFb(this._ident,"PUT",(0,y.utf32ToString)(C,d,s))},p.prototype.unhook=function(C,d){if(d===void 0&&(d=!0),this._active.length){var s=!1,o=this._active.length-1,l=!1;if(this._stack.paused&&(o=this._stack.loopPosition-1,s=d,l=this._stack.fallThrough,this._stack.paused=!1),!l&&s===!1){for(;o>=0&&(s=this._active[o].unhook(C))!==!0;o--)if(s instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!1,s;o--}for(;o>=0;o--)if((s=this._active[o].unhook(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!0,s}else this._handlerFb(this._ident,"UNHOOK",C);this._active=g,this._ident=0},p}();h.DcsParser=T;var w=new m.Params;w.addParam(0);var c=function(){function p(C){this._handler=C,this._data="",this._params=w,this._hitLimit=!1}return p.prototype.hook=function(C){this._params=C.length>1||C.params[0]?C.clone():w,this._data="",this._hitLimit=!1},p.prototype.put=function(C,d,s){this._hitLimit||(this._data+=(0,y.utf32ToString)(C,d,s),this._data.length>_.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},p.prototype.unhook=function(C){var d=this,s=!1;if(this._hitLimit)s=!1;else if(C&&(s=this._handler(this._data,this._params))instanceof Promise)return s.then(function(o){return d._params=w,d._data="",d._hitLimit=!1,o});return this._params=w,this._data="",this._hitLimit=!1,s},p}();h.DcsHandler=c},2015:function(R,h,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(h,"__esModule",{value:!0}),h.EscapeSequenceParser=h.VT500_TRANSITION_TABLE=h.TransitionTable=void 0;var _=L(844),g=L(8273),T=L(8742),w=L(6242),c=L(6351),p=function(){function s(o){this.table=new Uint8Array(o)}return s.prototype.setDefault=function(o,l){(0,g.fill)(this.table,o<<4|l)},s.prototype.add=function(o,l,a,u){this.table[l<<8|o]=a<<4|u},s.prototype.addMany=function(o,l,a,u){for(var v=0;v1)throw new Error("only one byte as prefix supported");if((u=l.prefix.charCodeAt(0))&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(l.intermediates){if(l.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var v=0;vb||b>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=b}}if(l.final.length!==1)throw new Error("final must be a single byte");var E=l.final.charCodeAt(0);if(a[0]>E||E>a[1])throw new Error("final must be in range "+a[0]+" .. "+a[1]);return(u<<=8)|E},o.prototype.identToString=function(l){for(var a=[];l;)a.push(String.fromCharCode(255&l)),l>>=8;return a.reverse().join("")},o.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},o.prototype.setPrintHandler=function(l){this._printHandler=l},o.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},o.prototype.registerEscHandler=function(l,a){var u=this._identifier(l,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);var v=this._escHandlers[u];return v.push(a),{dispose:function(){var b=v.indexOf(a);b!==-1&&v.splice(b,1)}}},o.prototype.clearEscHandler=function(l){this._escHandlers[this._identifier(l,[48,126])]&&delete this._escHandlers[this._identifier(l,[48,126])]},o.prototype.setEscHandlerFallback=function(l){this._escHandlerFb=l},o.prototype.setExecuteHandler=function(l,a){this._executeHandlers[l.charCodeAt(0)]=a},o.prototype.clearExecuteHandler=function(l){this._executeHandlers[l.charCodeAt(0)]&&delete this._executeHandlers[l.charCodeAt(0)]},o.prototype.setExecuteHandlerFallback=function(l){this._executeHandlerFb=l},o.prototype.registerCsiHandler=function(l,a){var u=this._identifier(l);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);var v=this._csiHandlers[u];return v.push(a),{dispose:function(){var b=v.indexOf(a);b!==-1&&v.splice(b,1)}}},o.prototype.clearCsiHandler=function(l){this._csiHandlers[this._identifier(l)]&&delete this._csiHandlers[this._identifier(l)]},o.prototype.setCsiHandlerFallback=function(l){this._csiHandlerFb=l},o.prototype.registerDcsHandler=function(l,a){return this._dcsParser.registerHandler(this._identifier(l),a)},o.prototype.clearDcsHandler=function(l){this._dcsParser.clearHandler(this._identifier(l))},o.prototype.setDcsHandlerFallback=function(l){this._dcsParser.setHandlerFallback(l)},o.prototype.registerOscHandler=function(l,a){return this._oscParser.registerHandler(l,a)},o.prototype.clearOscHandler=function(l){this._oscParser.clearHandler(l)},o.prototype.setOscHandlerFallback=function(l){this._oscParser.setHandlerFallback(l)},o.prototype.setErrorHandler=function(l){this._errorHandler=l},o.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},o.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])},o.prototype._preserveStack=function(l,a,u,v,b){this._parseStack.state=l,this._parseStack.handlers=a,this._parseStack.handlerPos=u,this._parseStack.transition=v,this._parseStack.chunkPos=b},o.prototype.parse=function(l,a,u){var v,b=0,E=0,O=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,O=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");var k=this._parseStack.handlers,A=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&A>-1){for(;A>=0&&(v=k[A](this._params))!==!0;A--)if(v instanceof Promise)return this._parseStack.handlerPos=A,v}this._parseStack.handlers=[];break;case 4:if(u===!1&&A>-1){for(;A>=0&&(v=k[A]())!==!0;A--)if(v instanceof Promise)return this._parseStack.handlerPos=A,v}this._parseStack.handlers=[];break;case 6:if(b=l[this._parseStack.chunkPos],v=this._dcsParser.unhook(b!==24&&b!==26,u))return v;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(b=l[this._parseStack.chunkPos],v=this._oscParser.end(b!==24&&b!==26,u))return v;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,O=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(var N=O;N>4){case 2:for(var D=N+1;;++D){if(D>=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=0&&(v=k[W](this._params))!==!0;W--)if(v instanceof Promise)return this._preserveStack(3,k,W,E,N),v;W<0&&this._csiHandlerFb(this._collect<<8|b,this._params),this.precedingCodepoint=0;break;case 8:do switch(b){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(b-48)}while(++N47&&b<60);N--;break;case 9:this._collect<<=8,this._collect|=b;break;case 10:for(var B=this._escHandlers[this._collect<<8|b],F=B?B.length-1:-1;F>=0&&(v=B[F]())!==!0;F--)if(v instanceof Promise)return this._preserveStack(4,B,F,E,N),v;F<0&&this._escHandlerFb(this._collect<<8|b),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|b,this._params);break;case 13:for(var j=N+1;;++j)if(j>=a||(b=l[j])===24||b===26||b===27||b>127&&b=a||(b=l[G])<32||b>127&&b{Object.defineProperty(h,"__esModule",{value:!0}),h.OscHandler=h.OscParser=void 0;var y=L(5770),m=L(482),_=[],g=function(){function w(){this._state=0,this._active=_,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return w.prototype.registerHandler=function(c,p){this._handlers[c]===void 0&&(this._handlers[c]=[]);var C=this._handlers[c];return C.push(p),{dispose:function(){var d=C.indexOf(p);d!==-1&&C.splice(d,1)}}},w.prototype.clearHandler=function(c){this._handlers[c]&&delete this._handlers[c]},w.prototype.setHandlerFallback=function(c){this._handlerFb=c},w.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=_},w.prototype.reset=function(){if(this._state===2)for(var c=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;c>=0;--c)this._active[c].end(!1);this._stack.paused=!1,this._active=_,this._id=-1,this._state=0},w.prototype._start=function(){if(this._active=this._handlers[this._id]||_,this._active.length)for(var c=this._active.length-1;c>=0;c--)this._active[c].start();else this._handlerFb(this._id,"START")},w.prototype._put=function(c,p,C){if(this._active.length)for(var d=this._active.length-1;d>=0;d--)this._active[d].put(c,p,C);else this._handlerFb(this._id,"PUT",(0,m.utf32ToString)(c,p,C))},w.prototype.start=function(){this.reset(),this._state=1},w.prototype.put=function(c,p,C){if(this._state!==3){if(this._state===1)for(;p0&&this._put(c,p,C)}},w.prototype.end=function(c,p){if(p===void 0&&(p=!0),this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){var C=!1,d=this._active.length-1,s=!1;if(this._stack.paused&&(d=this._stack.loopPosition-1,C=p,s=this._stack.fallThrough,this._stack.paused=!1),!s&&C===!1){for(;d>=0&&(C=this._active[d].end(c))!==!0;d--)if(C instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=d,this._stack.fallThrough=!1,C;d--}for(;d>=0;d--)if((C=this._active[d].end(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=d,this._stack.fallThrough=!0,C}else this._handlerFb(this._id,"END",c);this._active=_,this._id=-1,this._state=0}},w}();h.OscParser=g;var T=function(){function w(c){this._handler=c,this._data="",this._hitLimit=!1}return w.prototype.start=function(){this._data="",this._hitLimit=!1},w.prototype.put=function(c,p,C){this._hitLimit||(this._data+=(0,m.utf32ToString)(c,p,C),this._data.length>y.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},w.prototype.end=function(c){var p=this,C=!1;if(this._hitLimit)C=!1;else if(c&&(C=this._handler(this._data))instanceof Promise)return C.then(function(d){return p._data="",p._hitLimit=!1,d});return this._data="",this._hitLimit=!1,C},w}();h.OscHandler=T},8742:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.Params=void 0;var L=2147483647,y=function(){function m(_,g){if(_===void 0&&(_=32),g===void 0&&(g=32),this.maxLength=_,this.maxSubParamsLength=g,g>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(_),this.length=0,this._subParams=new Int32Array(g),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(_),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return m.fromArray=function(_){var g=new m;if(!_.length)return g;for(var T=Array.isArray(_[0])?1:0;T<_.length;++T){var w=_[T];if(Array.isArray(w))for(var c=0;c>8,w=255&this._subParamsIdx[g];w-T>0&&_.push(Array.prototype.slice.call(this._subParams,T,w))}return _},m.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},m.prototype.addParam=function(_){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=_>L?L:_}},m.prototype.addSubParam=function(_){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=_>L?L:_,this._subParamsIdx[this.length-1]++}},m.prototype.hasSubParams=function(_){return(255&this._subParamsIdx[_])-(this._subParamsIdx[_]>>8)>0},m.prototype.getSubParams=function(_){var g=this._subParamsIdx[_]>>8,T=255&this._subParamsIdx[_];return T-g>0?this._subParams.subarray(g,T):null},m.prototype.getSubParamsAll=function(){for(var _={},g=0;g>8,w=255&this._subParamsIdx[g];w-T>0&&(_[g]=this._subParams.slice(T,w))}return _},m.prototype.addDigit=function(_){var g;if(!(this._rejectDigits||!(g=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var T=this._digitIsSub?this._subParams:this.params,w=T[g-1];T[g-1]=~w?Math.min(10*w+_,L):_}},m}();h.Params=y},5741:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.AddonManager=void 0;var L=function(){function y(){this._addons=[]}return y.prototype.dispose=function(){for(var m=this._addons.length-1;m>=0;m--)this._addons[m].instance.dispose()},y.prototype.loadAddon=function(m,_){var g=this,T={instance:_,dispose:_.dispose,isDisposed:!1};this._addons.push(T),_.dispose=function(){return g._wrappedAddonDispose(T)},_.activate(m)},y.prototype._wrappedAddonDispose=function(m){if(!m.isDisposed){for(var _=-1,g=0;g{Object.defineProperty(h,"__esModule",{value:!0}),h.BufferApiView=void 0;var y=L(3785),m=L(511),_=function(){function g(T,w){this._buffer=T,this.type=w}return g.prototype.init=function(T){return this._buffer=T,this},Object.defineProperty(g.prototype,"cursorY",{get:function(){return this._buffer.y},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!1,configurable:!0}),g.prototype.getLine=function(T){var w=this._buffer.lines.get(T);if(w)return new y.BufferLineApiView(w)},g.prototype.getNullCell=function(){return new m.CellData},g}();h.BufferApiView=_},3785:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.BufferLineApiView=void 0;var y=L(511),m=function(){function _(g){this._line=g}return Object.defineProperty(_.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"length",{get:function(){return this._line.length},enumerable:!1,configurable:!0}),_.prototype.getCell=function(g,T){if(!(g<0||g>=this._line.length))return T?(this._line.loadCell(g,T),T):this._line.loadCell(g,new y.CellData)},_.prototype.translateToString=function(g,T,w){return this._line.translateToString(g,T,w)},_}();h.BufferLineApiView=m},8285:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.BufferNamespaceApi=void 0;var y=L(8771),m=L(8460),_=function(){function g(T){var w=this;this._core=T,this._onBufferChange=new m.EventEmitter,this._normal=new y.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new y.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(function(){return w._onBufferChange.fire(w.active)})}return Object.defineProperty(g.prototype,"onBufferChange",{get:function(){return this._onBufferChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"active",{get:function(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"normal",{get:function(){return this._normal.init(this._core.buffers.normal)},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"alternate",{get:function(){return this._alternate.init(this._core.buffers.alt)},enumerable:!1,configurable:!0}),g}();h.BufferNamespaceApi=_},7975:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.ParserApi=void 0;var L=function(){function y(m){this._core=m}return y.prototype.registerCsiHandler=function(m,_){return this._core.registerCsiHandler(m,function(g){return _(g.toArray())})},y.prototype.addCsiHandler=function(m,_){return this.registerCsiHandler(m,_)},y.prototype.registerDcsHandler=function(m,_){return this._core.registerDcsHandler(m,function(g,T){return _(g,T.toArray())})},y.prototype.addDcsHandler=function(m,_){return this.registerDcsHandler(m,_)},y.prototype.registerEscHandler=function(m,_){return this._core.registerEscHandler(m,_)},y.prototype.addEscHandler=function(m,_){return this.registerEscHandler(m,_)},y.prototype.registerOscHandler=function(m,_){return this._core.registerOscHandler(m,_)},y.prototype.addOscHandler=function(m,_){return this.registerOscHandler(m,_)},y}();h.ParserApi=L},7090:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.UnicodeApi=void 0;var L=function(){function y(m){this._core=m}return y.prototype.register=function(m){this._core.unicodeService.register(m)},Object.defineProperty(y.prototype,"versions",{get:function(){return this._core.unicodeService.versions},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"activeVersion",{get:function(){return this._core.unicodeService.activeVersion},set:function(m){this._core.unicodeService.activeVersion=m},enumerable:!1,configurable:!0}),y}();h.UnicodeApi=L},744:function(R,h,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,v=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},g=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.BufferService=h.MINIMUM_ROWS=h.MINIMUM_COLS=void 0;var T=L(2585),w=L(5295),c=L(8460),p=L(844);h.MINIMUM_COLS=2,h.MINIMUM_ROWS=1;var C=function(d){function s(o){var l=d.call(this)||this;return l._optionsService=o,l.isUserScrolling=!1,l._onResize=new c.EventEmitter,l._onScroll=new c.EventEmitter,l.cols=Math.max(o.rawOptions.cols||0,h.MINIMUM_COLS),l.rows=Math.max(o.rawOptions.rows||0,h.MINIMUM_ROWS),l.buffers=new w.BufferSet(o,l),l}return m(s,d),Object.defineProperty(s.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),s.prototype.dispose=function(){d.prototype.dispose.call(this),this.buffers.dispose()},s.prototype.resize=function(o,l){this.cols=o,this.rows=l,this.buffers.resize(o,l),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:o,rows:l})},s.prototype.reset=function(){this.buffers.reset(),this.isUserScrolling=!1},s.prototype.scroll=function(o,l){l===void 0&&(l=!1);var a,u=this.buffer;(a=this._cachedBlankLine)&&a.length===this.cols&&a.getFg(0)===o.fg&&a.getBg(0)===o.bg||(a=u.getBlankLine(o,l),this._cachedBlankLine=a),a.isWrapped=l;var v=u.ybase+u.scrollTop,b=u.ybase+u.scrollBottom;if(u.scrollTop===0){var E=u.lines.isFull;b===u.lines.length-1?E?u.lines.recycle().copyFrom(a):u.lines.push(a.clone()):u.lines.splice(b+1,0,a.clone()),E?this.isUserScrolling&&(u.ydisp=Math.max(u.ydisp-1,0)):(u.ybase++,this.isUserScrolling||u.ydisp++)}else{var O=b-v+1;u.lines.shiftElements(v+1,O-1,-1),u.lines.set(b,a.clone())}this.isUserScrolling||(u.ydisp=u.ybase),this._onScroll.fire(u.ydisp)},s.prototype.scrollLines=function(o,l,a){var u=this.buffer;if(o<0){if(u.ydisp===0)return;this.isUserScrolling=!0}else o+u.ydisp>=u.ybase&&(this.isUserScrolling=!1);var v=u.ydisp;u.ydisp=Math.max(Math.min(u.ydisp+o,u.ybase),0),v!==u.ydisp&&(l||this._onScroll.fire(u.ydisp))},s.prototype.scrollPages=function(o){this.scrollLines(o*(this.rows-1))},s.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},s.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},s.prototype.scrollToLine=function(o){var l=o-this.buffer.ydisp;l!==0&&this.scrollLines(l)},_([g(0,T.IOptionsService)],s)}(p.Disposable);h.BufferService=C},7994:(R,h)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.CharsetService=void 0;var L=function(){function y(){this.glevel=0,this._charsets=[]}return y.prototype.reset=function(){this.charset=void 0,this._charsets=[],this.glevel=0},y.prototype.setgLevel=function(m){this.glevel=m,this.charset=this._charsets[m]},y.prototype.setgCharset=function(m,_){this._charsets[m]=_,this.glevel===m&&(this.charset=_)},y}();h.CharsetService=L},1753:function(R,h,L){var y=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,v=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(v=(u<3?a(v):u>3?a(s,o,v):a(s,o))||v);return u>3&&v&&Object.defineProperty(s,o,v),v},m=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(h,"__esModule",{value:!0}),h.CoreMouseService=void 0;var _=L(2585),g=L(8460),T={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(d){return d.button!==4&&d.action===1&&(d.ctrl=!1,d.alt=!1,d.shift=!1,!0)}},VT200:{events:19,restrict:function(d){return d.action!==32}},DRAG:{events:23,restrict:function(d){return d.action!==32||d.button!==3}},ANY:{events:31,restrict:function(d){return!0}}};function w(d,s){var o=(d.ctrl?16:0)|(d.shift?4:0)|(d.alt?8:0);return d.button===4?(o|=64,o|=d.action):(o|=3&d.button,4&d.button&&(o|=64),8&d.button&&(o|=128),d.action===32?o|=32:d.action!==0||s||(o|=3)),o}var c=String.fromCharCode,p={DEFAULT:function(d){var s=[w(d,!1)+32,d.col+32,d.row+32];return s[0]>255||s[1]>255||s[2]>255?"":"\x1B[M"+c(s[0])+c(s[1])+c(s[2])},SGR:function(d){var s=d.action===0&&d.button!==4?"m":"M";return"\x1B[<"+w(d,!0)+";"+d.col+";"+d.row+s}},C=function(){function d(s,o){this._bufferService=s,this._coreService=o,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new g.EventEmitter,this._lastEvent=null;for(var l=0,a=Object.keys(T);l=this._bufferService.cols||s.row<0||s.row>=this._bufferService.rows||s.button===4&&s.action===32||s.button===3&&s.action!==32||s.button!==4&&(s.action===2||s.action===3)||(s.col++,s.row++,s.action===32&&this._lastEvent&&this._compareEvents(this._lastEvent,s))||!this._protocols[this._activeProtocol].restrict(s))return!1;var o=this._encodings[this._activeEncoding](s);return o&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(o):this._coreService.triggerDataEvent(o,!0)),this._lastEvent=s,!0},d.prototype.explainEvents=function(s){return{down:!!(1&s),up:!!(2&s),drag:!!(4&s),move:!!(8&s),wheel:!!(16&s)}},d.prototype._compareEvents=function(s,o){return s.col===o.col&&s.row===o.row&&s.button===o.button&&s.action===o.action&&s.ctrl===o.ctrl&&s.alt===o.alt&&s.shift===o.shift},y([m(0,_.IBufferService),m(1,_.ICoreService)],d)}();h.CoreMouseService=C},6975:function(R,h,L){var y,m=this&&this.__extends||(y=function(o,l){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,u){a.__proto__=u}||function(a,u){for(var v in u)Object.prototype.hasOwnProperty.call(u,v)&&(a[v]=u[v])},y(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function a(){this.constructor=o}y(o,l),o.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}),_=this&&this.__decorate||function(o,l,a,u){var v,b=arguments.length,E=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")E=Reflect.decorate(o,l,a,u);else for(var O=o.length-1;O>=0;O--)(v=o[O])&&(E=(b<3?v(E):b>3?v(l,a,E):v(l,a))||E);return b>3&&E&&Object.defineProperty(l,a,E),E},g=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(h,"__esModule",{value:!0}),h.CoreService=void 0;var T=L(2585),w=L(8460),c=L(1439),p=L(844),C=Object.freeze({insertMode:!1}),d=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),s=function(o){function l(a,u,v,b){var E=o.call(this)||this;return E._bufferService=u,E._logService=v,E._optionsService=b,E.isCursorInitialized=!1,E.isCursorHidden=!1,E._onData=E.register(new w.EventEmitter),E._onUserInput=E.register(new w.EventEmitter),E._onBinary=E.register(new w.EventEmitter),E._scrollToBottom=a,E.register({dispose:function(){return E._scrollToBottom=void 0}}),E.modes=(0,c.clone)(C),E.decPrivateModes=(0,c.clone)(d),E}return m(l,o),Object.defineProperty(l.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),l.prototype.reset=function(){this.modes=(0,c.clone)(C),this.decPrivateModes=(0,c.clone)(d)},l.prototype.triggerDataEvent=function(a,u){if(u===void 0&&(u=!1),!this._optionsService.rawOptions.disableStdin){var v=this._bufferService.buffer;v.ybase!==v.ydisp&&this._scrollToBottom(),u&&this._onUserInput.fire(),this._logService.debug('sending data "'+a+'"',function(){return a.split("").map(function(b){return b.charCodeAt(0)})}),this._onData.fire(a)}},l.prototype.triggerBinaryEvent=function(a){this._optionsService.rawOptions.disableStdin||(this._logService.debug('sending binary "'+a+'"',function(){return a.split("").map(function(u){return u.charCodeAt(0)})}),this._onBinary.fire(a))},_([g(1,T.IBufferService),g(2,T.ILogService),g(3,T.IOptionsService)],l)}(p.Disposable);h.CoreService=s},3730:function(R,h,L){var y=this&&this.__decorate||function(T,w,c,p){var C,d=arguments.length,s=d<3?w:p===null?p=Object.getOwnPropertyDescriptor(w,c):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(T,w,c,p);else for(var o=T.length-1;o>=0;o--)(C=T[o])&&(s=(d<3?C(s):d>3?C(w,c,s):C(w,c))||s);return d>3&&s&&Object.defineProperty(w,c,s),s},m=this&&this.__param||function(T,w){return function(c,p){w(c,p,T)}};Object.defineProperty(h,"__esModule",{value:!0}),h.DirtyRowService=void 0;var _=L(2585),g=function(){function T(w){this._bufferService=w,this.clearRange()}return Object.defineProperty(T.prototype,"start",{get:function(){return this._start},enumerable:!1,configurable:!0}),Object.defineProperty(T.prototype,"end",{get:function(){return this._end},enumerable:!1,configurable:!0}),T.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},T.prototype.markDirty=function(w){wthis._end&&(this._end=w)},T.prototype.markRangeDirty=function(w,c){if(w>c){var p=w;w=c,c=p}wthis._end&&(this._end=c)},T.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},y([m(0,_.IBufferService)],T)}();h.DirtyRowService=g},4348:function(R,h,L){var y=this&&this.__spreadArray||function(w,c,p){if(p||arguments.length===2)for(var C,d=0,s=c.length;d0?d[0].index:p.length;if(p.length!==v)throw new Error("[createInstance] First service dependency of "+c.name+" at position "+(v+1)+" conflicts with "+p.length+" static arguments");return new(c.bind.apply(c,y([void 0],y(y([],p,!0),s,!0),!1)))},w}();h.InstantiationService=T},7866:function(R,h,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}},_=this&&this.__spreadArray||function(c,p,C){if(C||arguments.length===2)for(var d,s=0,o=p.length;s{function L(y,m,_){m.di$target===m?m.di$dependencies.push({id:y,index:_}):(m.di$dependencies=[{id:y,index:_}],m.di$target=m)}Object.defineProperty(h,"__esModule",{value:!0}),h.createDecorator=h.getServiceDependencies=h.serviceRegistry=void 0,h.serviceRegistry=new Map,h.getServiceDependencies=function(y){return y.di$dependencies||[]},h.createDecorator=function(y){if(h.serviceRegistry.has(y))return h.serviceRegistry.get(y);var m=function(_,g,T){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");L(m,_,T)};return m.toString=function(){return y},h.serviceRegistry.set(y,m),m}},2585:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.IUnicodeService=h.IOptionsService=h.ILogService=h.LogLevelEnum=h.IInstantiationService=h.IDirtyRowService=h.ICharsetService=h.ICoreService=h.ICoreMouseService=h.IBufferService=void 0;var y,m=L(8343);h.IBufferService=(0,m.createDecorator)("BufferService"),h.ICoreMouseService=(0,m.createDecorator)("CoreMouseService"),h.ICoreService=(0,m.createDecorator)("CoreService"),h.ICharsetService=(0,m.createDecorator)("CharsetService"),h.IDirtyRowService=(0,m.createDecorator)("DirtyRowService"),h.IInstantiationService=(0,m.createDecorator)("InstantiationService"),(y=h.LogLevelEnum||(h.LogLevelEnum={}))[y.DEBUG=0]="DEBUG",y[y.INFO=1]="INFO",y[y.WARN=2]="WARN",y[y.ERROR=3]="ERROR",y[y.OFF=4]="OFF",h.ILogService=(0,m.createDecorator)("LogService"),h.IOptionsService=(0,m.createDecorator)("OptionsService"),h.IUnicodeService=(0,m.createDecorator)("UnicodeService")},1480:(R,h,L)=>{Object.defineProperty(h,"__esModule",{value:!0}),h.UnicodeService=void 0;var y=L(8460),m=L(225),_=function(){function g(){this._providers=Object.create(null),this._active="",this._onChange=new y.EventEmitter;var T=new m.UnicodeV6;this.register(T),this._active=T.version,this._activeProvider=T}return Object.defineProperty(g.prototype,"onChange",{get:function(){return this._onChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"versions",{get:function(){return Object.keys(this._providers)},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"activeVersion",{get:function(){return this._active},set:function(T){if(!this._providers[T])throw new Error('unknown Unicode version "'+T+'"');this._active=T,this._activeProvider=this._providers[T],this._onChange.fire(T)},enumerable:!1,configurable:!0}),g.prototype.register=function(T){this._providers[T.version]=T},g.prototype.wcwidth=function(T){return this._activeProvider.wcwidth(T)},g.prototype.getStringCellWidth=function(T){for(var w=0,c=T.length,p=0;p=c)return w+this.wcwidth(C);var d=T.charCodeAt(p);56320<=d&&d<=57343?C=1024*(C-55296)+d-56320+65536:w+=this.wcwidth(d)}w+=this.wcwidth(C)}return w},g}();h.UnicodeService=_}},H={};return function R(h){var L=H[h];if(L!==void 0)return L.exports;var y=H[h]={exports:{}};return V[h].call(y.exports,y,y.exports,R),y.exports}(4389)})()})});var jl=or((Nl,Wl)=>{(function(V){typeof Nl=="object"&&typeof Wl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";var H={},R=/[^\s\u00a0]/,h=V.Pos,L=V.cmpPos;function y(g){var T=g.search(R);return T==-1?0:T}V.commands.toggleComment=function(g){g.toggleComment()},V.defineExtension("toggleComment",function(g){g||(g=H);for(var T=this,w=1/0,c=this.listSelections(),p=null,C=c.length-1;C>=0;C--){var d=c[C].from(),s=c[C].to();d.line>=w||(s.line>=w&&(s=h(w,0)),w=d.line,p==null?T.uncomment(d,s,g)?p="un":(T.lineComment(d,s,g),p="line"):p=="un"?T.uncomment(d,s,g):T.lineComment(d,s,g))}});function m(g,T,w){return/\bstring\b/.test(g.getTokenTypeAt(h(T.line,0)))&&!/^[\'\"\`]/.test(w)}function _(g,T){var w=g.getMode();return w.useInnerComments===!1||!w.innerMode?w:g.getModeAt(T)}V.defineExtension("lineComment",function(g,T,w){w||(w=H);var c=this,p=_(c,g),C=c.getLine(g.line);if(!(C==null||m(c,g,C))){var d=w.lineComment||p.lineComment;if(!d){(w.blockCommentStart||p.blockCommentStart)&&(w.fullLines=!0,c.blockComment(g,T,w));return}var s=Math.min(T.ch!=0||T.line==g.line?T.line+1:T.line,c.lastLine()+1),o=w.padding==null?" ":w.padding,l=w.commentBlankLines||g.line==T.line;c.operation(function(){if(w.indent){for(var a=null,u=g.line;ub.length)&&(a=b)}for(var u=g.line;us||c.operation(function(){if(w.fullLines!=!1){var l=R.test(c.getLine(s));c.replaceRange(o+d,h(s)),c.replaceRange(C+o,h(g.line,0));var a=w.blockCommentLead||p.blockCommentLead;if(a!=null)for(var u=g.line+1;u<=s;++u)(u!=s||l)&&c.replaceRange(a+o,h(u,0))}else{var v=L(c.getCursor("to"),T)==0,b=!c.somethingSelected();c.replaceRange(d,T),v&&c.setSelection(b?T:c.getCursor("from"),T),c.replaceRange(C,g)}})}}),V.defineExtension("uncomment",function(g,T,w){w||(w=H);var c=this,p=_(c,g),C=Math.min(T.ch!=0||T.line==g.line?T.line:T.line-1,c.lastLine()),d=Math.min(g.line,C),s=w.lineComment||p.lineComment,o=[],l=w.padding==null?" ":w.padding,a;e:{if(!s)break e;for(var u=d;u<=C;++u){var v=c.getLine(u),b=v.indexOf(s);if(b>-1&&!/comment/.test(c.getTokenTypeAt(h(u,b+1)))&&(b=-1),b==-1&&R.test(v)||b>-1&&R.test(v.slice(0,b)))break e;o.push(v)}if(c.operation(function(){for(var ne=d;ne<=C;++ne){var ie=o[ne-d],be=ie.indexOf(s),ve=be+s.length;be<0||(ie.slice(ve,ve+l.length)==l&&(ve+=l.length),a=!0,c.replaceRange("",h(ne,be),h(ne,ve)))}}),a)return!0}var E=w.blockCommentStart||p.blockCommentStart,O=w.blockCommentEnd||p.blockCommentEnd;if(!E||!O)return!1;var k=w.blockCommentLead||p.blockCommentLead,A=c.getLine(d),N=A.indexOf(E);if(N==-1)return!1;var D=C==d?A:c.getLine(C),W=D.indexOf(O,C==d?N+E.length:0),B=h(d,N+1),F=h(C,W+1);if(W==-1||!/comment/.test(c.getTokenTypeAt(B))||!/comment/.test(c.getTokenTypeAt(F))||c.getRange(B,F,` -`).indexOf(O)>-1)return!1;var j=A.lastIndexOf(E,g.ch),G=j==-1?-1:A.slice(0,g.ch).indexOf(O,j+E.length);if(j!=-1&&G!=-1&&G+O.length!=g.ch)return!1;G=D.indexOf(O,T.ch);var $=D.slice(T.ch).lastIndexOf(E,G-T.ch);return j=G==-1||$==-1?-1:T.ch+$,G!=-1&&j!=-1&&j!=T.ch?!1:(c.operation(function(){c.replaceRange("",h(C,W-(l&&D.slice(W-l.length,W)==l?l.length:0)),h(C,W+O.length));var ne=N+E.length;if(l&&A.slice(ne,ne+l.length)==l&&(ne+=l.length),c.replaceRange("",h(d,N),h(d,ne)),k)for(var ie=d+1;ie<=C;++ie){var be=c.getLine(ie),ve=be.indexOf(k);if(!(ve==-1||R.test(be.slice(0,ve)))){var Ee=ve+k.length;l&&be.slice(Ee,Ee+l.length)==l&&(Ee+=l.length),c.replaceRange("",h(ie,ve),h(ie,Ee))}}}),!0)})})});var ql=or((Ul,zl)=>{(function(V){typeof Ul=="object"&&typeof zl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H=/\S/g,R=String.prototype.repeat||function(m){return Array(m+1).join(this)};function h(m){if(m.getOption("disableInput"))return V.Pass;for(var _=m.listSelections(),g,T=[],w=0;w<_.length;w++){var c=_[w].head;if(!/\bcomment\b/.test(m.getTokenTypeAt(c)))return V.Pass;var p=m.getModeAt(c);if(!g)g=p;else if(g!=p)return V.Pass;var C=null,d,s,o=g.blockCommentStart,l=g.lineComment;if(o&&g.blockCommentContinue){d=m.getLine(c.line);var a=d.lastIndexOf(g.blockCommentEnd,c.ch-g.blockCommentEnd.length);if(!(a!=-1&&a==c.ch-g.blockCommentEnd.length||l&&(s=d.lastIndexOf(l,c.ch-1))>-1&&/\bcomment\b/.test(m.getTokenTypeAt({line:c.line,ch:s+1}))))if(c.ch>=o.length&&(s=d.lastIndexOf(o,c.ch-o.length))>-1&&s>a)if(L(0,d)>=s)C=d.slice(0,s);else{var u=m.options.tabSize,v;s=V.countColumn(d,s,u),C=m.options.indentWithTabs?R.call(" ",v=Math.floor(s/u))+R.call(" ",s-u*v):R.call(" ",s)}else(s=d.indexOf(g.blockCommentContinue))>-1&&s<=c.ch&&s<=L(0,d)&&(C=d.slice(0,s));C!=null&&(C+=g.blockCommentContinue)}if(C==null&&l&&y(m)){if(d==null&&(d=m.getLine(c.line)),s=d.indexOf(l),!c.ch&&!s)C="";else if(s>-1&&L(0,d)>=s){if(C=L(c.ch,d)>-1,!C){var b=m.getLine(c.line+1)||"",E=b.indexOf(l);C=E>-1&&L(0,b)>=E||null}C&&(C=d.slice(0,s)+l+d.slice(s+l.length).match(/^\s*/)[0])}}if(C==null)return V.Pass;T[w]=` -`+C}m.operation(function(){for(var O=_.length-1;O>=0;O--)m.replaceRange(T[O],_[O].from(),_[O].to(),"+insert")})}function L(m,_){H.lastIndex=m;var g=H.exec(_);return g?g.index:-1}function y(m){var _=m.getOption("continueComments");return _&&typeof _=="object"?_.continueLineComment!==!1:!0}V.defineOption("continueComments",null,function(m,_,g){if(g&&g!=V.Init&&m.removeKeyMap("continueComment"),_){var T="Enter";typeof _=="string"?T=_:typeof _=="object"&&_.key&&(T=_.key);var w={name:"continueComment"};w[T]=h,m.addKeyMap(w)}})})});var Xl=or((Kl,Gl)=>{(function(V){typeof Kl=="object"&&typeof Gl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){V.defineOption("placeholder","",function(_,g,T){var w=T&&T!=V.Init;if(g&&!w)_.on("blur",L),_.on("change",y),_.on("swapDoc",y),V.on(_.getInputField(),"compositionupdate",_.state.placeholderCompose=function(){h(_)}),y(_);else if(!g&&w){_.off("blur",L),_.off("change",y),_.off("swapDoc",y),V.off(_.getInputField(),"compositionupdate",_.state.placeholderCompose),H(_);var c=_.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}g&&!_.hasFocus()&&L(_)});function H(_){_.state.placeholder&&(_.state.placeholder.parentNode.removeChild(_.state.placeholder),_.state.placeholder=null)}function R(_){H(_);var g=_.state.placeholder=document.createElement("pre");g.style.cssText="height: 0; overflow: visible",g.style.direction=_.getOption("direction"),g.className="CodeMirror-placeholder CodeMirror-line-like";var T=_.getOption("placeholder");typeof T=="string"&&(T=document.createTextNode(T)),g.appendChild(T),_.display.lineSpace.insertBefore(g,_.display.lineSpace.firstChild)}function h(_){setTimeout(function(){var g=!1;if(_.lineCount()==1){var T=_.getInputField();g=T.nodeName=="TEXTAREA"?!_.getLine(0).length:!/[^\u200b]/.test(T.querySelector(".CodeMirror-line").textContent)}g?R(_):H(_)},20)}function L(_){m(_)&&R(_)}function y(_){var g=_.getWrapperElement(),T=m(_);g.className=g.className.replace(" CodeMirror-empty","")+(T?" CodeMirror-empty":""),T?R(_):H(_)}function m(_){return _.lineCount()===1&&_.getLine(0)===""}})});var Vl=or((Yl,Zl)=>{(function(V){typeof Yl=="object"&&typeof Zl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},R=V.Pos;V.defineOption("autoCloseBrackets",!1,function(s,o,l){l&&l!=V.Init&&(s.removeKeyMap(L),s.state.closeBrackets=null),o&&(y(h(o,"pairs")),s.state.closeBrackets=o,s.addKeyMap(L))});function h(s,o){return o=="pairs"&&typeof s=="string"?s:typeof s=="object"&&s[o]!=null?s[o]:H[o]}var L={Backspace:g,Enter:T};function y(s){for(var o=0;o=0;u--){var b=a[u].head;s.replaceRange("",R(b.line,b.ch-1),R(b.line,b.ch+1),"+delete")}}function T(s){var o=_(s),l=o&&h(o,"explode");if(!l||s.getOption("disableInput"))return V.Pass;for(var a=s.listSelections(),u=0;u0?{line:b.head.line,ch:b.head.ch+o}:{line:b.head.line-1};l.push({anchor:E,head:E})}s.setSelections(l,u)}function c(s){var o=V.cmpPos(s.anchor,s.head)>0;return{anchor:new R(s.anchor.line,s.anchor.ch+(o?-1:1)),head:new R(s.head.line,s.head.ch+(o?1:-1))}}function p(s,o){var l=_(s);if(!l||s.getOption("disableInput"))return V.Pass;var a=h(l,"pairs"),u=a.indexOf(o);if(u==-1)return V.Pass;for(var v=h(l,"closeBefore"),b=h(l,"triples"),E=a.charAt(u+1)==o,O=s.listSelections(),k=u%2==0,A,N=0;N=0&&s.getRange(W,R(W.line,W.ch+3))==o+o+o?B="skipThree":B="skip";else if(E&&W.ch>1&&b.indexOf(o)>=0&&s.getRange(R(W.line,W.ch-2),W)==o+o){if(W.ch>2&&/\bstring/.test(s.getTokenTypeAt(R(W.line,W.ch-2))))return V.Pass;B="addFour"}else if(E){var j=W.ch==0?" ":s.getRange(R(W.line,W.ch-1),W);if(!V.isWordChar(F)&&j!=o&&!V.isWordChar(j))B="both";else return V.Pass}else if(k&&(F.length===0||/\s/.test(F)||v.indexOf(F)>-1))B="both";else return V.Pass;if(!A)A=B;else if(A!=B)return V.Pass}var G=u%2?a.charAt(u-1):o,$=u%2?o:a.charAt(u+1);s.operation(function(){if(A=="skip")w(s,1);else if(A=="skipThree")w(s,3);else if(A=="surround"){for(var ne=s.getSelections(),ie=0;ie{(function(V){typeof $l=="object"&&typeof Jl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),R=V.Pos,h={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function L(w){return w&&w.bracketRegex||/[(){}[\]]/}function y(w,c,p){var C=w.getLineHandle(c.line),d=c.ch-1,s=p&&p.afterCursor;s==null&&(s=/(^| )cm-fat-cursor($| )/.test(w.getWrapperElement().className));var o=L(p),l=!s&&d>=0&&o.test(C.text.charAt(d))&&h[C.text.charAt(d)]||o.test(C.text.charAt(d+1))&&h[C.text.charAt(++d)];if(!l)return null;var a=l.charAt(1)==">"?1:-1;if(p&&p.strict&&a>0!=(d==c.ch))return null;var u=w.getTokenTypeAt(R(c.line,d+1)),v=m(w,R(c.line,d+(a>0?1:0)),a,u,p);return v==null?null:{from:R(c.line,d),to:v&&v.pos,match:v&&v.ch==l.charAt(0),forward:a>0}}function m(w,c,p,C,d){for(var s=d&&d.maxScanLineLength||1e4,o=d&&d.maxScanLines||1e3,l=[],a=L(d),u=p>0?Math.min(c.line+o,w.lastLine()+1):Math.max(w.firstLine()-1,c.line-o),v=c.line;v!=u;v+=p){var b=w.getLine(v);if(!!b){var E=p>0?0:b.length-1,O=p>0?b.length:-1;if(!(b.length>s))for(v==c.line&&(E=c.ch-(p<0?1:0));E!=O;E+=p){var k=b.charAt(E);if(a.test(k)&&(C===void 0||(w.getTokenTypeAt(R(v,E+1))||"")==(C||""))){var A=h[k];if(A&&A.charAt(1)==">"==p>0)l.push(k);else if(l.length)l.pop();else return{pos:R(v,E),ch:k}}}}}return v-p==(p>0?w.lastLine():w.firstLine())?!1:null}function _(w,c,p){for(var C=w.state.matchBrackets.maxHighlightLineLength||1e3,d=p&&p.highlightNonMatching,s=[],o=w.listSelections(),l=0;l{(function(V){typeof Ql=="object"&&typeof ec=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";var H=V.Pos;function R(o){var l=o.flags;return l??(o.ignoreCase?"i":"")+(o.global?"g":"")+(o.multiline?"m":"")}function h(o,l){for(var a=R(o),u=a,v=0;vE);O++){var k=o.getLine(b++);u=u==null?k:u+` -`+k}v=v*2,l.lastIndex=a.ch;var A=l.exec(u);if(A){var N=u.slice(0,A.index).split(` -`),D=A[0].split(` -`),W=a.line+N.length-1,B=N[N.length-1].length;return{from:H(W,B),to:H(W+D.length-1,D.length==1?B+D[0].length:D[D.length-1].length),match:A}}}}function _(o,l,a){for(var u,v=0;v<=o.length;){l.lastIndex=v;var b=l.exec(o);if(!b)break;var E=b.index+b[0].length;if(E>o.length-a)break;(!u||E>u.index+u[0].length)&&(u=b),v=b.index+1}return u}function g(o,l,a){l=h(l,"g");for(var u=a.line,v=a.ch,b=o.firstLine();u>=b;u--,v=-1){var E=o.getLine(u),O=_(E,l,v<0?0:E.length-v);if(O)return{from:H(u,O.index),to:H(u,O.index+O[0].length),match:O}}}function T(o,l,a){if(!L(l))return g(o,l,a);l=h(l,"gm");for(var u,v=1,b=o.getLine(a.line).length-a.ch,E=a.line,O=o.firstLine();E>=O;){for(var k=0;k=O;k++){var A=o.getLine(E--);u=u==null?A:A+` -`+u}v*=2;var N=_(u,l,b);if(N){var D=u.slice(0,N.index).split(` +`)},enumerable:!1,configurable:!0}),R.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()},R.prototype.refresh=function(k){var M=this;this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(function(){return M._refresh()})),A.isLinux&&k&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)},R.prototype._refresh=function(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})},R.prototype._isClickInSelection=function(k){var M=this._getMouseBufferCoords(k),N=this._model.finalSelectionStart,D=this._model.finalSelectionEnd;return!!(N&&D&&M)&&this._areCoordsInSelection(M,N,D)},R.prototype._areCoordsInSelection=function(k,M,N){return k[1]>M[1]&&k[1]=M[0]&&k[0]=M[0]},R.prototype._selectWordAtCursor=function(k,M){var N,D,W=(D=(N=this._linkifier.currentLink)===null||N===void 0?void 0:N.link)===null||D===void 0?void 0:D.range;if(W)return this._model.selectionStart=[W.start.x-1,W.start.y-1],this._model.selectionStartLength=(0,a.getRangeLength)(W,this._bufferService.cols),this._model.selectionEnd=void 0,!0;var B=this._getMouseBufferCoords(k);return!!B&&(this._selectWordAt(B,M),this._model.selectionEnd=void 0,!0)},R.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()},R.prototype.selectLines=function(k,M){this._model.clearSelection(),k=Math.max(k,0),M=Math.min(M,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,k],this._model.selectionEnd=[this._bufferService.cols,M],this.refresh(),this._onSelectionChange.fire()},R.prototype._onTrim=function(k){this._model.onTrim(k)&&this.refresh()},R.prototype._getMouseBufferCoords=function(k){var M=this._mouseService.getCoords(k,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(M)return M[0]--,M[1]--,M[1]+=this._bufferService.buffer.ydisp,M},R.prototype._getMouseEventScrollAmount=function(k){var M=(0,s.getCoordsRelativeToElement)(k,this._screenElement)[1],N=this._renderService.dimensions.canvasHeight;return M>=0&&M<=N?0:(M>N&&(M-=N),M=Math.min(Math.max(M,-50),50),(M/=50)/Math.abs(M)+Math.round(14*M))},R.prototype.shouldForceSelection=function(k){return A.isMac?k.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:k.shiftKey},R.prototype.onMouseDown=function(k){if(this._mouseDownTimeStamp=k.timeStamp,(k.button!==2||!this.hasSelection)&&k.button===0){if(!this._enabled){if(!this.shouldForceSelection(k))return;k.stopPropagation()}k.preventDefault(),this._dragScrollAmount=0,this._enabled&&k.shiftKey?this._onIncrementalClick(k):k.detail===1?this._onSingleClick(k):k.detail===2?this._onDoubleClick(k):k.detail===3&&this._onTripleClick(k),this._addMouseDownListeners(),this.refresh(!0)}},R.prototype._addMouseDownListeners=function(){var k=this;this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=window.setInterval(function(){return k._dragScroll()},50)},R.prototype._removeMouseDownListeners=function(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0},R.prototype._onIncrementalClick=function(k){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(k))},R.prototype._onSingleClick=function(k){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(k)?3:0,this._model.selectionStart=this._getMouseBufferCoords(k),this._model.selectionStart){this._model.selectionEnd=void 0;var M=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);M&&M.length!==this._model.selectionStart[0]&&M.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}},R.prototype._onDoubleClick=function(k){this._selectWordAtCursor(k,!0)&&(this._activeSelectionMode=1)},R.prototype._onTripleClick=function(k){var M=this._getMouseBufferCoords(k);M&&(this._activeSelectionMode=2,this._selectLineAt(M[1]))},R.prototype.shouldColumnSelect=function(k){return k.altKey&&!(A.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)},R.prototype._onMouseMove=function(k){if(k.stopImmediatePropagation(),this._model.selectionStart){var M=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(k),this._model.selectionEnd){this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));var N=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(k.ydisp+this._bufferService.rows,k.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=k.ydisp),this.refresh()}},R.prototype._onMouseUp=function(k){var M=k.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&M<500&&k.altKey&&this._optionsService.getOption("altClickMovesCursor")){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){var N=this._mouseService.getCoords(k,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(N&&N[0]!==void 0&&N[1]!==void 0){var D=(0,o.moveToCellSequence)(N[0]-1,N[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(D,!0)}}}else this._fireEventIfSelectionChanged()},R.prototype._fireEventIfSelectionChanged=function(){var k=this._model.finalSelectionStart,M=this._model.finalSelectionEnd,N=!(!k||!M||k[0]===M[0]&&k[1]===M[1]);N?k&&M&&(this._oldSelectionStart&&this._oldSelectionEnd&&k[0]===this._oldSelectionStart[0]&&k[1]===this._oldSelectionStart[1]&&M[0]===this._oldSelectionEnd[0]&&M[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(k,M,N)):this._oldHasSelection&&this._fireOnSelectionChange(k,M,N)},R.prototype._fireOnSelectionChange=function(k,M,N){this._oldSelectionStart=k,this._oldSelectionEnd=M,this._oldHasSelection=N,this._onSelectionChange.fire()},R.prototype._onBufferActivate=function(k){var M=this;this.clearSelection(),this._trimListener.dispose(),this._trimListener=k.activeBuffer.lines.onTrim(function(N){return M._onTrim(N)})},R.prototype._convertViewportColToCharacterIndex=function(k,M){for(var N=M[0],D=0;M[0]>=D;D++){var W=k.loadCell(D,this._workCell).getChars().length;this._workCell.getWidth()===0?N--:W>1&&M[0]!==D&&(N+=W-1)}return N},R.prototype.setSelection=function(k,M,N){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[k,M],this._model.selectionStartLength=N,this.refresh()},R.prototype.rightClickSelect=function(k){this._isClickInSelection(k)||(this._selectWordAtCursor(k,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())},R.prototype._getWordAt=function(k,M,N,D){if(N===void 0&&(N=!0),D===void 0&&(D=!0),!(k[0]>=this._bufferService.cols)){var W=this._bufferService.buffer,B=W.lines.get(k[1]);if(B){var F=W.translateBufferLineToString(k[1],!1),j=this._convertViewportColToCharacterIndex(B,k),G=j,$=k[0]-j,ne=0,ie=0,be=0,ve=0;if(F.charAt(j)===" "){for(;j>0&&F.charAt(j-1)===" ";)j--;for(;G1&&(ve+=ee-1,G+=ee-1);Ee>0&&j>0&&!this._isCharWordSeparator(B.loadCell(Ee-1,this._workCell));){B.loadCell(Ee-1,this._workCell);var q=this._workCell.getChars().length;this._workCell.getWidth()===0?(ne++,Ee--):q>1&&(be+=q-1,j-=q-1),j--,Ee--}for(;U1&&(ve+=Y-1,G+=Y-1),G++,U++}}G++;var K=j+$-ne+be,Se=Math.min(this._bufferService.cols,G-j+ne+ie-be-ve);if(M||F.slice(j,G).trim()!==""){if(N&&K===0&&B.getCodePoint(0)!==32){var fe=W.lines.get(k[1]-1);if(fe&&B.isWrapped&&fe.getCodePoint(this._bufferService.cols-1)!==32){var Ce=this._getWordAt([this._bufferService.cols-1,k[1]-1],!1,!0,!1);if(Ce){var De=this._bufferService.cols-Ce.start;K-=De,Se+=De}}}if(D&&K+Se===this._bufferService.cols&&B.getCodePoint(this._bufferService.cols-1)!==32){var Fe=W.lines.get(k[1]+1);if(Fe?.isWrapped&&Fe.getCodePoint(0)!==32){var Ae=this._getWordAt([0,k[1]+1],!1,!1,!0);Ae&&(Se+=Ae.length)}}return{start:K,length:Se}}}}},R.prototype._selectWordAt=function(k,M){var N=this._getWordAt(k,M);if(N){for(;N.start<0;)N.start+=this._bufferService.cols,k[1]--;this._model.selectionStart=[N.start,k[1]],this._model.selectionStartLength=N.length}},R.prototype._selectToWordAt=function(k){var M=this._getWordAt(k,!0);if(M){for(var N=k[1];M.start<0;)M.start+=this._bufferService.cols,N--;if(!this._model.areSelectionValuesReversed())for(;M.start+M.length>this._bufferService.cols;)M.length-=this._bufferService.cols,N++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?M.start:M.start+M.length,N]}},R.prototype._isCharWordSeparator=function(k){return k.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(k.getChars())>=0},R.prototype._selectLineAt=function(k){var M=this._bufferService.buffer.getWrappedRangeForLine(k);this._model.selectionStart=[0,M.first],this._model.selectionEnd=[this._bufferService.cols,M.last],this._model.selectionStartLength=0},_([v(3,d.IBufferService),v(4,d.ICoreService),v(5,C.IMouseService),v(6,d.IOptionsService),v(7,C.IRenderService)],R)}(l.Disposable);f.SelectionService=b},4725:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.IDecorationService=f.ICharacterJoinerService=f.ISoundService=f.ISelectionService=f.IRenderService=f.IMouseService=f.ICoreBrowserService=f.ICharSizeService=void 0;var y=L(8343);f.ICharSizeService=(0,y.createDecorator)("CharSizeService"),f.ICoreBrowserService=(0,y.createDecorator)("CoreBrowserService"),f.IMouseService=(0,y.createDecorator)("MouseService"),f.IRenderService=(0,y.createDecorator)("RenderService"),f.ISelectionService=(0,y.createDecorator)("SelectionService"),f.ISoundService=(0,y.createDecorator)("SoundService"),f.ICharacterJoinerService=(0,y.createDecorator)("CharacterJoinerService"),f.IDecorationService=(0,y.createDecorator)("DecorationService")},357:function(E,f,L){var y=this&&this.__decorate||function(A,w,c,p){var C,d=arguments.length,s=d<3?w:p===null?p=Object.getOwnPropertyDescriptor(w,c):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(A,w,c,p);else for(var o=A.length-1;o>=0;o--)(C=A[o])&&(s=(d<3?C(s):d>3?C(w,c,s):C(w,c))||s);return d>3&&s&&Object.defineProperty(w,c,s),s},m=this&&this.__param||function(A,w){return function(c,p){w(c,p,A)}};Object.defineProperty(f,"__esModule",{value:!0}),f.SoundService=void 0;var _=L(2585),v=function(){function A(w){this._optionsService=w}return Object.defineProperty(A,"audioContext",{get:function(){if(!A._audioContext){var w=window.AudioContext||window.webkitAudioContext;if(!w)return console.warn("Web Audio API is not supported by this browser. Consider upgrading to the latest version"),null;A._audioContext=new w}return A._audioContext},enumerable:!1,configurable:!0}),A.prototype.playBellSound=function(){var w=A.audioContext;if(w){var c=w.createBufferSource();w.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)),function(p){c.buffer=p,c.connect(w.destination),c.start(0)})}},A.prototype._base64ToArrayBuffer=function(w){for(var c=window.atob(w),p=c.length,C=new Uint8Array(p),d=0;d{Object.defineProperty(f,"__esModule",{value:!0}),f.CircularList=void 0;var y=L(8460),m=function(){function _(v){this._maxLength=v,this.onDeleteEmitter=new y.EventEmitter,this.onInsertEmitter=new y.EventEmitter,this.onTrimEmitter=new y.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}return Object.defineProperty(_.prototype,"onDelete",{get:function(){return this.onDeleteEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onInsert",{get:function(){return this.onInsertEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"onTrim",{get:function(){return this.onTrimEmitter.event},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"maxLength",{get:function(){return this._maxLength},set:function(v){if(this._maxLength!==v){for(var A=new Array(v),w=0;wthis._length)for(var A=this._length;A=v;p--)this._array[this._getCyclicIndex(p+w.length)]=this._array[this._getCyclicIndex(p)];for(p=0;pthis._maxLength){var C=this._length+w.length-this._maxLength;this._startIndex+=C,this._length=this._maxLength,this.onTrimEmitter.fire(C)}else this._length+=w.length},_.prototype.trimStart=function(v){v>this._length&&(v=this._length),this._startIndex+=v,this._length-=v,this.onTrimEmitter.fire(v)},_.prototype.shiftElements=function(v,A,w){if(!(A<=0)){if(v<0||v>=this._length)throw new Error("start argument out of range");if(v+w<0)throw new Error("Cannot shift elements in list beyond index 0");if(w>0){for(var c=A-1;c>=0;c--)this.set(v+c+w,this.get(v+c));var p=v+A+w-this._length;if(p>0)for(this._length+=p;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(c=0;c{Object.defineProperty(f,"__esModule",{value:!0}),f.clone=void 0,f.clone=function L(y,m){if(m===void 0&&(m=5),typeof y!="object")return y;var _=Array.isArray(y)?[]:{};for(var v in y)_[v]=m<=1?y[v]:y[v]&&L(y[v],m-1);return _}},8969:function(E,f,L){var y,m=this&&this.__extends||(y=function(k,M){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(N,D){N.__proto__=D}||function(N,D){for(var W in D)Object.prototype.hasOwnProperty.call(D,W)&&(N[W]=D[W])},y(k,M)},function(k,M){if(typeof M!="function"&&M!==null)throw new TypeError("Class extends value "+String(M)+" is not a constructor or null");function N(){this.constructor=k}y(k,M),k.prototype=M===null?Object.create(M):(N.prototype=M.prototype,new N)});Object.defineProperty(f,"__esModule",{value:!0}),f.CoreTerminal=void 0;var _=L(844),v=L(2585),A=L(4348),w=L(7866),c=L(744),p=L(7302),C=L(6975),d=L(8460),s=L(1753),o=L(3730),l=L(1480),a=L(7994),u=L(9282),g=L(5435),b=L(5981),T=!1,R=function(k){function M(N){var D=k.call(this)||this;return D._onBinary=new d.EventEmitter,D._onData=new d.EventEmitter,D._onLineFeed=new d.EventEmitter,D._onResize=new d.EventEmitter,D._onScroll=new d.EventEmitter,D._instantiationService=new A.InstantiationService,D.optionsService=new p.OptionsService(N),D._instantiationService.setService(v.IOptionsService,D.optionsService),D._bufferService=D.register(D._instantiationService.createInstance(c.BufferService)),D._instantiationService.setService(v.IBufferService,D._bufferService),D._logService=D._instantiationService.createInstance(w.LogService),D._instantiationService.setService(v.ILogService,D._logService),D.coreService=D.register(D._instantiationService.createInstance(C.CoreService,function(){return D.scrollToBottom()})),D._instantiationService.setService(v.ICoreService,D.coreService),D.coreMouseService=D._instantiationService.createInstance(s.CoreMouseService),D._instantiationService.setService(v.ICoreMouseService,D.coreMouseService),D._dirtyRowService=D._instantiationService.createInstance(o.DirtyRowService),D._instantiationService.setService(v.IDirtyRowService,D._dirtyRowService),D.unicodeService=D._instantiationService.createInstance(l.UnicodeService),D._instantiationService.setService(v.IUnicodeService,D.unicodeService),D._charsetService=D._instantiationService.createInstance(a.CharsetService),D._instantiationService.setService(v.ICharsetService,D._charsetService),D._inputHandler=new g.InputHandler(D._bufferService,D._charsetService,D.coreService,D._dirtyRowService,D._logService,D.optionsService,D.coreMouseService,D.unicodeService),D.register((0,d.forwardEvent)(D._inputHandler.onLineFeed,D._onLineFeed)),D.register(D._inputHandler),D.register((0,d.forwardEvent)(D._bufferService.onResize,D._onResize)),D.register((0,d.forwardEvent)(D.coreService.onData,D._onData)),D.register((0,d.forwardEvent)(D.coreService.onBinary,D._onBinary)),D.register(D.optionsService.onOptionChange(function(W){return D._updateOptions(W)})),D.register(D._bufferService.onScroll(function(W){D._onScroll.fire({position:D._bufferService.buffer.ydisp,source:0}),D._dirtyRowService.markRangeDirty(D._bufferService.buffer.scrollTop,D._bufferService.buffer.scrollBottom)})),D.register(D._inputHandler.onScroll(function(W){D._onScroll.fire({position:D._bufferService.buffer.ydisp,source:0}),D._dirtyRowService.markRangeDirty(D._bufferService.buffer.scrollTop,D._bufferService.buffer.scrollBottom)})),D._writeBuffer=new b.WriteBuffer(function(W,B){return D._inputHandler.parse(W,B)}),D}return m(M,k),Object.defineProperty(M.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"onScroll",{get:function(){var N=this;return this._onScrollApi||(this._onScrollApi=new d.EventEmitter,this.register(this._onScroll.event(function(D){var W;(W=N._onScrollApi)===null||W===void 0||W.fire(D.position)}))),this._onScrollApi.event},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"cols",{get:function(){return this._bufferService.cols},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"rows",{get:function(){return this._bufferService.rows},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"buffers",{get:function(){return this._bufferService.buffers},enumerable:!1,configurable:!0}),Object.defineProperty(M.prototype,"options",{get:function(){return this.optionsService.options},set:function(N){for(var D in N)this.optionsService.options[D]=N[D]},enumerable:!1,configurable:!0}),M.prototype.dispose=function(){var N;this._isDisposed||(k.prototype.dispose.call(this),(N=this._windowsMode)===null||N===void 0||N.dispose(),this._windowsMode=void 0)},M.prototype.write=function(N,D){this._writeBuffer.write(N,D)},M.prototype.writeSync=function(N,D){this._logService.logLevel<=v.LogLevelEnum.WARN&&!T&&(this._logService.warn("writeSync is unreliable and will be removed soon."),T=!0),this._writeBuffer.writeSync(N,D)},M.prototype.resize=function(N,D){isNaN(N)||isNaN(D)||(N=Math.max(N,c.MINIMUM_COLS),D=Math.max(D,c.MINIMUM_ROWS),this._bufferService.resize(N,D))},M.prototype.scroll=function(N,D){D===void 0&&(D=!1),this._bufferService.scroll(N,D)},M.prototype.scrollLines=function(N,D,W){this._bufferService.scrollLines(N,D,W)},M.prototype.scrollPages=function(N){this._bufferService.scrollPages(N)},M.prototype.scrollToTop=function(){this._bufferService.scrollToTop()},M.prototype.scrollToBottom=function(){this._bufferService.scrollToBottom()},M.prototype.scrollToLine=function(N){this._bufferService.scrollToLine(N)},M.prototype.registerEscHandler=function(N,D){return this._inputHandler.registerEscHandler(N,D)},M.prototype.registerDcsHandler=function(N,D){return this._inputHandler.registerDcsHandler(N,D)},M.prototype.registerCsiHandler=function(N,D){return this._inputHandler.registerCsiHandler(N,D)},M.prototype.registerOscHandler=function(N,D){return this._inputHandler.registerOscHandler(N,D)},M.prototype._setup=function(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()},M.prototype.reset=function(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()},M.prototype._updateOptions=function(N){var D;switch(N){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():((D=this._windowsMode)===null||D===void 0||D.dispose(),this._windowsMode=void 0)}},M.prototype._enableWindowsMode=function(){var N=this;if(!this._windowsMode){var D=[];D.push(this.onLineFeed(u.updateWindowsModeWrappedState.bind(null,this._bufferService))),D.push(this.registerCsiHandler({final:"H"},function(){return(0,u.updateWindowsModeWrappedState)(N._bufferService),!1})),this._windowsMode={dispose:function(){for(var W=0,B=D;W{Object.defineProperty(f,"__esModule",{value:!0}),f.forwardEvent=f.EventEmitter=void 0;var L=function(){function y(){this._listeners=[],this._disposed=!1}return Object.defineProperty(y.prototype,"event",{get:function(){var m=this;return this._event||(this._event=function(_){return m._listeners.push(_),{dispose:function(){if(!m._disposed){for(var v=0;v24)return B.setWinLines||!1;switch(W){case 1:return!!B.restoreWin;case 2:return!!B.minimizeWin;case 3:return!!B.setWinPosition;case 4:return!!B.setWinSizePixels;case 5:return!!B.raiseWin;case 6:return!!B.lowerWin;case 7:return!!B.refreshWin;case 8:return!!B.setWinSizeChars;case 9:return!!B.maximizeWin;case 10:return!!B.fullscreenWin;case 11:return!!B.getWinState;case 13:return!!B.getWinPosition;case 14:return!!B.getWinSizePixels;case 15:return!!B.getScreenSizePixels;case 16:return!!B.getCellSizePixels;case 18:return!!B.getWinSizeChars;case 19:return!!B.getScreenSizeChars;case 20:return!!B.getIconTitle;case 21:return!!B.getWinTitle;case 22:return!!B.pushTitle;case 23:return!!B.popTitle;case 24:return!!B.setWinLines}return!1}(function(W){W[W.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",W[W.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(_=f.WindowsOptionsReportType||(f.WindowsOptionsReportType={}));var N=function(){function W(B,F,j,G){this._bufferService=B,this._coreService=F,this._logService=j,this._optionsService=G,this._data=new Uint32Array(0)}return W.prototype.hook=function(B){this._data=new Uint32Array(0)},W.prototype.put=function(B,F,j){this._data=(0,p.concat)(this._data,B.subarray(F,j))},W.prototype.unhook=function(B){if(!B)return this._data=new Uint32Array(0),!0;var F=(0,C.utf32ToString)(this._data);switch(this._data=new Uint32Array(0),F){case'"q':this._coreService.triggerDataEvent(v.C0.ESC+'P1$r0"q'+v.C0.ESC+"\\");break;case'"p':this._coreService.triggerDataEvent(v.C0.ESC+'P1$r61;1"p'+v.C0.ESC+"\\");break;case"r":var j=this._bufferService.buffer.scrollTop+1+";"+(this._bufferService.buffer.scrollBottom+1)+"r";this._coreService.triggerDataEvent(v.C0.ESC+"P1$r"+j+v.C0.ESC+"\\");break;case"m":this._coreService.triggerDataEvent(v.C0.ESC+"P1$r0m"+v.C0.ESC+"\\");break;case" q":var G={block:2,underline:4,bar:6}[this._optionsService.rawOptions.cursorStyle];G-=this._optionsService.rawOptions.cursorBlink?1:0,this._coreService.triggerDataEvent(v.C0.ESC+"P1$r"+G+" q"+v.C0.ESC+"\\");break;default:this._logService.debug("Unknown DCS $q %s",F),this._coreService.triggerDataEvent(v.C0.ESC+"P0$r"+v.C0.ESC+"\\")}return!0},W}(),D=function(W){function B(F,j,G,$,ne,ie,be,ve,Ee){Ee===void 0&&(Ee=new w.EscapeSequenceParser);var U=W.call(this)||this;U._bufferService=F,U._charsetService=j,U._coreService=G,U._dirtyRowService=$,U._logService=ne,U._optionsService=ie,U._coreMouseService=be,U._unicodeService=ve,U._parser=Ee,U._parseBuffer=new Uint32Array(4096),U._stringDecoder=new C.StringToUtf32,U._utf8Decoder=new C.Utf8ToUtf32,U._workCell=new l.CellData,U._windowTitle="",U._iconName="",U._windowTitleStack=[],U._iconNameStack=[],U._curAttrData=d.DEFAULT_ATTR_DATA.clone(),U._eraseAttrDataInternal=d.DEFAULT_ATTR_DATA.clone(),U._onRequestBell=new s.EventEmitter,U._onRequestRefreshRows=new s.EventEmitter,U._onRequestReset=new s.EventEmitter,U._onRequestSendFocus=new s.EventEmitter,U._onRequestSyncScrollBar=new s.EventEmitter,U._onRequestWindowsOptionsReport=new s.EventEmitter,U._onA11yChar=new s.EventEmitter,U._onA11yTab=new s.EventEmitter,U._onCursorMove=new s.EventEmitter,U._onLineFeed=new s.EventEmitter,U._onScroll=new s.EventEmitter,U._onTitleChange=new s.EventEmitter,U._onColor=new s.EventEmitter,U._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},U._specialColors=[256,257,258],U.register(U._parser),U._activeBuffer=U._bufferService.buffer,U.register(U._bufferService.buffers.onBufferActivate(function(K){return U._activeBuffer=K.activeBuffer})),U._parser.setCsiHandlerFallback(function(K,Se){U._logService.debug("Unknown CSI code: ",{identifier:U._parser.identToString(K),params:Se.toArray()})}),U._parser.setEscHandlerFallback(function(K){U._logService.debug("Unknown ESC code: ",{identifier:U._parser.identToString(K)})}),U._parser.setExecuteHandlerFallback(function(K){U._logService.debug("Unknown EXECUTE code: ",{code:K})}),U._parser.setOscHandlerFallback(function(K,Se,fe){U._logService.debug("Unknown OSC code: ",{identifier:K,action:Se,data:fe})}),U._parser.setDcsHandlerFallback(function(K,Se,fe){Se==="HOOK"&&(fe=fe.toArray()),U._logService.debug("Unknown DCS code: ",{identifier:U._parser.identToString(K),action:Se,payload:fe})}),U._parser.setPrintHandler(function(K,Se,fe){return U.print(K,Se,fe)}),U._parser.registerCsiHandler({final:"@"},function(K){return U.insertChars(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"@"},function(K){return U.scrollLeft(K)}),U._parser.registerCsiHandler({final:"A"},function(K){return U.cursorUp(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"A"},function(K){return U.scrollRight(K)}),U._parser.registerCsiHandler({final:"B"},function(K){return U.cursorDown(K)}),U._parser.registerCsiHandler({final:"C"},function(K){return U.cursorForward(K)}),U._parser.registerCsiHandler({final:"D"},function(K){return U.cursorBackward(K)}),U._parser.registerCsiHandler({final:"E"},function(K){return U.cursorNextLine(K)}),U._parser.registerCsiHandler({final:"F"},function(K){return U.cursorPrecedingLine(K)}),U._parser.registerCsiHandler({final:"G"},function(K){return U.cursorCharAbsolute(K)}),U._parser.registerCsiHandler({final:"H"},function(K){return U.cursorPosition(K)}),U._parser.registerCsiHandler({final:"I"},function(K){return U.cursorForwardTab(K)}),U._parser.registerCsiHandler({final:"J"},function(K){return U.eraseInDisplay(K)}),U._parser.registerCsiHandler({prefix:"?",final:"J"},function(K){return U.eraseInDisplay(K)}),U._parser.registerCsiHandler({final:"K"},function(K){return U.eraseInLine(K)}),U._parser.registerCsiHandler({prefix:"?",final:"K"},function(K){return U.eraseInLine(K)}),U._parser.registerCsiHandler({final:"L"},function(K){return U.insertLines(K)}),U._parser.registerCsiHandler({final:"M"},function(K){return U.deleteLines(K)}),U._parser.registerCsiHandler({final:"P"},function(K){return U.deleteChars(K)}),U._parser.registerCsiHandler({final:"S"},function(K){return U.scrollUp(K)}),U._parser.registerCsiHandler({final:"T"},function(K){return U.scrollDown(K)}),U._parser.registerCsiHandler({final:"X"},function(K){return U.eraseChars(K)}),U._parser.registerCsiHandler({final:"Z"},function(K){return U.cursorBackwardTab(K)}),U._parser.registerCsiHandler({final:"`"},function(K){return U.charPosAbsolute(K)}),U._parser.registerCsiHandler({final:"a"},function(K){return U.hPositionRelative(K)}),U._parser.registerCsiHandler({final:"b"},function(K){return U.repeatPrecedingCharacter(K)}),U._parser.registerCsiHandler({final:"c"},function(K){return U.sendDeviceAttributesPrimary(K)}),U._parser.registerCsiHandler({prefix:">",final:"c"},function(K){return U.sendDeviceAttributesSecondary(K)}),U._parser.registerCsiHandler({final:"d"},function(K){return U.linePosAbsolute(K)}),U._parser.registerCsiHandler({final:"e"},function(K){return U.vPositionRelative(K)}),U._parser.registerCsiHandler({final:"f"},function(K){return U.hVPosition(K)}),U._parser.registerCsiHandler({final:"g"},function(K){return U.tabClear(K)}),U._parser.registerCsiHandler({final:"h"},function(K){return U.setMode(K)}),U._parser.registerCsiHandler({prefix:"?",final:"h"},function(K){return U.setModePrivate(K)}),U._parser.registerCsiHandler({final:"l"},function(K){return U.resetMode(K)}),U._parser.registerCsiHandler({prefix:"?",final:"l"},function(K){return U.resetModePrivate(K)}),U._parser.registerCsiHandler({final:"m"},function(K){return U.charAttributes(K)}),U._parser.registerCsiHandler({final:"n"},function(K){return U.deviceStatus(K)}),U._parser.registerCsiHandler({prefix:"?",final:"n"},function(K){return U.deviceStatusPrivate(K)}),U._parser.registerCsiHandler({intermediates:"!",final:"p"},function(K){return U.softReset(K)}),U._parser.registerCsiHandler({intermediates:" ",final:"q"},function(K){return U.setCursorStyle(K)}),U._parser.registerCsiHandler({final:"r"},function(K){return U.setScrollRegion(K)}),U._parser.registerCsiHandler({final:"s"},function(K){return U.saveCursor(K)}),U._parser.registerCsiHandler({final:"t"},function(K){return U.windowOptions(K)}),U._parser.registerCsiHandler({final:"u"},function(K){return U.restoreCursor(K)}),U._parser.registerCsiHandler({intermediates:"'",final:"}"},function(K){return U.insertColumns(K)}),U._parser.registerCsiHandler({intermediates:"'",final:"~"},function(K){return U.deleteColumns(K)}),U._parser.setExecuteHandler(v.C0.BEL,function(){return U.bell()}),U._parser.setExecuteHandler(v.C0.LF,function(){return U.lineFeed()}),U._parser.setExecuteHandler(v.C0.VT,function(){return U.lineFeed()}),U._parser.setExecuteHandler(v.C0.FF,function(){return U.lineFeed()}),U._parser.setExecuteHandler(v.C0.CR,function(){return U.carriageReturn()}),U._parser.setExecuteHandler(v.C0.BS,function(){return U.backspace()}),U._parser.setExecuteHandler(v.C0.HT,function(){return U.tab()}),U._parser.setExecuteHandler(v.C0.SO,function(){return U.shiftOut()}),U._parser.setExecuteHandler(v.C0.SI,function(){return U.shiftIn()}),U._parser.setExecuteHandler(v.C1.IND,function(){return U.index()}),U._parser.setExecuteHandler(v.C1.NEL,function(){return U.nextLine()}),U._parser.setExecuteHandler(v.C1.HTS,function(){return U.tabSet()}),U._parser.registerOscHandler(0,new g.OscHandler(function(K){return U.setTitle(K),U.setIconName(K),!0})),U._parser.registerOscHandler(1,new g.OscHandler(function(K){return U.setIconName(K)})),U._parser.registerOscHandler(2,new g.OscHandler(function(K){return U.setTitle(K)})),U._parser.registerOscHandler(4,new g.OscHandler(function(K){return U.setOrReportIndexedColor(K)})),U._parser.registerOscHandler(10,new g.OscHandler(function(K){return U.setOrReportFgColor(K)})),U._parser.registerOscHandler(11,new g.OscHandler(function(K){return U.setOrReportBgColor(K)})),U._parser.registerOscHandler(12,new g.OscHandler(function(K){return U.setOrReportCursorColor(K)})),U._parser.registerOscHandler(104,new g.OscHandler(function(K){return U.restoreIndexedColor(K)})),U._parser.registerOscHandler(110,new g.OscHandler(function(K){return U.restoreFgColor(K)})),U._parser.registerOscHandler(111,new g.OscHandler(function(K){return U.restoreBgColor(K)})),U._parser.registerOscHandler(112,new g.OscHandler(function(K){return U.restoreCursorColor(K)})),U._parser.registerEscHandler({final:"7"},function(){return U.saveCursor()}),U._parser.registerEscHandler({final:"8"},function(){return U.restoreCursor()}),U._parser.registerEscHandler({final:"D"},function(){return U.index()}),U._parser.registerEscHandler({final:"E"},function(){return U.nextLine()}),U._parser.registerEscHandler({final:"H"},function(){return U.tabSet()}),U._parser.registerEscHandler({final:"M"},function(){return U.reverseIndex()}),U._parser.registerEscHandler({final:"="},function(){return U.keypadApplicationMode()}),U._parser.registerEscHandler({final:">"},function(){return U.keypadNumericMode()}),U._parser.registerEscHandler({final:"c"},function(){return U.fullReset()}),U._parser.registerEscHandler({final:"n"},function(){return U.setgLevel(2)}),U._parser.registerEscHandler({final:"o"},function(){return U.setgLevel(3)}),U._parser.registerEscHandler({final:"|"},function(){return U.setgLevel(3)}),U._parser.registerEscHandler({final:"}"},function(){return U.setgLevel(2)}),U._parser.registerEscHandler({final:"~"},function(){return U.setgLevel(1)}),U._parser.registerEscHandler({intermediates:"%",final:"@"},function(){return U.selectDefaultCharset()}),U._parser.registerEscHandler({intermediates:"%",final:"G"},function(){return U.selectDefaultCharset()});var ee=function(K){q._parser.registerEscHandler({intermediates:"(",final:K},function(){return U.selectCharset("("+K)}),q._parser.registerEscHandler({intermediates:")",final:K},function(){return U.selectCharset(")"+K)}),q._parser.registerEscHandler({intermediates:"*",final:K},function(){return U.selectCharset("*"+K)}),q._parser.registerEscHandler({intermediates:"+",final:K},function(){return U.selectCharset("+"+K)}),q._parser.registerEscHandler({intermediates:"-",final:K},function(){return U.selectCharset("-"+K)}),q._parser.registerEscHandler({intermediates:".",final:K},function(){return U.selectCharset("."+K)}),q._parser.registerEscHandler({intermediates:"/",final:K},function(){return U.selectCharset("/"+K)})},q=this;for(var Y in A.CHARSETS)ee(Y);return U._parser.registerEscHandler({intermediates:"#",final:"8"},function(){return U.screenAlignmentPattern()}),U._parser.setErrorHandler(function(K){return U._logService.error("Parsing error: ",K),K}),U._parser.registerDcsHandler({intermediates:"$",final:"q"},new N(U._bufferService,U._coreService,U._logService,U._optionsService)),U}return m(B,W),Object.defineProperty(B.prototype,"onRequestBell",{get:function(){return this._onRequestBell.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestRefreshRows",{get:function(){return this._onRequestRefreshRows.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestReset",{get:function(){return this._onRequestReset.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestSendFocus",{get:function(){return this._onRequestSendFocus.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestSyncScrollBar",{get:function(){return this._onRequestSyncScrollBar.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onRequestWindowsOptionsReport",{get:function(){return this._onRequestWindowsOptionsReport.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onA11yChar",{get:function(){return this._onA11yChar.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onA11yTab",{get:function(){return this._onA11yTab.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onCursorMove",{get:function(){return this._onCursorMove.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onLineFeed",{get:function(){return this._onLineFeed.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onTitleChange",{get:function(){return this._onTitleChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(B.prototype,"onColor",{get:function(){return this._onColor.event},enumerable:!1,configurable:!0}),B.prototype.dispose=function(){W.prototype.dispose.call(this)},B.prototype._preserveStack=function(F,j,G,$){this._parseStack.paused=!0,this._parseStack.cursorStartX=F,this._parseStack.cursorStartY=j,this._parseStack.decodedLength=G,this._parseStack.position=$},B.prototype._logSlowResolvingAsync=function(F){this._logService.logLevel<=u.LogLevelEnum.WARN&&Promise.race([F,new Promise(function(j,G){return setTimeout(function(){return G("#SLOW_TIMEOUT")},5e3)})]).catch(function(j){if(j!=="#SLOW_TIMEOUT")throw j;console.warn("async parser handler taking longer than 5000 ms")})},B.prototype.parse=function(F,j){var G,$=this._activeBuffer.x,ne=this._activeBuffer.y,ie=0,be=this._parseStack.paused;if(be){if(G=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,j))return this._logSlowResolvingAsync(G),G;$=this._parseStack.cursorStartX,ne=this._parseStack.cursorStartY,this._parseStack.paused=!1,F.length>k&&(ie=this._parseStack.position+k)}if(this._logService.logLevel<=u.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+(typeof F=="string"?' "'+F+'"':' "'+Array.prototype.map.call(F,function(ee){return String.fromCharCode(ee)}).join("")+'"'),typeof F=="string"?F.split("").map(function(ee){return ee.charCodeAt(0)}):F),this._parseBuffer.lengthk)for(var ve=ie;ve0&&q.getWidth(this._activeBuffer.x-1)===2&&q.setCellFromCodePoint(this._activeBuffer.x-1,0,1,ee.fg,ee.bg,ee.extended);for(var Y=j;Y=ve){if(Ee){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),q=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=ve-1,ne===2)continue}if(U&&(q.insertCells(this._activeBuffer.x,ne,this._activeBuffer.getNullCell(ee),ee),q.getWidth(ve-1)===2&&q.setCellFromCodePoint(ve-1,o.NULL_CELL_CODE,o.NULL_CELL_WIDTH,ee.fg,ee.bg,ee.extended)),q.setCellFromCodePoint(this._activeBuffer.x++,$,ne,ee.fg,ee.bg,ee.extended),ne>0)for(;--ne;)q.setCellFromCodePoint(this._activeBuffer.x++,0,0,ee.fg,ee.bg,ee.extended)}else q.getWidth(this._activeBuffer.x-1)?q.addCodepointToCell(this._activeBuffer.x-1,$):q.addCodepointToCell(this._activeBuffer.x-2,$)}G-j>0&&(q.loadCell(this._activeBuffer.x-1,this._workCell),this._workCell.getWidth()===2||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&q.getWidth(this._activeBuffer.x)===0&&!q.hasContent(this._activeBuffer.x)&&q.setCellFromCodePoint(this._activeBuffer.x,0,1,ee.fg,ee.bg,ee.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype.registerCsiHandler=function(F,j){var G=this;return F.final!=="t"||F.prefix||F.intermediates?this._parser.registerCsiHandler(F,j):this._parser.registerCsiHandler(F,function($){return!M($.params[0],G._optionsService.rawOptions.windowOptions)||j($)})},B.prototype.registerDcsHandler=function(F,j){return this._parser.registerDcsHandler(F,new b.DcsHandler(j))},B.prototype.registerEscHandler=function(F,j){return this._parser.registerEscHandler(F,j)},B.prototype.registerOscHandler=function(F,j){return this._parser.registerOscHandler(F,new g.OscHandler(j))},B.prototype.bell=function(){return this._onRequestBell.fire(),!0},B.prototype.lineFeed=function(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0},B.prototype.carriageReturn=function(){return this._activeBuffer.x=0,!0},B.prototype.backspace=function(){var F;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((F=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))===null||F===void 0?void 0:F.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;var j=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);j.hasWidth(this._activeBuffer.x)&&!j.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0},B.prototype.tab=function(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;var F=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-F),!0},B.prototype.shiftOut=function(){return this._charsetService.setgLevel(1),!0},B.prototype.shiftIn=function(){return this._charsetService.setgLevel(0),!0},B.prototype._restrictCursor=function(F){F===void 0&&(F=this._bufferService.cols-1),this._activeBuffer.x=Math.min(F,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype._setCursor=function(F,j){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=F,this._activeBuffer.y=this._activeBuffer.scrollTop+j):(this._activeBuffer.x=F,this._activeBuffer.y=j),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)},B.prototype._moveCursor=function(F,j){this._restrictCursor(),this._setCursor(this._activeBuffer.x+F,this._activeBuffer.y+j)},B.prototype.cursorUp=function(F){var j=this._activeBuffer.y-this._activeBuffer.scrollTop;return j>=0?this._moveCursor(0,-Math.min(j,F.params[0]||1)):this._moveCursor(0,-(F.params[0]||1)),!0},B.prototype.cursorDown=function(F){var j=this._activeBuffer.scrollBottom-this._activeBuffer.y;return j>=0?this._moveCursor(0,Math.min(j,F.params[0]||1)):this._moveCursor(0,F.params[0]||1),!0},B.prototype.cursorForward=function(F){return this._moveCursor(F.params[0]||1,0),!0},B.prototype.cursorBackward=function(F){return this._moveCursor(-(F.params[0]||1),0),!0},B.prototype.cursorNextLine=function(F){return this.cursorDown(F),this._activeBuffer.x=0,!0},B.prototype.cursorPrecedingLine=function(F){return this.cursorUp(F),this._activeBuffer.x=0,!0},B.prototype.cursorCharAbsolute=function(F){return this._setCursor((F.params[0]||1)-1,this._activeBuffer.y),!0},B.prototype.cursorPosition=function(F){return this._setCursor(F.length>=2?(F.params[1]||1)-1:0,(F.params[0]||1)-1),!0},B.prototype.charPosAbsolute=function(F){return this._setCursor((F.params[0]||1)-1,this._activeBuffer.y),!0},B.prototype.hPositionRelative=function(F){return this._moveCursor(F.params[0]||1,0),!0},B.prototype.linePosAbsolute=function(F){return this._setCursor(this._activeBuffer.x,(F.params[0]||1)-1),!0},B.prototype.vPositionRelative=function(F){return this._moveCursor(0,F.params[0]||1),!0},B.prototype.hVPosition=function(F){return this.cursorPosition(F),!0},B.prototype.tabClear=function(F){var j=F.params[0];return j===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:j===3&&(this._activeBuffer.tabs={}),!0},B.prototype.cursorForwardTab=function(F){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var j=F.params[0]||1;j--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0},B.prototype.cursorBackwardTab=function(F){if(this._activeBuffer.x>=this._bufferService.cols)return!0;for(var j=F.params[0]||1;j--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0},B.prototype._eraseInBufferLine=function(F,j,G,$){$===void 0&&($=!1);var ne=this._activeBuffer.lines.get(this._activeBuffer.ybase+F);ne.replaceCells(j,G,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData()),$&&(ne.isWrapped=!1)},B.prototype._resetBufferLine=function(F){var j=this._activeBuffer.lines.get(this._activeBuffer.ybase+F);j.fill(this._activeBuffer.getNullCell(this._eraseAttrData())),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+F),j.isWrapped=!1},B.prototype.eraseInDisplay=function(F){var j;switch(this._restrictCursor(this._bufferService.cols),F.params[0]){case 0:for(j=this._activeBuffer.y,this._dirtyRowService.markDirty(j),this._eraseInBufferLine(j++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);j=this._bufferService.cols&&(this._activeBuffer.lines.get(j+1).isWrapped=!1);j--;)this._resetBufferLine(j);this._dirtyRowService.markDirty(0);break;case 2:for(j=this._bufferService.rows,this._dirtyRowService.markDirty(j-1);j--;)this._resetBufferLine(j);this._dirtyRowService.markDirty(0);break;case 3:var G=this._activeBuffer.lines.length-this._bufferService.rows;G>0&&(this._activeBuffer.lines.trimStart(G),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-G,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-G,0),this._onScroll.fire(0))}return!0},B.prototype.eraseInLine=function(F){switch(this._restrictCursor(this._bufferService.cols),F.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0},B.prototype.insertLines=function(F){this._restrictCursor();var j=F.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(v.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(v.C0.ESC+"[?6c")),!0},B.prototype.sendDeviceAttributesSecondary=function(F){return F.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(v.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(v.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(F.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(v.C0.ESC+"[>83;40003;0c")),!0},B.prototype._is=function(F){return(this._optionsService.rawOptions.termName+"").indexOf(F)===0},B.prototype.setMode=function(F){for(var j=0;j=2||$[1]===2&&ie+ne>=5)break;$[1]&&(ne=1)}while(++ie+j5)&&(F=1),j.extended.underlineStyle=F,j.fg|=268435456,F===0&&(j.fg&=-268435457),j.updateExtended()},B.prototype.charAttributes=function(F){if(F.length===1&&F.params[0]===0)return this._curAttrData.fg=d.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=d.DEFAULT_ATTR_DATA.bg,!0;for(var j,G=F.length,$=this._curAttrData,ne=0;ne=30&&j<=37?($.fg&=-50331904,$.fg|=16777216|j-30):j>=40&&j<=47?($.bg&=-50331904,$.bg|=16777216|j-40):j>=90&&j<=97?($.fg&=-50331904,$.fg|=16777224|j-90):j>=100&&j<=107?($.bg&=-50331904,$.bg|=16777224|j-100):j===0?($.fg=d.DEFAULT_ATTR_DATA.fg,$.bg=d.DEFAULT_ATTR_DATA.bg):j===1?$.fg|=134217728:j===3?$.bg|=67108864:j===4?($.fg|=268435456,this._processUnderline(F.hasSubParams(ne)?F.getSubParams(ne)[0]:1,$)):j===5?$.fg|=536870912:j===7?$.fg|=67108864:j===8?$.fg|=1073741824:j===9?$.fg|=2147483648:j===2?$.bg|=134217728:j===21?this._processUnderline(2,$):j===22?($.fg&=-134217729,$.bg&=-134217729):j===23?$.bg&=-67108865:j===24?$.fg&=-268435457:j===25?$.fg&=-536870913:j===27?$.fg&=-67108865:j===28?$.fg&=-1073741825:j===29?$.fg&=2147483647:j===39?($.fg&=-67108864,$.fg|=16777215&d.DEFAULT_ATTR_DATA.fg):j===49?($.bg&=-67108864,$.bg|=16777215&d.DEFAULT_ATTR_DATA.bg):j===38||j===48||j===58?ne+=this._extractColor(F,ne,$):j===59?($.extended=$.extended.clone(),$.extended.underlineColor=-1,$.updateExtended()):j===100?($.fg&=-67108864,$.fg|=16777215&d.DEFAULT_ATTR_DATA.fg,$.bg&=-67108864,$.bg|=16777215&d.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",j);return!0},B.prototype.deviceStatus=function(F){switch(F.params[0]){case 5:this._coreService.triggerDataEvent(v.C0.ESC+"[0n");break;case 6:var j=this._activeBuffer.y+1,G=this._activeBuffer.x+1;this._coreService.triggerDataEvent(v.C0.ESC+"["+j+";"+G+"R")}return!0},B.prototype.deviceStatusPrivate=function(F){if(F.params[0]===6){var j=this._activeBuffer.y+1,G=this._activeBuffer.x+1;this._coreService.triggerDataEvent(v.C0.ESC+"[?"+j+";"+G+"R")}return!0},B.prototype.softReset=function(F){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=d.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0},B.prototype.setCursorStyle=function(F){var j=F.params[0]||1;switch(j){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}var G=j%2==1;return this._optionsService.options.cursorBlink=G,!0},B.prototype.setScrollRegion=function(F){var j,G=F.params[0]||1;return(F.length<2||(j=F.params[1])>this._bufferService.rows||j===0)&&(j=this._bufferService.rows),j>G&&(this._activeBuffer.scrollTop=G-1,this._activeBuffer.scrollBottom=j-1,this._setCursor(0,0)),!0},B.prototype.windowOptions=function(F){if(!M(F.params[0],this._optionsService.rawOptions.windowOptions))return!0;var j=F.length>1?F.params[1]:0;switch(F.params[0]){case 14:j!==2&&this._onRequestWindowsOptionsReport.fire(_.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(_.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(v.C0.ESC+"[8;"+this._bufferService.rows+";"+this._bufferService.cols+"t");break;case 22:j!==0&&j!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),j!==0&&j!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:j!==0&&j!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),j!==0&&j!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0},B.prototype.saveCursor=function(F){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0},B.prototype.restoreCursor=function(F){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0},B.prototype.setTitle=function(F){return this._windowTitle=F,this._onTitleChange.fire(F),!0},B.prototype.setIconName=function(F){return this._iconName=F,!0},B.prototype.setOrReportIndexedColor=function(F){for(var j=[],G=F.split(";");G.length>1;){var $=G.shift(),ne=G.shift();if(/^\d+$/.exec($)){var ie=parseInt($);if(0<=ie&&ie<256)if(ne==="?")j.push({type:0,index:ie});else{var be=(0,T.parseColor)(ne);be&&j.push({type:1,index:ie,color:be})}}}return j.length&&this._onColor.fire(j),!0},B.prototype._setOrReportSpecialColor=function(F,j){for(var G=F.split(";"),$=0;$=this._specialColors.length);++$,++j)if(G[$]==="?")this._onColor.fire([{type:0,index:this._specialColors[j]}]);else{var ne=(0,T.parseColor)(G[$]);ne&&this._onColor.fire([{type:1,index:this._specialColors[j],color:ne}])}return!0},B.prototype.setOrReportFgColor=function(F){return this._setOrReportSpecialColor(F,0)},B.prototype.setOrReportBgColor=function(F){return this._setOrReportSpecialColor(F,1)},B.prototype.setOrReportCursorColor=function(F){return this._setOrReportSpecialColor(F,2)},B.prototype.restoreIndexedColor=function(F){if(!F)return this._onColor.fire([{type:2}]),!0;for(var j=[],G=F.split(";"),$=0;$=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0},B.prototype.tabSet=function(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0},B.prototype.reverseIndex=function(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){var F=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,F,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0},B.prototype.fullReset=function(){return this._parser.reset(),this._onRequestReset.fire(),!0},B.prototype.reset=function(){this._curAttrData=d.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=d.DEFAULT_ATTR_DATA.clone()},B.prototype._eraseAttrData=function(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal},B.prototype.setgLevel=function(F){return this._charsetService.setgLevel(F),!0},B.prototype.screenAlignmentPattern=function(){var F=new l.CellData;F.content=1<<22|"E".charCodeAt(0),F.fg=this._curAttrData.fg,F.bg=this._curAttrData.bg,this._setCursor(0,0);for(var j=0;j{Object.defineProperty(f,"__esModule",{value:!0}),f.getDisposeArrayDisposable=f.disposeArray=f.Disposable=void 0;var L=function(){function m(){this._disposables=[],this._isDisposed=!1}return m.prototype.dispose=function(){this._isDisposed=!0;for(var _=0,v=this._disposables;_{Object.defineProperty(f,"__esModule",{value:!0}),f.isLinux=f.isWindows=f.isIphone=f.isIpad=f.isMac=f.isSafari=f.isLegacyEdge=f.isFirefox=void 0;var L=typeof navigator>"u",y=L?"node":navigator.userAgent,m=L?"node":navigator.platform;f.isFirefox=y.includes("Firefox"),f.isLegacyEdge=y.includes("Edge"),f.isSafari=/^((?!chrome|android).)*safari/i.test(y),f.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(m),f.isIpad=m==="iPad",f.isIphone=m==="iPhone",f.isWindows=["Windows","Win16","Win32","WinCE"].includes(m),f.isLinux=m.indexOf("Linux")>=0},8273:(E,f)=>{function L(y,m,_,v){if(_===void 0&&(_=0),v===void 0&&(v=y.length),_>=y.length)return y;_=(y.length+_)%y.length,v=v>=y.length?y.length:(y.length+v)%y.length;for(var A=_;A{Object.defineProperty(f,"__esModule",{value:!0}),f.updateWindowsModeWrappedState=void 0;var y=L(643);f.updateWindowsModeWrappedState=function(m){var _=m.buffer.lines.get(m.buffer.ybase+m.buffer.y-1),v=_?.get(m.cols-1),A=m.buffer.lines.get(m.buffer.ybase+m.buffer.y);A&&v&&(A.isWrapped=v[y.CHAR_DATA_CODE_INDEX]!==y.NULL_CELL_CODE&&v[y.CHAR_DATA_CODE_INDEX]!==y.WHITESPACE_CELL_CODE)}},3734:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ExtendedAttrs=f.AttributeData=void 0;var L=function(){function m(){this.fg=0,this.bg=0,this.extended=new y}return m.toColorRGB=function(_){return[_>>>16&255,_>>>8&255,255&_]},m.fromColorRGB=function(_){return(255&_[0])<<16|(255&_[1])<<8|255&_[2]},m.prototype.clone=function(){var _=new m;return _.fg=this.fg,_.bg=this.bg,_.extended=this.extended.clone(),_},m.prototype.isInverse=function(){return 67108864&this.fg},m.prototype.isBold=function(){return 134217728&this.fg},m.prototype.isUnderline=function(){return 268435456&this.fg},m.prototype.isBlink=function(){return 536870912&this.fg},m.prototype.isInvisible=function(){return 1073741824&this.fg},m.prototype.isItalic=function(){return 67108864&this.bg},m.prototype.isDim=function(){return 134217728&this.bg},m.prototype.isStrikethrough=function(){return 2147483648&this.fg},m.prototype.getFgColorMode=function(){return 50331648&this.fg},m.prototype.getBgColorMode=function(){return 50331648&this.bg},m.prototype.isFgRGB=function(){return(50331648&this.fg)==50331648},m.prototype.isBgRGB=function(){return(50331648&this.bg)==50331648},m.prototype.isFgPalette=function(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432},m.prototype.isBgPalette=function(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432},m.prototype.isFgDefault=function(){return(50331648&this.fg)==0},m.prototype.isBgDefault=function(){return(50331648&this.bg)==0},m.prototype.isAttributeDefault=function(){return this.fg===0&&this.bg===0},m.prototype.getFgColor=function(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}},m.prototype.getBgColor=function(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}},m.prototype.hasExtendedAttrs=function(){return 268435456&this.bg},m.prototype.updateExtended=function(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456},m.prototype.getUnderlineColor=function(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()},m.prototype.getUnderlineColorMode=function(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()},m.prototype.isUnderlineColorRGB=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()},m.prototype.isUnderlineColorPalette=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()},m.prototype.isUnderlineColorDefault=function(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()},m.prototype.getUnderlineStyle=function(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0},m}();f.AttributeData=L;var y=function(){function m(_,v){_===void 0&&(_=0),v===void 0&&(v=-1),this.underlineStyle=_,this.underlineColor=v}return m.prototype.clone=function(){return new m(this.underlineStyle,this.underlineColor)},m.prototype.isEmpty=function(){return this.underlineStyle===0},m}();f.ExtendedAttrs=y},9092:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferStringIterator=f.Buffer=f.MAX_BUFFER_SIZE=void 0;var y=L(6349),m=L(8437),_=L(511),v=L(643),A=L(4634),w=L(4863),c=L(7116),p=L(3734);f.MAX_BUFFER_SIZE=4294967295;var C=function(){function s(o,l,a){this._hasScrollback=o,this._optionsService=l,this._bufferService=a,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=m.DEFAULT_ATTR_DATA.clone(),this.savedCharset=c.DEFAULT_CHARSET,this.markers=[],this._nullCell=_.CellData.fromCharData([0,v.NULL_CELL_CHAR,v.NULL_CELL_WIDTH,v.NULL_CELL_CODE]),this._whitespaceCell=_.CellData.fromCharData([0,v.WHITESPACE_CELL_CHAR,v.WHITESPACE_CELL_WIDTH,v.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new y.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}return s.prototype.getNullCell=function(o){return o?(this._nullCell.fg=o.fg,this._nullCell.bg=o.bg,this._nullCell.extended=o.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new p.ExtendedAttrs),this._nullCell},s.prototype.getWhitespaceCell=function(o){return o?(this._whitespaceCell.fg=o.fg,this._whitespaceCell.bg=o.bg,this._whitespaceCell.extended=o.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new p.ExtendedAttrs),this._whitespaceCell},s.prototype.getBlankLine=function(o,l){return new m.BufferLine(this._bufferService.cols,this.getNullCell(o),l)},Object.defineProperty(s.prototype,"hasScrollback",{get:function(){return this._hasScrollback&&this.lines.maxLength>this._rows},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"isCursorInViewport",{get:function(){var o=this.ybase+this.y-this.ydisp;return o>=0&&of.MAX_BUFFER_SIZE?f.MAX_BUFFER_SIZE:l},s.prototype.fillViewportRows=function(o){if(this.lines.length===0){o===void 0&&(o=m.DEFAULT_ATTR_DATA);for(var l=this._rows;l--;)this.lines.push(this.getBlankLine(o))}},s.prototype.clear=function(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new y.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()},s.prototype.resize=function(o,l){var a=this.getNullCell(m.DEFAULT_ATTR_DATA),u=this._getCorrectBufferLength(l);if(u>this.lines.maxLength&&(this.lines.maxLength=u),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+b+1?(this.ybase--,b++,this.ydisp>0&&this.ydisp--):this.lines.push(new m.BufferLine(o,a)));else for(T=this._rows;T>l;T--)this.lines.length>l+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(u0&&(this.lines.trimStart(R),this.ybase=Math.max(this.ybase-R,0),this.ydisp=Math.max(this.ydisp-R,0),this.savedY=Math.max(this.savedY-R,0)),this.lines.maxLength=u}this.x=Math.min(this.x,o-1),this.y=Math.min(this.y,l-1),b&&(this.y+=b),this.savedX=Math.min(this.savedX,o-1),this.scrollTop=0}if(this.scrollBottom=l-1,this._isReflowEnabled&&(this._reflow(o,l),this._cols>o))for(g=0;gthis._cols?this._reflowLarger(o,l):this._reflowSmaller(o,l))},s.prototype._reflowLarger=function(o,l){var a=(0,A.reflowLargerGetLinesToRemove)(this.lines,this._cols,o,this.ybase+this.y,this.getNullCell(m.DEFAULT_ATTR_DATA));if(a.length>0){var u=(0,A.reflowLargerCreateNewLayout)(this.lines,a);(0,A.reflowLargerApplyNewLayout)(this.lines,u.layout),this._reflowLargerAdjustViewport(o,l,u.countRemoved)}},s.prototype._reflowLargerAdjustViewport=function(o,l,a){for(var u=this.getNullCell(m.DEFAULT_ATTR_DATA),g=a;g-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;b--){var T=this.lines.get(b);if(!(!T||!T.isWrapped&&T.getTrimmedLength()<=o)){for(var R=[T];T.isWrapped&&b>0;)T=this.lines.get(--b),R.unshift(T);var k=this.ybase+this.y;if(!(k>=b&&k0&&(u.push({start:b+R.length+g,newLines:B}),g+=B.length),R.push.apply(R,B);var G=D.length-1,$=D[G];$===0&&($=D[--G]);for(var ne=R.length-W-1,ie=N;ne>=0;){var be=Math.min(ie,$);if(R[G]===void 0)break;if(R[G].copyCellsFrom(R[ne],ie-be,$-be,be,!0),($-=be)==0&&($=D[--G]),(ie-=be)==0){ne--;var ve=Math.max(ne,0);ie=(0,A.getWrappedLineTrimmedLength)(R,ve,this._cols)}}for(F=0;F0;)this.ybase===0?this.y0){var U=[],ee=[];for(F=0;F=0;F--)if(Se&&Se.start>Y+fe){for(var Ce=Se.newLines.length-1;Ce>=0;Ce--)this.lines.set(F--,Se.newLines[Ce]);F++,U.push({index:Y+1,amount:Se.newLines.length}),fe+=Se.newLines.length,Se=u[++K]}else this.lines.set(F,ee[Y--]);var De=0;for(F=U.length-1;F>=0;F--)U[F].index+=De,this.lines.onInsertEmitter.fire(U[F]),De+=U[F].amount;var Fe=Math.max(0,q+g-this.lines.maxLength);Fe>0&&this.lines.onTrimEmitter.fire(Fe)}},s.prototype.stringIndexToBufferIndex=function(o,l,a){for(a===void 0&&(a=!1);l;){var u=this.lines.get(o);if(!u)return[-1,-1];for(var g=a?u.getTrimmedLength():u.length,b=0;b0&&this.lines.get(l).isWrapped;)l--;for(;a+10;);return o>=this._cols?this._cols-1:o<0?0:o},s.prototype.nextStop=function(o){for(o==null&&(o=this.x);!this.tabs[++o]&&o=this._cols?this._cols-1:o<0?0:o},s.prototype.clearMarkers=function(o){if(this._isClearing=!0,o!==void 0)for(var l=0;l=u.index&&(a.line+=u.amount)})),a.register(this.lines.onDelete(function(u){a.line>=u.index&&a.lineu.index&&(a.line-=u.amount)})),a.register(a.onDispose(function(){return l._removeMarker(a)})),a},s.prototype._removeMarker=function(o){this._isClearing||this.markers.splice(this.markers.indexOf(o),1)},s.prototype.iterator=function(o,l,a,u,g){return new d(this,o,l,a,u,g)},s}();f.Buffer=C;var d=function(){function s(o,l,a,u,g,b){a===void 0&&(a=0),u===void 0&&(u=o.lines.length),g===void 0&&(g=0),b===void 0&&(b=0),this._buffer=o,this._trimRight=l,this._startIndex=a,this._endIndex=u,this._startOverscan=g,this._endOverscan=b,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}return s.prototype.hasNext=function(){return this._currentthis._endIndex+this._endOverscan&&(o.last=this._endIndex+this._endOverscan),o.first=Math.max(o.first,0),o.last=Math.min(o.last,this._buffer.lines.length);for(var l="",a=o.first;a<=o.last;++a)l+=this._buffer.translateBufferLineToString(a,this._trimRight);return this._current=o.last+1,{range:o,content:l}},s}();f.BufferStringIterator=d},8437:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferLine=f.DEFAULT_ATTR_DATA=void 0;var y=L(482),m=L(643),_=L(511),v=L(3734);f.DEFAULT_ATTR_DATA=Object.freeze(new v.AttributeData);var A=function(){function w(c,p,C){C===void 0&&(C=!1),this.isWrapped=C,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*c);for(var d=p||_.CellData.fromCharData([0,m.NULL_CELL_CHAR,m.NULL_CELL_WIDTH,m.NULL_CELL_CODE]),s=0;s>22,2097152&p?this._combined[c].charCodeAt(this._combined[c].length-1):C]},w.prototype.set=function(c,p){this._data[3*c+1]=p[m.CHAR_DATA_ATTR_INDEX],p[m.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[c]=p[1],this._data[3*c+0]=2097152|c|p[m.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*c+0]=p[m.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|p[m.CHAR_DATA_WIDTH_INDEX]<<22},w.prototype.getWidth=function(c){return this._data[3*c+0]>>22},w.prototype.hasWidth=function(c){return 12582912&this._data[3*c+0]},w.prototype.getFg=function(c){return this._data[3*c+1]},w.prototype.getBg=function(c){return this._data[3*c+2]},w.prototype.hasContent=function(c){return 4194303&this._data[3*c+0]},w.prototype.getCodePoint=function(c){var p=this._data[3*c+0];return 2097152&p?this._combined[c].charCodeAt(this._combined[c].length-1):2097151&p},w.prototype.isCombined=function(c){return 2097152&this._data[3*c+0]},w.prototype.getString=function(c){var p=this._data[3*c+0];return 2097152&p?this._combined[c]:2097151&p?(0,y.stringFromCodePoint)(2097151&p):""},w.prototype.loadCell=function(c,p){var C=3*c;return p.content=this._data[C+0],p.fg=this._data[C+1],p.bg=this._data[C+2],2097152&p.content&&(p.combinedData=this._combined[c]),268435456&p.bg&&(p.extended=this._extendedAttrs[c]),p},w.prototype.setCell=function(c,p){2097152&p.content&&(this._combined[c]=p.combinedData),268435456&p.bg&&(this._extendedAttrs[c]=p.extended),this._data[3*c+0]=p.content,this._data[3*c+1]=p.fg,this._data[3*c+2]=p.bg},w.prototype.setCellFromCodePoint=function(c,p,C,d,s,o){268435456&s&&(this._extendedAttrs[c]=o),this._data[3*c+0]=p|C<<22,this._data[3*c+1]=d,this._data[3*c+2]=s},w.prototype.addCodepointToCell=function(c,p){var C=this._data[3*c+0];2097152&C?this._combined[c]+=(0,y.stringFromCodePoint)(p):(2097151&C?(this._combined[c]=(0,y.stringFromCodePoint)(2097151&C)+(0,y.stringFromCodePoint)(p),C&=-2097152,C|=2097152):C=p|1<<22,this._data[3*c+0]=C)},w.prototype.insertCells=function(c,p,C,d){if((c%=this.length)&&this.getWidth(c-1)===2&&this.setCellFromCodePoint(c-1,0,1,d?.fg||0,d?.bg||0,d?.extended||new v.ExtendedAttrs),p=0;--o)this.setCell(c+p+o,this.loadCell(c+o,s));for(o=0;othis.length){var C=new Uint32Array(3*c);this.length&&(3*c=c&&delete this._combined[o]}}else this._data=new Uint32Array(0),this._combined={};this.length=c}},w.prototype.fill=function(c){this._combined={},this._extendedAttrs={};for(var p=0;p=0;--c)if(4194303&this._data[3*c+0])return c+(this._data[3*c+0]>>22);return 0},w.prototype.copyCellsFrom=function(c,p,C,d,s){var o=c._data;if(s)for(var l=d-1;l>=0;l--)for(var a=0;a<3;a++)this._data[3*(C+l)+a]=o[3*(p+l)+a];else for(l=0;l=p&&(this._combined[g-p+C]=c._combined[g])}},w.prototype.translateToString=function(c,p,C){c===void 0&&(c=!1),p===void 0&&(p=0),C===void 0&&(C=this.length),c&&(C=Math.min(C,this.getTrimmedLength()));for(var d="";p>22||1}return d},w}();f.BufferLine=A},4841:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.getRangeLength=void 0,f.getRangeLength=function(L,y){if(L.start.y>L.end.y)throw new Error("Buffer range end ("+L.end.x+", "+L.end.y+") cannot be before start ("+L.start.x+", "+L.start.y+")");return y*(L.end.y-L.start.y)+(L.end.x-L.start.x+1)}},4634:(E,f)=>{function L(y,m,_){if(m===y.length-1)return y[m].getTrimmedLength();var v=!y[m].hasContent(_-1)&&y[m].getWidth(_-1)===1,A=y[m+1].getWidth(0)===2;return v&&A?_-1:_}Object.defineProperty(f,"__esModule",{value:!0}),f.getWrappedLineTrimmedLength=f.reflowSmallerGetNewLineLengths=f.reflowLargerApplyNewLayout=f.reflowLargerCreateNewLayout=f.reflowLargerGetLinesToRemove=void 0,f.reflowLargerGetLinesToRemove=function(y,m,_,v,A){for(var w=[],c=0;c=c&&v0&&(k>s||d[k].getTrimmedLength()===0);k--)R++;R>0&&(w.push(c+d.length-R),w.push(R)),c+=d.length-1}}}return w},f.reflowLargerCreateNewLayout=function(y,m){for(var _=[],v=0,A=m[v],w=0,c=0;cC&&(w-=C,c++);var d=y[c].getWidth(w-1)===2;d&&w--;var s=d?_-1:_;v.push(s),p+=s}return v},f.getWrappedLineTrimmedLength=L},5295:function(E,f,L){var y,m=this&&this.__extends||(y=function(w,c){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(p,C){p.__proto__=C}||function(p,C){for(var d in C)Object.prototype.hasOwnProperty.call(C,d)&&(p[d]=C[d])},y(w,c)},function(w,c){if(typeof c!="function"&&c!==null)throw new TypeError("Class extends value "+String(c)+" is not a constructor or null");function p(){this.constructor=w}y(w,c),w.prototype=c===null?Object.create(c):(p.prototype=c.prototype,new p)});Object.defineProperty(f,"__esModule",{value:!0}),f.BufferSet=void 0;var _=L(9092),v=L(8460),A=function(w){function c(p,C){var d=w.call(this)||this;return d._optionsService=p,d._bufferService=C,d._onBufferActivate=d.register(new v.EventEmitter),d.reset(),d}return m(c,w),Object.defineProperty(c.prototype,"onBufferActivate",{get:function(){return this._onBufferActivate.event},enumerable:!1,configurable:!0}),c.prototype.reset=function(){this._normal=new _.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new _.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()},Object.defineProperty(c.prototype,"alt",{get:function(){return this._alt},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"active",{get:function(){return this._activeBuffer},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"normal",{get:function(){return this._normal},enumerable:!1,configurable:!0}),c.prototype.activateNormalBuffer=function(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))},c.prototype.activateAltBuffer=function(p){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(p),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))},c.prototype.resize=function(p,C){this._normal.resize(p,C),this._alt.resize(p,C)},c.prototype.setupTabStops=function(p){this._normal.setupTabStops(p),this._alt.setupTabStops(p)},c}(L(844).Disposable);f.BufferSet=A},511:function(E,f,L){var y,m=this&&this.__extends||(y=function(c,p){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,d){C.__proto__=d}||function(C,d){for(var s in d)Object.prototype.hasOwnProperty.call(d,s)&&(C[s]=d[s])},y(c,p)},function(c,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");function C(){this.constructor=c}y(c,p),c.prototype=p===null?Object.create(p):(C.prototype=p.prototype,new C)});Object.defineProperty(f,"__esModule",{value:!0}),f.CellData=void 0;var _=L(482),v=L(643),A=L(3734),w=function(c){function p(){var C=c!==null&&c.apply(this,arguments)||this;return C.content=0,C.fg=0,C.bg=0,C.extended=new A.ExtendedAttrs,C.combinedData="",C}return m(p,c),p.fromCharData=function(C){var d=new p;return d.setFromCharData(C),d},p.prototype.isCombined=function(){return 2097152&this.content},p.prototype.getWidth=function(){return this.content>>22},p.prototype.getChars=function(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,_.stringFromCodePoint)(2097151&this.content):""},p.prototype.getCode=function(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content},p.prototype.setFromCharData=function(C){this.fg=C[v.CHAR_DATA_ATTR_INDEX],this.bg=0;var d=!1;if(C[v.CHAR_DATA_CHAR_INDEX].length>2)d=!0;else if(C[v.CHAR_DATA_CHAR_INDEX].length===2){var s=C[v.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=s&&s<=56319){var o=C[v.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=o&&o<=57343?this.content=1024*(s-55296)+o-56320+65536|C[v.CHAR_DATA_WIDTH_INDEX]<<22:d=!0}else d=!0}else this.content=C[v.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|C[v.CHAR_DATA_WIDTH_INDEX]<<22;d&&(this.combinedData=C[v.CHAR_DATA_CHAR_INDEX],this.content=2097152|C[v.CHAR_DATA_WIDTH_INDEX]<<22)},p.prototype.getAsCharData=function(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]},p}(A.AttributeData);f.CellData=w},643:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.WHITESPACE_CELL_CODE=f.WHITESPACE_CELL_WIDTH=f.WHITESPACE_CELL_CHAR=f.NULL_CELL_CODE=f.NULL_CELL_WIDTH=f.NULL_CELL_CHAR=f.CHAR_DATA_CODE_INDEX=f.CHAR_DATA_WIDTH_INDEX=f.CHAR_DATA_CHAR_INDEX=f.CHAR_DATA_ATTR_INDEX=f.DEFAULT_ATTR=f.DEFAULT_COLOR=void 0,f.DEFAULT_COLOR=256,f.DEFAULT_ATTR=256|f.DEFAULT_COLOR<<9,f.CHAR_DATA_ATTR_INDEX=0,f.CHAR_DATA_CHAR_INDEX=1,f.CHAR_DATA_WIDTH_INDEX=2,f.CHAR_DATA_CODE_INDEX=3,f.NULL_CELL_CHAR="",f.NULL_CELL_WIDTH=1,f.NULL_CELL_CODE=0,f.WHITESPACE_CELL_CHAR=" ",f.WHITESPACE_CELL_WIDTH=1,f.WHITESPACE_CELL_CODE=32},4863:function(E,f,L){var y,m=this&&this.__extends||(y=function(A,w){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,p){c.__proto__=p}||function(c,p){for(var C in p)Object.prototype.hasOwnProperty.call(p,C)&&(c[C]=p[C])},y(A,w)},function(A,w){if(typeof w!="function"&&w!==null)throw new TypeError("Class extends value "+String(w)+" is not a constructor or null");function c(){this.constructor=A}y(A,w),A.prototype=w===null?Object.create(w):(c.prototype=w.prototype,new c)});Object.defineProperty(f,"__esModule",{value:!0}),f.Marker=void 0;var _=L(8460),v=function(A){function w(c){var p=A.call(this)||this;return p.line=c,p._id=w._nextId++,p.isDisposed=!1,p._onDispose=new _.EventEmitter,p}return m(w,A),Object.defineProperty(w.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(w.prototype,"onDispose",{get:function(){return this._onDispose.event},enumerable:!1,configurable:!0}),w.prototype.dispose=function(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),A.prototype.dispose.call(this))},w._nextId=1,w}(L(844).Disposable);f.Marker=v},7116:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.DEFAULT_CHARSET=f.CHARSETS=void 0,f.CHARSETS={},f.DEFAULT_CHARSET=f.CHARSETS.B,f.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},f.CHARSETS.A={"#":"\xA3"},f.CHARSETS.B=void 0,f.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},f.CHARSETS.C=f.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},f.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},f.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},f.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},f.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},f.CHARSETS.E=f.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},f.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},f.CHARSETS.H=f.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},f.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},2584:(E,f)=>{var L,y;Object.defineProperty(f,"__esModule",{value:!0}),f.C1=f.C0=void 0,(y=f.C0||(f.C0={})).NUL="\0",y.SOH="",y.STX="",y.ETX="",y.EOT="",y.ENQ="",y.ACK="",y.BEL="\x07",y.BS="\b",y.HT=" ",y.LF=` +`,y.VT="\v",y.FF="\f",y.CR="\r",y.SO="",y.SI="",y.DLE="",y.DC1="",y.DC2="",y.DC3="",y.DC4="",y.NAK="",y.SYN="",y.ETB="",y.CAN="",y.EM="",y.SUB="",y.ESC="\x1B",y.FS="",y.GS="",y.RS="",y.US="",y.SP=" ",y.DEL="\x7F",(L=f.C1||(f.C1={})).PAD="\x80",L.HOP="\x81",L.BPH="\x82",L.NBH="\x83",L.IND="\x84",L.NEL="\x85",L.SSA="\x86",L.ESA="\x87",L.HTS="\x88",L.HTJ="\x89",L.VTS="\x8A",L.PLD="\x8B",L.PLU="\x8C",L.RI="\x8D",L.SS2="\x8E",L.SS3="\x8F",L.DCS="\x90",L.PU1="\x91",L.PU2="\x92",L.STS="\x93",L.CCH="\x94",L.MW="\x95",L.SPA="\x96",L.EPA="\x97",L.SOS="\x98",L.SGCI="\x99",L.SCI="\x9A",L.CSI="\x9B",L.ST="\x9C",L.OSC="\x9D",L.PM="\x9E",L.APC="\x9F"},7399:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.evaluateKeyboardEvent=void 0;var y=L(2584),m={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};f.evaluateKeyboardEvent=function(_,v,A,w){var c={type:0,cancel:!1,key:void 0},p=(_.shiftKey?1:0)|(_.altKey?2:0)|(_.ctrlKey?4:0)|(_.metaKey?8:0);switch(_.keyCode){case 0:_.key==="UIKeyInputUpArrow"?c.key=v?y.C0.ESC+"OA":y.C0.ESC+"[A":_.key==="UIKeyInputLeftArrow"?c.key=v?y.C0.ESC+"OD":y.C0.ESC+"[D":_.key==="UIKeyInputRightArrow"?c.key=v?y.C0.ESC+"OC":y.C0.ESC+"[C":_.key==="UIKeyInputDownArrow"&&(c.key=v?y.C0.ESC+"OB":y.C0.ESC+"[B");break;case 8:if(_.shiftKey){c.key=y.C0.BS;break}if(_.altKey){c.key=y.C0.ESC+y.C0.DEL;break}c.key=y.C0.DEL;break;case 9:if(_.shiftKey){c.key=y.C0.ESC+"[Z";break}c.key=y.C0.HT,c.cancel=!0;break;case 13:c.key=_.altKey?y.C0.ESC+y.C0.CR:y.C0.CR,c.cancel=!0;break;case 27:c.key=y.C0.ESC,_.altKey&&(c.key=y.C0.ESC+y.C0.ESC),c.cancel=!0;break;case 37:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"D",c.key===y.C0.ESC+"[1;3D"&&(c.key=y.C0.ESC+(A?"b":"[1;5D"))):c.key=v?y.C0.ESC+"OD":y.C0.ESC+"[D";break;case 39:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"C",c.key===y.C0.ESC+"[1;3C"&&(c.key=y.C0.ESC+(A?"f":"[1;5C"))):c.key=v?y.C0.ESC+"OC":y.C0.ESC+"[C";break;case 38:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"A",A||c.key!==y.C0.ESC+"[1;3A"||(c.key=y.C0.ESC+"[1;5A")):c.key=v?y.C0.ESC+"OA":y.C0.ESC+"[A";break;case 40:if(_.metaKey)break;p?(c.key=y.C0.ESC+"[1;"+(p+1)+"B",A||c.key!==y.C0.ESC+"[1;3B"||(c.key=y.C0.ESC+"[1;5B")):c.key=v?y.C0.ESC+"OB":y.C0.ESC+"[B";break;case 45:_.shiftKey||_.ctrlKey||(c.key=y.C0.ESC+"[2~");break;case 46:c.key=p?y.C0.ESC+"[3;"+(p+1)+"~":y.C0.ESC+"[3~";break;case 36:c.key=p?y.C0.ESC+"[1;"+(p+1)+"H":v?y.C0.ESC+"OH":y.C0.ESC+"[H";break;case 35:c.key=p?y.C0.ESC+"[1;"+(p+1)+"F":v?y.C0.ESC+"OF":y.C0.ESC+"[F";break;case 33:_.shiftKey?c.type=2:c.key=y.C0.ESC+"[5~";break;case 34:_.shiftKey?c.type=3:c.key=y.C0.ESC+"[6~";break;case 112:c.key=p?y.C0.ESC+"[1;"+(p+1)+"P":y.C0.ESC+"OP";break;case 113:c.key=p?y.C0.ESC+"[1;"+(p+1)+"Q":y.C0.ESC+"OQ";break;case 114:c.key=p?y.C0.ESC+"[1;"+(p+1)+"R":y.C0.ESC+"OR";break;case 115:c.key=p?y.C0.ESC+"[1;"+(p+1)+"S":y.C0.ESC+"OS";break;case 116:c.key=p?y.C0.ESC+"[15;"+(p+1)+"~":y.C0.ESC+"[15~";break;case 117:c.key=p?y.C0.ESC+"[17;"+(p+1)+"~":y.C0.ESC+"[17~";break;case 118:c.key=p?y.C0.ESC+"[18;"+(p+1)+"~":y.C0.ESC+"[18~";break;case 119:c.key=p?y.C0.ESC+"[19;"+(p+1)+"~":y.C0.ESC+"[19~";break;case 120:c.key=p?y.C0.ESC+"[20;"+(p+1)+"~":y.C0.ESC+"[20~";break;case 121:c.key=p?y.C0.ESC+"[21;"+(p+1)+"~":y.C0.ESC+"[21~";break;case 122:c.key=p?y.C0.ESC+"[23;"+(p+1)+"~":y.C0.ESC+"[23~";break;case 123:c.key=p?y.C0.ESC+"[24;"+(p+1)+"~":y.C0.ESC+"[24~";break;default:if(!_.ctrlKey||_.shiftKey||_.altKey||_.metaKey)if(A&&!w||!_.altKey||_.metaKey)!A||_.altKey||_.ctrlKey||_.shiftKey||!_.metaKey?_.key&&!_.ctrlKey&&!_.altKey&&!_.metaKey&&_.keyCode>=48&&_.key.length===1?c.key=_.key:_.key&&_.ctrlKey&&_.key==="_"&&(c.key=y.C0.US):_.keyCode===65&&(c.type=1);else{var C=m[_.keyCode],d=C?.[_.shiftKey?1:0];if(d)c.key=y.C0.ESC+d;else if(_.keyCode>=65&&_.keyCode<=90){var s=_.ctrlKey?_.keyCode-64:_.keyCode+32;c.key=y.C0.ESC+String.fromCharCode(s)}}else _.keyCode>=65&&_.keyCode<=90?c.key=String.fromCharCode(_.keyCode-64):_.keyCode===32?c.key=y.C0.NUL:_.keyCode>=51&&_.keyCode<=55?c.key=String.fromCharCode(_.keyCode-51+27):_.keyCode===56?c.key=y.C0.DEL:_.keyCode===219?c.key=y.C0.ESC:_.keyCode===220?c.key=y.C0.FS:_.keyCode===221&&(c.key=y.C0.GS)}return c}},482:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.Utf8ToUtf32=f.StringToUtf32=f.utf32ToString=f.stringFromCodePoint=void 0,f.stringFromCodePoint=function(m){return m>65535?(m-=65536,String.fromCharCode(55296+(m>>10))+String.fromCharCode(m%1024+56320)):String.fromCharCode(m)},f.utf32ToString=function(m,_,v){_===void 0&&(_=0),v===void 0&&(v=m.length);for(var A="",w=_;w65535?(c-=65536,A+=String.fromCharCode(55296+(c>>10))+String.fromCharCode(c%1024+56320)):A+=String.fromCharCode(c)}return A};var L=function(){function m(){this._interim=0}return m.prototype.clear=function(){this._interim=0},m.prototype.decode=function(_,v){var A=_.length;if(!A)return 0;var w=0,c=0;this._interim&&(56320<=(d=_.charCodeAt(c++))&&d<=57343?v[w++]=1024*(this._interim-55296)+d-56320+65536:(v[w++]=this._interim,v[w++]=d),this._interim=0);for(var p=c;p=A)return this._interim=C,w;var d;56320<=(d=_.charCodeAt(p))&&d<=57343?v[w++]=1024*(C-55296)+d-56320+65536:(v[w++]=C,v[w++]=d)}else C!==65279&&(v[w++]=C)}return w},m}();f.StringToUtf32=L;var y=function(){function m(){this.interim=new Uint8Array(3)}return m.prototype.clear=function(){this.interim.fill(0)},m.prototype.decode=function(_,v){var A=_.length;if(!A)return 0;var w,c,p,C,d=0,s=0,o=0;if(this.interim[0]){var l=!1,a=this.interim[0];a&=(224&a)==192?31:(240&a)==224?15:7;for(var u=0,g=void 0;(g=63&this.interim[++u])&&u<4;)a<<=6,a|=g;for(var b=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,T=b-u;o=A)return 0;if((192&(g=_[o++]))!=128){o--,l=!0;break}this.interim[u++]=g,a<<=6,a|=63&g}l||(b===2?a<128?o--:v[d++]=a:b===3?a<2048||a>=55296&&a<=57343||a===65279||(v[d++]=a):a<65536||a>1114111||(v[d++]=a)),this.interim.fill(0)}for(var R=A-4,k=o;k=A)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if((s=(31&w)<<6|63&c)<128){k--;continue}v[d++]=s}else if((240&w)==224){if(k>=A)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if(k>=A)return this.interim[0]=w,this.interim[1]=c,d;if((192&(p=_[k++]))!=128){k--;continue}if((s=(15&w)<<12|(63&c)<<6|63&p)<2048||s>=55296&&s<=57343||s===65279)continue;v[d++]=s}else if((248&w)==240){if(k>=A)return this.interim[0]=w,d;if((192&(c=_[k++]))!=128){k--;continue}if(k>=A)return this.interim[0]=w,this.interim[1]=c,d;if((192&(p=_[k++]))!=128){k--;continue}if(k>=A)return this.interim[0]=w,this.interim[1]=c,this.interim[2]=p,d;if((192&(C=_[k++]))!=128){k--;continue}if((s=(7&w)<<18|(63&c)<<12|(63&p)<<6|63&C)<65536||s>1114111)continue;v[d++]=s}}return d},m}();f.Utf8ToUtf32=y},225:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeV6=void 0;var y,m=L(8273),_=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],v=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],A=function(){function w(){if(this.version="6",!y){y=new Uint8Array(65536),(0,m.fill)(y,1),y[0]=0,(0,m.fill)(y,0,1,32),(0,m.fill)(y,0,127,160),(0,m.fill)(y,2,4352,4448),y[9001]=2,y[9002]=2,(0,m.fill)(y,2,11904,42192),y[12351]=1,(0,m.fill)(y,2,44032,55204),(0,m.fill)(y,2,63744,64256),(0,m.fill)(y,2,65040,65050),(0,m.fill)(y,2,65072,65136),(0,m.fill)(y,2,65280,65377),(0,m.fill)(y,2,65504,65511);for(var c=0;c<_.length;++c)(0,m.fill)(y,0,_[c][0],_[c][1]+1)}}return w.prototype.wcwidth=function(c){return c<32?0:c<127?1:c<65536?y[c]:function(p,C){var d,s=0,o=C.length-1;if(pC[o][1])return!1;for(;o>=s;)if(p>C[d=s+o>>1][1])s=d+1;else{if(!(p=131072&&c<=196605||c>=196608&&c<=262141?2:1},w}();f.UnicodeV6=A},5981:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.WriteBuffer=void 0;var L=typeof queueMicrotask>"u"?function(m){Promise.resolve().then(m)}:queueMicrotask,y=function(){function m(_){this._action=_,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0}return m.prototype.writeSync=function(_,v){if(v!==void 0&&this._syncCalls>v)this._syncCalls=0;else if(this._pendingData+=_.length,this._writeBuffer.push(_),this._callbacks.push(void 0),this._syncCalls++,!this._isSyncWriting){var A;for(this._isSyncWriting=!0;A=this._writeBuffer.shift();){this._action(A);var w=this._callbacks.shift();w&&w()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}},m.prototype.write=function(_,v){var A=this;if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(function(){return A._innerWrite()})),this._pendingData+=_.length,this._writeBuffer.push(_),this._callbacks.push(v)},m.prototype._innerWrite=function(_,v){var A=this;_===void 0&&(_=0),v===void 0&&(v=!0);for(var w=_||Date.now();this._writeBuffer.length>this._bufferOffset;){var c=this._writeBuffer[this._bufferOffset],p=this._action(c,v);if(p)return void p.catch(function(d){return L(function(){throw d}),Promise.resolve(!1)}).then(function(d){return Date.now()-w>=12?setTimeout(function(){return A._innerWrite(0,d)}):A._innerWrite(w,d)});var C=this._callbacks[this._bufferOffset];if(C&&C(),this._bufferOffset++,this._pendingData-=c.length,Date.now()-w>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(function(){return A._innerWrite()})):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0)},m}();f.WriteBuffer=y},5941:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.toRgbString=f.parseColor=void 0;var L=/^([\da-f]{1})\/([\da-f]{1})\/([\da-f]{1})$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,y=/^[\da-f]+$/;function m(_,v){var A=_.toString(16),w=A.length<2?"0"+A:A;switch(v){case 4:return A[0];case 8:return w;case 12:return(w+w).slice(0,3);default:return w+w}}f.parseColor=function(_){if(_){var v=_.toLowerCase();if(v.indexOf("rgb:")===0){v=v.slice(4);var A=L.exec(v);if(A){var w=A[1]?15:A[4]?255:A[7]?4095:65535;return[Math.round(parseInt(A[1]||A[4]||A[7]||A[10],16)/w*255),Math.round(parseInt(A[2]||A[5]||A[8]||A[11],16)/w*255),Math.round(parseInt(A[3]||A[6]||A[9]||A[12],16)/w*255)]}}else if(v.indexOf("#")===0&&(v=v.slice(1),y.exec(v)&&[3,6,9,12].includes(v.length))){for(var c=v.length/3,p=[0,0,0],C=0;C<3;++C){var d=parseInt(v.slice(c*C,c*C+c),16);p[C]=c===1?d<<4:c===2?d:c===3?d>>4:d>>8}return p}}},f.toRgbString=function(_,v){v===void 0&&(v=16);var A=_[0],w=_[1],c=_[2];return"rgb:"+m(A,v)+"/"+m(w,v)+"/"+m(c,v)}},5770:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.PAYLOAD_LIMIT=void 0,f.PAYLOAD_LIMIT=1e7},6351:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.DcsHandler=f.DcsParser=void 0;var y=L(482),m=L(8742),_=L(5770),v=[],A=function(){function p(){this._handlers=Object.create(null),this._active=v,this._ident=0,this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return p.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=v},p.prototype.registerHandler=function(C,d){this._handlers[C]===void 0&&(this._handlers[C]=[]);var s=this._handlers[C];return s.push(d),{dispose:function(){var o=s.indexOf(d);o!==-1&&s.splice(o,1)}}},p.prototype.clearHandler=function(C){this._handlers[C]&&delete this._handlers[C]},p.prototype.setHandlerFallback=function(C){this._handlerFb=C},p.prototype.reset=function(){if(this._active.length)for(var C=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;C>=0;--C)this._active[C].unhook(!1);this._stack.paused=!1,this._active=v,this._ident=0},p.prototype.hook=function(C,d){if(this.reset(),this._ident=C,this._active=this._handlers[C]||v,this._active.length)for(var s=this._active.length-1;s>=0;s--)this._active[s].hook(d);else this._handlerFb(this._ident,"HOOK",d)},p.prototype.put=function(C,d,s){if(this._active.length)for(var o=this._active.length-1;o>=0;o--)this._active[o].put(C,d,s);else this._handlerFb(this._ident,"PUT",(0,y.utf32ToString)(C,d,s))},p.prototype.unhook=function(C,d){if(d===void 0&&(d=!0),this._active.length){var s=!1,o=this._active.length-1,l=!1;if(this._stack.paused&&(o=this._stack.loopPosition-1,s=d,l=this._stack.fallThrough,this._stack.paused=!1),!l&&s===!1){for(;o>=0&&(s=this._active[o].unhook(C))!==!0;o--)if(s instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!1,s;o--}for(;o>=0;o--)if((s=this._active[o].unhook(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=o,this._stack.fallThrough=!0,s}else this._handlerFb(this._ident,"UNHOOK",C);this._active=v,this._ident=0},p}();f.DcsParser=A;var w=new m.Params;w.addParam(0);var c=function(){function p(C){this._handler=C,this._data="",this._params=w,this._hitLimit=!1}return p.prototype.hook=function(C){this._params=C.length>1||C.params[0]?C.clone():w,this._data="",this._hitLimit=!1},p.prototype.put=function(C,d,s){this._hitLimit||(this._data+=(0,y.utf32ToString)(C,d,s),this._data.length>_.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},p.prototype.unhook=function(C){var d=this,s=!1;if(this._hitLimit)s=!1;else if(C&&(s=this._handler(this._data,this._params))instanceof Promise)return s.then(function(o){return d._params=w,d._data="",d._hitLimit=!1,o});return this._params=w,this._data="",this._hitLimit=!1,s},p}();f.DcsHandler=c},2015:function(E,f,L){var y,m=this&&this.__extends||(y=function(s,o){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},y(s,o)},function(s,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function l(){this.constructor=s}y(s,o),s.prototype=o===null?Object.create(o):(l.prototype=o.prototype,new l)});Object.defineProperty(f,"__esModule",{value:!0}),f.EscapeSequenceParser=f.VT500_TRANSITION_TABLE=f.TransitionTable=void 0;var _=L(844),v=L(8273),A=L(8742),w=L(6242),c=L(6351),p=function(){function s(o){this.table=new Uint8Array(o)}return s.prototype.setDefault=function(o,l){(0,v.fill)(this.table,o<<4|l)},s.prototype.add=function(o,l,a,u){this.table[l<<8|o]=a<<4|u},s.prototype.addMany=function(o,l,a,u){for(var g=0;g1)throw new Error("only one byte as prefix supported");if((u=l.prefix.charCodeAt(0))&&60>u||u>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(l.intermediates){if(l.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(var g=0;gb||b>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");u<<=8,u|=b}}if(l.final.length!==1)throw new Error("final must be a single byte");var T=l.final.charCodeAt(0);if(a[0]>T||T>a[1])throw new Error("final must be in range "+a[0]+" .. "+a[1]);return(u<<=8)|T},o.prototype.identToString=function(l){for(var a=[];l;)a.push(String.fromCharCode(255&l)),l>>=8;return a.reverse().join("")},o.prototype.dispose=function(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()},o.prototype.setPrintHandler=function(l){this._printHandler=l},o.prototype.clearPrintHandler=function(){this._printHandler=this._printHandlerFb},o.prototype.registerEscHandler=function(l,a){var u=this._identifier(l,[48,126]);this._escHandlers[u]===void 0&&(this._escHandlers[u]=[]);var g=this._escHandlers[u];return g.push(a),{dispose:function(){var b=g.indexOf(a);b!==-1&&g.splice(b,1)}}},o.prototype.clearEscHandler=function(l){this._escHandlers[this._identifier(l,[48,126])]&&delete this._escHandlers[this._identifier(l,[48,126])]},o.prototype.setEscHandlerFallback=function(l){this._escHandlerFb=l},o.prototype.setExecuteHandler=function(l,a){this._executeHandlers[l.charCodeAt(0)]=a},o.prototype.clearExecuteHandler=function(l){this._executeHandlers[l.charCodeAt(0)]&&delete this._executeHandlers[l.charCodeAt(0)]},o.prototype.setExecuteHandlerFallback=function(l){this._executeHandlerFb=l},o.prototype.registerCsiHandler=function(l,a){var u=this._identifier(l);this._csiHandlers[u]===void 0&&(this._csiHandlers[u]=[]);var g=this._csiHandlers[u];return g.push(a),{dispose:function(){var b=g.indexOf(a);b!==-1&&g.splice(b,1)}}},o.prototype.clearCsiHandler=function(l){this._csiHandlers[this._identifier(l)]&&delete this._csiHandlers[this._identifier(l)]},o.prototype.setCsiHandlerFallback=function(l){this._csiHandlerFb=l},o.prototype.registerDcsHandler=function(l,a){return this._dcsParser.registerHandler(this._identifier(l),a)},o.prototype.clearDcsHandler=function(l){this._dcsParser.clearHandler(this._identifier(l))},o.prototype.setDcsHandlerFallback=function(l){this._dcsParser.setHandlerFallback(l)},o.prototype.registerOscHandler=function(l,a){return this._oscParser.registerHandler(l,a)},o.prototype.clearOscHandler=function(l){this._oscParser.clearHandler(l)},o.prototype.setOscHandlerFallback=function(l){this._oscParser.setHandlerFallback(l)},o.prototype.setErrorHandler=function(l){this._errorHandler=l},o.prototype.clearErrorHandler=function(){this._errorHandler=this._errorHandlerFb},o.prototype.reset=function(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])},o.prototype._preserveStack=function(l,a,u,g,b){this._parseStack.state=l,this._parseStack.handlers=a,this._parseStack.handlerPos=u,this._parseStack.transition=g,this._parseStack.chunkPos=b},o.prototype.parse=function(l,a,u){var g,b=0,T=0,R=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,R=this._parseStack.chunkPos+1;else{if(u===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");var k=this._parseStack.handlers,M=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(u===!1&&M>-1){for(;M>=0&&(g=k[M](this._params))!==!0;M--)if(g instanceof Promise)return this._parseStack.handlerPos=M,g}this._parseStack.handlers=[];break;case 4:if(u===!1&&M>-1){for(;M>=0&&(g=k[M]())!==!0;M--)if(g instanceof Promise)return this._parseStack.handlerPos=M,g}this._parseStack.handlers=[];break;case 6:if(b=l[this._parseStack.chunkPos],g=this._dcsParser.unhook(b!==24&&b!==26,u))return g;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(b=l[this._parseStack.chunkPos],g=this._oscParser.end(b!==24&&b!==26,u))return g;b===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,R=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(var N=R;N>4){case 2:for(var D=N+1;;++D){if(D>=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=a||(b=l[D])<32||b>126&&b=0&&(g=k[W](this._params))!==!0;W--)if(g instanceof Promise)return this._preserveStack(3,k,W,T,N),g;W<0&&this._csiHandlerFb(this._collect<<8|b,this._params),this.precedingCodepoint=0;break;case 8:do switch(b){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(b-48)}while(++N47&&b<60);N--;break;case 9:this._collect<<=8,this._collect|=b;break;case 10:for(var B=this._escHandlers[this._collect<<8|b],F=B?B.length-1:-1;F>=0&&(g=B[F]())!==!0;F--)if(g instanceof Promise)return this._preserveStack(4,B,F,T,N),g;F<0&&this._escHandlerFb(this._collect<<8|b),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|b,this._params);break;case 13:for(var j=N+1;;++j)if(j>=a||(b=l[j])===24||b===26||b===27||b>127&&b=a||(b=l[G])<32||b>127&&b{Object.defineProperty(f,"__esModule",{value:!0}),f.OscHandler=f.OscParser=void 0;var y=L(5770),m=L(482),_=[],v=function(){function w(){this._state=0,this._active=_,this._id=-1,this._handlers=Object.create(null),this._handlerFb=function(){},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}return w.prototype.registerHandler=function(c,p){this._handlers[c]===void 0&&(this._handlers[c]=[]);var C=this._handlers[c];return C.push(p),{dispose:function(){var d=C.indexOf(p);d!==-1&&C.splice(d,1)}}},w.prototype.clearHandler=function(c){this._handlers[c]&&delete this._handlers[c]},w.prototype.setHandlerFallback=function(c){this._handlerFb=c},w.prototype.dispose=function(){this._handlers=Object.create(null),this._handlerFb=function(){},this._active=_},w.prototype.reset=function(){if(this._state===2)for(var c=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;c>=0;--c)this._active[c].end(!1);this._stack.paused=!1,this._active=_,this._id=-1,this._state=0},w.prototype._start=function(){if(this._active=this._handlers[this._id]||_,this._active.length)for(var c=this._active.length-1;c>=0;c--)this._active[c].start();else this._handlerFb(this._id,"START")},w.prototype._put=function(c,p,C){if(this._active.length)for(var d=this._active.length-1;d>=0;d--)this._active[d].put(c,p,C);else this._handlerFb(this._id,"PUT",(0,m.utf32ToString)(c,p,C))},w.prototype.start=function(){this.reset(),this._state=1},w.prototype.put=function(c,p,C){if(this._state!==3){if(this._state===1)for(;p0&&this._put(c,p,C)}},w.prototype.end=function(c,p){if(p===void 0&&(p=!0),this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){var C=!1,d=this._active.length-1,s=!1;if(this._stack.paused&&(d=this._stack.loopPosition-1,C=p,s=this._stack.fallThrough,this._stack.paused=!1),!s&&C===!1){for(;d>=0&&(C=this._active[d].end(c))!==!0;d--)if(C instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=d,this._stack.fallThrough=!1,C;d--}for(;d>=0;d--)if((C=this._active[d].end(!1))instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=d,this._stack.fallThrough=!0,C}else this._handlerFb(this._id,"END",c);this._active=_,this._id=-1,this._state=0}},w}();f.OscParser=v;var A=function(){function w(c){this._handler=c,this._data="",this._hitLimit=!1}return w.prototype.start=function(){this._data="",this._hitLimit=!1},w.prototype.put=function(c,p,C){this._hitLimit||(this._data+=(0,m.utf32ToString)(c,p,C),this._data.length>y.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))},w.prototype.end=function(c){var p=this,C=!1;if(this._hitLimit)C=!1;else if(c&&(C=this._handler(this._data))instanceof Promise)return C.then(function(d){return p._data="",p._hitLimit=!1,d});return this._data="",this._hitLimit=!1,C},w}();f.OscHandler=A},8742:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.Params=void 0;var L=2147483647,y=function(){function m(_,v){if(_===void 0&&(_=32),v===void 0&&(v=32),this.maxLength=_,this.maxSubParamsLength=v,v>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(_),this.length=0,this._subParams=new Int32Array(v),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(_),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}return m.fromArray=function(_){var v=new m;if(!_.length)return v;for(var A=Array.isArray(_[0])?1:0;A<_.length;++A){var w=_[A];if(Array.isArray(w))for(var c=0;c>8,w=255&this._subParamsIdx[v];w-A>0&&_.push(Array.prototype.slice.call(this._subParams,A,w))}return _},m.prototype.reset=function(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1},m.prototype.addParam=function(_){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=_>L?L:_}},m.prototype.addSubParam=function(_){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(_<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=_>L?L:_,this._subParamsIdx[this.length-1]++}},m.prototype.hasSubParams=function(_){return(255&this._subParamsIdx[_])-(this._subParamsIdx[_]>>8)>0},m.prototype.getSubParams=function(_){var v=this._subParamsIdx[_]>>8,A=255&this._subParamsIdx[_];return A-v>0?this._subParams.subarray(v,A):null},m.prototype.getSubParamsAll=function(){for(var _={},v=0;v>8,w=255&this._subParamsIdx[v];w-A>0&&(_[v]=this._subParams.slice(A,w))}return _},m.prototype.addDigit=function(_){var v;if(!(this._rejectDigits||!(v=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)){var A=this._digitIsSub?this._subParams:this.params,w=A[v-1];A[v-1]=~w?Math.min(10*w+_,L):_}},m}();f.Params=y},5741:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.AddonManager=void 0;var L=function(){function y(){this._addons=[]}return y.prototype.dispose=function(){for(var m=this._addons.length-1;m>=0;m--)this._addons[m].instance.dispose()},y.prototype.loadAddon=function(m,_){var v=this,A={instance:_,dispose:_.dispose,isDisposed:!1};this._addons.push(A),_.dispose=function(){return v._wrappedAddonDispose(A)},_.activate(m)},y.prototype._wrappedAddonDispose=function(m){if(!m.isDisposed){for(var _=-1,v=0;v{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferApiView=void 0;var y=L(3785),m=L(511),_=function(){function v(A,w){this._buffer=A,this.type=w}return v.prototype.init=function(A){return this._buffer=A,this},Object.defineProperty(v.prototype,"cursorY",{get:function(){return this._buffer.y},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"cursorX",{get:function(){return this._buffer.x},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"viewportY",{get:function(){return this._buffer.ydisp},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"baseY",{get:function(){return this._buffer.ybase},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"length",{get:function(){return this._buffer.lines.length},enumerable:!1,configurable:!0}),v.prototype.getLine=function(A){var w=this._buffer.lines.get(A);if(w)return new y.BufferLineApiView(w)},v.prototype.getNullCell=function(){return new m.CellData},v}();f.BufferApiView=_},3785:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferLineApiView=void 0;var y=L(511),m=function(){function _(v){this._line=v}return Object.defineProperty(_.prototype,"isWrapped",{get:function(){return this._line.isWrapped},enumerable:!1,configurable:!0}),Object.defineProperty(_.prototype,"length",{get:function(){return this._line.length},enumerable:!1,configurable:!0}),_.prototype.getCell=function(v,A){if(!(v<0||v>=this._line.length))return A?(this._line.loadCell(v,A),A):this._line.loadCell(v,new y.CellData)},_.prototype.translateToString=function(v,A,w){return this._line.translateToString(v,A,w)},_}();f.BufferLineApiView=m},8285:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.BufferNamespaceApi=void 0;var y=L(8771),m=L(8460),_=function(){function v(A){var w=this;this._core=A,this._onBufferChange=new m.EventEmitter,this._normal=new y.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new y.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(function(){return w._onBufferChange.fire(w.active)})}return Object.defineProperty(v.prototype,"onBufferChange",{get:function(){return this._onBufferChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"active",{get:function(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"normal",{get:function(){return this._normal.init(this._core.buffers.normal)},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"alternate",{get:function(){return this._alternate.init(this._core.buffers.alt)},enumerable:!1,configurable:!0}),v}();f.BufferNamespaceApi=_},7975:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.ParserApi=void 0;var L=function(){function y(m){this._core=m}return y.prototype.registerCsiHandler=function(m,_){return this._core.registerCsiHandler(m,function(v){return _(v.toArray())})},y.prototype.addCsiHandler=function(m,_){return this.registerCsiHandler(m,_)},y.prototype.registerDcsHandler=function(m,_){return this._core.registerDcsHandler(m,function(v,A){return _(v,A.toArray())})},y.prototype.addDcsHandler=function(m,_){return this.registerDcsHandler(m,_)},y.prototype.registerEscHandler=function(m,_){return this._core.registerEscHandler(m,_)},y.prototype.addEscHandler=function(m,_){return this.registerEscHandler(m,_)},y.prototype.registerOscHandler=function(m,_){return this._core.registerOscHandler(m,_)},y.prototype.addOscHandler=function(m,_){return this.registerOscHandler(m,_)},y}();f.ParserApi=L},7090:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeApi=void 0;var L=function(){function y(m){this._core=m}return y.prototype.register=function(m){this._core.unicodeService.register(m)},Object.defineProperty(y.prototype,"versions",{get:function(){return this._core.unicodeService.versions},enumerable:!1,configurable:!0}),Object.defineProperty(y.prototype,"activeVersion",{get:function(){return this._core.unicodeService.activeVersion},set:function(m){this._core.unicodeService.activeVersion=m},enumerable:!1,configurable:!0}),y}();f.UnicodeApi=L},744:function(E,f,L){var y,m=this&&this.__extends||(y=function(d,s){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[a]=l[a])},y(d,s)},function(d,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function o(){this.constructor=d}y(d,s),d.prototype=s===null?Object.create(s):(o.prototype=s.prototype,new o)}),_=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},v=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.BufferService=f.MINIMUM_ROWS=f.MINIMUM_COLS=void 0;var A=L(2585),w=L(5295),c=L(8460),p=L(844);f.MINIMUM_COLS=2,f.MINIMUM_ROWS=1;var C=function(d){function s(o){var l=d.call(this)||this;return l._optionsService=o,l.isUserScrolling=!1,l._onResize=new c.EventEmitter,l._onScroll=new c.EventEmitter,l.cols=Math.max(o.rawOptions.cols||0,f.MINIMUM_COLS),l.rows=Math.max(o.rawOptions.rows||0,f.MINIMUM_ROWS),l.buffers=new w.BufferSet(o,l),l}return m(s,d),Object.defineProperty(s.prototype,"onResize",{get:function(){return this._onResize.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!1,configurable:!0}),Object.defineProperty(s.prototype,"buffer",{get:function(){return this.buffers.active},enumerable:!1,configurable:!0}),s.prototype.dispose=function(){d.prototype.dispose.call(this),this.buffers.dispose()},s.prototype.resize=function(o,l){this.cols=o,this.rows=l,this.buffers.resize(o,l),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:o,rows:l})},s.prototype.reset=function(){this.buffers.reset(),this.isUserScrolling=!1},s.prototype.scroll=function(o,l){l===void 0&&(l=!1);var a,u=this.buffer;(a=this._cachedBlankLine)&&a.length===this.cols&&a.getFg(0)===o.fg&&a.getBg(0)===o.bg||(a=u.getBlankLine(o,l),this._cachedBlankLine=a),a.isWrapped=l;var g=u.ybase+u.scrollTop,b=u.ybase+u.scrollBottom;if(u.scrollTop===0){var T=u.lines.isFull;b===u.lines.length-1?T?u.lines.recycle().copyFrom(a):u.lines.push(a.clone()):u.lines.splice(b+1,0,a.clone()),T?this.isUserScrolling&&(u.ydisp=Math.max(u.ydisp-1,0)):(u.ybase++,this.isUserScrolling||u.ydisp++)}else{var R=b-g+1;u.lines.shiftElements(g+1,R-1,-1),u.lines.set(b,a.clone())}this.isUserScrolling||(u.ydisp=u.ybase),this._onScroll.fire(u.ydisp)},s.prototype.scrollLines=function(o,l,a){var u=this.buffer;if(o<0){if(u.ydisp===0)return;this.isUserScrolling=!0}else o+u.ydisp>=u.ybase&&(this.isUserScrolling=!1);var g=u.ydisp;u.ydisp=Math.max(Math.min(u.ydisp+o,u.ybase),0),g!==u.ydisp&&(l||this._onScroll.fire(u.ydisp))},s.prototype.scrollPages=function(o){this.scrollLines(o*(this.rows-1))},s.prototype.scrollToTop=function(){this.scrollLines(-this.buffer.ydisp)},s.prototype.scrollToBottom=function(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)},s.prototype.scrollToLine=function(o){var l=o-this.buffer.ydisp;l!==0&&this.scrollLines(l)},_([v(0,A.IOptionsService)],s)}(p.Disposable);f.BufferService=C},7994:(E,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.CharsetService=void 0;var L=function(){function y(){this.glevel=0,this._charsets=[]}return y.prototype.reset=function(){this.charset=void 0,this._charsets=[],this.glevel=0},y.prototype.setgLevel=function(m){this.glevel=m,this.charset=this._charsets[m]},y.prototype.setgCharset=function(m,_){this._charsets[m]=_,this.glevel===m&&(this.charset=_)},y}();f.CharsetService=L},1753:function(E,f,L){var y=this&&this.__decorate||function(d,s,o,l){var a,u=arguments.length,g=u<3?s:l===null?l=Object.getOwnPropertyDescriptor(s,o):l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(d,s,o,l);else for(var b=d.length-1;b>=0;b--)(a=d[b])&&(g=(u<3?a(g):u>3?a(s,o,g):a(s,o))||g);return u>3&&g&&Object.defineProperty(s,o,g),g},m=this&&this.__param||function(d,s){return function(o,l){s(o,l,d)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreMouseService=void 0;var _=L(2585),v=L(8460),A={NONE:{events:0,restrict:function(){return!1}},X10:{events:1,restrict:function(d){return d.button!==4&&d.action===1&&(d.ctrl=!1,d.alt=!1,d.shift=!1,!0)}},VT200:{events:19,restrict:function(d){return d.action!==32}},DRAG:{events:23,restrict:function(d){return d.action!==32||d.button!==3}},ANY:{events:31,restrict:function(d){return!0}}};function w(d,s){var o=(d.ctrl?16:0)|(d.shift?4:0)|(d.alt?8:0);return d.button===4?(o|=64,o|=d.action):(o|=3&d.button,4&d.button&&(o|=64),8&d.button&&(o|=128),d.action===32?o|=32:d.action!==0||s||(o|=3)),o}var c=String.fromCharCode,p={DEFAULT:function(d){var s=[w(d,!1)+32,d.col+32,d.row+32];return s[0]>255||s[1]>255||s[2]>255?"":"\x1B[M"+c(s[0])+c(s[1])+c(s[2])},SGR:function(d){var s=d.action===0&&d.button!==4?"m":"M";return"\x1B[<"+w(d,!0)+";"+d.col+";"+d.row+s}},C=function(){function d(s,o){this._bufferService=s,this._coreService=o,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new v.EventEmitter,this._lastEvent=null;for(var l=0,a=Object.keys(A);l=this._bufferService.cols||s.row<0||s.row>=this._bufferService.rows||s.button===4&&s.action===32||s.button===3&&s.action!==32||s.button!==4&&(s.action===2||s.action===3)||(s.col++,s.row++,s.action===32&&this._lastEvent&&this._compareEvents(this._lastEvent,s))||!this._protocols[this._activeProtocol].restrict(s))return!1;var o=this._encodings[this._activeEncoding](s);return o&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(o):this._coreService.triggerDataEvent(o,!0)),this._lastEvent=s,!0},d.prototype.explainEvents=function(s){return{down:!!(1&s),up:!!(2&s),drag:!!(4&s),move:!!(8&s),wheel:!!(16&s)}},d.prototype._compareEvents=function(s,o){return s.col===o.col&&s.row===o.row&&s.button===o.button&&s.action===o.action&&s.ctrl===o.ctrl&&s.alt===o.alt&&s.shift===o.shift},y([m(0,_.IBufferService),m(1,_.ICoreService)],d)}();f.CoreMouseService=C},6975:function(E,f,L){var y,m=this&&this.__extends||(y=function(o,l){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,u){a.__proto__=u}||function(a,u){for(var g in u)Object.prototype.hasOwnProperty.call(u,g)&&(a[g]=u[g])},y(o,l)},function(o,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");function a(){this.constructor=o}y(o,l),o.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}),_=this&&this.__decorate||function(o,l,a,u){var g,b=arguments.length,T=b<3?l:u===null?u=Object.getOwnPropertyDescriptor(l,a):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")T=Reflect.decorate(o,l,a,u);else for(var R=o.length-1;R>=0;R--)(g=o[R])&&(T=(b<3?g(T):b>3?g(l,a,T):g(l,a))||T);return b>3&&T&&Object.defineProperty(l,a,T),T},v=this&&this.__param||function(o,l){return function(a,u){l(a,u,o)}};Object.defineProperty(f,"__esModule",{value:!0}),f.CoreService=void 0;var A=L(2585),w=L(8460),c=L(1439),p=L(844),C=Object.freeze({insertMode:!1}),d=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0}),s=function(o){function l(a,u,g,b){var T=o.call(this)||this;return T._bufferService=u,T._logService=g,T._optionsService=b,T.isCursorInitialized=!1,T.isCursorHidden=!1,T._onData=T.register(new w.EventEmitter),T._onUserInput=T.register(new w.EventEmitter),T._onBinary=T.register(new w.EventEmitter),T._scrollToBottom=a,T.register({dispose:function(){return T._scrollToBottom=void 0}}),T.modes=(0,c.clone)(C),T.decPrivateModes=(0,c.clone)(d),T}return m(l,o),Object.defineProperty(l.prototype,"onData",{get:function(){return this._onData.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onUserInput",{get:function(){return this._onUserInput.event},enumerable:!1,configurable:!0}),Object.defineProperty(l.prototype,"onBinary",{get:function(){return this._onBinary.event},enumerable:!1,configurable:!0}),l.prototype.reset=function(){this.modes=(0,c.clone)(C),this.decPrivateModes=(0,c.clone)(d)},l.prototype.triggerDataEvent=function(a,u){if(u===void 0&&(u=!1),!this._optionsService.rawOptions.disableStdin){var g=this._bufferService.buffer;g.ybase!==g.ydisp&&this._scrollToBottom(),u&&this._onUserInput.fire(),this._logService.debug('sending data "'+a+'"',function(){return a.split("").map(function(b){return b.charCodeAt(0)})}),this._onData.fire(a)}},l.prototype.triggerBinaryEvent=function(a){this._optionsService.rawOptions.disableStdin||(this._logService.debug('sending binary "'+a+'"',function(){return a.split("").map(function(u){return u.charCodeAt(0)})}),this._onBinary.fire(a))},_([v(1,A.IBufferService),v(2,A.ILogService),v(3,A.IOptionsService)],l)}(p.Disposable);f.CoreService=s},3730:function(E,f,L){var y=this&&this.__decorate||function(A,w,c,p){var C,d=arguments.length,s=d<3?w:p===null?p=Object.getOwnPropertyDescriptor(w,c):p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(A,w,c,p);else for(var o=A.length-1;o>=0;o--)(C=A[o])&&(s=(d<3?C(s):d>3?C(w,c,s):C(w,c))||s);return d>3&&s&&Object.defineProperty(w,c,s),s},m=this&&this.__param||function(A,w){return function(c,p){w(c,p,A)}};Object.defineProperty(f,"__esModule",{value:!0}),f.DirtyRowService=void 0;var _=L(2585),v=function(){function A(w){this._bufferService=w,this.clearRange()}return Object.defineProperty(A.prototype,"start",{get:function(){return this._start},enumerable:!1,configurable:!0}),Object.defineProperty(A.prototype,"end",{get:function(){return this._end},enumerable:!1,configurable:!0}),A.prototype.clearRange=function(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y},A.prototype.markDirty=function(w){wthis._end&&(this._end=w)},A.prototype.markRangeDirty=function(w,c){if(w>c){var p=w;w=c,c=p}wthis._end&&(this._end=c)},A.prototype.markAllDirty=function(){this.markRangeDirty(0,this._bufferService.rows-1)},y([m(0,_.IBufferService)],A)}();f.DirtyRowService=v},4348:function(E,f,L){var y=this&&this.__spreadArray||function(w,c,p){if(p||arguments.length===2)for(var C,d=0,s=c.length;d0?d[0].index:p.length;if(p.length!==g)throw new Error("[createInstance] First service dependency of "+c.name+" at position "+(g+1)+" conflicts with "+p.length+" static arguments");return new(c.bind.apply(c,y([void 0],y(y([],p,!0),s,!0),!1)))},w}();f.InstantiationService=A},7866:function(E,f,L){var y=this&&this.__decorate||function(c,p,C,d){var s,o=arguments.length,l=o<3?p:d===null?d=Object.getOwnPropertyDescriptor(p,C):d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")l=Reflect.decorate(c,p,C,d);else for(var a=c.length-1;a>=0;a--)(s=c[a])&&(l=(o<3?s(l):o>3?s(p,C,l):s(p,C))||l);return o>3&&l&&Object.defineProperty(p,C,l),l},m=this&&this.__param||function(c,p){return function(C,d){p(C,d,c)}},_=this&&this.__spreadArray||function(c,p,C){if(C||arguments.length===2)for(var d,s=0,o=p.length;s{function L(y,m,_){m.di$target===m?m.di$dependencies.push({id:y,index:_}):(m.di$dependencies=[{id:y,index:_}],m.di$target=m)}Object.defineProperty(f,"__esModule",{value:!0}),f.createDecorator=f.getServiceDependencies=f.serviceRegistry=void 0,f.serviceRegistry=new Map,f.getServiceDependencies=function(y){return y.di$dependencies||[]},f.createDecorator=function(y){if(f.serviceRegistry.has(y))return f.serviceRegistry.get(y);var m=function(_,v,A){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");L(m,_,A)};return m.toString=function(){return y},f.serviceRegistry.set(y,m),m}},2585:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.IUnicodeService=f.IOptionsService=f.ILogService=f.LogLevelEnum=f.IInstantiationService=f.IDirtyRowService=f.ICharsetService=f.ICoreService=f.ICoreMouseService=f.IBufferService=void 0;var y,m=L(8343);f.IBufferService=(0,m.createDecorator)("BufferService"),f.ICoreMouseService=(0,m.createDecorator)("CoreMouseService"),f.ICoreService=(0,m.createDecorator)("CoreService"),f.ICharsetService=(0,m.createDecorator)("CharsetService"),f.IDirtyRowService=(0,m.createDecorator)("DirtyRowService"),f.IInstantiationService=(0,m.createDecorator)("InstantiationService"),(y=f.LogLevelEnum||(f.LogLevelEnum={}))[y.DEBUG=0]="DEBUG",y[y.INFO=1]="INFO",y[y.WARN=2]="WARN",y[y.ERROR=3]="ERROR",y[y.OFF=4]="OFF",f.ILogService=(0,m.createDecorator)("LogService"),f.IOptionsService=(0,m.createDecorator)("OptionsService"),f.IUnicodeService=(0,m.createDecorator)("UnicodeService")},1480:(E,f,L)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.UnicodeService=void 0;var y=L(8460),m=L(225),_=function(){function v(){this._providers=Object.create(null),this._active="",this._onChange=new y.EventEmitter;var A=new m.UnicodeV6;this.register(A),this._active=A.version,this._activeProvider=A}return Object.defineProperty(v.prototype,"onChange",{get:function(){return this._onChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"versions",{get:function(){return Object.keys(this._providers)},enumerable:!1,configurable:!0}),Object.defineProperty(v.prototype,"activeVersion",{get:function(){return this._active},set:function(A){if(!this._providers[A])throw new Error('unknown Unicode version "'+A+'"');this._active=A,this._activeProvider=this._providers[A],this._onChange.fire(A)},enumerable:!1,configurable:!0}),v.prototype.register=function(A){this._providers[A.version]=A},v.prototype.wcwidth=function(A){return this._activeProvider.wcwidth(A)},v.prototype.getStringCellWidth=function(A){for(var w=0,c=A.length,p=0;p=c)return w+this.wcwidth(C);var d=A.charCodeAt(p);56320<=d&&d<=57343?C=1024*(C-55296)+d-56320+65536:w+=this.wcwidth(d)}w+=this.wcwidth(C)}return w},v}();f.UnicodeService=_}},H={};return function E(f){var L=H[f];if(L!==void 0)return L.exports;var y=H[f]={exports:{}};return V[f].call(y.exports,y,y.exports,E),y.exports}(4389)})()})});var jl=or((Nl,Wl)=>{(function(V){typeof Nl=="object"&&typeof Wl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";var H={},E=/[^\s\u00a0]/,f=V.Pos,L=V.cmpPos;function y(v){var A=v.search(E);return A==-1?0:A}V.commands.toggleComment=function(v){v.toggleComment()},V.defineExtension("toggleComment",function(v){v||(v=H);for(var A=this,w=1/0,c=this.listSelections(),p=null,C=c.length-1;C>=0;C--){var d=c[C].from(),s=c[C].to();d.line>=w||(s.line>=w&&(s=f(w,0)),w=d.line,p==null?A.uncomment(d,s,v)?p="un":(A.lineComment(d,s,v),p="line"):p=="un"?A.uncomment(d,s,v):A.lineComment(d,s,v))}});function m(v,A,w){return/\bstring\b/.test(v.getTokenTypeAt(f(A.line,0)))&&!/^[\'\"\`]/.test(w)}function _(v,A){var w=v.getMode();return w.useInnerComments===!1||!w.innerMode?w:v.getModeAt(A)}V.defineExtension("lineComment",function(v,A,w){w||(w=H);var c=this,p=_(c,v),C=c.getLine(v.line);if(!(C==null||m(c,v,C))){var d=w.lineComment||p.lineComment;if(!d){(w.blockCommentStart||p.blockCommentStart)&&(w.fullLines=!0,c.blockComment(v,A,w));return}var s=Math.min(A.ch!=0||A.line==v.line?A.line+1:A.line,c.lastLine()+1),o=w.padding==null?" ":w.padding,l=w.commentBlankLines||v.line==A.line;c.operation(function(){if(w.indent){for(var a=null,u=v.line;ub.length)&&(a=b)}for(var u=v.line;us||c.operation(function(){if(w.fullLines!=!1){var l=E.test(c.getLine(s));c.replaceRange(o+d,f(s)),c.replaceRange(C+o,f(v.line,0));var a=w.blockCommentLead||p.blockCommentLead;if(a!=null)for(var u=v.line+1;u<=s;++u)(u!=s||l)&&c.replaceRange(a+o,f(u,0))}else{var g=L(c.getCursor("to"),A)==0,b=!c.somethingSelected();c.replaceRange(d,A),g&&c.setSelection(b?A:c.getCursor("from"),A),c.replaceRange(C,v)}})}}),V.defineExtension("uncomment",function(v,A,w){w||(w=H);var c=this,p=_(c,v),C=Math.min(A.ch!=0||A.line==v.line?A.line:A.line-1,c.lastLine()),d=Math.min(v.line,C),s=w.lineComment||p.lineComment,o=[],l=w.padding==null?" ":w.padding,a;e:{if(!s)break e;for(var u=d;u<=C;++u){var g=c.getLine(u),b=g.indexOf(s);if(b>-1&&!/comment/.test(c.getTokenTypeAt(f(u,b+1)))&&(b=-1),b==-1&&E.test(g)||b>-1&&E.test(g.slice(0,b)))break e;o.push(g)}if(c.operation(function(){for(var ne=d;ne<=C;++ne){var ie=o[ne-d],be=ie.indexOf(s),ve=be+s.length;be<0||(ie.slice(ve,ve+l.length)==l&&(ve+=l.length),a=!0,c.replaceRange("",f(ne,be),f(ne,ve)))}}),a)return!0}var T=w.blockCommentStart||p.blockCommentStart,R=w.blockCommentEnd||p.blockCommentEnd;if(!T||!R)return!1;var k=w.blockCommentLead||p.blockCommentLead,M=c.getLine(d),N=M.indexOf(T);if(N==-1)return!1;var D=C==d?M:c.getLine(C),W=D.indexOf(R,C==d?N+T.length:0),B=f(d,N+1),F=f(C,W+1);if(W==-1||!/comment/.test(c.getTokenTypeAt(B))||!/comment/.test(c.getTokenTypeAt(F))||c.getRange(B,F,` +`).indexOf(R)>-1)return!1;var j=M.lastIndexOf(T,v.ch),G=j==-1?-1:M.slice(0,v.ch).indexOf(R,j+T.length);if(j!=-1&&G!=-1&&G+R.length!=v.ch)return!1;G=D.indexOf(R,A.ch);var $=D.slice(A.ch).lastIndexOf(T,G-A.ch);return j=G==-1||$==-1?-1:A.ch+$,G!=-1&&j!=-1&&j!=A.ch?!1:(c.operation(function(){c.replaceRange("",f(C,W-(l&&D.slice(W-l.length,W)==l?l.length:0)),f(C,W+R.length));var ne=N+T.length;if(l&&M.slice(ne,ne+l.length)==l&&(ne+=l.length),c.replaceRange("",f(d,N),f(d,ne)),k)for(var ie=d+1;ie<=C;++ie){var be=c.getLine(ie),ve=be.indexOf(k);if(!(ve==-1||E.test(be.slice(0,ve)))){var Ee=ve+k.length;l&&be.slice(Ee,Ee+l.length)==l&&(Ee+=l.length),c.replaceRange("",f(ie,ve),f(ie,Ee))}}}),!0)})})});var ql=or((Ul,zl)=>{(function(V){typeof Ul=="object"&&typeof zl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H=/\S/g,E=String.prototype.repeat||function(m){return Array(m+1).join(this)};function f(m){if(m.getOption("disableInput"))return V.Pass;for(var _=m.listSelections(),v,A=[],w=0;w<_.length;w++){var c=_[w].head;if(!/\bcomment\b/.test(m.getTokenTypeAt(c)))return V.Pass;var p=m.getModeAt(c);if(!v)v=p;else if(v!=p)return V.Pass;var C=null,d,s,o=v.blockCommentStart,l=v.lineComment;if(o&&v.blockCommentContinue){d=m.getLine(c.line);var a=d.lastIndexOf(v.blockCommentEnd,c.ch-v.blockCommentEnd.length);if(!(a!=-1&&a==c.ch-v.blockCommentEnd.length||l&&(s=d.lastIndexOf(l,c.ch-1))>-1&&/\bcomment\b/.test(m.getTokenTypeAt({line:c.line,ch:s+1}))))if(c.ch>=o.length&&(s=d.lastIndexOf(o,c.ch-o.length))>-1&&s>a)if(L(0,d)>=s)C=d.slice(0,s);else{var u=m.options.tabSize,g;s=V.countColumn(d,s,u),C=m.options.indentWithTabs?E.call(" ",g=Math.floor(s/u))+E.call(" ",s-u*g):E.call(" ",s)}else(s=d.indexOf(v.blockCommentContinue))>-1&&s<=c.ch&&s<=L(0,d)&&(C=d.slice(0,s));C!=null&&(C+=v.blockCommentContinue)}if(C==null&&l&&y(m)){if(d==null&&(d=m.getLine(c.line)),s=d.indexOf(l),!c.ch&&!s)C="";else if(s>-1&&L(0,d)>=s){if(C=L(c.ch,d)>-1,!C){var b=m.getLine(c.line+1)||"",T=b.indexOf(l);C=T>-1&&L(0,b)>=T||null}C&&(C=d.slice(0,s)+l+d.slice(s+l.length).match(/^\s*/)[0])}}if(C==null)return V.Pass;A[w]=` +`+C}m.operation(function(){for(var R=_.length-1;R>=0;R--)m.replaceRange(A[R],_[R].from(),_[R].to(),"+insert")})}function L(m,_){H.lastIndex=m;var v=H.exec(_);return v?v.index:-1}function y(m){var _=m.getOption("continueComments");return _&&typeof _=="object"?_.continueLineComment!==!1:!0}V.defineOption("continueComments",null,function(m,_,v){if(v&&v!=V.Init&&m.removeKeyMap("continueComment"),_){var A="Enter";typeof _=="string"?A=_:typeof _=="object"&&_.key&&(A=_.key);var w={name:"continueComment"};w[A]=f,m.addKeyMap(w)}})})});var Xl=or((Kl,Gl)=>{(function(V){typeof Kl=="object"&&typeof Gl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){V.defineOption("placeholder","",function(_,v,A){var w=A&&A!=V.Init;if(v&&!w)_.on("blur",L),_.on("change",y),_.on("swapDoc",y),V.on(_.getInputField(),"compositionupdate",_.state.placeholderCompose=function(){f(_)}),y(_);else if(!v&&w){_.off("blur",L),_.off("change",y),_.off("swapDoc",y),V.off(_.getInputField(),"compositionupdate",_.state.placeholderCompose),H(_);var c=_.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}v&&!_.hasFocus()&&L(_)});function H(_){_.state.placeholder&&(_.state.placeholder.parentNode.removeChild(_.state.placeholder),_.state.placeholder=null)}function E(_){H(_);var v=_.state.placeholder=document.createElement("pre");v.style.cssText="height: 0; overflow: visible",v.style.direction=_.getOption("direction"),v.className="CodeMirror-placeholder CodeMirror-line-like";var A=_.getOption("placeholder");typeof A=="string"&&(A=document.createTextNode(A)),v.appendChild(A),_.display.lineSpace.insertBefore(v,_.display.lineSpace.firstChild)}function f(_){setTimeout(function(){var v=!1;if(_.lineCount()==1){var A=_.getInputField();v=A.nodeName=="TEXTAREA"?!_.getLine(0).length:!/[^\u200b]/.test(A.querySelector(".CodeMirror-line").textContent)}v?E(_):H(_)},20)}function L(_){m(_)&&E(_)}function y(_){var v=_.getWrapperElement(),A=m(_);v.className=v.className.replace(" CodeMirror-empty","")+(A?" CodeMirror-empty":""),A?E(_):H(_)}function m(_){return _.lineCount()===1&&_.getLine(0)===""}})});var Vl=or((Yl,Zl)=>{(function(V){typeof Yl=="object"&&typeof Zl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},E=V.Pos;V.defineOption("autoCloseBrackets",!1,function(s,o,l){l&&l!=V.Init&&(s.removeKeyMap(L),s.state.closeBrackets=null),o&&(y(f(o,"pairs")),s.state.closeBrackets=o,s.addKeyMap(L))});function f(s,o){return o=="pairs"&&typeof s=="string"?s:typeof s=="object"&&s[o]!=null?s[o]:H[o]}var L={Backspace:v,Enter:A};function y(s){for(var o=0;o=0;u--){var b=a[u].head;s.replaceRange("",E(b.line,b.ch-1),E(b.line,b.ch+1),"+delete")}}function A(s){var o=_(s),l=o&&f(o,"explode");if(!l||s.getOption("disableInput"))return V.Pass;for(var a=s.listSelections(),u=0;u0?{line:b.head.line,ch:b.head.ch+o}:{line:b.head.line-1};l.push({anchor:T,head:T})}s.setSelections(l,u)}function c(s){var o=V.cmpPos(s.anchor,s.head)>0;return{anchor:new E(s.anchor.line,s.anchor.ch+(o?-1:1)),head:new E(s.head.line,s.head.ch+(o?1:-1))}}function p(s,o){var l=_(s);if(!l||s.getOption("disableInput"))return V.Pass;var a=f(l,"pairs"),u=a.indexOf(o);if(u==-1)return V.Pass;for(var g=f(l,"closeBefore"),b=f(l,"triples"),T=a.charAt(u+1)==o,R=s.listSelections(),k=u%2==0,M,N=0;N=0&&s.getRange(W,E(W.line,W.ch+3))==o+o+o?B="skipThree":B="skip";else if(T&&W.ch>1&&b.indexOf(o)>=0&&s.getRange(E(W.line,W.ch-2),W)==o+o){if(W.ch>2&&/\bstring/.test(s.getTokenTypeAt(E(W.line,W.ch-2))))return V.Pass;B="addFour"}else if(T){var j=W.ch==0?" ":s.getRange(E(W.line,W.ch-1),W);if(!V.isWordChar(F)&&j!=o&&!V.isWordChar(j))B="both";else return V.Pass}else if(k&&(F.length===0||/\s/.test(F)||g.indexOf(F)>-1))B="both";else return V.Pass;if(!M)M=B;else if(M!=B)return V.Pass}var G=u%2?a.charAt(u-1):o,$=u%2?o:a.charAt(u+1);s.operation(function(){if(M=="skip")w(s,1);else if(M=="skipThree")w(s,3);else if(M=="surround"){for(var ne=s.getSelections(),ie=0;ie{(function(V){typeof $l=="object"&&typeof Jl=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){var H=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),E=V.Pos,f={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function L(w){return w&&w.bracketRegex||/[(){}[\]]/}function y(w,c,p){var C=w.getLineHandle(c.line),d=c.ch-1,s=p&&p.afterCursor;s==null&&(s=/(^| )cm-fat-cursor($| )/.test(w.getWrapperElement().className));var o=L(p),l=!s&&d>=0&&o.test(C.text.charAt(d))&&f[C.text.charAt(d)]||o.test(C.text.charAt(d+1))&&f[C.text.charAt(++d)];if(!l)return null;var a=l.charAt(1)==">"?1:-1;if(p&&p.strict&&a>0!=(d==c.ch))return null;var u=w.getTokenTypeAt(E(c.line,d+1)),g=m(w,E(c.line,d+(a>0?1:0)),a,u,p);return g==null?null:{from:E(c.line,d),to:g&&g.pos,match:g&&g.ch==l.charAt(0),forward:a>0}}function m(w,c,p,C,d){for(var s=d&&d.maxScanLineLength||1e4,o=d&&d.maxScanLines||1e3,l=[],a=L(d),u=p>0?Math.min(c.line+o,w.lastLine()+1):Math.max(w.firstLine()-1,c.line-o),g=c.line;g!=u;g+=p){var b=w.getLine(g);if(!!b){var T=p>0?0:b.length-1,R=p>0?b.length:-1;if(!(b.length>s))for(g==c.line&&(T=c.ch-(p<0?1:0));T!=R;T+=p){var k=b.charAt(T);if(a.test(k)&&(C===void 0||(w.getTokenTypeAt(E(g,T+1))||"")==(C||""))){var M=f[k];if(M&&M.charAt(1)==">"==p>0)l.push(k);else if(l.length)l.pop();else return{pos:E(g,T),ch:k}}}}}return g-p==(p>0?w.lastLine():w.firstLine())?!1:null}function _(w,c,p){for(var C=w.state.matchBrackets.maxHighlightLineLength||1e3,d=p&&p.highlightNonMatching,s=[],o=w.listSelections(),l=0;l{(function(V){typeof Ql=="object"&&typeof ec=="object"?V(sr()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],V):V(CodeMirror)})(function(V){"use strict";var H=V.Pos;function E(o){var l=o.flags;return l??(o.ignoreCase?"i":"")+(o.global?"g":"")+(o.multiline?"m":"")}function f(o,l){for(var a=E(o),u=a,g=0;gT);R++){var k=o.getLine(b++);u=u==null?k:u+` +`+k}g=g*2,l.lastIndex=a.ch;var M=l.exec(u);if(M){var N=u.slice(0,M.index).split(` +`),D=M[0].split(` +`),W=a.line+N.length-1,B=N[N.length-1].length;return{from:H(W,B),to:H(W+D.length-1,D.length==1?B+D[0].length:D[D.length-1].length),match:M}}}}function _(o,l,a){for(var u,g=0;g<=o.length;){l.lastIndex=g;var b=l.exec(o);if(!b)break;var T=b.index+b[0].length;if(T>o.length-a)break;(!u||T>u.index+u[0].length)&&(u=b),g=b.index+1}return u}function v(o,l,a){l=f(l,"g");for(var u=a.line,g=a.ch,b=o.firstLine();u>=b;u--,g=-1){var T=o.getLine(u),R=_(T,l,g<0?0:T.length-g);if(R)return{from:H(u,R.index),to:H(u,R.index+R[0].length),match:R}}}function A(o,l,a){if(!L(l))return v(o,l,a);l=f(l,"gm");for(var u,g=1,b=o.getLine(a.line).length-a.ch,T=a.line,R=o.firstLine();T>=R;){for(var k=0;k=R;k++){var M=o.getLine(T--);u=u==null?M:M+` +`+u}g*=2;var N=_(u,l,b);if(N){var D=u.slice(0,N.index).split(` `),W=N[0].split(` -`),B=E+D.length,F=D[D.length-1].length;return{from:H(B,F),to:H(B+W.length-1,W.length==1?F+W[0].length:W[W.length-1].length),match:N}}}}var w,c;String.prototype.normalize?(w=function(o){return o.normalize("NFD").toLowerCase()},c=function(o){return o.normalize("NFD")}):(w=function(o){return o.toLowerCase()},c=function(o){return o});function p(o,l,a,u){if(o.length==l.length)return a;for(var v=0,b=a+Math.max(0,o.length-l.length);;){if(v==b)return v;var E=v+b>>1,O=u(o.slice(0,E)).length;if(O==a)return E;O>a?b=E:v=E+1}}function C(o,l,a,u){if(!l.length)return null;var v=u?w:c,b=v(l).split(/\r|\n\r?/);e:for(var E=a.line,O=a.ch,k=o.lastLine()+1-b.length;E<=k;E++,O=0){var A=o.getLine(E).slice(O),N=v(A);if(b.length==1){var D=N.indexOf(b[0]);if(D==-1)continue e;var a=p(A,N,D,v)+O;return{from:H(E,p(A,N,D,v)+O),to:H(E,p(A,N,D+b[0].length,v)+O)}}else{var W=N.length-b[0].length;if(N.slice(W)!=b[0])continue e;for(var B=1;B=k;E--,O=-1){var A=o.getLine(E);O>-1&&(A=A.slice(0,O));var N=v(A);if(b.length==1){var D=N.lastIndexOf(b[0]);if(D==-1)continue e;return{from:H(E,p(A,N,D,v)),to:H(E,p(A,N,D+b[0].length,v))}}else{var W=b[b.length-1];if(N.slice(0,W.length)!=W)continue e;for(var B=1,a=E-b.length+1;B(this.doc.getLine(l.line)||"").length&&(l.ch=0,l.line++)),V.cmpPos(l,this.doc.clipPos(l))!=0))return this.atOccurrence=!1;var a=this.matches(o,l);if(this.afterEmptyMatch=a&&V.cmpPos(a.from,a.to)==0,a)return this.pos=a,this.atOccurrence=!0,this.pos.match||!0;var u=H(o?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:u,to:u},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(o,l){if(!!this.atOccurrence){var a=V.splitLines(o);this.doc.replaceRange(a,this.pos.from,this.pos.to,l),this.pos.to=H(this.pos.from.line+a.length-1,a[a.length-1].length+(a.length==1?this.pos.from.ch:0))}}},V.defineExtension("getSearchCursor",function(o,l,a){return new s(this.doc,o,l,a)}),V.defineDocExtension("getSearchCursor",function(o,l,a){return new s(this,o,l,a)}),V.defineExtension("selectMatches",function(o,l){for(var a=[],u=this.getSearchCursor(o,this.getCursor("from"),l);u.findNext()&&!(V.cmpPos(u.to(),this.getCursor("to"))>0);)a.push({anchor:u.from(),head:u.to()});a.length&&this.setSelections(a,0)})})});var nc=or((rc,ic)=>{(function(V){typeof rc=="object"&&typeof ic=="object"?V(sr(),tc(),Os()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],V):V(CodeMirror)})(function(V){"use strict";var H=V.commands,R=V.Pos;function h(a,u,v){if(v<0&&u.ch==0)return a.clipPos(R(u.line-1));var b=a.getLine(u.line);if(v>0&&u.ch>=b.length)return a.clipPos(R(u.line+1,0));for(var E="start",O,k=u.ch,A=k,N=v<0?0:b.length,D=0;A!=N;A+=v,D++){var W=b.charAt(v<0?A-1:A),B=W!="_"&&V.isWordChar(W)?"w":"o";if(B=="w"&&W.toUpperCase()==W&&(B="W"),E=="start")B!="o"?(E="in",O=B):k=A+v;else if(E=="in"&&O!=B){if(O=="w"&&B=="W"&&v<0&&A--,O=="W"&&B=="w"&&v>0)if(A==k+1){O="w";continue}else A--;break}}return R(u.line,A)}function L(a,u){a.extendSelectionsBy(function(v){return a.display.shift||a.doc.extend||v.empty()?h(a.doc,v.head,u):u<0?v.from():v.to()})}H.goSubwordLeft=function(a){L(a,-1)},H.goSubwordRight=function(a){L(a,1)},H.scrollLineUp=function(a){var u=a.getScrollInfo();if(!a.somethingSelected()){var v=a.lineAtHeight(u.top+u.clientHeight,"local");a.getCursor().line>=v&&a.execCommand("goLineUp")}a.scrollTo(null,u.top-a.defaultTextHeight())},H.scrollLineDown=function(a){var u=a.getScrollInfo();if(!a.somethingSelected()){var v=a.lineAtHeight(u.top,"local")+1;a.getCursor().line<=v&&a.execCommand("goLineDown")}a.scrollTo(null,u.top+a.defaultTextHeight())},H.splitSelectionByLine=function(a){for(var u=a.listSelections(),v=[],b=0;bE.line&&k==O.line&&O.ch==0||v.push({anchor:k==E.line?E:R(k,0),head:k==O.line?O:R(k)});a.setSelections(v,0)},H.singleSelectionTop=function(a){var u=a.listSelections()[0];a.setSelection(u.anchor,u.head,{scroll:!1})},H.selectLine=function(a){for(var u=a.listSelections(),v=[],b=0;bb?v.push(A,N):v.length&&(v[v.length-1]=N),b=N}a.operation(function(){for(var D=0;Da.lastLine()?a.replaceRange(` -`+F,R(a.lastLine()),null,"+swapLine"):a.replaceRange(F+` -`,R(B,0),null,"+swapLine")}a.setSelections(E),a.scrollIntoView()})},H.swapLineDown=function(a){if(a.isReadOnly())return V.Pass;for(var u=a.listSelections(),v=[],b=a.lastLine()+1,E=u.length-1;E>=0;E--){var O=u[E],k=O.to().line+1,A=O.from().line;O.to().ch==0&&!O.empty()&&k--,k=0;N-=2){var D=v[N],W=v[N+1],B=a.getLine(D);D==a.lastLine()?a.replaceRange("",R(D-1),R(D),"+swapLine"):a.replaceRange("",R(D,0),R(D+1,0),"+swapLine"),a.replaceRange(B+` -`,R(W,0),null,"+swapLine")}a.scrollIntoView()})},H.toggleCommentIndented=function(a){a.toggleComment({indent:!0})},H.joinLines=function(a){for(var u=a.listSelections(),v=[],b=0;b=0;O--){var k=v[b[O]];if(!(A&&V.cmpPos(k.head,A)>0)){var N=m(a,k.head);A=N.from,a.replaceRange(u(N.word),N.from,N.to)}}})}H.smartBackspace=function(a){if(a.somethingSelected())return V.Pass;a.operation(function(){for(var u=a.listSelections(),v=a.getOption("indentUnit"),b=u.length-1;b>=0;b--){var E=u[b].head,O=a.getRange({line:E.line,ch:0},E),k=V.countColumn(O,null,a.getOption("tabSize")),A=a.findPosH(E,-1,"char",!1);if(O&&!/\S/.test(O)&&k%v==0){var N=new R(E.line,V.findColumn(O,k-v,v));N.ch!=E.ch&&(A=N)}a.replaceRange("",A,E,"+delete")}})},H.delLineRight=function(a){a.operation(function(){for(var u=a.listSelections(),v=u.length-1;v>=0;v--)a.replaceRange("",u[v].anchor,R(u[v].to().line),"+delete");a.scrollIntoView()})},H.upcaseAtCursor=function(a){C(a,function(u){return u.toUpperCase()})},H.downcaseAtCursor=function(a){C(a,function(u){return u.toLowerCase()})},H.setSublimeMark=function(a){a.state.sublimeMark&&a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor())},H.selectToSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();u&&a.setSelection(a.getCursor(),u)},H.deleteToSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();if(u){var v=a.getCursor(),b=u;if(V.cmpPos(v,b)>0){var E=b;b=v,v=E}a.state.sublimeKilled=a.getRange(v,b),a.replaceRange("",v,b)}},H.swapWithSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();u&&(a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor()),a.setCursor(u))},H.sublimeYank=function(a){a.state.sublimeKilled!=null&&a.replaceSelection(a.state.sublimeKilled,null,"paste")},H.showInCenter=function(a){var u=a.cursorCoords(null,"local");a.scrollTo(null,(u.top+u.bottom)/2-a.getScrollInfo().clientHeight/2)};function d(a){var u=a.getCursor("from"),v=a.getCursor("to");if(V.cmpPos(u,v)==0){var b=m(a,u);if(!b.word)return;u=b.from,v=b.to}return{from:u,to:v,query:a.getRange(u,v),word:b}}function s(a,u){var v=d(a);if(!!v){var b=v.query,E=a.getSearchCursor(b,u?v.to:v.from);(u?E.findNext():E.findPrevious())?a.setSelection(E.from(),E.to()):(E=a.getSearchCursor(b,u?R(a.firstLine(),0):a.clipPos(R(a.lastLine()))),(u?E.findNext():E.findPrevious())?a.setSelection(E.from(),E.to()):v.word&&a.setSelection(v.from,v.to))}}H.findUnder=function(a){s(a,!0)},H.findUnderPrevious=function(a){s(a,!1)},H.findAllUnder=function(a){var u=d(a);if(!!u){for(var v=a.getSearchCursor(u.query),b=[],E=-1;v.findNext();)b.push({anchor:v.from(),head:v.to()}),v.from().line<=u.from.line&&v.from().ch<=u.from.ch&&E++;a.setSelections(b,E)}};var o=V.keyMap;o.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},V.normalizeKeyMap(o.macSublime),o.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},V.normalizeKeyMap(o.pcSublime);var l=o.default==o.macDefault;o.sublime=l?o.macSublime:o.pcSublime})});var rf=V=>V.reduce((H,R)=>H+String.fromCharCode(R),""),ao=rf;var nf=V=>V.split("").map(H=>H.charCodeAt(0)),ml=nf;var ss=class{name(){return"default"}codePointsToString(H){return ao(H)}stringToCodePoints(H){return ml(H)}matches(H){return this.matchesAsString(this.codePointsToString(H))}matchesAsString(H){return!0}decode(H){return this.decodeAsString(this.codePointsToString(H))}decodeAsString(H){return this.stringToCodePoints(H)}},di=ss;var as=class extends di{name(){return"base64"}matchesAsString(H){if(H.length<4)return!1;try{return atob(H),!0}catch(R){return!1}}decodeAsString(H){return Array.from(atob(H)).map(R=>R.charCodeAt(0))}},bl=as;var ls=class extends di{name(){return"hexdump"}matchesAsString(H){return/^([0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) *\n)+[0-9a-f]{7}\n?$/.test(H)}decodeAsString(H){return H.trim().replace(/\n[0-9a-f]{7}\n?$/,"").replace(/(?<=^|\n)[0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) */g,"$1").replace(/\s+/g,"").replace(/(..)(..)/g,"$2$1").replace(/00$/,"").match(/../g).map(R=>parseInt(R,16))}},Sl=ls;var sn=class{constructor(H,R,h,L=null,y=null,m=H){this.id=H;this.name=R;this.runner=h;this.url=L;this.args=y;this.highlighterRef=m}getId(){return this.id}getName(){return this.name}getURL(){return this.url}getArgs(){return this.args}getHighlighterRef(){return this.highlighterRef}run(H,R,h){return this.runner(H,h,R)}};var cs=class{constructor(){this.data={}}register(...H){H.forEach(R=>{this.data[R.getId()]=R})}get(H){return this.data[H]}all(){return Object.keys(this.data)}run(H,R,h,L){return this.data[H].run(R,h,L)}},lo=V=>(H,R,h)=>{let L=new Worker(V);return L.postMessage({type:"run",code:H,args:h,input:R}),L},Fr=new cs;var wf=Xt(hs()),ds=class extends sn{constructor(){super("javascript-browser","JavaScript (Browser)",lo("dist/js/langs/javascript-browser/worker.js"),"https://www.ecma-international.org/publications-and-standards/standards/ecma-262/",null,"javascript")}},Ll=ds;var Ef=Xt(ps()),vs=class extends sn{constructor(){super("webperl-5.28.1","Perl 5.28.1 (webperl)",lo("dist/js/langs/webperl-5.28.1/worker.js"),"https://www.perl.org/",["-M5.10.0","-F","-l","-p"],"perl")}},El=vs;var oc=Xt(sr()),sc=Xt(Ol());var gs=class{constructor(...H){this.buffer="";this.registered=[];this.register(...H)}activate(H){this.registered.reduce((R,h)=>h.matches(H)&&!R?(h.isActive()||(h.activate(H),h.reset(),h.write(this.buffer)),!0):(h.deactivate(),h.reset(),R),!1),this.resize()}register(...H){this.registered.push(...H)}reset(){this.buffer="",this.registered.forEach(H=>H.reset())}resize(){this.registered.forEach(H=>{H.isActive()&&H.resize()})}write(H){typeof H=="number"&&(H=String.fromCharCode(H)),this.buffer+=H,this.registered.filter(R=>R.isActive()).forEach(R=>R.write(H))}};var _s=(...V)=>new gs(...V);var Dl=Xt(sr());var ys=class{constructor(){this.active=!1;this.inputs=null}activate(H){this.container.removeAttribute("hidden"),this.active=!0,this.inputs=H,this.resize()}createElement(H="div"){return this.container=document.createElement(H),this.container.setAttribute("hidden",""),this.container}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}read(){return this.readAsString(null).split("").map(H=>H.charCodeAt(0))}resize(){}},Rl=ys;var sf=(V,H=".")=>V.replace(/[\x00-\x09\x0b-\x1f\x7f-\xff]/g,H),uo=sf;var ms=class extends Rl{constructor(R,h={}){super();let L=this.createElement("div"),y=document.createElement("textarea");R.append(L),L.append(y),this.editor=(0,Dl.fromTextArea)(y,Jr(nr({mode:null,theme:"monokai",viewportMargin:1/0},h),{extraKeys:nr({"Ctrl-D":"duplicateLine","Ctrl-/":"toggleComment","Shift-Tab":!1,Tab:!1},Object.keys(h.extraKeys||{}).length?h.extraKeys:{})})),this.editor.on("change",()=>{this.inputs!==null&&this.inputs.setBuffer(this.editor.getValue().split("").map(m=>m.charCodeAt(0)))})}matches(R){return/^[\t\n -~]*$/.test(R)}on(R,h){this.editor.on(R,(...L)=>h(...L))}readAsString(R="."){let h=this.editor.getValue();return R===null?h:uo(h,R)}reset(){this.editor.setValue("")}setOption(R,h){this.editor.setOption(R,h)}setType(R){this.editor.getOption("mode")!==R&&this.editor.setOption("mode",R)}write(R){Array.isArray(R)&&(R=R.map(h=>String.fromCharCode(h)).join("")),this.editor.setValue(R)}},Oi=ms;var bs=class{constructor(){this.active=!1;this.mimeType="text/plain"}activate(H){this.container.removeAttribute("hidden"),this.active=!0,this.mimeType=H,this.resize()}createElement(H="div"){let R=document.createElement(H);return R.setAttribute("hidden",""),R}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}matches(H){return!0}resize(){}},an=bs;var zf=Xt(hs()),qf=Xt(ps()),Ss=class extends an{constructor(R,h={}){super();let L=document.createElement("textarea");this.container=this.createElement("div"),this.container.append(L),R.append(this.container),this.editor=fo.createEditor(L,Jr(nr({},h),{readOnly:!0})),R.append(this.container)}activate(R){super.activate(R),this.editor.setOption("mode",R)}deactivate(){super.deactivate()}matches(R){return["application/ecmascript","application/javascript","application/json","application/x-perl","text/ecmascript","text/javascript","text/json","text/x-perl"].includes(R)}reset(){this.editor.setValue("")}write(R){typeof R=="number"&&(R=String.fromCharCode(R)),this.editor.setValue(this.editor.getValue()+R)}},Bl=Ss;var Cs=class extends an{constructor(R){super();this.buffer="";this.mimeType="text/html";this.container=this.createElement("iframe"),R.append(this.container),this.update()}activate(R){super.activate(R),this.update()}matches(R){return["text/html"].includes(R)}reset(){this.buffer="",this.update()}write(R){typeof R=="number"&&(R=String.fromCharCode(R)),this.buffer+=R,this.update()}update(){this.container.src=`data:${this.mimeType};base64,${btoa(this.buffer)}`}},ho=Cs;var ws=class{constructor(H,R,h,L,y){this.languageSelector=H;this.stdin=R;this.stdout=h;this.stderr=L;this.args=y}static getRaw(H){return H.getValue()}getArgs(){return this.args.getValue()}setArgs(H){this.args.setValue(H)}argsRefresh(){this.args.refresh()}getStdin(){return this.stdin.getValue()}setStdin(H){this.stdin.setValue(H)}},Pl=ws;var Ls=class extends ho{constructor(){super(...arguments);this.imageBuffer="";this.imageMimeType="image/png"}activate(R){super.activate("text/html"),this.imageMimeType=R}css(){return` +`),B=T+D.length,F=D[D.length-1].length;return{from:H(B,F),to:H(B+W.length-1,W.length==1?F+W[0].length:W[W.length-1].length),match:N}}}}var w,c;String.prototype.normalize?(w=function(o){return o.normalize("NFD").toLowerCase()},c=function(o){return o.normalize("NFD")}):(w=function(o){return o.toLowerCase()},c=function(o){return o});function p(o,l,a,u){if(o.length==l.length)return a;for(var g=0,b=a+Math.max(0,o.length-l.length);;){if(g==b)return g;var T=g+b>>1,R=u(o.slice(0,T)).length;if(R==a)return T;R>a?b=T:g=T+1}}function C(o,l,a,u){if(!l.length)return null;var g=u?w:c,b=g(l).split(/\r|\n\r?/);e:for(var T=a.line,R=a.ch,k=o.lastLine()+1-b.length;T<=k;T++,R=0){var M=o.getLine(T).slice(R),N=g(M);if(b.length==1){var D=N.indexOf(b[0]);if(D==-1)continue e;var a=p(M,N,D,g)+R;return{from:H(T,p(M,N,D,g)+R),to:H(T,p(M,N,D+b[0].length,g)+R)}}else{var W=N.length-b[0].length;if(N.slice(W)!=b[0])continue e;for(var B=1;B=k;T--,R=-1){var M=o.getLine(T);R>-1&&(M=M.slice(0,R));var N=g(M);if(b.length==1){var D=N.lastIndexOf(b[0]);if(D==-1)continue e;return{from:H(T,p(M,N,D,g)),to:H(T,p(M,N,D+b[0].length,g))}}else{var W=b[b.length-1];if(N.slice(0,W.length)!=W)continue e;for(var B=1,a=T-b.length+1;B(this.doc.getLine(l.line)||"").length&&(l.ch=0,l.line++)),V.cmpPos(l,this.doc.clipPos(l))!=0))return this.atOccurrence=!1;var a=this.matches(o,l);if(this.afterEmptyMatch=a&&V.cmpPos(a.from,a.to)==0,a)return this.pos=a,this.atOccurrence=!0,this.pos.match||!0;var u=H(o?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:u,to:u},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(o,l){if(!!this.atOccurrence){var a=V.splitLines(o);this.doc.replaceRange(a,this.pos.from,this.pos.to,l),this.pos.to=H(this.pos.from.line+a.length-1,a[a.length-1].length+(a.length==1?this.pos.from.ch:0))}}},V.defineExtension("getSearchCursor",function(o,l,a){return new s(this.doc,o,l,a)}),V.defineDocExtension("getSearchCursor",function(o,l,a){return new s(this,o,l,a)}),V.defineExtension("selectMatches",function(o,l){for(var a=[],u=this.getSearchCursor(o,this.getCursor("from"),l);u.findNext()&&!(V.cmpPos(u.to(),this.getCursor("to"))>0);)a.push({anchor:u.from(),head:u.to()});a.length&&this.setSelections(a,0)})})});var nc=or((rc,ic)=>{(function(V){typeof rc=="object"&&typeof ic=="object"?V(sr(),tc(),Os()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],V):V(CodeMirror)})(function(V){"use strict";var H=V.commands,E=V.Pos;function f(a,u,g){if(g<0&&u.ch==0)return a.clipPos(E(u.line-1));var b=a.getLine(u.line);if(g>0&&u.ch>=b.length)return a.clipPos(E(u.line+1,0));for(var T="start",R,k=u.ch,M=k,N=g<0?0:b.length,D=0;M!=N;M+=g,D++){var W=b.charAt(g<0?M-1:M),B=W!="_"&&V.isWordChar(W)?"w":"o";if(B=="w"&&W.toUpperCase()==W&&(B="W"),T=="start")B!="o"?(T="in",R=B):k=M+g;else if(T=="in"&&R!=B){if(R=="w"&&B=="W"&&g<0&&M--,R=="W"&&B=="w"&&g>0)if(M==k+1){R="w";continue}else M--;break}}return E(u.line,M)}function L(a,u){a.extendSelectionsBy(function(g){return a.display.shift||a.doc.extend||g.empty()?f(a.doc,g.head,u):u<0?g.from():g.to()})}H.goSubwordLeft=function(a){L(a,-1)},H.goSubwordRight=function(a){L(a,1)},H.scrollLineUp=function(a){var u=a.getScrollInfo();if(!a.somethingSelected()){var g=a.lineAtHeight(u.top+u.clientHeight,"local");a.getCursor().line>=g&&a.execCommand("goLineUp")}a.scrollTo(null,u.top-a.defaultTextHeight())},H.scrollLineDown=function(a){var u=a.getScrollInfo();if(!a.somethingSelected()){var g=a.lineAtHeight(u.top,"local")+1;a.getCursor().line<=g&&a.execCommand("goLineDown")}a.scrollTo(null,u.top+a.defaultTextHeight())},H.splitSelectionByLine=function(a){for(var u=a.listSelections(),g=[],b=0;bT.line&&k==R.line&&R.ch==0||g.push({anchor:k==T.line?T:E(k,0),head:k==R.line?R:E(k)});a.setSelections(g,0)},H.singleSelectionTop=function(a){var u=a.listSelections()[0];a.setSelection(u.anchor,u.head,{scroll:!1})},H.selectLine=function(a){for(var u=a.listSelections(),g=[],b=0;bb?g.push(M,N):g.length&&(g[g.length-1]=N),b=N}a.operation(function(){for(var D=0;Da.lastLine()?a.replaceRange(` +`+F,E(a.lastLine()),null,"+swapLine"):a.replaceRange(F+` +`,E(B,0),null,"+swapLine")}a.setSelections(T),a.scrollIntoView()})},H.swapLineDown=function(a){if(a.isReadOnly())return V.Pass;for(var u=a.listSelections(),g=[],b=a.lastLine()+1,T=u.length-1;T>=0;T--){var R=u[T],k=R.to().line+1,M=R.from().line;R.to().ch==0&&!R.empty()&&k--,k=0;N-=2){var D=g[N],W=g[N+1],B=a.getLine(D);D==a.lastLine()?a.replaceRange("",E(D-1),E(D),"+swapLine"):a.replaceRange("",E(D,0),E(D+1,0),"+swapLine"),a.replaceRange(B+` +`,E(W,0),null,"+swapLine")}a.scrollIntoView()})},H.toggleCommentIndented=function(a){a.toggleComment({indent:!0})},H.joinLines=function(a){for(var u=a.listSelections(),g=[],b=0;b=0;R--){var k=g[b[R]];if(!(M&&V.cmpPos(k.head,M)>0)){var N=m(a,k.head);M=N.from,a.replaceRange(u(N.word),N.from,N.to)}}})}H.smartBackspace=function(a){if(a.somethingSelected())return V.Pass;a.operation(function(){for(var u=a.listSelections(),g=a.getOption("indentUnit"),b=u.length-1;b>=0;b--){var T=u[b].head,R=a.getRange({line:T.line,ch:0},T),k=V.countColumn(R,null,a.getOption("tabSize")),M=a.findPosH(T,-1,"char",!1);if(R&&!/\S/.test(R)&&k%g==0){var N=new E(T.line,V.findColumn(R,k-g,g));N.ch!=T.ch&&(M=N)}a.replaceRange("",M,T,"+delete")}})},H.delLineRight=function(a){a.operation(function(){for(var u=a.listSelections(),g=u.length-1;g>=0;g--)a.replaceRange("",u[g].anchor,E(u[g].to().line),"+delete");a.scrollIntoView()})},H.upcaseAtCursor=function(a){C(a,function(u){return u.toUpperCase()})},H.downcaseAtCursor=function(a){C(a,function(u){return u.toLowerCase()})},H.setSublimeMark=function(a){a.state.sublimeMark&&a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor())},H.selectToSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();u&&a.setSelection(a.getCursor(),u)},H.deleteToSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();if(u){var g=a.getCursor(),b=u;if(V.cmpPos(g,b)>0){var T=b;b=g,g=T}a.state.sublimeKilled=a.getRange(g,b),a.replaceRange("",g,b)}},H.swapWithSublimeMark=function(a){var u=a.state.sublimeMark&&a.state.sublimeMark.find();u&&(a.state.sublimeMark.clear(),a.state.sublimeMark=a.setBookmark(a.getCursor()),a.setCursor(u))},H.sublimeYank=function(a){a.state.sublimeKilled!=null&&a.replaceSelection(a.state.sublimeKilled,null,"paste")},H.showInCenter=function(a){var u=a.cursorCoords(null,"local");a.scrollTo(null,(u.top+u.bottom)/2-a.getScrollInfo().clientHeight/2)};function d(a){var u=a.getCursor("from"),g=a.getCursor("to");if(V.cmpPos(u,g)==0){var b=m(a,u);if(!b.word)return;u=b.from,g=b.to}return{from:u,to:g,query:a.getRange(u,g),word:b}}function s(a,u){var g=d(a);if(!!g){var b=g.query,T=a.getSearchCursor(b,u?g.to:g.from);(u?T.findNext():T.findPrevious())?a.setSelection(T.from(),T.to()):(T=a.getSearchCursor(b,u?E(a.firstLine(),0):a.clipPos(E(a.lastLine()))),(u?T.findNext():T.findPrevious())?a.setSelection(T.from(),T.to()):g.word&&a.setSelection(g.from,g.to))}}H.findUnder=function(a){s(a,!0)},H.findUnderPrevious=function(a){s(a,!1)},H.findAllUnder=function(a){var u=d(a);if(!!u){for(var g=a.getSearchCursor(u.query),b=[],T=-1;g.findNext();)b.push({anchor:g.from(),head:g.to()}),g.from().line<=u.from.line&&g.from().ch<=u.from.ch&&T++;a.setSelections(b,T)}};var o=V.keyMap;o.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},V.normalizeKeyMap(o.macSublime),o.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},V.normalizeKeyMap(o.pcSublime);var l=o.default==o.macDefault;o.sublime=l?o.macSublime:o.pcSublime})});var rf=V=>V.reduce((H,E)=>H+String.fromCharCode(E),""),ao=rf;var nf=V=>V.split("").map(H=>H.charCodeAt(0)),ml=nf;var ss=class{name(){return"default"}codePointsToString(H){return ao(H)}stringToCodePoints(H){return ml(H)}matches(H){return this.matchesAsString(this.codePointsToString(H))}matchesAsString(H){return!0}decode(H){return this.decodeAsString(this.codePointsToString(H))}decodeAsString(H){return this.stringToCodePoints(H)}},di=ss;var as=class extends di{name(){return"base64"}matchesAsString(H){if(H.length<4)return!1;try{return atob(H),!0}catch(E){return!1}}decodeAsString(H){return Array.from(atob(H)).map(E=>E.charCodeAt(0))}},bl=as;var ls=class extends di{name(){return"hexdump"}matchesAsString(H){return/^([0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) *\n)+[0-9a-f]{7}\n?$/.test(H)}decodeAsString(H){return H.trim().replace(/\n[0-9a-f]{7}\n?$/,"").replace(/(?<=^|\n)[0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) */g,"$1").replace(/\s+/g,"").replace(/(..)(..)/g,"$2$1").replace(/00$/,"").match(/../g).map(E=>parseInt(E,16))}},Sl=ls;var sn=class{constructor(H,E,f,L=null,y=null,m=H){this.id=H;this.name=E;this.runner=f;this.url=L;this.args=y;this.highlighterRef=m}getId(){return this.id}getName(){return this.name}getURL(){return this.url}getArgs(){return this.args}getHighlighterRef(){return this.highlighterRef}run(H,E,f){return this.runner(H,f,E)}};var cs=class{constructor(){this.data={}}register(...H){H.forEach(E=>{this.data[E.getId()]=E})}get(H){return this.data[H]}all(){return Object.keys(this.data)}run(H,E,f,L){return this.data[H].run(E,f,L)}},lo=V=>(H,E,f)=>{let L=new Worker(V);return L.postMessage({type:"run",code:H,args:f,input:E}),L},Fr=new cs;var wf=Xt(hs()),ds=class extends sn{constructor(){super("javascript-browser","JavaScript (Browser)",lo("dist/js/langs/javascript-browser/worker.js"),"https://www.ecma-international.org/publications-and-standards/standards/ecma-262/",null,"javascript")}},Ll=ds;var Ef=Xt(ps()),vs=class extends sn{constructor(){super("webperl-5.28.1","Perl 5.28.1 (webperl)",lo("dist/js/langs/webperl-5.28.1/worker.js"),"https://www.perl.org/",["-M5.10.0","-F","-l","-p"],"perl")}},El=vs;var oc=Xt(sr()),sc=Xt(Ol());var gs=class{constructor(...H){this.buffer="";this.registered=[];this.register(...H)}activate(H){this.registered.reduce((E,f)=>f.matches(H)&&!E?(f.isActive()||(f.activate(H),f.reset(),f.write(this.buffer)),!0):(f.deactivate(),f.reset(),E),!1),this.resize()}register(...H){this.registered.push(...H)}reset(){this.buffer="",this.registered.forEach(H=>H.reset())}resize(){this.registered.forEach(H=>{H.isActive()&&H.resize()})}write(H){typeof H=="number"&&(H=String.fromCharCode(H)),this.buffer+=H,this.registered.filter(E=>E.isActive()).forEach(E=>E.write(H))}};var _s=(...V)=>new gs(...V);var Dl=Xt(sr());var ys=class{constructor(){this.active=!1;this.inputs=null}activate(H){this.container.removeAttribute("hidden"),this.active=!0,this.inputs=H,this.resize()}createElement(H="div"){return this.container=document.createElement(H),this.container.setAttribute("hidden",""),this.container}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}read(){return this.readAsString(null).split("").map(H=>H.charCodeAt(0))}resize(){}},Rl=ys;var sf=(V,H=".")=>V.replace(/[^\x09\x0a\x20-\x7e]/g,H),uo=sf;var ms=class extends Rl{constructor(E,f={}){super();let L=this.createElement("div"),y=document.createElement("textarea");E.append(L),L.append(y),this.editor=(0,Dl.fromTextArea)(y,Jr(nr({mode:null,theme:"monokai",viewportMargin:1/0},f),{extraKeys:nr({"Ctrl-D":"duplicateLine","Ctrl-/":"toggleComment","Shift-Tab":!1,Tab:!1},Object.keys(f.extraKeys||{}).length?f.extraKeys:{})})),this.editor.on("change",()=>{this.inputs!==null&&this.inputs.setBuffer(this.editor.getValue().split("").map(m=>m.charCodeAt(0)))})}matches(E){return/^[\t\n -~]*$/.test(E)}on(E,f){this.editor.on(E,(...L)=>f(...L))}readAsString(E="."){let f=unescape(encodeURIComponent(this.editor.getValue()));return E===null?f:uo(f,E)}reset(){this.editor.setValue("")}setOption(E,f){this.editor.setOption(E,f)}setType(E){this.editor.getOption("mode")!==E&&this.editor.setOption("mode",E)}write(E){Array.isArray(E)&&(E=E.map(f=>String.fromCharCode(f)).join("")),this.editor.setValue(E)}},Oi=ms;var bs=class{constructor(){this.active=!1;this.mimeType="text/plain"}activate(H){this.container.removeAttribute("hidden"),this.active=!0,this.mimeType=H,this.resize()}createElement(H="div",E=!0){let f=document.createElement(H);return E&&f.setAttribute("hidden",""),f}deactivate(){this.container.setAttribute("hidden",""),this.active=!1}isActive(){return this.active}matches(H){return!0}resize(){}},an=bs;var zf=Xt(hs()),qf=Xt(ps()),Ss=class extends an{constructor(E,f={}){super();let L=document.createElement("textarea");this.container=this.createElement("div"),this.container.append(L),E.append(this.container),this.editor=fo.createEditor(L,Jr(nr({},f),{readOnly:!0})),E.append(this.container)}activate(E){super.activate(E),this.editor.setOption("mode",E)}deactivate(){super.deactivate()}matches(E){return["application/ecmascript","application/javascript","application/json","application/x-perl","text/ecmascript","text/javascript","text/json","text/x-perl"].includes(E)}reset(){this.editor.setValue("")}write(E){typeof E=="number"&&(E=String.fromCharCode(E)),this.editor.setValue(this.editor.getValue()+E)}},Bl=Ss;var Cs=class extends an{constructor(E){super();this.buffer="";this.mimeType="text/html";this.container=this.createElement("iframe"),E.append(this.container),this.update()}activate(E){super.activate(E),this.update()}matches(E){return["text/html"].includes(E)}reset(){this.buffer="",this.update()}write(E){typeof E=="number"&&(E=String.fromCharCode(E)),this.buffer+=E,this.update()}update(){let E=this.createElement("iframe",this.container.hasAttribute("hidden"));E.src=`data:${this.mimeType};base64,${btoa(this.buffer)}`,this.container.replaceWith(E),this.container=E}},ho=Cs;var ws=class{constructor(H,E,f,L,y){this.languageSelector=H;this.stdin=E;this.stdout=f;this.stderr=L;this.args=y}static getRaw(H){return H.getValue()}getArgs(){return this.args.getValue()}setArgs(H){this.args.setValue(H)}argsRefresh(){this.args.refresh()}getStdin(){return this.stdin.getValue()}setStdin(H){this.stdin.setValue(H)}},Pl=ws;var Ls=class extends ho{constructor(){super(...arguments);this.imageBuffer="";this.imageMimeType="image/png"}activate(E){super.activate("text/html"),this.imageMimeType=E}css(){return` html, body { margin: 0; padding: 0; @@ -114,18 +114,19 @@ body > img { \n`;\n }\n\n // TODO: this whole renderer should be a separate package with the contents parsed into a minified file\n private js(): string {\n // return `\n // const image = document.querySelector('img'),\n // controls = document.querySelector('.controls');\n //\n // document.addEventListener('click', (event) => {\n // const target = event.target,\n // currentZoom = getComputedStyle(image).getPropertyValue('--z');\n //\n // if (target.matches('.zoom-in,.zoom-in *')) {\n // image.style.setProperty('--z', currentZoom * 2);\n // }\n //\n // if (target.matches('.zoom-out,.zoom-out *')) {\n // image.style.setProperty('--z', currentZoom / 2);\n // }\n //\n // if (target.matches('.toggle,.toggle *')) {\n // controls.classList.toggle('left');\n // }\n //\n // if (target.matches('button.checked')) {\n // image.classList.toggle('checked');\n // }\n // });\n // `;\n return `var e=document.querySelector(\"img\"),t=document.querySelector(\".controls\");document.addEventListener(\"click\",(function(o){var c=o.target,l=getComputedStyle(e).getPropertyValue(\"--z\");c.matches(\".zoom-in,.zoom-in *\")&&e.style.setProperty(\"--z\",2*l),c.matches(\".zoom-out,.zoom-out *\")&&e.style.setProperty(\"--z\",l/2),c.matches(\".toggle,.toggle *\")&&t.classList.toggle(\"left\"),c.matches(\"button.checked\")&&e.classList.toggle(\"checked\")}))`;\n }\n\n public matches(mimeType: string): boolean {\n // Using data from: https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support\n // and: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n return [\n 'image/apng',\n 'image/avif',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/png',\n 'image/svg+xml',\n 'image/vnd.microsoft.icon',\n 'image/webp',\n ].includes(mimeType);\n }\n\n public reset(): void {\n super.reset();\n\n this.imageBuffer = '';\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.imageBuffer += char;\n this.buffer = '';\n\n super.write(this.data());\n }\n}\n\nexport default Image;\n", "export interface Input {\n activate(device: Inputs): void;\n deactivate(): void;\n isActive(): boolean;\n matches(data: string): boolean;\n on(eventName: string, handler: (...args: any[]) => void): void;\n read(): number[];\n readAsString(replaceBinaryBytes: string | null): string;\n reset(): void;\n resize(): void;\n setType(type: string | null): void;\n write(data: string | number[]): void;\n}\n\nexport type InputConstructor = new (\n parent: HTMLElement,\n ...args: any[]\n) => Input;\n\nexport class Inputs {\n private buffer: number[] = [];\n private registered: Input[] = [];\n private type: string;\n\n public constructor(...inputs: Input[]) {\n this.register(...inputs);\n }\n\n private active(): Input {\n const [input] = this.registered.filter((input) => input.isActive());\n\n return input;\n }\n\n public activate(toActivate: InputConstructor | Input): void {\n this.registered.reduce((value, input): boolean => {\n // Activate the required input\n if (\n !value &&\n ((typeof toActivate === 'function' && input instanceof toActivate) ||\n input === toActivate)\n ) {\n if (!input.isActive()) {\n input.activate(this);\n input.reset();\n input.write(this.buffer);\n }\n\n return true;\n }\n\n input.deactivate();\n input.reset();\n\n return value;\n }, false);\n\n this.resize();\n }\n\n public on(eventName: string, handler: (event: Event) => void): void {\n this.registered.forEach((input) => input.on(eventName, handler));\n }\n\n public read(): number[] {\n return this.active().read();\n }\n\n public readAsString(replaceBinaryBytes: string | null = '.'): string {\n return this.active().readAsString(replaceBinaryBytes);\n }\n\n public register(...inputs: Input[]): void {\n this.registered.push(...inputs);\n }\n\n public reset(): void {\n this.buffer.splice(0);\n this.registered.forEach((input) => input.reset());\n }\n\n public resize(): void {\n this.registered.forEach((input) => {\n if (input.isActive()) {\n input.resize();\n }\n });\n }\n\n public setBuffer(buffer: number[]): void {\n this.buffer.push(...buffer);\n }\n\n public setType(type: string | null): void {\n this.type = type;\n\n this.registered.forEach((input) => input.setType(type));\n }\n\n public write(char: number | number[] | string): void {\n const writeBuffer = [];\n\n if (typeof char === 'number') {\n writeBuffer.push(char);\n }\n\n if (Array.isArray(char)) {\n char.forEach((char) => writeBuffer.push(char));\n }\n\n if (typeof char === 'string') {\n char.split('').forEach((char) => writeBuffer.push(char.charCodeAt(0)));\n }\n\n this.registered.filter((input) => {\n if (input.isActive()) {\n input.write(writeBuffer);\n }\n });\n\n writeBuffer.forEach((char) => this.buffer.push(char));\n }\n}\n\nexport default Inputs;\n", "export class InvalidFormat extends TypeError {}\n\nexport default InvalidFormat;\n", "import Image from './Image';\nimport InvalidFormat from './Error/InvalidFormat';\nimport { Renderer } from '../Renderers';\n\nexport type PBMHeader =\n | [string, number, number, number] // P1: type, width, height, offset\n | [string, number, number, number, number]; // P3: type, width, height, maxValue, offset\n\n/**\n * @see https://en.wikipedia.org/wiki/Netpbm\n */\nexport class PBMImage extends Image implements Renderer {\n ppmBuffer: string = '';\n superTimeout: number | null = null;\n\n public activate(mimeType: string) {\n super.activate('image/png');\n }\n\n public matches(mimeType: string): boolean {\n return [\n 'image/x-portable-bitmap',\n 'image/x-portable-graymap',\n 'image/x-portable-pixmap',\n 'image/x-portable-anymap',\n ].includes(mimeType);\n }\n\n public reset() {\n super.reset();\n\n this.ppmBuffer = '';\n }\n\n public write(char: string | number): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.ppmBuffer += char;\n\n if (this.ppmBuffer.length < 10) {\n return;\n }\n\n // Wait for data to stop streaming\n if (this.superTimeout) {\n clearTimeout(this.superTimeout);\n }\n\n this.superTimeout = setTimeout(() => {\n try {\n super.reset();\n\n super.write(this.convertToPNG());\n } catch (e) {\n console.error(e);\n }\n }, 50);\n }\n\n private convertToPNG(): string {\n if (!/^P[1-7]/.test(this.ppmBuffer)) {\n throw new InvalidFormat();\n }\n\n const header = this.extractPBMHeader();\n\n if (!header) {\n throw new InvalidFormat();\n }\n\n const [format] = header;\n\n if (!format) {\n throw new InvalidFormat();\n }\n\n if (format === 'P1') {\n const [, width, height, offset] = header;\n\n return this.parseP1(width, height, offset);\n }\n\n if (format === 'P2') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset);\n }\n\n if (format === 'P3') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset);\n }\n\n if (format === 'P4') {\n const [, width, height, offset] = header;\n\n return this.parseP4(width, height, offset);\n }\n\n if (format === 'P5') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset, true);\n }\n\n if (format === 'P6') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset, true);\n }\n\n throw new InvalidFormat('Currently unsupported.');\n }\n\n private createCanvas(\n width: number,\n height: number\n ): [HTMLCanvasElement, CanvasRenderingContext2D, ImageData] {\n const canvas = document.createElement('canvas'),\n context = canvas.getContext('2d'),\n imageData = new ImageData(width, height);\n\n canvas.width = width;\n canvas.height = height;\n\n return [canvas, context, imageData];\n }\n\n private canvasToRawPNG(canvas: HTMLCanvasElement): string {\n // Convert back to raw data from a data: URI\n return atob(\n canvas.toDataURL('image/png').replace(/^data:image\\/png;base64,/, '')\n );\n }\n\n private parseP1(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.asciiDataGenerator(offset, false);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP2(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = Math.floor((data.next().value / maxValue) * 255);\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP3(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP4(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.binaryBitDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private extractPBMHeader(): PBMHeader | null {\n const type = this.ppmBuffer.slice(0, 2),\n withoutMaxValue =\n /^(P[14])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/,\n withMaxValue =\n /^(P[2356])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/;\n\n if (type === 'P1' || type === 'P4') {\n const match = this.ppmBuffer.match(withoutMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n match[0].length, // offset\n ];\n }\n\n if (type === 'P2' || type === 'P3' || type === 'P5' || type === 'P6') {\n const match = this.ppmBuffer.match(withMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n parseInt(match[4], 10), // max value\n match[0].length, // offset\n ];\n }\n }\n\n private *asciiDataGenerator(\n offset: number,\n separator: boolean = true\n ): Generator {\n let block = '';\n\n for (\n let currentPosition = offset, comment = false;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n if (/#/.test(currentChar)) {\n if (block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n comment = true;\n }\n\n if (/\\n/.test(currentChar) && comment) {\n comment = false;\n }\n\n if (comment) {\n continue;\n }\n\n if (/\\s/.test(currentChar) && block.length > 0) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n if (/\\d/.test(currentChar)) {\n block += currentChar;\n }\n\n if (separator === false && block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n yield currentChar.charCodeAt(0);\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryBitDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition],\n bitMask = ('0000000' + currentChar.charCodeAt(0).toString(2)).slice(-8);\n\n for (let rowPosition = 0; rowPosition < 8; rowPosition++) {\n yield parseInt(bitMask[rowPosition], 10);\n }\n }\n\n yield parseInt(block, 10);\n }\n}\n\nexport default PBMImage;\n", "import { ITerminalOptions, Terminal } from 'xterm';\nimport Abstract from './Abstract';\nimport { FitAddon } from 'xterm-addon-fit/src/FitAddon';\nimport { Renderer } from '../Renderers';\n\nexport class TTY extends Abstract implements Renderer {\n private fit: FitAddon;\n private options: ITerminalOptions;\n private terminal: Terminal;\n\n constructor(parent: HTMLElement, options: ITerminalOptions = {}) {\n super();\n\n this.container = this.createElement('div');\n this.container.classList.add('tty');\n\n parent.append(this.container);\n\n this.fit = new FitAddon();\n\n this.terminal = TTY.createTerminal(options);\n this.terminal.loadAddon(this.fit);\n this.terminal.open(this.container);\n\n this.options = options;\n }\n\n public matches(): boolean {\n return true;\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.terminal.write(TTY.cleanText(char));\n }\n\n public reset(): void {\n this.terminal.reset();\n }\n\n public resize(): void {\n // TODO: Yeah... Not sure what's going on here, but this isn't good...\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (this.container.hasAttribute('hidden')) {\n return;\n }\n\n this.fit.activate(this.terminal);\n this.fit.fit(); // TODO: add in a limit for secondary elements like stderr\n\n if (this.options.rows || this.options.cols) {\n this.terminal.resize(\n this.options.cols || this.terminal.cols,\n this.options.rows || this.terminal.rows\n );\n }\n });\n });\n }\n\n private static createTerminal(options: ITerminalOptions = {}): Terminal {\n return new Terminal({\n disableStdin: true,\n screenReaderMode: true,\n ...options,\n theme: {\n background: '#272822',\n cursor: 'transparent',\n foreground: '#f8f8f2',\n ...(options.theme ?? {}),\n },\n });\n }\n\n private static cleanText(text: string): string {\n // patch for xterm.js - this allows VT and FF but patches \\n, vs. convertEol option\n return text.replace(/(?\n decoder.matches(code)\n );\n\n return decoder;\n }\n\n public decoderAsString(code: string): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matchesAsString(code)\n );\n\n return decoder;\n }\n}\n\nexport default Decoders;\n\nexport const decoders = new Decoders();\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Xxd extends Default implements Decoder {\n public name(): string {\n return 'xxd';\n }\n\n public matchesAsString(code: string): boolean {\n return /^([\\da-f]{7,8}: (((.{2}){1,2} ){1,8}) .+(\\n|$))+$/.test(code);\n }\n\n public decodeAsString(code: string): number[] {\n return code\n .trim()\n .replace(/(?<=^|\\n)[\\da-f]{7,8}: (((.{2}){1,2} ){1,8}).+/g, '$1')\n .replace(/\\s+/g, '')\n .match(/../g)\n .map((c: string): number => parseInt(c, 16));\n }\n}\nexport default Xxd;\n", "import Base64 from './Decoders/Base64';\nimport Default from './Decoders/Default';\nimport Hexdump from './Decoders/Hexdump';\nimport JavaScript from './langs/javascript-browser/JavaScript';\nimport Perl from './langs/webperl-5.28.1/Perl';\nimport UI from './UI';\nimport Xxd from './Decoders/Xxd';\nimport { decoders } from './Decoders';\nimport { langs } from './Langs';\n\ndecoders.register(new Xxd(), new Hexdump(), new Base64(), new Default());\nlangs.register(new JavaScript(), new Perl());\n\nconst ui = new UI();\n"], - "mappings": "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AA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAG7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAG7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,S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AS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,MAAQ,KAAA,EAC7C,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAC7C,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAA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", + "sourcesContent": ["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, \u2026*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.2\";\n\n return CodeMirror;\n\n})));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08)\n// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com)\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"perl\",function(){\n // http://perldoc.perl.org\n var PERL={ // null - magic touch\n // 1 - keyword\n // 2 - def\n // 3 - atom\n // 4 - operator\n // 5 - variable-2 (predefined)\n // [x,y] - x=1,2,3; y=must be defined if x{...}\n // PERL operators\n '->' : 4,\n '++' : 4,\n '--' : 4,\n '**' : 4,\n // ! ~ \\ and unary + and -\n '=~' : 4,\n '!~' : 4,\n '*' : 4,\n '/' : 4,\n '%' : 4,\n 'x' : 4,\n '+' : 4,\n '-' : 4,\n '.' : 4,\n '<<' : 4,\n '>>' : 4,\n // named unary operators\n '<' : 4,\n '>' : 4,\n '<=' : 4,\n '>=' : 4,\n 'lt' : 4,\n 'gt' : 4,\n 'le' : 4,\n 'ge' : 4,\n '==' : 4,\n '!=' : 4,\n '<=>' : 4,\n 'eq' : 4,\n 'ne' : 4,\n 'cmp' : 4,\n '~~' : 4,\n '&' : 4,\n '|' : 4,\n '^' : 4,\n '&&' : 4,\n '||' : 4,\n '//' : 4,\n '..' : 4,\n '...' : 4,\n '?' : 4,\n ':' : 4,\n '=' : 4,\n '+=' : 4,\n '-=' : 4,\n '*=' : 4, // etc. ???\n ',' : 4,\n '=>' : 4,\n '::' : 4,\n // list operators (rightward)\n 'not' : 4,\n 'and' : 4,\n 'or' : 4,\n 'xor' : 4,\n // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;)\n 'BEGIN' : [5,1],\n 'END' : [5,1],\n 'PRINT' : [5,1],\n 'PRINTF' : [5,1],\n 'GETC' : [5,1],\n 'READ' : [5,1],\n 'READLINE' : [5,1],\n 'DESTROY' : [5,1],\n 'TIE' : [5,1],\n 'TIEHANDLE' : [5,1],\n 'UNTIE' : [5,1],\n 'STDIN' : 5,\n 'STDIN_TOP' : 5,\n 'STDOUT' : 5,\n 'STDOUT_TOP' : 5,\n 'STDERR' : 5,\n 'STDERR_TOP' : 5,\n '$ARG' : 5,\n '$_' : 5,\n '@ARG' : 5,\n '@_' : 5,\n '$LIST_SEPARATOR' : 5,\n '$\"' : 5,\n '$PROCESS_ID' : 5,\n '$PID' : 5,\n '$$' : 5,\n '$REAL_GROUP_ID' : 5,\n '$GID' : 5,\n '$(' : 5,\n '$EFFECTIVE_GROUP_ID' : 5,\n '$EGID' : 5,\n '$)' : 5,\n '$PROGRAM_NAME' : 5,\n '$0' : 5,\n '$SUBSCRIPT_SEPARATOR' : 5,\n '$SUBSEP' : 5,\n '$;' : 5,\n '$REAL_USER_ID' : 5,\n '$UID' : 5,\n '$<' : 5,\n '$EFFECTIVE_USER_ID' : 5,\n '$EUID' : 5,\n '$>' : 5,\n '$a' : 5,\n '$b' : 5,\n '$COMPILING' : 5,\n '$^C' : 5,\n '$DEBUGGING' : 5,\n '$^D' : 5,\n '${^ENCODING}' : 5,\n '$ENV' : 5,\n '%ENV' : 5,\n '$SYSTEM_FD_MAX' : 5,\n '$^F' : 5,\n '@F' : 5,\n '${^GLOBAL_PHASE}' : 5,\n '$^H' : 5,\n '%^H' : 5,\n '@INC' : 5,\n '%INC' : 5,\n '$INPLACE_EDIT' : 5,\n '$^I' : 5,\n '$^M' : 5,\n '$OSNAME' : 5,\n '$^O' : 5,\n '${^OPEN}' : 5,\n '$PERLDB' : 5,\n '$^P' : 5,\n '$SIG' : 5,\n '%SIG' : 5,\n '$BASETIME' : 5,\n '$^T' : 5,\n '${^TAINT}' : 5,\n '${^UNICODE}' : 5,\n '${^UTF8CACHE}' : 5,\n '${^UTF8LOCALE}' : 5,\n '$PERL_VERSION' : 5,\n '$^V' : 5,\n '${^WIN32_SLOPPY_STAT}' : 5,\n '$EXECUTABLE_NAME' : 5,\n '$^X' : 5,\n '$1' : 5, // - regexp $1, $2...\n '$MATCH' : 5,\n '$&' : 5,\n '${^MATCH}' : 5,\n '$PREMATCH' : 5,\n '$`' : 5,\n '${^PREMATCH}' : 5,\n '$POSTMATCH' : 5,\n \"$'\" : 5,\n '${^POSTMATCH}' : 5,\n '$LAST_PAREN_MATCH' : 5,\n '$+' : 5,\n '$LAST_SUBMATCH_RESULT' : 5,\n '$^N' : 5,\n '@LAST_MATCH_END' : 5,\n '@+' : 5,\n '%LAST_PAREN_MATCH' : 5,\n '%+' : 5,\n '@LAST_MATCH_START' : 5,\n '@-' : 5,\n '%LAST_MATCH_START' : 5,\n '%-' : 5,\n '$LAST_REGEXP_CODE_RESULT' : 5,\n '$^R' : 5,\n '${^RE_DEBUG_FLAGS}' : 5,\n '${^RE_TRIE_MAXBUF}' : 5,\n '$ARGV' : 5,\n '@ARGV' : 5,\n 'ARGV' : 5,\n 'ARGVOUT' : 5,\n '$OUTPUT_FIELD_SEPARATOR' : 5,\n '$OFS' : 5,\n '$,' : 5,\n '$INPUT_LINE_NUMBER' : 5,\n '$NR' : 5,\n '$.' : 5,\n '$INPUT_RECORD_SEPARATOR' : 5,\n '$RS' : 5,\n '$/' : 5,\n '$OUTPUT_RECORD_SEPARATOR' : 5,\n '$ORS' : 5,\n '$\\\\' : 5,\n '$OUTPUT_AUTOFLUSH' : 5,\n '$|' : 5,\n '$ACCUMULATOR' : 5,\n '$^A' : 5,\n '$FORMAT_FORMFEED' : 5,\n '$^L' : 5,\n '$FORMAT_PAGE_NUMBER' : 5,\n '$%' : 5,\n '$FORMAT_LINES_LEFT' : 5,\n '$-' : 5,\n '$FORMAT_LINE_BREAK_CHARACTERS' : 5,\n '$:' : 5,\n '$FORMAT_LINES_PER_PAGE' : 5,\n '$=' : 5,\n '$FORMAT_TOP_NAME' : 5,\n '$^' : 5,\n '$FORMAT_NAME' : 5,\n '$~' : 5,\n '${^CHILD_ERROR_NATIVE}' : 5,\n '$EXTENDED_OS_ERROR' : 5,\n '$^E' : 5,\n '$EXCEPTIONS_BEING_CAUGHT' : 5,\n '$^S' : 5,\n '$WARNING' : 5,\n '$^W' : 5,\n '${^WARNING_BITS}' : 5,\n '$OS_ERROR' : 5,\n '$ERRNO' : 5,\n '$!' : 5,\n '%OS_ERROR' : 5,\n '%ERRNO' : 5,\n '%!' : 5,\n '$CHILD_ERROR' : 5,\n '$?' : 5,\n '$EVAL_ERROR' : 5,\n '$@' : 5,\n '$OFMT' : 5,\n '$#' : 5,\n '$*' : 5,\n '$ARRAY_BASE' : 5,\n '$[' : 5,\n '$OLD_PERL_VERSION' : 5,\n '$]' : 5,\n // PERL blocks\n 'if' :[1,1],\n elsif :[1,1],\n 'else' :[1,1],\n 'while' :[1,1],\n unless :[1,1],\n 'for' :[1,1],\n foreach :[1,1],\n // PERL functions\n 'abs' :1, // - absolute value function\n accept :1, // - accept an incoming socket connect\n alarm :1, // - schedule a SIGALRM\n 'atan2' :1, // - arctangent of Y/X in the range -PI to PI\n bind :1, // - binds an address to a socket\n binmode :1, // - prepare binary files for I/O\n bless :1, // - create an object\n bootstrap :1, //\n 'break' :1, // - break out of a \"given\" block\n caller :1, // - get context of the current subroutine call\n chdir :1, // - change your current working directory\n chmod :1, // - changes the permissions on a list of files\n chomp :1, // - remove a trailing record separator from a string\n chop :1, // - remove the last character from a string\n chown :1, // - change the ownership on a list of files\n chr :1, // - get character this number represents\n chroot :1, // - make directory new root for path lookups\n close :1, // - close file (or pipe or socket) handle\n closedir :1, // - close directory handle\n connect :1, // - connect to a remote socket\n 'continue' :[1,1], // - optional trailing block in a while or foreach\n 'cos' :1, // - cosine function\n crypt :1, // - one-way passwd-style encryption\n dbmclose :1, // - breaks binding on a tied dbm file\n dbmopen :1, // - create binding on a tied dbm file\n 'default' :1, //\n defined :1, // - test whether a value, variable, or function is defined\n 'delete' :1, // - deletes a value from a hash\n die :1, // - raise an exception or bail out\n 'do' :1, // - turn a BLOCK into a TERM\n dump :1, // - create an immediate core dump\n each :1, // - retrieve the next key/value pair from a hash\n endgrent :1, // - be done using group file\n endhostent :1, // - be done using hosts file\n endnetent :1, // - be done using networks file\n endprotoent :1, // - be done using protocols file\n endpwent :1, // - be done using passwd file\n endservent :1, // - be done using services file\n eof :1, // - test a filehandle for its end\n 'eval' :1, // - catch exceptions or compile and run code\n 'exec' :1, // - abandon this program to run another\n exists :1, // - test whether a hash key is present\n exit :1, // - terminate this program\n 'exp' :1, // - raise I to a power\n fcntl :1, // - file control system call\n fileno :1, // - return file descriptor from filehandle\n flock :1, // - lock an entire file with an advisory lock\n fork :1, // - create a new process just like this one\n format :1, // - declare a picture format with use by the write() function\n formline :1, // - internal function used for formats\n getc :1, // - get the next character from the filehandle\n getgrent :1, // - get next group record\n getgrgid :1, // - get group record given group user ID\n getgrnam :1, // - get group record given group name\n gethostbyaddr :1, // - get host record given its address\n gethostbyname :1, // - get host record given name\n gethostent :1, // - get next hosts record\n getlogin :1, // - return who logged in at this tty\n getnetbyaddr :1, // - get network record given its address\n getnetbyname :1, // - get networks record given name\n getnetent :1, // - get next networks record\n getpeername :1, // - find the other end of a socket connection\n getpgrp :1, // - get process group\n getppid :1, // - get parent process ID\n getpriority :1, // - get current nice value\n getprotobyname :1, // - get protocol record given name\n getprotobynumber :1, // - get protocol record numeric protocol\n getprotoent :1, // - get next protocols record\n getpwent :1, // - get next passwd record\n getpwnam :1, // - get passwd record given user login name\n getpwuid :1, // - get passwd record given user ID\n getservbyname :1, // - get services record given its name\n getservbyport :1, // - get services record given numeric port\n getservent :1, // - get next services record\n getsockname :1, // - retrieve the sockaddr for a given socket\n getsockopt :1, // - get socket options on a given socket\n given :1, //\n glob :1, // - expand filenames using wildcards\n gmtime :1, // - convert UNIX time into record or string using Greenwich time\n 'goto' :1, // - create spaghetti code\n grep :1, // - locate elements in a list test true against a given criterion\n hex :1, // - convert a string to a hexadecimal number\n 'import' :1, // - patch a module's namespace into your own\n index :1, // - find a substring within a string\n 'int' :1, // - get the integer portion of a number\n ioctl :1, // - system-dependent device control system call\n 'join' :1, // - join a list into a string using a separator\n keys :1, // - retrieve list of indices from a hash\n kill :1, // - send a signal to a process or process group\n last :1, // - exit a block prematurely\n lc :1, // - return lower-case version of a string\n lcfirst :1, // - return a string with just the next letter in lower case\n length :1, // - return the number of bytes in a string\n 'link' :1, // - create a hard link in the filesystem\n listen :1, // - register your socket as a server\n local : 2, // - create a temporary value for a global variable (dynamic scoping)\n localtime :1, // - convert UNIX time into record or string using local time\n lock :1, // - get a thread lock on a variable, subroutine, or method\n 'log' :1, // - retrieve the natural logarithm for a number\n lstat :1, // - stat a symbolic link\n m :null, // - match a string with a regular expression pattern\n map :1, // - apply a change to a list to get back a new list with the changes\n mkdir :1, // - create a directory\n msgctl :1, // - SysV IPC message control operations\n msgget :1, // - get SysV IPC message queue\n msgrcv :1, // - receive a SysV IPC message from a message queue\n msgsnd :1, // - send a SysV IPC message to a message queue\n my : 2, // - declare and assign a local variable (lexical scoping)\n 'new' :1, //\n next :1, // - iterate a block prematurely\n no :1, // - unimport some module symbols or semantics at compile time\n oct :1, // - convert a string to an octal number\n open :1, // - open a file, pipe, or descriptor\n opendir :1, // - open a directory\n ord :1, // - find a character's numeric representation\n our : 2, // - declare and assign a package variable (lexical scoping)\n pack :1, // - convert a list into a binary representation\n 'package' :1, // - declare a separate global namespace\n pipe :1, // - open a pair of connected filehandles\n pop :1, // - remove the last element from an array and return it\n pos :1, // - find or set the offset for the last/next m//g search\n print :1, // - output a list to a filehandle\n printf :1, // - output a formatted list to a filehandle\n prototype :1, // - get the prototype (if any) of a subroutine\n push :1, // - append one or more elements to an array\n q :null, // - singly quote a string\n qq :null, // - doubly quote a string\n qr :null, // - Compile pattern\n quotemeta :null, // - quote regular expression magic characters\n qw :null, // - quote a list of words\n qx :null, // - backquote quote a string\n rand :1, // - retrieve the next pseudorandom number\n read :1, // - fixed-length buffered input from a filehandle\n readdir :1, // - get a directory from a directory handle\n readline :1, // - fetch a record from a file\n readlink :1, // - determine where a symbolic link is pointing\n readpipe :1, // - execute a system command and collect standard output\n recv :1, // - receive a message over a Socket\n redo :1, // - start this loop iteration over again\n ref :1, // - find out the type of thing being referenced\n rename :1, // - change a filename\n require :1, // - load in external functions from a library at runtime\n reset :1, // - clear all variables of a given name\n 'return' :1, // - get out of a function early\n reverse :1, // - flip a string or a list\n rewinddir :1, // - reset directory handle\n rindex :1, // - right-to-left substring search\n rmdir :1, // - remove a directory\n s :null, // - replace a pattern with a string\n say :1, // - print with newline\n scalar :1, // - force a scalar context\n seek :1, // - reposition file pointer for random-access I/O\n seekdir :1, // - reposition directory pointer\n select :1, // - reset default output or do I/O multiplexing\n semctl :1, // - SysV semaphore control operations\n semget :1, // - get set of SysV semaphores\n semop :1, // - SysV semaphore operations\n send :1, // - send a message over a socket\n setgrent :1, // - prepare group file for use\n sethostent :1, // - prepare hosts file for use\n setnetent :1, // - prepare networks file for use\n setpgrp :1, // - set the process group of a process\n setpriority :1, // - set a process's nice value\n setprotoent :1, // - prepare protocols file for use\n setpwent :1, // - prepare passwd file for use\n setservent :1, // - prepare services file for use\n setsockopt :1, // - set some socket options\n shift :1, // - remove the first element of an array, and return it\n shmctl :1, // - SysV shared memory operations\n shmget :1, // - get SysV shared memory segment identifier\n shmread :1, // - read SysV shared memory\n shmwrite :1, // - write SysV shared memory\n shutdown :1, // - close down just half of a socket connection\n 'sin' :1, // - return the sine of a number\n sleep :1, // - block for some number of seconds\n socket :1, // - create a socket\n socketpair :1, // - create a pair of sockets\n 'sort' :1, // - sort a list of values\n splice :1, // - add or remove elements anywhere in an array\n 'split' :1, // - split up a string using a regexp delimiter\n sprintf :1, // - formatted print into a string\n 'sqrt' :1, // - square root function\n srand :1, // - seed the random number generator\n stat :1, // - get a file's status information\n state :1, // - declare and assign a state variable (persistent lexical scoping)\n study :1, // - optimize input data for repeated searches\n 'sub' :1, // - declare a subroutine, possibly anonymously\n 'substr' :1, // - get or alter a portion of a string\n symlink :1, // - create a symbolic link to a file\n syscall :1, // - execute an arbitrary system call\n sysopen :1, // - open a file, pipe, or descriptor\n sysread :1, // - fixed-length unbuffered input from a filehandle\n sysseek :1, // - position I/O pointer on handle used with sysread and syswrite\n system :1, // - run a separate program\n syswrite :1, // - fixed-length unbuffered output to a filehandle\n tell :1, // - get current seekpointer on a filehandle\n telldir :1, // - get current seekpointer on a directory handle\n tie :1, // - bind a variable to an object class\n tied :1, // - get a reference to the object underlying a tied variable\n time :1, // - return number of seconds since 1970\n times :1, // - return elapsed time for self and child processes\n tr :null, // - transliterate a string\n truncate :1, // - shorten a file\n uc :1, // - return upper-case version of a string\n ucfirst :1, // - return a string with just the next letter in upper case\n umask :1, // - set file creation mode mask\n undef :1, // - remove a variable or function definition\n unlink :1, // - remove one link to a file\n unpack :1, // - convert binary structure into normal perl variables\n unshift :1, // - prepend more elements to the beginning of a list\n untie :1, // - break a tie binding to a variable\n use :1, // - load in a module at compile time\n utime :1, // - set a file's last access and modify times\n values :1, // - return a list of the values in a hash\n vec :1, // - test or set particular bits in a string\n wait :1, // - wait for any child process to die\n waitpid :1, // - wait for a particular child process to die\n wantarray :1, // - get void vs scalar vs list context of current subroutine call\n warn :1, // - print debugging info\n when :1, //\n write :1, // - print a picture record\n y :null}; // - transliterate a string\n\n var RXstyle=\"string-2\";\n var RXmodifiers=/[goseximacplud]/; // NOTE: \"m\", \"s\", \"y\" and \"tr\" need to correct real modifiers for each regexp type\n\n function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;)\n state.chain=null; // 12 3tail\n state.style=null;\n state.tail=null;\n state.tokenize=function(stream,state){\n var e=false,c,i=0;\n while(c=stream.next()){\n if(c===chain[i]&&!e){\n if(chain[++i]!==undefined){\n state.chain=chain[i];\n state.style=style;\n state.tail=tail;}\n else if(tail)\n stream.eatWhile(tail);\n state.tokenize=tokenPerl;\n return style;}\n e=!e&&c==\"\\\\\";}\n return style;};\n return state.tokenize(stream,state);}\n\n function tokenSOMETHING(stream,state,string){\n state.tokenize=function(stream,state){\n if(stream.string==string)\n state.tokenize=tokenPerl;\n stream.skipToEnd();\n return \"string\";};\n return state.tokenize(stream,state);}\n\n function tokenPerl(stream,state){\n if(stream.eatSpace())\n return null;\n if(state.chain)\n return tokenChain(stream,state,state.chain,state.style,state.tail);\n if(stream.match(/^(\\-?((\\d[\\d_]*)?\\.\\d+(e[+-]?\\d+)?|\\d+\\.\\d*)|0x[\\da-fA-F_]+|0b[01_]+|\\d[\\d_]*(e[+-]?\\d+)?)/))\n return 'number';\n if(stream.match(/^<<(?=[_a-zA-Z])/)){ // NOTE: <\"],RXstyle,RXmodifiers);}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}\n else if(c==\"q\"){\n c=look(stream, 1);\n if(c==\"(\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\")\"],\"string\");}\n if(c==\"[\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"]\"],\"string\");}\n if(c==\"{\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"}\"],\"string\");}\n if(c==\"<\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\">\"],\"string\");}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],\"string\");}}\n else if(c==\"w\"){\n c=look(stream, 1);\n if(c==\"(\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\")\"],\"bracket\");}\n if(c==\"[\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"]\"],\"bracket\");}\n if(c==\"{\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"}\"],\"bracket\");}\n if(c==\"<\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\">\"],\"bracket\");}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],\"bracket\");}}\n else if(c==\"r\"){\n c=look(stream, 1);\n if(c==\"(\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n if(c==\"[\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n if(c==\"{\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n if(c==\"<\"){\n eatSuffix(stream, 2);\n return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}\n if(/[\\^'\"!~\\/]/.test(c)){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}\n else if(/[\\^'\"!~\\/(\\[{<]/.test(c)){\n if(c==\"(\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\")\"],\"string\");}\n if(c==\"[\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\"]\"],\"string\");}\n if(c==\"{\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\"}\"],\"string\");}\n if(c==\"<\"){\n eatSuffix(stream, 1);\n return tokenChain(stream,state,[\">\"],\"string\");}\n if(/[\\^'\"!~\\/]/.test(c)){\n return tokenChain(stream,state,[stream.eat(c)],\"string\");}}}}\n if(ch==\"m\"){\n var c=look(stream, -2);\n if(!(c&&/\\w/.test(c))){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(/[\\^'\"!~\\/]/.test(c)){\n return tokenChain(stream,state,[c],RXstyle,RXmodifiers);}\n if(c==\"(\"){\n return tokenChain(stream,state,[\")\"],RXstyle,RXmodifiers);}\n if(c==\"[\"){\n return tokenChain(stream,state,[\"]\"],RXstyle,RXmodifiers);}\n if(c==\"{\"){\n return tokenChain(stream,state,[\"}\"],RXstyle,RXmodifiers);}\n if(c==\"<\"){\n return tokenChain(stream,state,[\">\"],RXstyle,RXmodifiers);}}}}\n if(ch==\"s\"){\n var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n if(!c){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(c==\"[\")\n return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n if(c==\"{\")\n return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n if(c==\"<\")\n return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n if(c==\"(\")\n return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}\n if(ch==\"y\"){\n var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n if(!c){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(c==\"[\")\n return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n if(c==\"{\")\n return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n if(c==\"<\")\n return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n if(c==\"(\")\n return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}\n if(ch==\"t\"){\n var c=/[\\/>\\]})\\w]/.test(look(stream, -2));\n if(!c){\n c=stream.eat(\"r\");if(c){\n c=stream.eat(/[(\\[{<\\^'\"!~\\/]/);\n if(c){\n if(c==\"[\")\n return tokenChain(stream,state,[\"]\",\"]\"],RXstyle,RXmodifiers);\n if(c==\"{\")\n return tokenChain(stream,state,[\"}\",\"}\"],RXstyle,RXmodifiers);\n if(c==\"<\")\n return tokenChain(stream,state,[\">\",\">\"],RXstyle,RXmodifiers);\n if(c==\"(\")\n return tokenChain(stream,state,[\")\",\")\"],RXstyle,RXmodifiers);\n return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}}\n if(ch==\"`\"){\n return tokenChain(stream,state,[ch],\"variable-2\");}\n if(ch==\"/\"){\n if(!/~\\s*$/.test(prefix(stream)))\n return \"operator\";\n else\n return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);}\n if(ch==\"$\"){\n var p=stream.pos;\n if(stream.eatWhile(/\\d/)||stream.eat(\"{\")&&stream.eatWhile(/\\d/)&&stream.eat(\"}\"))\n return \"variable-2\";\n else\n stream.pos=p;}\n if(/[$@%]/.test(ch)){\n var p=stream.pos;\n if(stream.eat(\"^\")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\\\\-#?@;:&`~\\^!\\[\\]*'\"$+.,\\/<>()]/)){\n var c=stream.current();\n if(PERL[c])\n return \"variable-2\";}\n stream.pos=p;}\n if(/[$@%&]/.test(ch)){\n if(stream.eatWhile(/[\\w$]/)||stream.eat(\"{\")&&stream.eatWhile(/[\\w$]/)&&stream.eat(\"}\")){\n var c=stream.current();\n if(PERL[c])\n return \"variable-2\";\n else\n return \"variable\";}}\n if(ch==\"#\"){\n if(look(stream, -2)!=\"$\"){\n stream.skipToEnd();\n return \"comment\";}}\n if(/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/.test(ch)){\n var p=stream.pos;\n stream.eatWhile(/[:+\\-\\^*$&%@=<>!?|\\/~\\.]/);\n if(PERL[stream.current()])\n return \"operator\";\n else\n stream.pos=p;}\n if(ch==\"_\"){\n if(stream.pos==1){\n if(suffix(stream, 6)==\"_END__\"){\n return tokenChain(stream,state,['\\0'],\"comment\");}\n else if(suffix(stream, 7)==\"_DATA__\"){\n return tokenChain(stream,state,['\\0'],\"variable-2\");}\n else if(suffix(stream, 7)==\"_C__\"){\n return tokenChain(stream,state,['\\0'],\"string\");}}}\n if(/\\w/.test(ch)){\n var p=stream.pos;\n if(look(stream, -2)==\"{\"&&(look(stream, 0)==\"}\"||stream.eatWhile(/\\w/)&&look(stream, 0)==\"}\"))\n return \"string\";\n else\n stream.pos=p;}\n if(/[A-Z]/.test(ch)){\n var l=look(stream, -2);\n var p=stream.pos;\n stream.eatWhile(/[A-Z_]/);\n if(/[\\da-z]/.test(look(stream, 0))){\n stream.pos=p;}\n else{\n var c=PERL[stream.current()];\n if(!c)\n return \"meta\";\n if(c[1])\n c=c[0];\n if(l!=\":\"){\n if(c==1)\n return \"keyword\";\n else if(c==2)\n return \"def\";\n else if(c==3)\n return \"atom\";\n else if(c==4)\n return \"operator\";\n else if(c==5)\n return \"variable-2\";\n else\n return \"meta\";}\n else\n return \"meta\";}}\n if(/[a-zA-Z_]/.test(ch)){\n var l=look(stream, -2);\n stream.eatWhile(/\\w/);\n var c=PERL[stream.current()];\n if(!c)\n return \"meta\";\n if(c[1])\n c=c[0];\n if(l!=\":\"){\n if(c==1)\n return \"keyword\";\n else if(c==2)\n return \"def\";\n else if(c==3)\n return \"atom\";\n else if(c==4)\n return \"operator\";\n else if(c==5)\n return \"variable-2\";\n else\n return \"meta\";}\n else\n return \"meta\";}\n return null;}\n\n return {\n startState: function() {\n return {\n tokenize: tokenPerl,\n chain: null,\n style: null,\n tail: null\n };\n },\n token: function(stream, state) {\n return (state.tokenize || tokenPerl)(stream, state);\n },\n lineComment: '#'\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"perl\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/x-perl\", \"perl\");\n\n// it's like \"peek\", but need for look-ahead or look-behind if index < 0\nfunction look(stream, c){\n return stream.string.charAt(stream.pos+(c||0));\n}\n\n// return a part of prefix of current stream from current position\nfunction prefix(stream, c){\n if(c){\n var x=stream.pos-c;\n return stream.string.substr((x>=0?x:0),c);}\n else{\n return stream.string.substr(0,stream.pos-1);\n }\n}\n\n// return a part of suffix of current stream from current position\nfunction suffix(stream, c){\n var y=stream.string.length;\n var x=y-stream.pos+1;\n return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1))\n stream.pos=y;\n else\n stream.pos=x;\n}\n\n});\n", "\"use strict\";var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i0){_this.hide()}}))}this.element.classList.remove(this.toastShowClass);this.element.classList.add(this.toastHideClass);this.trigger(\"hide\");if(this.animation){var transitionEndHandler_1=function(){return _this.remove()},transitionStartHandler_1=function(){if(bound_1){return}_this.element.addEventListener(\"transitionend\",(function(){return transitionEndHandler_1()}));bound_1=true},mouseOverHandler_1=function(){_this.show();_this.element.removeEventListener(\"transitionstart\",(function(){return transitionStartHandler_1()}));_this.element.removeEventListener(\"transitionend\",(function(){return transitionEndHandler_1()}));_this.element.removeEventListener(\"mouseover\",(function(){return mouseOverHandler_1()}));_this.element.addEventListener(\"mouseout\",(function(){return _this.hide()}))};var bound_1=false;this.element.addEventListener(\"mouseover\",(function(){return mouseOverHandler_1()}));this.element.addEventListener(\"transitionstart\",(function(){return transitionStartHandler_1()}));return}this.remove()};Melba.prototype.remove=function(){if(this.element.parentNode===this.container){this.container.removeChild(this.element);this.trigger(\"remove\")}};Melba.prototype.buildClose=function(closeLabel){var _this=this;var closeButton=document.createElement(\"button\");closeButton.setAttribute(\"title\",closeLabel);closeButton.appendChild(document.createTextNode(closeLabel));closeButton.addEventListener(\"click\",(function(){return _this.hide()}));return closeButton};Melba.prototype.getContainer=function(_a){var containerClass=_a.containerClass,containerElement=_a.containerElement,root=_a.root;var existingContainer=root.querySelector(\"\".concat(containerElement,\".\").concat(containerClass));if(existingContainer){return existingContainer}var container=document.createElement(containerElement);container.classList.add(containerClass);root.appendChild(container);return container};Melba.prototype.on=function(event,callable){if(!this.events[event]){this.events[event]=[]}this.events[event].push(callable)};Melba.prototype.off=function(event,callable){if(callable===void 0){callable=null}if(!callable){this.events[event]=[];return}var hasEvent=this.events[event].indexOf(callable);if(hasEvent===-1){this.events[event].splice(hasEvent,1)}};Melba.prototype.trigger=function(event){var _this=this;var args=[];for(var _i=1;_i void;\n private _bottomBoundaryFocusListener: (e: FocusEvent) => void;\n\n /**\n * This queue has a character pushed to it for keys that are pressed, if the\n * next character added to the terminal is equal to the key char then it is\n * not announced (added to live region) because it has already been announced\n * by the textarea event (which cannot be canceled). There are some race\n * condition cases if there is typing while data is streaming, but this covers\n * the main case of typing into the prompt and inputting the answer to a\n * question (Y/N, etc.).\n */\n private _charsToConsume: string[] = [];\n\n private _charsToAnnounce: string = '';\n\n constructor(\n private readonly _terminal: ITerminal,\n private readonly _renderService: IRenderService\n ) {\n super();\n this._accessibilityTreeRoot = document.createElement('div');\n this._accessibilityTreeRoot.classList.add('xterm-accessibility');\n this._accessibilityTreeRoot.tabIndex = 0;\n\n this._rowContainer = document.createElement('div');\n this._rowContainer.setAttribute('role', 'list');\n this._rowContainer.classList.add('xterm-accessibility-tree');\n this._rowElements = [];\n for (let i = 0; i < this._terminal.rows; i++) {\n this._rowElements[i] = this._createAccessibilityTreeNode();\n this._rowContainer.appendChild(this._rowElements[i]);\n }\n\n this._topBoundaryFocusListener = e => this._onBoundaryFocus(e, BoundaryPosition.TOP);\n this._bottomBoundaryFocusListener = e => this._onBoundaryFocus(e, BoundaryPosition.BOTTOM);\n this._rowElements[0].addEventListener('focus', this._topBoundaryFocusListener);\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n\n this._refreshRowsDimensions();\n this._accessibilityTreeRoot.appendChild(this._rowContainer);\n\n this._renderRowsDebouncer = new TimeBasedDebouncer(this._renderRows.bind(this));\n this._refreshRows();\n\n this._liveRegion = document.createElement('div');\n this._liveRegion.classList.add('live-region');\n this._liveRegion.setAttribute('aria-live', 'assertive');\n this._accessibilityTreeRoot.appendChild(this._liveRegion);\n\n if (!this._terminal.element) {\n throw new Error('Cannot enable accessibility before Terminal.open');\n }\n this._terminal.element.insertAdjacentElement('afterbegin', this._accessibilityTreeRoot);\n\n this.register(this._renderRowsDebouncer);\n this.register(this._terminal.onResize(e => this._onResize(e.rows)));\n this.register(this._terminal.onRender(e => this._refreshRows(e.start, e.end)));\n this.register(this._terminal.onScroll(() => this._refreshRows()));\n // Line feed is an issue as the prompt won't be read out after a command is run\n this.register(this._terminal.onA11yChar(char => this._onChar(char)));\n this.register(this._terminal.onLineFeed(() => this._onChar('\\n')));\n this.register(this._terminal.onA11yTab(spaceCount => this._onTab(spaceCount)));\n this.register(this._terminal.onKey(e => this._onKey(e.key)));\n this.register(this._terminal.onBlur(() => this._clearLiveRegion()));\n this.register(this._renderService.onDimensionsChange(() => this._refreshRowsDimensions()));\n\n this._screenDprMonitor = new ScreenDprMonitor();\n this.register(this._screenDprMonitor);\n this._screenDprMonitor.setListener(() => this._refreshRowsDimensions());\n // This shouldn't be needed on modern browsers but is present in case the\n // media query that drives the ScreenDprMonitor isn't supported\n this.register(addDisposableDomListener(window, 'resize', () => this._refreshRowsDimensions()));\n }\n\n public dispose(): void {\n super.dispose();\n removeElementFromParent(this._accessibilityTreeRoot);\n this._rowElements.length = 0;\n }\n\n private _onBoundaryFocus(e: FocusEvent, position: BoundaryPosition): void {\n const boundaryElement = e.target as HTMLElement;\n const beforeBoundaryElement = this._rowElements[position === BoundaryPosition.TOP ? 1 : this._rowElements.length - 2];\n\n // Don't scroll if the buffer top has reached the end in that direction\n const posInSet = boundaryElement.getAttribute('aria-posinset');\n const lastRowPos = position === BoundaryPosition.TOP ? '1' : `${this._terminal.buffer.lines.length}`;\n if (posInSet === lastRowPos) {\n return;\n }\n\n // Don't scroll when the last focused item was not the second row (focus is going the other\n // direction)\n if (e.relatedTarget !== beforeBoundaryElement) {\n return;\n }\n\n // Remove old boundary element from array\n let topBoundaryElement: HTMLElement;\n let bottomBoundaryElement: HTMLElement;\n if (position === BoundaryPosition.TOP) {\n topBoundaryElement = boundaryElement;\n bottomBoundaryElement = this._rowElements.pop()!;\n this._rowContainer.removeChild(bottomBoundaryElement);\n } else {\n topBoundaryElement = this._rowElements.shift()!;\n bottomBoundaryElement = boundaryElement;\n this._rowContainer.removeChild(topBoundaryElement);\n }\n\n // Remove listeners from old boundary elements\n topBoundaryElement.removeEventListener('focus', this._topBoundaryFocusListener);\n bottomBoundaryElement.removeEventListener('focus', this._bottomBoundaryFocusListener);\n\n // Add new element to array/DOM\n if (position === BoundaryPosition.TOP) {\n const newElement = this._createAccessibilityTreeNode();\n this._rowElements.unshift(newElement);\n this._rowContainer.insertAdjacentElement('afterbegin', newElement);\n } else {\n const newElement = this._createAccessibilityTreeNode();\n this._rowElements.push(newElement);\n this._rowContainer.appendChild(newElement);\n }\n\n // Add listeners to new boundary elements\n this._rowElements[0].addEventListener('focus', this._topBoundaryFocusListener);\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n\n // Scroll up\n this._terminal.scrollLines(position === BoundaryPosition.TOP ? -1 : 1);\n\n // Focus new boundary before element\n this._rowElements[position === BoundaryPosition.TOP ? 1 : this._rowElements.length - 2].focus();\n\n // Prevent the standard behavior\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n private _onResize(rows: number): void {\n // Remove bottom boundary listener\n this._rowElements[this._rowElements.length - 1].removeEventListener('focus', this._bottomBoundaryFocusListener);\n\n // Grow rows as required\n for (let i = this._rowContainer.children.length; i < this._terminal.rows; i++) {\n this._rowElements[i] = this._createAccessibilityTreeNode();\n this._rowContainer.appendChild(this._rowElements[i]);\n }\n // Shrink rows as required\n while (this._rowElements.length > rows) {\n this._rowContainer.removeChild(this._rowElements.pop()!);\n }\n\n // Add bottom boundary listener\n this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n\n this._refreshRowsDimensions();\n }\n\n private _createAccessibilityTreeNode(): HTMLElement {\n const element = document.createElement('div');\n element.setAttribute('role', 'listitem');\n element.tabIndex = -1;\n this._refreshRowDimensions(element);\n return element;\n }\n\n private _onTab(spaceCount: number): void {\n for (let i = 0; i < spaceCount; i++) {\n this._onChar(' ');\n }\n }\n\n private _onChar(char: string): void {\n if (this._liveRegionLineCount < MAX_ROWS_TO_READ + 1) {\n if (this._charsToConsume.length > 0) {\n // Have the screen reader ignore the char if it was just input\n const shiftedChar = this._charsToConsume.shift();\n if (shiftedChar !== char) {\n this._charsToAnnounce += char;\n }\n } else {\n this._charsToAnnounce += char;\n }\n\n if (char === '\\n') {\n this._liveRegionLineCount++;\n if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) {\n this._liveRegion.textContent += Strings.tooMuchOutput;\n }\n }\n\n // Only detach/attach on mac as otherwise messages can go unaccounced\n if (isMac) {\n if (this._liveRegion.textContent && this._liveRegion.textContent.length > 0 && !this._liveRegion.parentNode) {\n setTimeout(() => {\n this._accessibilityTreeRoot.appendChild(this._liveRegion);\n }, 0);\n }\n }\n }\n }\n\n private _clearLiveRegion(): void {\n this._liveRegion.textContent = '';\n this._liveRegionLineCount = 0;\n\n // Only detach/attach on mac as otherwise messages can go unaccounced\n if (isMac) {\n removeElementFromParent(this._liveRegion);\n }\n }\n\n private _onKey(keyChar: string): void {\n this._clearLiveRegion();\n this._charsToConsume.push(keyChar);\n }\n\n private _refreshRows(start?: number, end?: number): void {\n this._renderRowsDebouncer.refresh(start, end, this._terminal.rows);\n }\n\n private _renderRows(start: number, end: number): void {\n const buffer: IBuffer = this._terminal.buffer;\n const setSize = buffer.lines.length.toString();\n for (let i = start; i <= end; i++) {\n const lineData = buffer.translateBufferLineToString(buffer.ydisp + i, true);\n const posInSet = (buffer.ydisp + i + 1).toString();\n const element = this._rowElements[i];\n if (element) {\n if (lineData.length === 0) {\n element.innerText = '\\u00a0';\n } else {\n element.textContent = lineData;\n }\n element.setAttribute('aria-posinset', posInSet);\n element.setAttribute('aria-setsize', setSize);\n }\n }\n this._announceCharacters();\n }\n\n private _refreshRowsDimensions(): void {\n if (!this._renderService.dimensions.actualCellHeight) {\n return;\n }\n if (this._rowElements.length !== this._terminal.rows) {\n this._onResize(this._terminal.rows);\n }\n for (let i = 0; i < this._terminal.rows; i++) {\n this._refreshRowDimensions(this._rowElements[i]);\n }\n }\n\n private _refreshRowDimensions(element: HTMLElement): void {\n element.style.height = `${this._renderService.dimensions.actualCellHeight}px`;\n }\n\n private _announceCharacters(): void {\n if (this._charsToAnnounce.length === 0) {\n return;\n }\n this._liveRegion.textContent += this._charsToAnnounce;\n this._charsToAnnounce = '';\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ISelectionService } from 'browser/services/Services';\nimport { ICoreService } from 'common/services/Services';\n\n/**\n * Prepares text to be pasted into the terminal by normalizing the line endings\n * @param text The pasted text that needs processing before inserting into the terminal\n */\nexport function prepareTextForTerminal(text: string): string {\n return text.replace(/\\r?\\n/g, '\\r');\n}\n\n/**\n * Bracket text for paste, if necessary, as per https://cirw.in/blog/bracketed-paste\n * @param text The pasted text to bracket\n */\nexport function bracketTextForPaste(text: string, bracketedPasteMode: boolean): string {\n if (bracketedPasteMode) {\n return '\\x1b[200~' + text + '\\x1b[201~';\n }\n return text;\n}\n\n/**\n * Binds copy functionality to the given terminal.\n * @param ev The original copy event to be handled\n */\nexport function copyHandler(ev: ClipboardEvent, selectionService: ISelectionService): void {\n if (ev.clipboardData) {\n ev.clipboardData.setData('text/plain', selectionService.selectionText);\n }\n // Prevent or the original text will be copied.\n ev.preventDefault();\n}\n\n/**\n * Redirect the clipboard's data to the terminal's input handler.\n * @param ev The original paste event to be handled\n * @param term The terminal on which to apply the handled paste event\n */\nexport function handlePasteEvent(ev: ClipboardEvent, textarea: HTMLTextAreaElement, coreService: ICoreService): void {\n ev.stopPropagation();\n if (ev.clipboardData) {\n const text = ev.clipboardData.getData('text/plain');\n paste(text, textarea, coreService);\n }\n}\n\nexport function paste(text: string, textarea: HTMLTextAreaElement, coreService: ICoreService): void {\n text = prepareTextForTerminal(text);\n text = bracketTextForPaste(text, coreService.decPrivateModes.bracketedPasteMode);\n coreService.triggerDataEvent(text, true);\n textarea.value = '';\n}\n\n/**\n * Moves the textarea under the mouse cursor and focuses it.\n * @param ev The original right click event to be handled.\n * @param textarea The terminal's textarea.\n */\nexport function moveTextAreaUnderMouseCursor(ev: MouseEvent, textarea: HTMLTextAreaElement, screenElement: HTMLElement): void {\n\n // Calculate textarea position relative to the screen element\n const pos = screenElement.getBoundingClientRect();\n const left = ev.clientX - pos.left - 10;\n const top = ev.clientY - pos.top - 10;\n\n // Bring textarea at the cursor position\n textarea.style.width = '20px';\n textarea.style.height = '20px';\n textarea.style.left = `${left}px`;\n textarea.style.top = `${top}px`;\n textarea.style.zIndex = '1000';\n\n textarea.focus();\n}\n\n/**\n * Bind to right-click event and allow right-click copy and paste.\n * @param ev The original right click event to be handled.\n * @param textarea The terminal's textarea.\n * @param selectionService The terminal's selection manager.\n * @param shouldSelectWord If true and there is no selection the current word will be selected\n */\nexport function rightClickHandler(ev: MouseEvent, textarea: HTMLTextAreaElement, screenElement: HTMLElement, selectionService: ISelectionService, shouldSelectWord: boolean): void {\n moveTextAreaUnderMouseCursor(ev, textarea, screenElement);\n\n if (shouldSelectWord) {\n selectionService.rightClickSelect(ev);\n }\n\n // Get textarea ready to copy from the context menu\n textarea.value = selectionService.selectionText;\n textarea.select();\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IColor } from 'browser/Types';\nimport { IColorRGB } from 'common/Types';\n\n/**\n * Helper functions where the source type is \"channels\" (individual color channels as numbers).\n */\nexport namespace channels {\n export function toCss(r: number, g: number, b: number, a?: number): string {\n if (a !== undefined) {\n return `#${toPaddedHex(r)}${toPaddedHex(g)}${toPaddedHex(b)}${toPaddedHex(a)}`;\n }\n return `#${toPaddedHex(r)}${toPaddedHex(g)}${toPaddedHex(b)}`;\n }\n\n export function toRgba(r: number, g: number, b: number, a: number = 0xFF): number {\n // Note: The aggregated number is RGBA32 (BE), thus needs to be converted to ABGR32\n // on LE systems, before it can be used for direct 32-bit buffer writes.\n // >>> 0 forces an unsigned int\n return (r << 24 | g << 16 | b << 8 | a) >>> 0;\n }\n}\n\n/**\n * Helper functions where the source type is `IColor`.\n */\nexport namespace color {\n export function blend(bg: IColor, fg: IColor): IColor {\n const a = (fg.rgba & 0xFF) / 255;\n if (a === 1) {\n return {\n css: fg.css,\n rgba: fg.rgba\n };\n }\n const fgR = (fg.rgba >> 24) & 0xFF;\n const fgG = (fg.rgba >> 16) & 0xFF;\n const fgB = (fg.rgba >> 8) & 0xFF;\n const bgR = (bg.rgba >> 24) & 0xFF;\n const bgG = (bg.rgba >> 16) & 0xFF;\n const bgB = (bg.rgba >> 8) & 0xFF;\n const r = bgR + Math.round((fgR - bgR) * a);\n const g = bgG + Math.round((fgG - bgG) * a);\n const b = bgB + Math.round((fgB - bgB) * a);\n const css = channels.toCss(r, g, b);\n const rgba = channels.toRgba(r, g, b);\n return { css, rgba };\n }\n\n export function isOpaque(color: IColor): boolean {\n return (color.rgba & 0xFF) === 0xFF;\n }\n\n export function ensureContrastRatio(bg: IColor, fg: IColor, ratio: number): IColor | undefined {\n const result = rgba.ensureContrastRatio(bg.rgba, fg.rgba, ratio);\n if (!result) {\n return undefined;\n }\n return rgba.toColor(\n (result >> 24 & 0xFF),\n (result >> 16 & 0xFF),\n (result >> 8 & 0xFF)\n );\n }\n\n export function opaque(color: IColor): IColor {\n const rgbaColor = (color.rgba | 0xFF) >>> 0;\n const [r, g, b] = rgba.toChannels(rgbaColor);\n return {\n css: channels.toCss(r, g, b),\n rgba: rgbaColor\n };\n }\n\n export function opacity(color: IColor, opacity: number): IColor {\n const a = Math.round(opacity * 0xFF);\n const [r, g, b] = rgba.toChannels(color.rgba);\n return {\n css: channels.toCss(r, g, b, a),\n rgba: channels.toRgba(r, g, b, a)\n };\n }\n\n export function toColorRGB(color: IColor): IColorRGB {\n return [(color.rgba >> 24) & 0xFF, (color.rgba >> 16) & 0xFF, (color.rgba >> 8) & 0xFF];\n }\n}\n\n/**\n * Helper functions where the source type is \"css\" (string: '#rgb', '#rgba', '#rrggbb', '#rrggbbaa').\n */\nexport namespace css {\n export function toColor(css: string): IColor {\n switch (css.length) {\n case 7: // #rrggbb\n return {\n css,\n rgba: (parseInt(css.slice(1), 16) << 8 | 0xFF) >>> 0\n };\n case 9: // #rrggbbaa\n return {\n css,\n rgba: parseInt(css.slice(1), 16) >>> 0\n };\n }\n throw new Error('css.toColor: Unsupported css format');\n }\n}\n\n/**\n * Helper functions where the source type is \"rgb\" (number: 0xrrggbb).\n */\nexport namespace rgb {\n /**\n * Gets the relative luminance of an RGB color, this is useful in determining the contrast ratio\n * between two colors.\n * @param rgb The color to use.\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\n export function relativeLuminance(rgb: number): number {\n return relativeLuminance2(\n (rgb >> 16) & 0xFF,\n (rgb >> 8 ) & 0xFF,\n (rgb ) & 0xFF);\n }\n\n /**\n * Gets the relative luminance of an RGB color, this is useful in determining the contrast ratio\n * between two colors.\n * @param r The red channel (0x00 to 0xFF).\n * @param g The green channel (0x00 to 0xFF).\n * @param b The blue channel (0x00 to 0xFF).\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\n export function relativeLuminance2(r: number, g: number, b: number): number {\n const rs = r / 255;\n const gs = g / 255;\n const bs = b / 255;\n const rr = rs <= 0.03928 ? rs / 12.92 : Math.pow((rs + 0.055) / 1.055, 2.4);\n const rg = gs <= 0.03928 ? gs / 12.92 : Math.pow((gs + 0.055) / 1.055, 2.4);\n const rb = bs <= 0.03928 ? bs / 12.92 : Math.pow((bs + 0.055) / 1.055, 2.4);\n return rr * 0.2126 + rg * 0.7152 + rb * 0.0722;\n }\n}\n\n/**\n * Helper functions where the source type is \"rgba\" (number: 0xrrggbbaa).\n */\nexport namespace rgba {\n export function ensureContrastRatio(bgRgba: number, fgRgba: number, ratio: number): number | undefined {\n const bgL = rgb.relativeLuminance(bgRgba >> 8);\n const fgL = rgb.relativeLuminance(fgRgba >> 8);\n const cr = contrastRatio(bgL, fgL);\n if (cr < ratio) {\n if (fgL < bgL) {\n return reduceLuminance(bgRgba, fgRgba, ratio);\n }\n return increaseLuminance(bgRgba, fgRgba, ratio);\n }\n return undefined;\n }\n\n export function reduceLuminance(bgRgba: number, fgRgba: number, ratio: number): number {\n // This is a naive but fast approach to reducing luminance as converting to\n // HSL and back is expensive\n const bgR = (bgRgba >> 24) & 0xFF;\n const bgG = (bgRgba >> 16) & 0xFF;\n const bgB = (bgRgba >> 8) & 0xFF;\n let fgR = (fgRgba >> 24) & 0xFF;\n let fgG = (fgRgba >> 16) & 0xFF;\n let fgB = (fgRgba >> 8) & 0xFF;\n let cr = contrastRatio(rgb.relativeLuminance2(fgR, fgB, fgG), rgb.relativeLuminance2(bgR, bgG, bgB));\n while (cr < ratio && (fgR > 0 || fgG > 0 || fgB > 0)) {\n // Reduce by 10% until the ratio is hit\n fgR -= Math.max(0, Math.ceil(fgR * 0.1));\n fgG -= Math.max(0, Math.ceil(fgG * 0.1));\n fgB -= Math.max(0, Math.ceil(fgB * 0.1));\n cr = contrastRatio(rgb.relativeLuminance2(fgR, fgB, fgG), rgb.relativeLuminance2(bgR, bgG, bgB));\n }\n return (fgR << 24 | fgG << 16 | fgB << 8 | 0xFF) >>> 0;\n }\n\n export function increaseLuminance(bgRgba: number, fgRgba: number, ratio: number): number {\n // This is a naive but fast approach to increasing luminance as converting to\n // HSL and back is expensive\n const bgR = (bgRgba >> 24) & 0xFF;\n const bgG = (bgRgba >> 16) & 0xFF;\n const bgB = (bgRgba >> 8) & 0xFF;\n let fgR = (fgRgba >> 24) & 0xFF;\n let fgG = (fgRgba >> 16) & 0xFF;\n let fgB = (fgRgba >> 8) & 0xFF;\n let cr = contrastRatio(rgb.relativeLuminance2(fgR, fgB, fgG), rgb.relativeLuminance2(bgR, bgG, bgB));\n while (cr < ratio && (fgR < 0xFF || fgG < 0xFF || fgB < 0xFF)) {\n // Increase by 10% until the ratio is hit\n fgR = Math.min(0xFF, fgR + Math.ceil((255 - fgR) * 0.1));\n fgG = Math.min(0xFF, fgG + Math.ceil((255 - fgG) * 0.1));\n fgB = Math.min(0xFF, fgB + Math.ceil((255 - fgB) * 0.1));\n cr = contrastRatio(rgb.relativeLuminance2(fgR, fgB, fgG), rgb.relativeLuminance2(bgR, bgG, bgB));\n }\n return (fgR << 24 | fgG << 16 | fgB << 8 | 0xFF) >>> 0;\n }\n\n // FIXME: Move this to channels NS?\n export function toChannels(value: number): [number, number, number, number] {\n return [(value >> 24) & 0xFF, (value >> 16) & 0xFF, (value >> 8) & 0xFF, value & 0xFF];\n }\n\n export function toColor(r: number, g: number, b: number): IColor {\n return {\n css: channels.toCss(r, g, b),\n rgba: channels.toRgba(r, g, b)\n };\n }\n}\n\nexport function toPaddedHex(c: number): string {\n const s = c.toString(16);\n return s.length < 2 ? '0' + s : s;\n}\n\n/**\n * Gets the contrast ratio between two relative luminance values.\n * @param l1 The first relative luminance.\n * @param l2 The first relative luminance.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function contrastRatio(l1: number, l2: number): number {\n if (l1 < l2) {\n return (l2 + 0.05) / (l1 + 0.05);\n }\n return (l1 + 0.05) / (l2 + 0.05);\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IColor, IColorContrastCache } from 'browser/Types';\n\nexport class ColorContrastCache implements IColorContrastCache {\n private _color: { [bg: number]: { [fg: number]: IColor | null | undefined } | undefined } = {};\n private _rgba: { [bg: number]: { [fg: number]: string | null | undefined } | undefined } = {};\n\n public clear(): void {\n this._color = {};\n this._rgba = {};\n }\n\n public setCss(bg: number, fg: number, value: string | null): void {\n if (!this._rgba[bg]) {\n this._rgba[bg] = {};\n }\n this._rgba[bg]![fg] = value;\n }\n\n public getCss(bg: number, fg: number): string | null | undefined {\n return this._rgba[bg] ? this._rgba[bg]![fg] : undefined;\n }\n\n public setColor(bg: number, fg: number, value: IColor | null): void {\n if (!this._color[bg]) {\n this._color[bg] = {};\n }\n this._color[bg]![fg] = value;\n }\n\n public getColor(bg: number, fg: number): IColor | null | undefined {\n return this._color[bg] ? this._color[bg]![fg] : undefined;\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IColorManager, IColor, IColorSet, IColorContrastCache } from 'browser/Types';\nimport { ITheme } from 'common/services/Services';\nimport { channels, color, css } from 'browser/Color';\nimport { ColorContrastCache } from 'browser/ColorContrastCache';\nimport { ColorIndex } from 'common/Types';\n\n\ninterface IRestoreColorSet {\n foreground: IColor;\n background: IColor;\n cursor: IColor;\n ansi: IColor[];\n}\n\n\nconst DEFAULT_FOREGROUND = css.toColor('#ffffff');\nconst DEFAULT_BACKGROUND = css.toColor('#000000');\nconst DEFAULT_CURSOR = css.toColor('#ffffff');\nconst DEFAULT_CURSOR_ACCENT = css.toColor('#000000');\nconst DEFAULT_SELECTION = {\n css: 'rgba(255, 255, 255, 0.3)',\n rgba: 0xFFFFFF4D\n};\n\n// An IIFE to generate DEFAULT_ANSI_COLORS.\nexport const DEFAULT_ANSI_COLORS = Object.freeze((() => {\n const colors = [\n // dark:\n css.toColor('#2e3436'),\n css.toColor('#cc0000'),\n css.toColor('#4e9a06'),\n css.toColor('#c4a000'),\n css.toColor('#3465a4'),\n css.toColor('#75507b'),\n css.toColor('#06989a'),\n css.toColor('#d3d7cf'),\n // bright:\n css.toColor('#555753'),\n css.toColor('#ef2929'),\n css.toColor('#8ae234'),\n css.toColor('#fce94f'),\n css.toColor('#729fcf'),\n css.toColor('#ad7fa8'),\n css.toColor('#34e2e2'),\n css.toColor('#eeeeec')\n ];\n\n // Fill in the remaining 240 ANSI colors.\n // Generate colors (16-231)\n const v = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff];\n for (let i = 0; i < 216; i++) {\n const r = v[(i / 36) % 6 | 0];\n const g = v[(i / 6) % 6 | 0];\n const b = v[i % 6];\n colors.push({\n css: channels.toCss(r, g, b),\n rgba: channels.toRgba(r, g, b)\n });\n }\n\n // Generate greys (232-255)\n for (let i = 0; i < 24; i++) {\n const c = 8 + i * 10;\n colors.push({\n css: channels.toCss(c, c, c),\n rgba: channels.toRgba(c, c, c)\n });\n }\n\n return colors;\n})());\n\n/**\n * Manages the source of truth for a terminal's colors.\n */\nexport class ColorManager implements IColorManager {\n public colors: IColorSet;\n private _ctx: CanvasRenderingContext2D;\n private _litmusColor: CanvasGradient;\n private _contrastCache: IColorContrastCache;\n private _restoreColors!: IRestoreColorSet;\n\n constructor(document: Document, public allowTransparency: boolean) {\n const canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('Could not get rendering context');\n }\n this._ctx = ctx;\n this._ctx.globalCompositeOperation = 'copy';\n this._litmusColor = this._ctx.createLinearGradient(0, 0, 1, 1);\n this._contrastCache = new ColorContrastCache();\n this.colors = {\n foreground: DEFAULT_FOREGROUND,\n background: DEFAULT_BACKGROUND,\n cursor: DEFAULT_CURSOR,\n cursorAccent: DEFAULT_CURSOR_ACCENT,\n selectionTransparent: DEFAULT_SELECTION,\n selectionOpaque: color.blend(DEFAULT_BACKGROUND, DEFAULT_SELECTION),\n ansi: DEFAULT_ANSI_COLORS.slice(),\n contrastCache: this._contrastCache\n };\n this._updateRestoreColors();\n }\n\n public onOptionsChange(key: string): void {\n if (key === 'minimumContrastRatio') {\n this._contrastCache.clear();\n }\n }\n\n /**\n * Sets the terminal's theme.\n * @param theme The theme to use. If a partial theme is provided then default\n * colors will be used where colors are not defined.\n */\n public setTheme(theme: ITheme = {}): void {\n this.colors.foreground = this._parseColor(theme.foreground, DEFAULT_FOREGROUND);\n this.colors.background = this._parseColor(theme.background, DEFAULT_BACKGROUND);\n this.colors.cursor = this._parseColor(theme.cursor, DEFAULT_CURSOR, true);\n this.colors.cursorAccent = this._parseColor(theme.cursorAccent, DEFAULT_CURSOR_ACCENT, true);\n this.colors.selectionTransparent = this._parseColor(theme.selection, DEFAULT_SELECTION, true);\n this.colors.selectionOpaque = color.blend(this.colors.background, this.colors.selectionTransparent);\n /**\n * If selection color is opaque, blend it with background with 0.3 opacity\n * Issue #2737\n */\n if (color.isOpaque(this.colors.selectionTransparent)) {\n const opacity = 0.3;\n this.colors.selectionTransparent = color.opacity(this.colors.selectionTransparent, opacity);\n }\n this.colors.ansi[0] = this._parseColor(theme.black, DEFAULT_ANSI_COLORS[0]);\n this.colors.ansi[1] = this._parseColor(theme.red, DEFAULT_ANSI_COLORS[1]);\n this.colors.ansi[2] = this._parseColor(theme.green, DEFAULT_ANSI_COLORS[2]);\n this.colors.ansi[3] = this._parseColor(theme.yellow, DEFAULT_ANSI_COLORS[3]);\n this.colors.ansi[4] = this._parseColor(theme.blue, DEFAULT_ANSI_COLORS[4]);\n this.colors.ansi[5] = this._parseColor(theme.magenta, DEFAULT_ANSI_COLORS[5]);\n this.colors.ansi[6] = this._parseColor(theme.cyan, DEFAULT_ANSI_COLORS[6]);\n this.colors.ansi[7] = this._parseColor(theme.white, DEFAULT_ANSI_COLORS[7]);\n this.colors.ansi[8] = this._parseColor(theme.brightBlack, DEFAULT_ANSI_COLORS[8]);\n this.colors.ansi[9] = this._parseColor(theme.brightRed, DEFAULT_ANSI_COLORS[9]);\n this.colors.ansi[10] = this._parseColor(theme.brightGreen, DEFAULT_ANSI_COLORS[10]);\n this.colors.ansi[11] = this._parseColor(theme.brightYellow, DEFAULT_ANSI_COLORS[11]);\n this.colors.ansi[12] = this._parseColor(theme.brightBlue, DEFAULT_ANSI_COLORS[12]);\n this.colors.ansi[13] = this._parseColor(theme.brightMagenta, DEFAULT_ANSI_COLORS[13]);\n this.colors.ansi[14] = this._parseColor(theme.brightCyan, DEFAULT_ANSI_COLORS[14]);\n this.colors.ansi[15] = this._parseColor(theme.brightWhite, DEFAULT_ANSI_COLORS[15]);\n // Clear our the cache\n this._contrastCache.clear();\n this._updateRestoreColors();\n }\n\n public restoreColor(slot?: ColorIndex): void {\n // unset slot restores all ansi colors\n if (slot === undefined) {\n for (let i = 0; i < this._restoreColors.ansi.length; ++i) {\n this.colors.ansi[i] = this._restoreColors.ansi[i];\n }\n return;\n }\n switch (slot) {\n case ColorIndex.FOREGROUND:\n this.colors.foreground = this._restoreColors.foreground;\n break;\n case ColorIndex.BACKGROUND:\n this.colors.background = this._restoreColors.background;\n break;\n case ColorIndex.CURSOR:\n this.colors.cursor = this._restoreColors.cursor;\n break;\n default:\n this.colors.ansi[slot] = this._restoreColors.ansi[slot];\n }\n }\n\n private _updateRestoreColors(): void {\n this._restoreColors = {\n foreground: this.colors.foreground,\n background: this.colors.background,\n cursor: this.colors.cursor,\n ansi: [...this.colors.ansi]\n };\n }\n\n private _parseColor(\n css: string | undefined,\n fallback: IColor,\n allowTransparency: boolean = this.allowTransparency\n ): IColor {\n if (css === undefined) {\n return fallback;\n }\n\n // If parsing the value results in failure, then it must be ignored, and the attribute must\n // retain its previous value.\n // -- https://html.spec.whatwg.org/multipage/canvas.html#fill-and-stroke-styles\n this._ctx.fillStyle = this._litmusColor;\n this._ctx.fillStyle = css;\n if (typeof this._ctx.fillStyle !== 'string') {\n console.warn(`Color: ${css} is invalid using fallback ${fallback.css}`);\n return fallback;\n }\n\n this._ctx.fillRect(0, 0, 1, 1);\n const data = this._ctx.getImageData(0, 0, 1, 1).data;\n\n // Check if the printed color was transparent\n if (data[3] !== 0xFF) {\n if (!allowTransparency) {\n // Ideally we'd just ignore the alpha channel, but...\n //\n // Browsers may not give back exactly the same RGB values we put in, because most/all\n // convert the color to a pre-multiplied representation. getImageData converts that back to\n // a un-premultipled representation, but the precision loss may make the RGB channels unuable\n // on their own.\n //\n // E.g. In Chrome #12345610 turns into #10305010, and in the extreme case, 0xFFFFFF00 turns\n // into 0x00000000.\n //\n // \"Note: Due to the lossy nature of converting to and from premultiplied alpha color values,\n // pixels that have just been set using putImageData() might be returned to an equivalent\n // getImageData() as different values.\"\n // -- https://html.spec.whatwg.org/multipage/canvas.html#pixel-manipulation\n //\n // So let's just use the fallback color in this case instead.\n console.warn(\n `Color: ${css} is using transparency, but allowTransparency is false. ` +\n `Using fallback ${fallback.css}.`\n );\n return fallback;\n }\n\n // https://html.spec.whatwg.org/multipage/canvas.html#serialisation-of-a-color\n // the color value has alpha less than 1.0, and the string is the color value in the CSS rgba()\n const [r, g, b, a] = this._ctx.fillStyle.substring(5, this._ctx.fillStyle.length - 1).split(',').map(component => Number(component));\n const alpha = Math.round(a * 255);\n const rgba: number = channels.toRgba(r, g, b, alpha);\n return {\n rgba,\n css\n };\n }\n\n return {\n // https://html.spec.whatwg.org/multipage/canvas.html#serialisation-of-a-color\n // if it has alpha equal to 1.0, then the string is a lowercase six-digit hex value, prefixed with a \"#\" character\n css: this._ctx.fillStyle,\n rgba: channels.toRgba(data[0], data[1], data[2], data[3])\n };\n }\n}\n", "/**\n * Copyright (c) 2020 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport function removeElementFromParent(...elements: (HTMLElement | undefined)[]): void {\n for (const e of elements) {\n e?.parentElement?.removeChild(e);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\n/**\n * Adds a disposable listener to a node in the DOM, returning the disposable.\n * @param type The event type.\n * @param handler The handler for the listener.\n */\nexport function addDisposableDomListener(\n node: Element | Window | Document,\n type: string,\n handler: (e: any) => void,\n options?: boolean | AddEventListenerOptions\n): IDisposable {\n node.addEventListener(type, handler, options);\n let disposed = false;\n return {\n dispose: () => {\n if (disposed) {\n return;\n }\n disposed = true;\n node.removeEventListener(type, handler, options);\n }\n };\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ILinkifierEvent, ILinkMatcher, LinkMatcherHandler, ILinkMatcherOptions, ILinkifier, IMouseZoneManager, IMouseZone, IRegisteredLinkMatcher } from 'browser/Types';\nimport { IBufferStringIteratorResult } from 'common/buffer/Types';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { ILogService, IBufferService, IOptionsService, IUnicodeService } from 'common/services/Services';\n\n/**\n * Limit of the unwrapping line expansion (overscan) at the top and bottom\n * of the actual viewport in ASCII characters.\n * A limit of 2000 should match most sane urls.\n */\nconst OVERSCAN_CHAR_LIMIT = 2000;\n\n/**\n * The Linkifier applies links to rows shortly after they have been refreshed.\n */\nexport class Linkifier implements ILinkifier {\n /**\n * The time to wait after a row is changed before it is linkified. This prevents\n * the costly operation of searching every row multiple times, potentially a\n * huge amount of times.\n */\n protected static _timeBeforeLatency = 200;\n\n protected _linkMatchers: IRegisteredLinkMatcher[] = [];\n\n private _mouseZoneManager: IMouseZoneManager | undefined;\n private _element: HTMLElement | undefined;\n\n private _rowsTimeoutId: number | undefined;\n private _nextLinkMatcherId = 0;\n private _rowsToLinkify: { start: number | undefined, end: number | undefined };\n\n private _onShowLinkUnderline = new EventEmitter();\n public get onShowLinkUnderline(): IEvent { return this._onShowLinkUnderline.event; }\n private _onHideLinkUnderline = new EventEmitter();\n public get onHideLinkUnderline(): IEvent { return this._onHideLinkUnderline.event; }\n private _onLinkTooltip = new EventEmitter();\n public get onLinkTooltip(): IEvent { return this._onLinkTooltip.event; }\n\n constructor(\n @IBufferService protected readonly _bufferService: IBufferService,\n @ILogService private readonly _logService: ILogService,\n @IUnicodeService private readonly _unicodeService: IUnicodeService\n ) {\n this._rowsToLinkify = {\n start: undefined,\n end: undefined\n };\n }\n\n /**\n * Attaches the linkifier to the DOM, enabling linkification.\n * @param mouseZoneManager The mouse zone manager to register link zones with.\n */\n public attachToDom(element: HTMLElement, mouseZoneManager: IMouseZoneManager): void {\n this._element = element;\n this._mouseZoneManager = mouseZoneManager;\n }\n\n /**\n * Queue linkification on a set of rows.\n * @param start The row to linkify from (inclusive).\n * @param end The row to linkify to (inclusive).\n */\n public linkifyRows(start: number, end: number): void {\n // Don't attempt linkify if not yet attached to DOM\n if (!this._mouseZoneManager) {\n return;\n }\n\n // Increase range to linkify\n if (this._rowsToLinkify.start === undefined || this._rowsToLinkify.end === undefined) {\n this._rowsToLinkify.start = start;\n this._rowsToLinkify.end = end;\n } else {\n this._rowsToLinkify.start = Math.min(this._rowsToLinkify.start, start);\n this._rowsToLinkify.end = Math.max(this._rowsToLinkify.end, end);\n }\n\n // Clear out any existing links on this row range\n this._mouseZoneManager.clearAll(start, end);\n\n // Restart timer\n if (this._rowsTimeoutId) {\n clearTimeout(this._rowsTimeoutId);\n }\n\n // Cannot use window.setTimeout since tests need to run in node\n this._rowsTimeoutId = setTimeout(() => this._linkifyRows(), Linkifier._timeBeforeLatency) as any as number;\n }\n\n /**\n * Linkifies the rows requested.\n */\n private _linkifyRows(): void {\n this._rowsTimeoutId = undefined;\n const buffer = this._bufferService.buffer;\n\n if (this._rowsToLinkify.start === undefined || this._rowsToLinkify.end === undefined) {\n this._logService.debug('_rowToLinkify was unset before _linkifyRows was called');\n return;\n }\n\n // Ensure the start row exists\n const absoluteRowIndexStart = buffer.ydisp + this._rowsToLinkify.start;\n if (absoluteRowIndexStart >= buffer.lines.length) {\n return;\n }\n\n // Invalidate bad end row values (if a resize happened)\n const absoluteRowIndexEnd = buffer.ydisp + Math.min(this._rowsToLinkify.end, this._bufferService.rows) + 1;\n\n // Iterate over the range of unwrapped content strings within start..end\n // (excluding).\n // _doLinkifyRow gets full unwrapped lines with the start row as buffer offset\n // for every matcher.\n // The unwrapping is needed to also match content that got wrapped across\n // several buffer lines. To avoid a worst case scenario where the whole buffer\n // contains just a single unwrapped string we limit this line expansion beyond\n // the viewport to +OVERSCAN_CHAR_LIMIT chars (overscan) at top and bottom.\n // This comes with the tradeoff that matches longer than OVERSCAN_CHAR_LIMIT\n // chars will not match anymore at the viewport borders.\n const overscanLineLimit = Math.ceil(OVERSCAN_CHAR_LIMIT / this._bufferService.cols);\n const iterator = this._bufferService.buffer.iterator(\n false, absoluteRowIndexStart, absoluteRowIndexEnd, overscanLineLimit, overscanLineLimit);\n while (iterator.hasNext()) {\n const lineData: IBufferStringIteratorResult = iterator.next();\n for (let i = 0; i < this._linkMatchers.length; i++) {\n this._doLinkifyRow(lineData.range.first, lineData.content, this._linkMatchers[i]);\n }\n }\n\n this._rowsToLinkify.start = undefined;\n this._rowsToLinkify.end = undefined;\n }\n\n /**\n * Registers a link matcher, allowing custom link patterns to be matched and\n * handled.\n * @param regex The regular expression to search for. Specifically, this\n * searches the textContent of the rows. You will want to use \\s to match a\n * space ' ' character for example.\n * @param handler The callback when the link is called.\n * @param options Options for the link matcher.\n * @return The ID of the new matcher, this can be used to deregister.\n */\n public registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options: ILinkMatcherOptions = {}): number {\n if (!handler) {\n throw new Error('handler must be defined');\n }\n const matcher: IRegisteredLinkMatcher = {\n id: this._nextLinkMatcherId++,\n regex,\n handler,\n matchIndex: options.matchIndex,\n validationCallback: options.validationCallback,\n hoverTooltipCallback: options.tooltipCallback,\n hoverLeaveCallback: options.leaveCallback,\n willLinkActivate: options.willLinkActivate,\n priority: options.priority || 0\n };\n this._addLinkMatcherToList(matcher);\n return matcher.id;\n }\n\n /**\n * Inserts a link matcher to the list in the correct position based on the\n * priority of each link matcher. New link matchers of equal priority are\n * considered after older link matchers.\n * @param matcher The link matcher to be added.\n */\n private _addLinkMatcherToList(matcher: IRegisteredLinkMatcher): void {\n if (this._linkMatchers.length === 0) {\n this._linkMatchers.push(matcher);\n return;\n }\n\n for (let i = this._linkMatchers.length - 1; i >= 0; i--) {\n if (matcher.priority <= this._linkMatchers[i].priority) {\n this._linkMatchers.splice(i + 1, 0, matcher);\n return;\n }\n }\n\n this._linkMatchers.splice(0, 0, matcher);\n }\n\n /**\n * Deregisters a link matcher if it has been registered.\n * @param matcherId The link matcher's ID (returned after register)\n * @return Whether a link matcher was found and deregistered.\n */\n public deregisterLinkMatcher(matcherId: number): boolean {\n for (let i = 0; i < this._linkMatchers.length; i++) {\n if (this._linkMatchers[i].id === matcherId) {\n this._linkMatchers.splice(i, 1);\n return true;\n }\n }\n return false;\n }\n\n /**\n * Linkifies a row given a specific handler.\n * @param rowIndex The row index to linkify (absolute index).\n * @param text string content of the unwrapped row.\n * @param matcher The link matcher for this line.\n */\n private _doLinkifyRow(rowIndex: number, text: string, matcher: ILinkMatcher): void {\n // clone regex to do a global search on text\n const rex = new RegExp(matcher.regex.source, (matcher.regex.flags || '') + 'g');\n let match;\n let stringIndex = -1;\n while ((match = rex.exec(text)) !== null) {\n const uri = match[typeof matcher.matchIndex !== 'number' ? 0 : matcher.matchIndex];\n if (!uri) {\n // something matched but does not comply with the given matchIndex\n // since this is most likely a bug the regex itself we simply do nothing here\n this._logService.debug('match found without corresponding matchIndex', match, matcher);\n break;\n }\n\n // Get index, match.index is for the outer match which includes negated chars\n // therefore we cannot use match.index directly, instead we search the position\n // of the match group in text again\n // also correct regex and string search offsets for the next loop run\n stringIndex = text.indexOf(uri, stringIndex + 1);\n rex.lastIndex = stringIndex + uri.length;\n if (stringIndex < 0) {\n // invalid stringIndex (should not have happened)\n break;\n }\n\n // get the buffer index as [absolute row, col] for the match\n const bufferIndex = this._bufferService.buffer.stringIndexToBufferIndex(rowIndex, stringIndex);\n if (bufferIndex[0] < 0) {\n // invalid bufferIndex (should not have happened)\n break;\n }\n\n const line = this._bufferService.buffer.lines.get(bufferIndex[0]);\n if (!line) {\n break;\n }\n\n const attr = line.getFg(bufferIndex[1]);\n const fg = attr ? (attr >> 9) & 0x1ff : undefined;\n\n if (matcher.validationCallback) {\n matcher.validationCallback(uri, isValid => {\n // Discard link if the line has already changed\n if (this._rowsTimeoutId) {\n return;\n }\n if (isValid) {\n this._addLink(bufferIndex[1], bufferIndex[0] - this._bufferService.buffer.ydisp, uri, matcher, fg);\n }\n });\n } else {\n this._addLink(bufferIndex[1], bufferIndex[0] - this._bufferService.buffer.ydisp, uri, matcher, fg);\n }\n }\n }\n\n /**\n * Registers a link to the mouse zone manager.\n * @param x The column the link starts.\n * @param y The row the link is on.\n * @param uri The URI of the link.\n * @param matcher The link matcher for the link.\n * @param fg The link color for hover event.\n */\n private _addLink(x: number, y: number, uri: string, matcher: ILinkMatcher, fg: number | undefined): void {\n if (!this._mouseZoneManager || !this._element) {\n return;\n }\n // FIXME: get cell length from buffer to avoid mismatch after Unicode version change\n const width = this._unicodeService.getStringCellWidth(uri);\n const x1 = x % this._bufferService.cols;\n const y1 = y + Math.floor(x / this._bufferService.cols);\n let x2 = (x1 + width) % this._bufferService.cols;\n let y2 = y1 + Math.floor((x1 + width) / this._bufferService.cols);\n if (x2 === 0) {\n x2 = this._bufferService.cols;\n y2--;\n }\n\n this._mouseZoneManager.add(new MouseZone(\n x1 + 1,\n y1 + 1,\n x2 + 1,\n y2 + 1,\n e => {\n if (matcher.handler) {\n return matcher.handler(e, uri);\n }\n const newWindow = window.open();\n if (newWindow) {\n newWindow.opener = null;\n newWindow.location.href = uri;\n } else {\n console.warn('Opening link blocked as opener could not be cleared');\n }\n },\n () => {\n this._onShowLinkUnderline.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n this._element!.classList.add('xterm-cursor-pointer');\n },\n e => {\n this._onLinkTooltip.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n if (matcher.hoverTooltipCallback) {\n // Note that IViewportRange use 1-based coordinates to align with escape sequences such\n // as CUP which use 1,1 as the default for row/col\n matcher.hoverTooltipCallback(e, uri, { start: { x: x1, y: y1 }, end: { x: x2, y: y2 } });\n }\n },\n () => {\n this._onHideLinkUnderline.fire(this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n this._element!.classList.remove('xterm-cursor-pointer');\n if (matcher.hoverLeaveCallback) {\n matcher.hoverLeaveCallback();\n }\n },\n e => {\n if (matcher.willLinkActivate) {\n return matcher.willLinkActivate(e, uri);\n }\n return true;\n }\n ));\n }\n\n private _createLinkHoverEvent(x1: number, y1: number, x2: number, y2: number, fg: number | undefined): ILinkifierEvent {\n return { x1, y1, x2, y2, cols: this._bufferService.cols, fg };\n }\n}\n\nexport class MouseZone implements IMouseZone {\n constructor(\n public x1: number,\n public y1: number,\n public x2: number,\n public y2: number,\n public clickCallback: (e: MouseEvent) => any,\n public hoverCallback: (e: MouseEvent) => any,\n public tooltipCallback: (e: MouseEvent) => any,\n public leaveCallback: () => void,\n public willLinkActivate: (e: MouseEvent) => boolean\n ) {\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ILinkifier2, ILinkProvider, IBufferCellPosition, ILink, ILinkifierEvent, ILinkDecorations, ILinkWithState } from 'browser/Types';\nimport { IDisposable } from 'common/Types';\nimport { IMouseService, IRenderService } from './services/Services';\nimport { IBufferService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable, getDisposeArrayDisposable, disposeArray } from 'common/Lifecycle';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\n\nexport class Linkifier2 extends Disposable implements ILinkifier2 {\n private _element: HTMLElement | undefined;\n private _mouseService: IMouseService | undefined;\n private _renderService: IRenderService | undefined;\n private _linkProviders: ILinkProvider[] = [];\n public get currentLink(): ILinkWithState | undefined { return this._currentLink; }\n protected _currentLink: ILinkWithState | undefined;\n private _lastMouseEvent: MouseEvent | undefined;\n private _linkCacheDisposables: IDisposable[] = [];\n private _lastBufferCell: IBufferCellPosition | undefined;\n private _isMouseOut: boolean = true;\n private _activeProviderReplies: Map | undefined;\n private _activeLine: number = -1;\n\n private _onShowLinkUnderline = this.register(new EventEmitter());\n public get onShowLinkUnderline(): IEvent { return this._onShowLinkUnderline.event; }\n private _onHideLinkUnderline = this.register(new EventEmitter());\n public get onHideLinkUnderline(): IEvent { return this._onHideLinkUnderline.event; }\n\n constructor(\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n super();\n this.register(getDisposeArrayDisposable(this._linkCacheDisposables));\n }\n\n public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {\n this._linkProviders.push(linkProvider);\n return {\n dispose: () => {\n // Remove the link provider from the list\n const providerIndex = this._linkProviders.indexOf(linkProvider);\n\n if (providerIndex !== -1) {\n this._linkProviders.splice(providerIndex, 1);\n }\n }\n };\n }\n\n public attachToDom(element: HTMLElement, mouseService: IMouseService, renderService: IRenderService): void {\n this._element = element;\n this._mouseService = mouseService;\n this._renderService = renderService;\n\n this.register(addDisposableDomListener(this._element, 'mouseleave', () => {\n this._isMouseOut = true;\n this._clearCurrentLink();\n }));\n this.register(addDisposableDomListener(this._element, 'mousemove', this._onMouseMove.bind(this)));\n this.register(addDisposableDomListener(this._element, 'click', this._onClick.bind(this)));\n }\n\n private _onMouseMove(event: MouseEvent): void {\n this._lastMouseEvent = event;\n\n if (!this._element || !this._mouseService) {\n return;\n }\n\n const position = this._positionFromMouseEvent(event, this._element, this._mouseService);\n if (!position) {\n return;\n }\n this._isMouseOut = false;\n\n // Ignore the event if it's an embedder created hover widget\n const composedPath = event.composedPath() as HTMLElement[];\n for (let i = 0; i < composedPath.length; i++) {\n const target = composedPath[i];\n // Hit Terminal.element, break and continue\n if (target.classList.contains('xterm')) {\n break;\n }\n // It's a hover, don't respect hover event\n if (target.classList.contains('xterm-hover')) {\n return;\n }\n }\n\n if (!this._lastBufferCell || (position.x !== this._lastBufferCell.x || position.y !== this._lastBufferCell.y)) {\n this._onHover(position);\n this._lastBufferCell = position;\n }\n }\n\n private _onHover(position: IBufferCellPosition): void {\n // TODO: This currently does not cache link provider results across wrapped lines, activeLine should be something like `activeRange: {startY, endY}`\n // Check if we need to clear the link\n if (this._activeLine !== position.y) {\n this._clearCurrentLink();\n this._askForLink(position, false);\n return;\n }\n\n // Check the if the link is in the mouse position\n const isCurrentLinkInPosition = this._currentLink && this._linkAtPosition(this._currentLink.link, position);\n if (!isCurrentLinkInPosition) {\n this._clearCurrentLink();\n this._askForLink(position, true);\n }\n }\n\n private _askForLink(position: IBufferCellPosition, useLineCache: boolean): void {\n if (!this._activeProviderReplies || !useLineCache) {\n this._activeProviderReplies?.forEach(reply => {\n reply?.forEach(linkWithState => {\n if (linkWithState.link.dispose) {\n linkWithState.link.dispose();\n }\n });\n });\n this._activeProviderReplies = new Map();\n this._activeLine = position.y;\n }\n let linkProvided = false;\n\n // There is no link cached, so ask for one\n this._linkProviders.forEach((linkProvider, i) => {\n if (useLineCache) {\n const existingReply = this._activeProviderReplies?.get(i);\n // If there isn't a reply, the provider hasn't responded yet.\n\n // TODO: If there isn't a reply yet it means that the provider is still resolving. Ensuring\n // provideLinks isn't triggered again saves ILink.hover firing twice though. This probably\n // needs promises to get fixed\n if (existingReply) {\n linkProvided = this._checkLinkProviderResult(i, position, linkProvided);\n }\n } else {\n linkProvider.provideLinks(position.y, (links: ILink[] | undefined) => {\n if (this._isMouseOut) {\n return;\n }\n const linksWithState: ILinkWithState[] | undefined = links?.map(link => ({ link }));\n this._activeProviderReplies?.set(i, linksWithState);\n linkProvided = this._checkLinkProviderResult(i, position, linkProvided);\n\n // If all providers have responded, remove lower priority links that intersect ranges of\n // higher priority links\n if (this._activeProviderReplies?.size === this._linkProviders.length) {\n this._removeIntersectingLinks(position.y, this._activeProviderReplies);\n }\n });\n }\n });\n }\n\n private _removeIntersectingLinks(y: number, replies: Map): void {\n const occupiedCells = new Set();\n for (let i = 0; i < replies.size; i++) {\n const providerReply = replies.get(i);\n if (!providerReply) {\n continue;\n }\n for (let i = 0; i < providerReply.length; i++) {\n const linkWithState = providerReply[i];\n const startX = linkWithState.link.range.start.y < y ? 0 : linkWithState.link.range.start.x;\n const endX = linkWithState.link.range.end.y > y ? this._bufferService.cols : linkWithState.link.range.end.x;\n for (let x = startX; x <= endX; x++) {\n if (occupiedCells.has(x)) {\n providerReply.splice(i--, 1);\n break;\n }\n occupiedCells.add(x);\n }\n }\n }\n }\n\n private _checkLinkProviderResult(index: number, position: IBufferCellPosition, linkProvided: boolean): boolean {\n if (!this._activeProviderReplies) {\n return linkProvided;\n }\n\n const links = this._activeProviderReplies.get(index);\n\n // Check if every provider before this one has come back undefined\n let hasLinkBefore = false;\n for (let j = 0; j < index; j++) {\n if (!this._activeProviderReplies.has(j) || this._activeProviderReplies.get(j)) {\n hasLinkBefore = true;\n }\n }\n\n // If all providers with higher priority came back undefined, then this provider's link for\n // the position should be used\n if (!hasLinkBefore && links) {\n const linkAtPosition = links.find(link => this._linkAtPosition(link.link, position));\n if (linkAtPosition) {\n linkProvided = true;\n this._handleNewLink(linkAtPosition);\n }\n }\n\n // Check if all the providers have responded\n if (this._activeProviderReplies.size === this._linkProviders.length && !linkProvided) {\n // Respect the order of the link providers\n for (let j = 0; j < this._activeProviderReplies.size; j++) {\n const currentLink = this._activeProviderReplies.get(j)?.find(link => this._linkAtPosition(link.link, position));\n if (currentLink) {\n linkProvided = true;\n this._handleNewLink(currentLink);\n break;\n }\n }\n }\n\n return linkProvided;\n }\n\n private _onClick(event: MouseEvent): void {\n if (!this._element || !this._mouseService || !this._currentLink) {\n return;\n }\n\n const position = this._positionFromMouseEvent(event, this._element, this._mouseService);\n\n if (!position) {\n return;\n }\n\n if (this._linkAtPosition(this._currentLink.link, position)) {\n this._currentLink.link.activate(event, this._currentLink.link.text);\n }\n }\n\n private _clearCurrentLink(startRow?: number, endRow?: number): void {\n if (!this._element || !this._currentLink || !this._lastMouseEvent) {\n return;\n }\n\n // If we have a start and end row, check that the link is within it\n if (!startRow || !endRow || (this._currentLink.link.range.start.y >= startRow && this._currentLink.link.range.end.y <= endRow)) {\n this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent);\n this._currentLink = undefined;\n disposeArray(this._linkCacheDisposables);\n }\n }\n\n private _handleNewLink(linkWithState: ILinkWithState): void {\n if (!this._element || !this._lastMouseEvent || !this._mouseService) {\n return;\n }\n\n const position = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService);\n\n if (!position) {\n return;\n }\n\n // Trigger hover if the we have a link at the position\n if (this._linkAtPosition(linkWithState.link, position)) {\n this._currentLink = linkWithState;\n this._currentLink.state = {\n decorations: {\n underline: linkWithState.link.decorations === undefined ? true : linkWithState.link.decorations.underline,\n pointerCursor: linkWithState.link.decorations === undefined ? true : linkWithState.link.decorations.pointerCursor\n },\n isHovered: true\n };\n this._linkHover(this._element, linkWithState.link, this._lastMouseEvent);\n\n // Add listener for tracking decorations changes\n linkWithState.link.decorations = {} as ILinkDecorations;\n Object.defineProperties(linkWithState.link.decorations, {\n pointerCursor: {\n get: () => this._currentLink?.state?.decorations.pointerCursor,\n set: v => {\n if (this._currentLink?.state && this._currentLink.state.decorations.pointerCursor !== v) {\n this._currentLink.state.decorations.pointerCursor = v;\n if (this._currentLink.state.isHovered) {\n this._element?.classList.toggle('xterm-cursor-pointer', v);\n }\n }\n }\n },\n underline: {\n get: () => this._currentLink?.state?.decorations.underline,\n set: v => {\n if (this._currentLink?.state && this._currentLink?.state?.decorations.underline !== v) {\n this._currentLink.state.decorations.underline = v;\n if (this._currentLink.state.isHovered) {\n this._fireUnderlineEvent(linkWithState.link, v);\n }\n }\n }\n }\n });\n\n // Add listener for rerendering\n if (this._renderService) {\n this._linkCacheDisposables.push(this._renderService.onRenderedBufferChange(e => {\n // When start is 0 a scroll most likely occurred, make sure links above the fold also get\n // cleared.\n const start = e.start === 0 ? 0 : e.start + 1 + this._bufferService.buffer.ydisp;\n this._clearCurrentLink(start, e.end + 1 + this._bufferService.buffer.ydisp);\n }));\n }\n }\n }\n\n protected _linkHover(element: HTMLElement, link: ILink, event: MouseEvent): void {\n if (this._currentLink?.state) {\n this._currentLink.state.isHovered = true;\n if (this._currentLink.state.decorations.underline) {\n this._fireUnderlineEvent(link, true);\n }\n if (this._currentLink.state.decorations.pointerCursor) {\n element.classList.add('xterm-cursor-pointer');\n }\n }\n\n if (link.hover) {\n link.hover(event, link.text);\n }\n }\n\n private _fireUnderlineEvent(link: ILink, showEvent: boolean): void {\n const range = link.range;\n const scrollOffset = this._bufferService.buffer.ydisp;\n const event = this._createLinkUnderlineEvent(range.start.x - 1, range.start.y - scrollOffset - 1, range.end.x, range.end.y - scrollOffset - 1, undefined);\n const emitter = showEvent ? this._onShowLinkUnderline : this._onHideLinkUnderline;\n emitter.fire(event);\n }\n\n protected _linkLeave(element: HTMLElement, link: ILink, event: MouseEvent): void {\n if (this._currentLink?.state) {\n this._currentLink.state.isHovered = false;\n if (this._currentLink.state.decorations.underline) {\n this._fireUnderlineEvent(link, false);\n }\n if (this._currentLink.state.decorations.pointerCursor) {\n element.classList.remove('xterm-cursor-pointer');\n }\n }\n\n if (link.leave) {\n link.leave(event, link.text);\n }\n }\n\n /**\n * Check if the buffer position is within the link\n * @param link\n * @param position\n */\n private _linkAtPosition(link: ILink, position: IBufferCellPosition): boolean {\n const sameLine = link.range.start.y === link.range.end.y;\n const wrappedFromLeft = link.range.start.y < position.y;\n const wrappedToRight = link.range.end.y > position.y;\n\n // If the start and end have the same y, then the position must be between start and end x\n // If not, then handle each case seperately, depending on which way it wraps\n return ((sameLine && link.range.start.x <= position.x && link.range.end.x >= position.x) ||\n (wrappedFromLeft && link.range.end.x >= position.x) ||\n (wrappedToRight && link.range.start.x <= position.x) ||\n (wrappedFromLeft && wrappedToRight)) &&\n link.range.start.y <= position.y &&\n link.range.end.y >= position.y;\n }\n\n /**\n * Get the buffer position from a mouse event\n * @param event\n */\n private _positionFromMouseEvent(event: MouseEvent, element: HTMLElement, mouseService: IMouseService): IBufferCellPosition | undefined {\n const coords = mouseService.getCoords(event, element, this._bufferService.cols, this._bufferService.rows);\n if (!coords) {\n return;\n }\n\n return { x: coords[0], y: coords[1] + this._bufferService.buffer.ydisp };\n }\n\n private _createLinkUnderlineEvent(x1: number, y1: number, x2: number, y2: number, fg: number | undefined): ILinkifierEvent {\n return { x1, y1, x2, y2, cols: this._bufferService.cols, fg };\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n// eslint-disable-next-line prefer-const\nexport let promptLabel = 'Terminal input';\n\n// eslint-disable-next-line prefer-const\nexport let tooMuchOutput = 'Too much output to announce, navigate to rows manually to read';\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Disposable } from 'common/Lifecycle';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IMouseService, ISelectionService } from 'browser/services/Services';\nimport { IMouseZoneManager, IMouseZone } from 'browser/Types';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\n\n/**\n * The MouseZoneManager allows components to register zones within the terminal\n * that trigger hover and click callbacks.\n *\n * This class was intentionally made not so robust initially as the only case it\n * needed to support was single-line links which never overlap. Improvements can\n * be made in the future.\n */\nexport class MouseZoneManager extends Disposable implements IMouseZoneManager {\n private _zones: IMouseZone[] = [];\n\n private _areZonesActive: boolean = false;\n private _mouseMoveListener: (e: MouseEvent) => any;\n private _mouseLeaveListener: (e: MouseEvent) => any;\n private _clickListener: (e: MouseEvent) => any;\n\n private _tooltipTimeout: number | undefined;\n private _currentZone: IMouseZone | undefined;\n private _lastHoverCoords: [number | undefined, number | undefined] = [undefined, undefined];\n private _initialSelectionLength: number = 0;\n\n constructor(\n private readonly _element: HTMLElement,\n private readonly _screenElement: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IMouseService private readonly _mouseService: IMouseService,\n @ISelectionService private readonly _selectionService: ISelectionService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n\n this.register(addDisposableDomListener(this._element, 'mousedown', e => this._onMouseDown(e)));\n\n // These events are expensive, only listen to it when mouse zones are active\n this._mouseMoveListener = e => this._onMouseMove(e);\n this._mouseLeaveListener = e => this._onMouseLeave(e);\n this._clickListener = e => this._onClick(e);\n }\n\n public dispose(): void {\n super.dispose();\n this._deactivate();\n }\n\n public add(zone: IMouseZone): void {\n this._zones.push(zone);\n if (this._zones.length === 1) {\n this._activate();\n }\n }\n\n public clearAll(start?: number, end?: number): void {\n // Exit if there's nothing to clear\n if (this._zones.length === 0) {\n return;\n }\n\n // Clear all if start/end weren't set\n if (!start || !end) {\n start = 0;\n end = this._bufferService.rows - 1;\n }\n\n // Iterate through zones and clear them out if they're within the range\n for (let i = 0; i < this._zones.length; i++) {\n const zone = this._zones[i];\n if ((zone.y1 > start && zone.y1 <= end + 1) ||\n (zone.y2 > start && zone.y2 <= end + 1) ||\n (zone.y1 < start && zone.y2 > end + 1)) {\n if (this._currentZone && this._currentZone === zone) {\n this._currentZone.leaveCallback();\n this._currentZone = undefined;\n }\n this._zones.splice(i--, 1);\n }\n }\n\n // Deactivate the mouse zone manager if all the zones have been removed\n if (this._zones.length === 0) {\n this._deactivate();\n }\n }\n\n private _activate(): void {\n if (!this._areZonesActive) {\n this._areZonesActive = true;\n this._element.addEventListener('mousemove', this._mouseMoveListener);\n this._element.addEventListener('mouseleave', this._mouseLeaveListener);\n this._element.addEventListener('click', this._clickListener);\n }\n }\n\n private _deactivate(): void {\n if (this._areZonesActive) {\n this._areZonesActive = false;\n this._element.removeEventListener('mousemove', this._mouseMoveListener);\n this._element.removeEventListener('mouseleave', this._mouseLeaveListener);\n this._element.removeEventListener('click', this._clickListener);\n }\n }\n\n private _onMouseMove(e: MouseEvent): void {\n // TODO: Ideally this would only clear the hover state when the mouse moves\n // outside of the mouse zone\n if (this._lastHoverCoords[0] !== e.pageX || this._lastHoverCoords[1] !== e.pageY) {\n this._onHover(e);\n // Record the current coordinates\n this._lastHoverCoords = [e.pageX, e.pageY];\n }\n }\n\n private _onHover(e: MouseEvent): void {\n const zone = this._findZoneEventAt(e);\n\n // Do nothing if the zone is the same\n if (zone === this._currentZone) {\n return;\n }\n\n // Fire the hover end callback and cancel any existing timer if a new zone\n // is being hovered\n if (this._currentZone) {\n this._currentZone.leaveCallback();\n this._currentZone = undefined;\n if (this._tooltipTimeout) {\n clearTimeout(this._tooltipTimeout);\n }\n }\n\n // Exit if there is not zone\n if (!zone) {\n return;\n }\n this._currentZone = zone;\n\n // Trigger the hover callback\n if (zone.hoverCallback) {\n zone.hoverCallback(e);\n }\n\n // Restart the tooltip timeout\n this._tooltipTimeout = window.setTimeout(() => this._onTooltip(e), this._optionsService.rawOptions.linkTooltipHoverDuration);\n }\n\n private _onTooltip(e: MouseEvent): void {\n this._tooltipTimeout = undefined;\n const zone = this._findZoneEventAt(e);\n zone?.tooltipCallback(e);\n }\n\n private _onMouseDown(e: MouseEvent): void {\n // Store current terminal selection length, to check if we're performing\n // a selection operation\n this._initialSelectionLength = this._getSelectionLength();\n\n // Ignore the event if there are no zones active\n if (!this._areZonesActive) {\n return;\n }\n\n // Find the active zone, prevent event propagation if found to prevent other\n // components from handling the mouse event.\n const zone = this._findZoneEventAt(e);\n if (zone?.willLinkActivate(e)) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n\n private _onMouseLeave(e: MouseEvent): void {\n // Fire the hover end callback and cancel any existing timer if the mouse\n // leaves the terminal element\n if (this._currentZone) {\n this._currentZone.leaveCallback();\n this._currentZone = undefined;\n if (this._tooltipTimeout) {\n clearTimeout(this._tooltipTimeout);\n }\n }\n }\n\n private _onClick(e: MouseEvent): void {\n // Find the active zone and click it if found and no selection was\n // being performed\n const zone = this._findZoneEventAt(e);\n const currentSelectionLength = this._getSelectionLength();\n\n if (zone && currentSelectionLength === this._initialSelectionLength) {\n zone.clickCallback(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n\n private _getSelectionLength(): number {\n const selectionText = this._selectionService.selectionText;\n return selectionText ? selectionText.length : 0;\n }\n\n private _findZoneEventAt(e: MouseEvent): IMouseZone | undefined {\n const coords = this._mouseService.getCoords(e, this._screenElement, this._bufferService.cols, this._bufferService.rows);\n if (!coords) {\n return undefined;\n }\n const x = coords[0];\n const y = coords[1];\n for (let i = 0; i < this._zones.length; i++) {\n const zone = this._zones[i];\n if (zone.y1 === zone.y2) {\n // Single line link\n if (y === zone.y1 && x >= zone.x1 && x < zone.x2) {\n return zone;\n }\n } else {\n // Multi-line link\n if ((y === zone.y1 && x >= zone.x1) ||\n (y === zone.y2 && x < zone.x2) ||\n (y > zone.y1 && y < zone.y2)) {\n return zone;\n }\n }\n }\n return undefined;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDebouncer } from 'browser/Types';\n\n/**\n * Debounces calls to render terminal rows using animation frames.\n */\nexport class RenderDebouncer implements IRenderDebouncer {\n private _rowStart: number | undefined;\n private _rowEnd: number | undefined;\n private _rowCount: number | undefined;\n private _animationFrame: number | undefined;\n\n constructor(\n private _renderCallback: (start: number, end: number) => void\n ) {\n }\n\n public dispose(): void {\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = undefined;\n }\n }\n\n public refresh(rowStart: number | undefined, rowEnd: number | undefined, rowCount: number): void {\n this._rowCount = rowCount;\n // Get the min/max row start/end for the arg values\n rowStart = rowStart !== undefined ? rowStart : 0;\n rowEnd = rowEnd !== undefined ? rowEnd : this._rowCount - 1;\n // Set the properties to the updated values\n this._rowStart = this._rowStart !== undefined ? Math.min(this._rowStart, rowStart) : rowStart;\n this._rowEnd = this._rowEnd !== undefined ? Math.max(this._rowEnd, rowEnd) : rowEnd;\n\n if (this._animationFrame) {\n return;\n }\n\n this._animationFrame = window.requestAnimationFrame(() => this._innerRefresh());\n }\n\n private _innerRefresh(): void {\n // Make sure values are set\n if (this._rowStart === undefined || this._rowEnd === undefined || this._rowCount === undefined) {\n return;\n }\n\n // Clamp values\n const start = Math.max(this._rowStart, 0);\n const end = Math.min(this._rowEnd, this._rowCount - 1);\n\n // Reset debouncer (this happens before render callback as the render could trigger it again)\n this._rowStart = undefined;\n this._rowEnd = undefined;\n this._animationFrame = undefined;\n\n // Run render callback\n this._renderCallback(start, end);\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Disposable } from 'common/Lifecycle';\n\nexport type ScreenDprListener = (newDevicePixelRatio?: number, oldDevicePixelRatio?: number) => void;\n\n/**\n * The screen device pixel ratio monitor allows listening for when the\n * window.devicePixelRatio value changes. This is done not with polling but with\n * the use of window.matchMedia to watch media queries. When the event fires,\n * the listener will be reattached using a different media query to ensure that\n * any further changes will register.\n *\n * The listener should fire on both window zoom changes and switching to a\n * monitor with a different DPI.\n */\nexport class ScreenDprMonitor extends Disposable {\n private _currentDevicePixelRatio: number = window.devicePixelRatio;\n private _outerListener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | undefined;\n private _listener: ScreenDprListener | undefined;\n private _resolutionMediaMatchList: MediaQueryList | undefined;\n\n public setListener(listener: ScreenDprListener): void {\n if (this._listener) {\n this.clearListener();\n }\n this._listener = listener;\n this._outerListener = () => {\n if (!this._listener) {\n return;\n }\n this._listener(window.devicePixelRatio, this._currentDevicePixelRatio);\n this._updateDpr();\n };\n this._updateDpr();\n }\n\n public dispose(): void {\n super.dispose();\n this.clearListener();\n }\n\n private _updateDpr(): void {\n if (!this._outerListener) {\n return;\n }\n\n // Clear listeners for old DPR\n this._resolutionMediaMatchList?.removeListener(this._outerListener);\n\n // Add listeners for new DPR\n this._currentDevicePixelRatio = window.devicePixelRatio;\n this._resolutionMediaMatchList = window.matchMedia(`screen and (resolution: ${window.devicePixelRatio}dppx)`);\n this._resolutionMediaMatchList.addListener(this._outerListener);\n }\n\n public clearListener(): void {\n if (!this._resolutionMediaMatchList || !this._listener || !this._outerListener) {\n return;\n }\n this._resolutionMediaMatchList.removeListener(this._outerListener);\n this._resolutionMediaMatchList = undefined;\n this._listener = undefined;\n this._outerListener = undefined;\n }\n}\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n *\n * Originally forked from (with the author's permission):\n * Fabrice Bellard's javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n *\n * Terminal Emulation References:\n * http://vt100.net/\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.txt\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.html\n * http://invisible-island.net/vttest/\n * http://www.inwap.com/pdp10/ansicode.txt\n * http://linux.die.net/man/4/console_codes\n * http://linux.die.net/man/7/urxvt\n */\n\nimport { ICompositionHelper, ITerminal, IBrowser, CustomKeyEventHandler, ILinkifier, IMouseZoneManager, LinkMatcherHandler, ILinkMatcherOptions, IViewport, ILinkifier2, CharacterJoinerHandler } from 'browser/Types';\nimport { IRenderer } from 'browser/renderer/Types';\nimport { CompositionHelper } from 'browser/input/CompositionHelper';\nimport { Viewport } from 'browser/Viewport';\nimport { rightClickHandler, moveTextAreaUnderMouseCursor, handlePasteEvent, copyHandler, paste } from 'browser/Clipboard';\nimport { C0 } from 'common/data/EscapeSequences';\nimport { WindowsOptionsReportType } from '../common/InputHandler';\nimport { Renderer } from 'browser/renderer/Renderer';\nimport { Linkifier } from 'browser/Linkifier';\nimport { SelectionService } from 'browser/services/SelectionService';\nimport * as Browser from 'common/Platform';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport * as Strings from 'browser/LocalizableStrings';\nimport { SoundService } from 'browser/services/SoundService';\nimport { MouseZoneManager } from 'browser/MouseZoneManager';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { ITheme, IMarker, IDisposable, ISelectionPosition, ILinkProvider, IDecorationOptions, IDecoration } from 'xterm';\nimport { DomRenderer } from 'browser/renderer/dom/DomRenderer';\nimport { KeyboardResultType, CoreMouseEventType, CoreMouseButton, CoreMouseAction, ITerminalOptions, ScrollSource, IColorEvent, ColorIndex, ColorRequestType } from 'common/Types';\nimport { evaluateKeyboardEvent } from 'common/input/Keyboard';\nimport { EventEmitter, IEvent, forwardEvent } from 'common/EventEmitter';\nimport { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';\nimport { ColorManager } from 'browser/ColorManager';\nimport { RenderService } from 'browser/services/RenderService';\nimport { ICharSizeService, IRenderService, IMouseService, ISelectionService, ISoundService, ICoreBrowserService, ICharacterJoinerService, IDecorationService } from 'browser/services/Services';\nimport { CharSizeService } from 'browser/services/CharSizeService';\nimport { IBuffer } from 'common/buffer/Types';\nimport { MouseService } from 'browser/services/MouseService';\nimport { Linkifier2 } from 'browser/Linkifier2';\nimport { CoreBrowserService } from 'browser/services/CoreBrowserService';\nimport { CoreTerminal } from 'common/CoreTerminal';\nimport { color, rgba } from 'browser/Color';\nimport { CharacterJoinerService } from 'browser/services/CharacterJoinerService';\nimport { toRgbString } from 'common/input/XParseColor';\nimport { DecorationService } from 'browser/services/DecorationService';\n\n// Let it work inside Node.js for automated testing purposes.\nconst document: Document = (typeof window !== 'undefined') ? window.document : null as any;\n\nexport class Terminal extends CoreTerminal implements ITerminal {\n public textarea: HTMLTextAreaElement | undefined;\n public element: HTMLElement | undefined;\n public screenElement: HTMLElement | undefined;\n\n private _document: Document | undefined;\n private _viewportScrollArea: HTMLElement | undefined;\n private _viewportElement: HTMLElement | undefined;\n private _helperContainer: HTMLElement | undefined;\n private _compositionView: HTMLElement | undefined;\n\n // private _visualBellTimer: number;\n\n public browser: IBrowser = Browser as any;\n\n private _customKeyEventHandler: CustomKeyEventHandler | undefined;\n\n // browser services\n private _charSizeService: ICharSizeService | undefined;\n private _mouseService: IMouseService | undefined;\n private _renderService: IRenderService | undefined;\n private _characterJoinerService: ICharacterJoinerService | undefined;\n private _selectionService: ISelectionService | undefined;\n private _soundService: ISoundService | undefined;\n\n /**\n * Records whether the keydown event has already been handled and triggered a data event, if so\n * the keypress event should not trigger a data event but should still print to the textarea so\n * screen readers will announce it.\n */\n private _keyDownHandled: boolean = false;\n\n /**\n * Records whether the keypress event has already been handled and triggered a data event, if so\n * the input event should not trigger a data event but should still print to the textarea so\n * screen readers will announce it.\n */\n private _keyPressHandled: boolean = false;\n\n /**\n * Records whether there has been a keydown event for a dead key without a corresponding keydown\n * event for the composed/alternative character. If we cancel the keydown event for the dead key,\n * no events will be emitted for the final character.\n */\n private _unprocessedDeadKey: boolean = false;\n\n public linkifier: ILinkifier;\n public linkifier2: ILinkifier2;\n public viewport: IViewport | undefined;\n public decorationService: IDecorationService;\n private _compositionHelper: ICompositionHelper | undefined;\n private _mouseZoneManager: IMouseZoneManager | undefined;\n private _accessibilityManager: AccessibilityManager | undefined;\n private _colorManager: ColorManager | undefined;\n private _theme: ITheme | undefined;\n\n private _onCursorMove = new EventEmitter();\n public get onCursorMove(): IEvent { return this._onCursorMove.event; }\n private _onKey = new EventEmitter<{ key: string, domEvent: KeyboardEvent }>();\n public get onKey(): IEvent<{ key: string, domEvent: KeyboardEvent }> { return this._onKey.event; }\n private _onRender = new EventEmitter<{ start: number, end: number }>();\n public get onRender(): IEvent<{ start: number, end: number }> { return this._onRender.event; }\n private _onSelectionChange = new EventEmitter();\n public get onSelectionChange(): IEvent { return this._onSelectionChange.event; }\n private _onTitleChange = new EventEmitter();\n public get onTitleChange(): IEvent { return this._onTitleChange.event; }\n private _onBell = new EventEmitter();\n public get onBell(): IEvent { return this._onBell.event; }\n\n private _onFocus = new EventEmitter();\n public get onFocus(): IEvent { return this._onFocus.event; }\n private _onBlur = new EventEmitter();\n public get onBlur(): IEvent { return this._onBlur.event; }\n private _onA11yCharEmitter = new EventEmitter();\n public get onA11yChar(): IEvent { return this._onA11yCharEmitter.event; }\n private _onA11yTabEmitter = new EventEmitter();\n public get onA11yTab(): IEvent { return this._onA11yTabEmitter.event; }\n\n /**\n * Creates a new `Terminal` object.\n *\n * @param options An object containing a set of options, the available options are:\n * - `cursorBlink` (boolean): Whether the terminal cursor blinks\n * - `cols` (number): The number of columns of the terminal (horizontal size)\n * - `rows` (number): The number of rows of the terminal (vertical size)\n *\n * @public\n * @class Xterm Xterm\n * @alias module:xterm/src/xterm\n */\n constructor(\n options: Partial = {}\n ) {\n super(options);\n\n this._setup();\n\n this.linkifier = this._instantiationService.createInstance(Linkifier);\n this.linkifier2 = this.register(this._instantiationService.createInstance(Linkifier2));\n this.decorationService = this.register(this._instantiationService.createInstance(DecorationService));\n\n // Setup InputHandler listeners\n this.register(this._inputHandler.onRequestBell(() => this.bell()));\n this.register(this._inputHandler.onRequestRefreshRows((start, end) => this.refresh(start, end)));\n this.register(this._inputHandler.onRequestSendFocus(() => this._reportFocus()));\n this.register(this._inputHandler.onRequestReset(() => this.reset()));\n this.register(this._inputHandler.onRequestWindowsOptionsReport(type => this._reportWindowsOptions(type)));\n this.register(this._inputHandler.onColor((event) => this._handleColorEvent(event)));\n this.register(forwardEvent(this._inputHandler.onCursorMove, this._onCursorMove));\n this.register(forwardEvent(this._inputHandler.onTitleChange, this._onTitleChange));\n this.register(forwardEvent(this._inputHandler.onA11yChar, this._onA11yCharEmitter));\n this.register(forwardEvent(this._inputHandler.onA11yTab, this._onA11yTabEmitter));\n\n // Setup listeners\n this.register(this._bufferService.onResize(e => this._afterResize(e.cols, e.rows)));\n }\n\n /**\n * Handle color event from inputhandler for OSC 4|104 | 10|110 | 11|111 | 12|112.\n * An event from OSC 4|104 may contain multiple set or report requests, and multiple\n * or none restore requests (resetting all),\n * while an event from OSC 10|110 | 11|111 | 12|112 always contains a single request.\n */\n private _handleColorEvent(event: IColorEvent): void {\n if (!this._colorManager) return;\n for (const req of event) {\n let acc: 'foreground' | 'background' | 'cursor' | 'ansi' | undefined = undefined;\n let ident = '';\n switch (req.index) {\n case ColorIndex.FOREGROUND: // OSC 10 | 110\n acc = 'foreground';\n ident = '10';\n break;\n case ColorIndex.BACKGROUND: // OSC 11 | 111\n acc = 'background';\n ident = '11';\n break;\n case ColorIndex.CURSOR: // OSC 12 | 112\n acc = 'cursor';\n ident = '12';\n break;\n default: // OSC 4 | 104\n // we can skip the [0..255] range check here (already done in inputhandler)\n acc = 'ansi';\n ident = '4;' + req.index;\n }\n if (acc) {\n switch (req.type) {\n case ColorRequestType.REPORT:\n const channels = color.toColorRGB(acc === 'ansi'\n ? this._colorManager.colors.ansi[req.index]\n : this._colorManager.colors[acc]);\n this.coreService.triggerDataEvent(`${C0.ESC}]${ident};${toRgbString(channels)}${C0.BEL}`);\n break;\n case ColorRequestType.SET:\n if (acc === 'ansi') this._colorManager.colors.ansi[req.index] = rgba.toColor(...req.color);\n else this._colorManager.colors[acc] = rgba.toColor(...req.color);\n break;\n case ColorRequestType.RESTORE:\n this._colorManager.restoreColor(req.index);\n break;\n }\n }\n }\n this._renderService?.setColors(this._colorManager.colors);\n this.viewport?.onThemeChange(this._colorManager.colors);\n }\n\n public dispose(): void {\n if (this._isDisposed) {\n return;\n }\n super.dispose();\n this._renderService?.dispose();\n this._customKeyEventHandler = undefined;\n this.write = () => { };\n this.element?.parentNode?.removeChild(this.element);\n }\n\n protected _setup(): void {\n super._setup();\n\n this._customKeyEventHandler = undefined;\n }\n\n /**\n * Convenience property to active buffer.\n */\n public get buffer(): IBuffer {\n return this.buffers.active;\n }\n\n /**\n * Focus the terminal. Delegates focus handling to the terminal's DOM element.\n */\n public focus(): void {\n if (this.textarea) {\n this.textarea.focus({ preventScroll: true });\n }\n }\n\n protected _updateOptions(key: string): void {\n super._updateOptions(key);\n\n // TODO: These listeners should be owned by individual components\n switch (key) {\n case 'fontFamily':\n case 'fontSize':\n // When the font changes the size of the cells may change which requires a renderer clear\n this._renderService?.clear();\n this._charSizeService?.measure();\n break;\n case 'cursorBlink':\n case 'cursorStyle':\n // The DOM renderer needs a row refresh to update the cursor styles\n this.refresh(this.buffer.y, this.buffer.y);\n break;\n case 'customGlyphs':\n case 'drawBoldTextInBrightColors':\n case 'letterSpacing':\n case 'lineHeight':\n case 'fontWeight':\n case 'fontWeightBold':\n case 'minimumContrastRatio':\n // When the font changes the size of the cells may change which requires a renderer clear\n if (this._renderService) {\n this._renderService.clear();\n this._renderService.onResize(this.cols, this.rows);\n this.refresh(0, this.rows - 1);\n }\n break;\n case 'rendererType':\n if (this._renderService) {\n this._renderService.setRenderer(this._createRenderer());\n this._renderService.onResize(this.cols, this.rows);\n }\n break;\n case 'scrollback':\n this.viewport?.syncScrollArea();\n break;\n case 'screenReaderMode':\n if (this.optionsService.rawOptions.screenReaderMode) {\n if (!this._accessibilityManager && this._renderService) {\n this._accessibilityManager = new AccessibilityManager(this, this._renderService);\n }\n } else {\n this._accessibilityManager?.dispose();\n this._accessibilityManager = undefined;\n }\n break;\n case 'tabStopWidth': this.buffers.setupTabStops(); break;\n case 'theme':\n this._setTheme(this.optionsService.rawOptions.theme);\n break;\n }\n }\n\n /**\n * Binds the desired focus behavior on a given terminal object.\n */\n private _onTextAreaFocus(ev: KeyboardEvent): void {\n if (this.coreService.decPrivateModes.sendFocus) {\n this.coreService.triggerDataEvent(C0.ESC + '[I');\n }\n this.updateCursorStyle(ev);\n this.element!.classList.add('focus');\n this._showCursor();\n this._onFocus.fire();\n }\n\n /**\n * Blur the terminal, calling the blur function on the terminal's underlying\n * textarea.\n */\n public blur(): void {\n return this.textarea?.blur();\n }\n\n /**\n * Binds the desired blur behavior on a given terminal object.\n */\n private _onTextAreaBlur(): void {\n // Text can safely be removed on blur. Doing it earlier could interfere with\n // screen readers reading it out.\n this.textarea!.value = '';\n this.refresh(this.buffer.y, this.buffer.y);\n if (this.coreService.decPrivateModes.sendFocus) {\n this.coreService.triggerDataEvent(C0.ESC + '[O');\n }\n this.element!.classList.remove('focus');\n this._onBlur.fire();\n }\n\n private _syncTextArea(): void {\n if (!this.textarea || !this.buffer.isCursorInViewport || this._compositionHelper!.isComposing || !this._renderService) {\n return;\n }\n const cursorY = this.buffer.ybase + this.buffer.y;\n const bufferLine = this.buffer.lines.get(cursorY);\n if (!bufferLine) {\n return;\n }\n const cursorX = Math.min(this.buffer.x, this.cols - 1);\n const cellHeight = this._renderService.dimensions.actualCellHeight;\n const width = bufferLine.getWidth(cursorX);\n const cellWidth = this._renderService.dimensions.actualCellWidth * width;\n const cursorTop = this.buffer.y * this._renderService.dimensions.actualCellHeight;\n const cursorLeft = cursorX * this._renderService.dimensions.actualCellWidth;\n\n // Sync the textarea to the exact position of the composition view so the IME knows where the\n // text is.\n this.textarea.style.left = cursorLeft + 'px';\n this.textarea.style.top = cursorTop + 'px';\n this.textarea.style.width = cellWidth + 'px';\n this.textarea.style.height = cellHeight + 'px';\n this.textarea.style.lineHeight = cellHeight + 'px';\n this.textarea.style.zIndex = '-5';\n }\n\n /**\n * Initialize default behavior\n */\n private _initGlobal(): void {\n this._bindKeys();\n\n // Bind clipboard functionality\n this.register(addDisposableDomListener(this.element!, 'copy', (event: ClipboardEvent) => {\n // If mouse events are active it means the selection manager is disabled and\n // copy should be handled by the host program.\n if (!this.hasSelection()) {\n return;\n }\n copyHandler(event, this._selectionService!);\n }));\n const pasteHandlerWrapper = (event: ClipboardEvent): void => handlePasteEvent(event, this.textarea!, this.coreService);\n this.register(addDisposableDomListener(this.textarea!, 'paste', pasteHandlerWrapper));\n this.register(addDisposableDomListener(this.element!, 'paste', pasteHandlerWrapper));\n\n // Handle right click context menus\n if (Browser.isFirefox) {\n // Firefox doesn't appear to fire the contextmenu event on right click\n this.register(addDisposableDomListener(this.element!, 'mousedown', (event: MouseEvent) => {\n if (event.button === 2) {\n rightClickHandler(event, this.textarea!, this.screenElement!, this._selectionService!, this.options.rightClickSelectsWord);\n }\n }));\n } else {\n this.register(addDisposableDomListener(this.element!, 'contextmenu', (event: MouseEvent) => {\n rightClickHandler(event, this.textarea!, this.screenElement!, this._selectionService!, this.options.rightClickSelectsWord);\n }));\n }\n\n // Move the textarea under the cursor when middle clicking on Linux to ensure\n // middle click to paste selection works. This only appears to work in Chrome\n // at the time is writing.\n if (Browser.isLinux) {\n // Use auxclick event over mousedown the latter doesn't seem to work. Note\n // that the regular click event doesn't fire for the middle mouse button.\n this.register(addDisposableDomListener(this.element!, 'auxclick', (event: MouseEvent) => {\n if (event.button === 1) {\n moveTextAreaUnderMouseCursor(event, this.textarea!, this.screenElement!);\n }\n }));\n }\n }\n\n /**\n * Apply key handling to the terminal\n */\n private _bindKeys(): void {\n this.register(addDisposableDomListener(this.textarea!, 'keyup', (ev: KeyboardEvent) => this._keyUp(ev), true));\n this.register(addDisposableDomListener(this.textarea!, 'keydown', (ev: KeyboardEvent) => this._keyDown(ev), true));\n this.register(addDisposableDomListener(this.textarea!, 'keypress', (ev: KeyboardEvent) => this._keyPress(ev), true));\n this.register(addDisposableDomListener(this.textarea!, 'compositionstart', () => this._compositionHelper!.compositionstart()));\n this.register(addDisposableDomListener(this.textarea!, 'compositionupdate', (e: CompositionEvent) => this._compositionHelper!.compositionupdate(e)));\n this.register(addDisposableDomListener(this.textarea!, 'compositionend', () => this._compositionHelper!.compositionend()));\n this.register(addDisposableDomListener(this.textarea!, 'input', (ev: InputEvent) => this._inputEvent(ev), true));\n this.register(this.onRender(() => this._compositionHelper!.updateCompositionElements()));\n this.register(this.onRender(e => this._queueLinkification(e.start, e.end)));\n }\n\n /**\n * Opens the terminal within an element.\n *\n * @param parent The element to create the terminal within.\n */\n public open(parent: HTMLElement): void {\n if (!parent) {\n throw new Error('Terminal requires a parent element.');\n }\n\n if (!parent.isConnected) {\n this._logService.debug('Terminal.open was called on an element that was not attached to the DOM');\n }\n\n this._document = parent.ownerDocument!;\n\n // Create main element container\n this.element = this._document.createElement('div');\n this.element.dir = 'ltr'; // xterm.css assumes LTR\n this.element.classList.add('terminal');\n this.element.classList.add('xterm');\n this.element.setAttribute('tabindex', '0');\n parent.appendChild(this.element);\n\n // Performance: Use a document fragment to build the terminal\n // viewport and helper elements detached from the DOM\n const fragment = document.createDocumentFragment();\n this._viewportElement = document.createElement('div');\n this._viewportElement.classList.add('xterm-viewport');\n fragment.appendChild(this._viewportElement);\n this._viewportScrollArea = document.createElement('div');\n this._viewportScrollArea.classList.add('xterm-scroll-area');\n this._viewportElement.appendChild(this._viewportScrollArea);\n\n this.screenElement = document.createElement('div');\n this.screenElement.classList.add('xterm-screen');\n // Create the container that will hold helpers like the textarea for\n // capturing DOM Events. Then produce the helpers.\n this._helperContainer = document.createElement('div');\n this._helperContainer.classList.add('xterm-helpers');\n this.screenElement.appendChild(this._helperContainer);\n fragment.appendChild(this.screenElement);\n\n this.textarea = document.createElement('textarea');\n this.textarea.classList.add('xterm-helper-textarea');\n this.textarea.setAttribute('aria-label', Strings.promptLabel);\n this.textarea.setAttribute('aria-multiline', 'false');\n this.textarea.setAttribute('autocorrect', 'off');\n this.textarea.setAttribute('autocapitalize', 'off');\n this.textarea.setAttribute('spellcheck', 'false');\n this.textarea.tabIndex = 0;\n this.register(addDisposableDomListener(this.textarea, 'focus', (ev: KeyboardEvent) => this._onTextAreaFocus(ev)));\n this.register(addDisposableDomListener(this.textarea, 'blur', () => this._onTextAreaBlur()));\n this._helperContainer.appendChild(this.textarea);\n\n const coreBrowserService = this._instantiationService.createInstance(CoreBrowserService, this.textarea);\n this._instantiationService.setService(ICoreBrowserService, coreBrowserService);\n\n this._charSizeService = this._instantiationService.createInstance(CharSizeService, this._document, this._helperContainer);\n this._instantiationService.setService(ICharSizeService, this._charSizeService);\n\n this._theme = this.options.theme || this._theme;\n this._colorManager = new ColorManager(document, this.options.allowTransparency);\n this.register(this.optionsService.onOptionChange(e => this._colorManager!.onOptionsChange(e)));\n this._colorManager.setTheme(this._theme);\n\n this._characterJoinerService = this._instantiationService.createInstance(CharacterJoinerService);\n this._instantiationService.setService(ICharacterJoinerService, this._characterJoinerService);\n\n const renderer = this._createRenderer();\n this._renderService = this.register(this._instantiationService.createInstance(RenderService, renderer, this.rows, this.screenElement));\n this._instantiationService.setService(IRenderService, this._renderService);\n this.register(this._renderService.onRenderedBufferChange(e => this._onRender.fire(e)));\n this.onResize(e => this._renderService!.resize(e.cols, e.rows));\n\n this._compositionView = document.createElement('div');\n this._compositionView.classList.add('composition-view');\n this._compositionHelper = this._instantiationService.createInstance(CompositionHelper, this.textarea, this._compositionView);\n this._helperContainer.appendChild(this._compositionView);\n\n // Performance: Add viewport and helper elements from the fragment\n this.element.appendChild(fragment);\n\n this._soundService = this._instantiationService.createInstance(SoundService);\n this._instantiationService.setService(ISoundService, this._soundService);\n this._mouseService = this._instantiationService.createInstance(MouseService);\n this._instantiationService.setService(IMouseService, this._mouseService);\n\n this.viewport = this._instantiationService.createInstance(Viewport,\n (amount: number) => this.scrollLines(amount, true, ScrollSource.VIEWPORT),\n this._viewportElement,\n this._viewportScrollArea,\n this.element\n );\n this.viewport.onThemeChange(this._colorManager.colors);\n this.register(this._inputHandler.onRequestSyncScrollBar(() => this.viewport!.syncScrollArea()));\n this.register(this.viewport);\n\n this.register(this.onCursorMove(() => {\n this._renderService!.onCursorMove();\n this._syncTextArea();\n }));\n this.register(this.onResize(() => this._renderService!.onResize(this.cols, this.rows)));\n this.register(this.onBlur(() => this._renderService!.onBlur()));\n this.register(this.onFocus(() => this._renderService!.onFocus()));\n this.register(this._renderService.onDimensionsChange(() => this.viewport!.syncScrollArea()));\n\n this._selectionService = this.register(this._instantiationService.createInstance(SelectionService,\n this.element,\n this.screenElement,\n this.linkifier2\n ));\n this._instantiationService.setService(ISelectionService, this._selectionService);\n this.register(this._selectionService.onRequestScrollLines(e => this.scrollLines(e.amount, e.suppressScrollEvent)));\n this.register(this._selectionService.onSelectionChange(() => this._onSelectionChange.fire()));\n this.register(this._selectionService.onRequestRedraw(e => this._renderService!.onSelectionChanged(e.start, e.end, e.columnSelectMode)));\n this.register(this._selectionService.onLinuxMouseSelection(text => {\n // If there's a new selection, put it into the textarea, focus and select it\n // in order to register it as a selection on the OS. This event is fired\n // only on Linux to enable middle click to paste selection.\n this.textarea!.value = text;\n this.textarea!.focus();\n this.textarea!.select();\n }));\n this.register(this._onScroll.event(ev => {\n this.viewport!.syncScrollArea();\n this._selectionService!.refresh();\n }));\n this.register(addDisposableDomListener(this._viewportElement, 'scroll', () => this._selectionService!.refresh()));\n\n this._mouseZoneManager = this._instantiationService.createInstance(MouseZoneManager, this.element, this.screenElement);\n this.register(this._mouseZoneManager);\n this.register(this.onScroll(() => this._mouseZoneManager!.clearAll()));\n this.linkifier.attachToDom(this.element, this._mouseZoneManager);\n this.linkifier2.attachToDom(this.screenElement, this._mouseService, this._renderService);\n\n this.decorationService.attachToDom(this.screenElement, this._renderService, this._bufferService);\n // This event listener must be registered aftre MouseZoneManager is created\n this.register(addDisposableDomListener(this.element, 'mousedown', (e: MouseEvent) => this._selectionService!.onMouseDown(e)));\n\n // apply mouse event classes set by escape codes before terminal was attached\n if (this.coreMouseService.areMouseEventsActive) {\n this._selectionService.disable();\n this.element.classList.add('enable-mouse-events');\n } else {\n this._selectionService.enable();\n }\n\n if (this.options.screenReaderMode) {\n // Note that this must be done *after* the renderer is created in order to\n // ensure the correct order of the dprchange event\n this._accessibilityManager = new AccessibilityManager(this, this._renderService);\n }\n\n // Measure the character size\n this._charSizeService.measure();\n\n // Setup loop that draws to screen\n this.refresh(0, this.rows - 1);\n\n // Initialize global actions that need to be taken on the document.\n this._initGlobal();\n\n // Listen for mouse events and translate\n // them into terminal mouse protocols.\n this.bindMouse();\n }\n\n private _createRenderer(): IRenderer {\n switch (this.options.rendererType) {\n case 'canvas': return this._instantiationService.createInstance(Renderer, this._colorManager!.colors, this.screenElement!, this.linkifier, this.linkifier2);\n case 'dom': return this._instantiationService.createInstance(DomRenderer, this._colorManager!.colors, this.element!, this.screenElement!, this._viewportElement!, this.linkifier, this.linkifier2);\n default: throw new Error(`Unrecognized rendererType \"${this.options.rendererType}\"`);\n }\n }\n\n /**\n * Sets the theme on the renderer. The renderer must have been initialized.\n * @param theme The theme to set.\n */\n private _setTheme(theme: ITheme): void {\n this._theme = theme;\n this._colorManager?.setTheme(theme);\n this._renderService?.setColors(this._colorManager!.colors);\n this.viewport?.onThemeChange(this._colorManager!.colors);\n }\n\n /**\n * Bind certain mouse events to the terminal.\n * By default only 3 button + wheel up/down is ativated. For higher buttons\n * no mouse report will be created. Typically the standard actions will be active.\n *\n * There are several reasons not to enable support for higher buttons/wheel:\n * - Button 4 and 5 are typically used for history back and forward navigation,\n * there is no straight forward way to supress/intercept those standard actions.\n * - Support for higher buttons does not work in some platform/browser combinations.\n * - Left/right wheel was not tested.\n * - Emulators vary in mouse button support, typically only 3 buttons and\n * wheel up/down work reliable.\n *\n * TODO: Move mouse event code into its own file.\n */\n public bindMouse(): void {\n const self = this;\n const el = this.element!;\n\n // send event to CoreMouseService\n function sendEvent(ev: MouseEvent | WheelEvent): boolean {\n // get mouse coordinates\n const pos = self._mouseService!.getRawByteCoords(ev, self.screenElement!, self.cols, self.rows);\n if (!pos) {\n return false;\n }\n\n let but: CoreMouseButton;\n let action: CoreMouseAction | undefined;\n switch ((ev as any).overrideType || ev.type) {\n case 'mousemove':\n action = CoreMouseAction.MOVE;\n if (ev.buttons === undefined) {\n // buttons is not supported on macOS, try to get a value from button instead\n but = CoreMouseButton.NONE;\n if (ev.button !== undefined) {\n but = ev.button < 3 ? ev.button : CoreMouseButton.NONE;\n }\n } else {\n // according to MDN buttons only reports up to button 5 (AUX2)\n but = ev.buttons & 1 ? CoreMouseButton.LEFT :\n ev.buttons & 4 ? CoreMouseButton.MIDDLE :\n ev.buttons & 2 ? CoreMouseButton.RIGHT :\n CoreMouseButton.NONE; // fallback to NONE\n }\n break;\n case 'mouseup':\n action = CoreMouseAction.UP;\n but = ev.button < 3 ? ev.button : CoreMouseButton.NONE;\n break;\n case 'mousedown':\n action = CoreMouseAction.DOWN;\n but = ev.button < 3 ? ev.button : CoreMouseButton.NONE;\n break;\n case 'wheel':\n // only UP/DOWN wheel events are respected\n if ((ev as WheelEvent).deltaY !== 0) {\n action = (ev as WheelEvent).deltaY < 0 ? CoreMouseAction.UP : CoreMouseAction.DOWN;\n }\n but = CoreMouseButton.WHEEL;\n break;\n default:\n // dont handle other event types by accident\n return false;\n }\n\n // exit if we cannot determine valid button/action values\n // do nothing for higher buttons than wheel\n if (action === undefined || but === undefined || but > CoreMouseButton.WHEEL) {\n return false;\n }\n\n return self.coreMouseService.triggerMouseEvent({\n col: pos.x - 33, // FIXME: why -33 here?\n row: pos.y - 33,\n button: but,\n action,\n ctrl: ev.ctrlKey,\n alt: ev.altKey,\n shift: ev.shiftKey\n });\n }\n\n /**\n * Event listener state handling.\n * We listen to the onProtocolChange event of CoreMouseService and put\n * requested listeners in `requestedEvents`. With this the listeners\n * have all bits to do the event listener juggling.\n * Note: 'mousedown' currently is \"always on\" and not managed\n * by onProtocolChange.\n */\n const requestedEvents: { [key: string]: ((ev: Event) => void) | null } = {\n mouseup: null,\n wheel: null,\n mousedrag: null,\n mousemove: null\n };\n const eventListeners: { [key: string]: (ev: any) => void | boolean } = {\n mouseup: (ev: MouseEvent) => {\n sendEvent(ev);\n if (!ev.buttons) {\n // if no other button is held remove global handlers\n this._document!.removeEventListener('mouseup', requestedEvents.mouseup!);\n if (requestedEvents.mousedrag) {\n this._document!.removeEventListener('mousemove', requestedEvents.mousedrag);\n }\n }\n return this.cancel(ev);\n },\n wheel: (ev: WheelEvent) => {\n sendEvent(ev);\n return this.cancel(ev, true);\n },\n mousedrag: (ev: MouseEvent) => {\n // deal only with move while a button is held\n if (ev.buttons) {\n sendEvent(ev);\n }\n },\n mousemove: (ev: MouseEvent) => {\n // deal only with move without any button\n if (!ev.buttons) {\n sendEvent(ev);\n }\n }\n };\n this.register(this.coreMouseService.onProtocolChange(events => {\n // apply global changes on events\n if (events) {\n if (this.optionsService.rawOptions.logLevel === 'debug') {\n this._logService.debug('Binding to mouse events:', this.coreMouseService.explainEvents(events));\n }\n this.element!.classList.add('enable-mouse-events');\n this._selectionService!.disable();\n } else {\n this._logService.debug('Unbinding from mouse events.');\n this.element!.classList.remove('enable-mouse-events');\n this._selectionService!.enable();\n }\n\n // add/remove handlers from requestedEvents\n\n if (!(events & CoreMouseEventType.MOVE)) {\n el.removeEventListener('mousemove', requestedEvents.mousemove!);\n requestedEvents.mousemove = null;\n } else if (!requestedEvents.mousemove) {\n el.addEventListener('mousemove', eventListeners.mousemove);\n requestedEvents.mousemove = eventListeners.mousemove;\n }\n\n if (!(events & CoreMouseEventType.WHEEL)) {\n el.removeEventListener('wheel', requestedEvents.wheel!);\n requestedEvents.wheel = null;\n } else if (!requestedEvents.wheel) {\n el.addEventListener('wheel', eventListeners.wheel, { passive: false });\n requestedEvents.wheel = eventListeners.wheel;\n }\n\n if (!(events & CoreMouseEventType.UP)) {\n this._document!.removeEventListener('mouseup', requestedEvents.mouseup!);\n requestedEvents.mouseup = null;\n } else if (!requestedEvents.mouseup) {\n requestedEvents.mouseup = eventListeners.mouseup;\n }\n\n if (!(events & CoreMouseEventType.DRAG)) {\n this._document!.removeEventListener('mousemove', requestedEvents.mousedrag!);\n requestedEvents.mousedrag = null;\n } else if (!requestedEvents.mousedrag) {\n requestedEvents.mousedrag = eventListeners.mousedrag;\n }\n }));\n // force initial onProtocolChange so we dont miss early mouse requests\n this.coreMouseService.activeProtocol = this.coreMouseService.activeProtocol;\n\n /**\n * \"Always on\" event listeners.\n */\n this.register(addDisposableDomListener(el, 'mousedown', (ev: MouseEvent) => {\n ev.preventDefault();\n this.focus();\n\n // Don't send the mouse button to the pty if mouse events are disabled or\n // if the selection manager is having selection forced (ie. a modifier is\n // held).\n if (!this.coreMouseService.areMouseEventsActive || this._selectionService!.shouldForceSelection(ev)) {\n return;\n }\n\n sendEvent(ev);\n\n // Register additional global handlers which should keep reporting outside\n // of the terminal element.\n // Note: Other emulators also do this for 'mousedown' while a button\n // is held, we currently limit 'mousedown' to the terminal only.\n if (requestedEvents.mouseup) {\n this._document!.addEventListener('mouseup', requestedEvents.mouseup);\n }\n if (requestedEvents.mousedrag) {\n this._document!.addEventListener('mousemove', requestedEvents.mousedrag);\n }\n\n return this.cancel(ev);\n }));\n\n this.register(addDisposableDomListener(el, 'wheel', (ev: WheelEvent) => {\n // do nothing, if app side handles wheel itself\n if (requestedEvents.wheel) return;\n\n if (!this.buffer.hasScrollback) {\n // Convert wheel events into up/down events when the buffer does not have scrollback, this\n // enables scrolling in apps hosted in the alt buffer such as vim or tmux.\n const amount = this.viewport!.getLinesScrolled(ev);\n\n // Do nothing if there's no vertical scroll\n if (amount === 0) {\n return;\n }\n\n // Construct and send sequences\n const sequence = C0.ESC + (this.coreService.decPrivateModes.applicationCursorKeys ? 'O' : '[') + (ev.deltaY < 0 ? 'A' : 'B');\n let data = '';\n for (let i = 0; i < Math.abs(amount); i++) {\n data += sequence;\n }\n this.coreService.triggerDataEvent(data, true);\n return this.cancel(ev, true);\n }\n\n // normal viewport scrolling\n // conditionally stop event, if the viewport still had rows to scroll within\n if (this.viewport!.onWheel(ev)) {\n return this.cancel(ev);\n }\n }, { passive: false }));\n\n this.register(addDisposableDomListener(el, 'touchstart', (ev: TouchEvent) => {\n if (this.coreMouseService.areMouseEventsActive) return;\n this.viewport!.onTouchStart(ev);\n return this.cancel(ev);\n }, { passive: true }));\n\n this.register(addDisposableDomListener(el, 'touchmove', (ev: TouchEvent) => {\n if (this.coreMouseService.areMouseEventsActive) return;\n if (!this.viewport!.onTouchMove(ev)) {\n return this.cancel(ev);\n }\n }, { passive: false }));\n }\n\n\n /**\n * Tells the renderer to refresh terminal content between two rows (inclusive) at the next\n * opportunity.\n * @param start The row to start from (between 0 and this.rows - 1).\n * @param end The row to end at (between start and this.rows - 1).\n */\n public refresh(start: number, end: number): void {\n this._renderService?.refreshRows(start, end);\n }\n\n /**\n * Queues linkification for the specified rows.\n * @param start The row to start from (between 0 and this.rows - 1).\n * @param end The row to end at (between start and this.rows - 1).\n */\n private _queueLinkification(start: number, end: number): void {\n this.linkifier?.linkifyRows(start, end);\n }\n\n /**\n * Change the cursor style for different selection modes\n */\n public updateCursorStyle(ev: KeyboardEvent): void {\n if (this._selectionService?.shouldColumnSelect(ev)) {\n this.element!.classList.add('column-select');\n } else {\n this.element!.classList.remove('column-select');\n }\n }\n\n /**\n * Display the cursor element\n */\n private _showCursor(): void {\n if (!this.coreService.isCursorInitialized) {\n this.coreService.isCursorInitialized = true;\n this.refresh(this.buffer.y, this.buffer.y);\n }\n }\n\n public scrollLines(disp: number, suppressScrollEvent?: boolean, source = ScrollSource.TERMINAL): void {\n super.scrollLines(disp, suppressScrollEvent, source);\n this.refresh(0, this.rows - 1);\n }\n\n public paste(data: string): void {\n paste(data, this.textarea!, this.coreService);\n }\n\n /**\n * Attaches a custom key event handler which is run before keys are processed,\n * giving consumers of xterm.js ultimate control as to what keys should be\n * processed by the terminal and what keys should not.\n * @param customKeyEventHandler The custom KeyboardEvent handler to attach.\n * This is a function that takes a KeyboardEvent, allowing consumers to stop\n * propagation and/or prevent the default action. The function returns whether\n * the event should be processed by xterm.js.\n */\n public attachCustomKeyEventHandler(customKeyEventHandler: CustomKeyEventHandler): void {\n this._customKeyEventHandler = customKeyEventHandler;\n }\n\n /**\n * Registers a link matcher, allowing custom link patterns to be matched and\n * handled.\n * @param regex The regular expression to search for, specifically\n * this searches the textContent of the rows. You will want to use \\s to match\n * a space ' ' character for example.\n * @param handler The callback when the link is called.\n * @param options Options for the link matcher.\n * @return The ID of the new matcher, this can be used to deregister.\n */\n public registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: ILinkMatcherOptions): number {\n const matcherId = this.linkifier.registerLinkMatcher(regex, handler, options);\n this.refresh(0, this.rows - 1);\n return matcherId;\n }\n\n /**\n * Deregisters a link matcher if it has been registered.\n * @param matcherId The link matcher's ID (returned after register)\n */\n public deregisterLinkMatcher(matcherId: number): void {\n if (this.linkifier.deregisterLinkMatcher(matcherId)) {\n this.refresh(0, this.rows - 1);\n }\n }\n\n public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {\n return this.linkifier2.registerLinkProvider(linkProvider);\n }\n\n public registerCharacterJoiner(handler: CharacterJoinerHandler): number {\n if (!this._characterJoinerService) {\n throw new Error('Terminal must be opened first');\n }\n const joinerId = this._characterJoinerService.register(handler);\n this.refresh(0, this.rows - 1);\n return joinerId;\n }\n\n public deregisterCharacterJoiner(joinerId: number): void {\n if (!this._characterJoinerService) {\n throw new Error('Terminal must be opened first');\n }\n if (this._characterJoinerService.deregister(joinerId)) {\n this.refresh(0, this.rows - 1);\n }\n }\n\n public get markers(): IMarker[] {\n return this.buffer.markers;\n }\n\n public addMarker(cursorYOffset: number): IMarker | undefined {\n // Disallow markers on the alt buffer\n if (this.buffer !== this.buffers.normal) {\n return;\n }\n\n return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + cursorYOffset);\n }\n\n public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined {\n return this.decorationService!.registerDecoration(decorationOptions);\n }\n\n /**\n * Gets whether the terminal has an active selection.\n */\n public hasSelection(): boolean {\n return this._selectionService ? this._selectionService.hasSelection : false;\n }\n\n /**\n * Selects text within the terminal.\n * @param column The column the selection starts at..\n * @param row The row the selection starts at.\n * @param length The length of the selection.\n */\n public select(column: number, row: number, length: number): void {\n this._selectionService!.setSelection(column, row, length);\n }\n\n /**\n * Gets the terminal's current selection, this is useful for implementing copy\n * behavior outside of xterm.js.\n */\n public getSelection(): string {\n return this._selectionService ? this._selectionService.selectionText : '';\n }\n\n public getSelectionPosition(): ISelectionPosition | undefined {\n if (!this._selectionService || !this._selectionService.hasSelection) {\n return undefined;\n }\n\n return {\n startColumn: this._selectionService.selectionStart![0],\n startRow: this._selectionService.selectionStart![1],\n endColumn: this._selectionService.selectionEnd![0],\n endRow: this._selectionService.selectionEnd![1]\n };\n }\n\n /**\n * Clears the current terminal selection.\n */\n public clearSelection(): void {\n this._selectionService?.clearSelection();\n }\n\n /**\n * Selects all text within the terminal.\n */\n public selectAll(): void {\n this._selectionService?.selectAll();\n }\n\n public selectLines(start: number, end: number): void {\n this._selectionService?.selectLines(start, end);\n }\n\n /**\n * Handle a keydown event\n * Key Resources:\n * - https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent\n * @param ev The keydown event to be handled.\n */\n protected _keyDown(event: KeyboardEvent): boolean | undefined {\n this._keyDownHandled = false;\n\n if (this._customKeyEventHandler && this._customKeyEventHandler(event) === false) {\n return false;\n }\n\n if (!this._compositionHelper!.keydown(event)) {\n if (this.buffer.ybase !== this.buffer.ydisp) {\n this._bufferService.scrollToBottom();\n }\n return false;\n }\n\n if (event.key === 'Dead' || event.key === 'AltGraph') {\n this._unprocessedDeadKey = true;\n }\n\n const result = evaluateKeyboardEvent(event, this.coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta);\n\n this.updateCursorStyle(event);\n\n if (result.type === KeyboardResultType.PAGE_DOWN || result.type === KeyboardResultType.PAGE_UP) {\n const scrollCount = this.rows - 1;\n this.scrollLines(result.type === KeyboardResultType.PAGE_UP ? -scrollCount : scrollCount);\n return this.cancel(event, true);\n }\n\n if (result.type === KeyboardResultType.SELECT_ALL) {\n this.selectAll();\n }\n\n if (this._isThirdLevelShift(this.browser, event)) {\n return true;\n }\n\n if (result.cancel) {\n // The event is canceled at the end already, is this necessary?\n this.cancel(event, true);\n }\n\n if (!result.key) {\n return true;\n }\n\n if (this._unprocessedDeadKey) {\n this._unprocessedDeadKey = false;\n return true;\n }\n\n // If ctrl+c or enter is being sent, clear out the textarea. This is done so that screen readers\n // will announce deleted characters. This will not work 100% of the time but it should cover\n // most scenarios.\n if (result.key === C0.ETX || result.key === C0.CR) {\n this.textarea!.value = '';\n }\n\n this._onKey.fire({ key: result.key, domEvent: event });\n this._showCursor();\n this.coreService.triggerDataEvent(result.key, true);\n\n // Cancel events when not in screen reader mode so events don't get bubbled up and handled by\n // other listeners. When screen reader mode is enabled, this could cause issues if the event\n // is handled at a higher level, this is a compromise in order to echo keys to the screen\n // reader.\n if (!this.optionsService.rawOptions.screenReaderMode) {\n return this.cancel(event, true);\n }\n\n this._keyDownHandled = true;\n }\n\n private _isThirdLevelShift(browser: IBrowser, ev: KeyboardEvent): boolean {\n const thirdLevelKey =\n (browser.isMac && !this.options.macOptionIsMeta && ev.altKey && !ev.ctrlKey && !ev.metaKey) ||\n (browser.isWindows && ev.altKey && ev.ctrlKey && !ev.metaKey) ||\n (browser.isWindows && ev.getModifierState('AltGraph'));\n\n if (ev.type === 'keypress') {\n return thirdLevelKey;\n }\n\n // Don't invoke for arrows, pageDown, home, backspace, etc. (on non-keypress events)\n return thirdLevelKey && (!ev.keyCode || ev.keyCode > 47);\n }\n\n protected _keyUp(ev: KeyboardEvent): void {\n if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) {\n return;\n }\n\n if (!wasModifierKeyOnlyEvent(ev)) {\n this.focus();\n }\n\n this.updateCursorStyle(ev);\n this._keyPressHandled = false;\n }\n\n /**\n * Handle a keypress event.\n * Key Resources:\n * - https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent\n * @param ev The keypress event to be handled.\n */\n protected _keyPress(ev: KeyboardEvent): boolean {\n let key;\n\n this._keyPressHandled = false;\n\n if (this._keyDownHandled) {\n return false;\n }\n\n if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) {\n return false;\n }\n\n this.cancel(ev);\n\n if (ev.charCode) {\n key = ev.charCode;\n } else if (ev.which === null || ev.which === undefined) {\n key = ev.keyCode;\n } else if (ev.which !== 0 && ev.charCode !== 0) {\n key = ev.which;\n } else {\n return false;\n }\n\n if (!key || (\n (ev.altKey || ev.ctrlKey || ev.metaKey) && !this._isThirdLevelShift(this.browser, ev)\n )) {\n return false;\n }\n\n key = String.fromCharCode(key);\n\n this._onKey.fire({ key, domEvent: ev });\n this._showCursor();\n this.coreService.triggerDataEvent(key, true);\n\n this._keyPressHandled = true;\n\n // The key was handled so clear the dead key state, otherwise certain keystrokes like arrow\n // keys could be ignored\n this._unprocessedDeadKey = false;\n\n return true;\n }\n\n /**\n * Handle an input event.\n * Key Resources:\n * - https://developer.mozilla.org/en-US/docs/Web/API/InputEvent\n * @param ev The input event to be handled.\n */\n protected _inputEvent(ev: InputEvent): boolean {\n // Only support emoji IMEs when screen reader mode is disabled as the event must bubble up to\n // support reading out character input which can doubling up input characters\n if (ev.data && ev.inputType === 'insertText' && !ev.composed && !this.optionsService.rawOptions.screenReaderMode) {\n if (this._keyPressHandled) {\n return false;\n }\n\n // The key was handled so clear the dead key state, otherwise certain keystrokes like arrow\n // keys could be ignored\n this._unprocessedDeadKey = false;\n\n const text = ev.data;\n this.coreService.triggerDataEvent(text, true);\n\n this.cancel(ev);\n return true;\n }\n\n return false;\n }\n\n /**\n * Ring the bell.\n * Note: We could do sweet things with webaudio here\n */\n public bell(): void {\n if (this._soundBell()) {\n this._soundService?.playBellSound();\n }\n\n this._onBell.fire();\n\n // if (this._visualBell()) {\n // this.element.classList.add('visual-bell-active');\n // clearTimeout(this._visualBellTimer);\n // this._visualBellTimer = window.setTimeout(() => {\n // this.element.classList.remove('visual-bell-active');\n // }, 200);\n // }\n }\n\n /**\n * Resizes the terminal.\n *\n * @param x The number of columns to resize to.\n * @param y The number of rows to resize to.\n */\n public resize(x: number, y: number): void {\n if (x === this.cols && y === this.rows) {\n // Check if we still need to measure the char size (fixes #785).\n if (this._charSizeService && !this._charSizeService.hasValidSize) {\n this._charSizeService.measure();\n }\n return;\n }\n\n super.resize(x, y);\n }\n\n private _afterResize(x: number, y: number): void {\n this._charSizeService?.measure();\n\n // Sync the scroll area to make sure scroll events don't fire and scroll the viewport to an\n // invalid location\n this.viewport?.syncScrollArea(true);\n }\n\n /**\n * Clear the entire buffer, making the prompt line the new first line.\n */\n public clear(): void {\n if (this.buffer.ybase === 0 && this.buffer.y === 0) {\n // Don't clear if it's already clear\n return;\n }\n this.buffer.clearMarkers();\n this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)!);\n this.buffer.lines.length = 1;\n this.buffer.ydisp = 0;\n this.buffer.ybase = 0;\n this.buffer.y = 0;\n for (let i = 1; i < this.rows; i++) {\n this.buffer.lines.push(this.buffer.getBlankLine(DEFAULT_ATTR_DATA));\n }\n this.refresh(0, this.rows - 1);\n this._onScroll.fire({ position: this.buffer.ydisp, source: ScrollSource.TERMINAL });\n }\n\n /**\n * Reset terminal.\n * Note: Calling this directly from JS is synchronous but does not clear\n * input buffers and does not reset the parser, thus the terminal will\n * continue to apply pending input data.\n * If you need in band reset (synchronous with input data) consider\n * using DECSTR (soft reset, CSI ! p) or RIS instead (hard reset, ESC c).\n */\n public reset(): void {\n /**\n * Since _setup handles a full terminal creation, we have to carry forward\n * a few things that should not reset.\n */\n this.options.rows = this.rows;\n this.options.cols = this.cols;\n const customKeyEventHandler = this._customKeyEventHandler;\n\n this._setup();\n super.reset();\n this._selectionService?.reset();\n\n // reattach\n this._customKeyEventHandler = customKeyEventHandler;\n\n // do a full screen refresh\n this.refresh(0, this.rows - 1);\n this.viewport?.syncScrollArea();\n }\n\n public clearTextureAtlas(): void {\n this._renderService?.clearTextureAtlas();\n }\n\n private _reportFocus(): void {\n if (this.element?.classList.contains('focus')) {\n this.coreService.triggerDataEvent(C0.ESC + '[I');\n } else {\n this.coreService.triggerDataEvent(C0.ESC + '[O');\n }\n }\n\n private _reportWindowsOptions(type: WindowsOptionsReportType): void {\n if (!this._renderService) {\n return;\n }\n\n switch (type) {\n case WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:\n const canvasWidth = this._renderService.dimensions.scaledCanvasWidth.toFixed(0);\n const canvasHeight = this._renderService.dimensions.scaledCanvasHeight.toFixed(0);\n this.coreService.triggerDataEvent(`${C0.ESC}[4;${canvasHeight};${canvasWidth}t`);\n break;\n case WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:\n const cellWidth = this._renderService.dimensions.scaledCellWidth.toFixed(0);\n const cellHeight = this._renderService.dimensions.scaledCellHeight.toFixed(0);\n this.coreService.triggerDataEvent(`${C0.ESC}[6;${cellHeight};${cellWidth}t`);\n break;\n }\n }\n\n // TODO: Remove cancel function and cancelEvents option\n public cancel(ev: Event, force?: boolean): boolean | undefined {\n if (!this.options.cancelEvents && !force) {\n return;\n }\n ev.preventDefault();\n ev.stopPropagation();\n return false;\n }\n\n private _visualBell(): boolean {\n return false;\n // return this.options.bellStyle === 'visual' ||\n // this.options.bellStyle === 'both';\n }\n\n private _soundBell(): boolean {\n return this.options.bellStyle === 'sound';\n // return this.options.bellStyle === 'sound' ||\n // this.options.bellStyle === 'both';\n }\n}\n\n/**\n * Helpers\n */\n\nfunction wasModifierKeyOnlyEvent(ev: KeyboardEvent): boolean {\n return ev.keyCode === 16 || // Shift\n ev.keyCode === 17 || // Ctrl\n ev.keyCode === 18; // Alt\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nconst RENDER_DEBOUNCE_THRESHOLD_MS = 1000; // 1 Second\n\nimport { IRenderDebouncer } from 'browser/Types';\n\n/**\n * Debounces calls to update screen readers to update at most once configurable interval of time.\n */\nexport class TimeBasedDebouncer implements IRenderDebouncer {\n private _rowStart: number | undefined;\n private _rowEnd: number | undefined;\n private _rowCount: number | undefined;\n\n // The last moment that the Terminal was refreshed at\n private _lastRefreshMs = 0;\n // Whether a trailing refresh should be triggered due to a refresh request that was throttled\n private _additionalRefreshRequested = false;\n\n private _refreshTimeoutID: number | undefined;\n\n constructor(\n private _renderCallback: (start: number, end: number) => void,\n private readonly _debounceThresholdMS = RENDER_DEBOUNCE_THRESHOLD_MS\n ) {\n }\n\n public dispose(): void {\n if (this._refreshTimeoutID) {\n clearTimeout(this._refreshTimeoutID);\n }\n }\n\n public refresh(rowStart: number | undefined, rowEnd: number | undefined, rowCount: number): void {\n this._rowCount = rowCount;\n // Get the min/max row start/end for the arg values\n rowStart = rowStart !== undefined ? rowStart : 0;\n rowEnd = rowEnd !== undefined ? rowEnd : this._rowCount - 1;\n // Set the properties to the updated values\n this._rowStart = this._rowStart !== undefined ? Math.min(this._rowStart, rowStart) : rowStart;\n this._rowEnd = this._rowEnd !== undefined ? Math.max(this._rowEnd, rowEnd) : rowEnd;\n\n // Only refresh if the time since last refresh is above a threshold, otherwise wait for\n // enough time to pass before refreshing again.\n const refreshRequestTime: number = Date.now();\n if (refreshRequestTime - this._lastRefreshMs >= this._debounceThresholdMS) {\n // Enough time has lapsed since the last refresh; refresh immediately\n this._lastRefreshMs = refreshRequestTime;\n this._innerRefresh();\n } else if (!this._additionalRefreshRequested) {\n // This is the first additional request throttled; set up trailing refresh\n const elapsed = refreshRequestTime - this._lastRefreshMs;\n const waitPeriodBeforeTrailingRefresh = this._debounceThresholdMS - elapsed;\n this._additionalRefreshRequested = true;\n\n this._refreshTimeoutID = window.setTimeout(() => {\n this._lastRefreshMs = Date.now();\n this._innerRefresh();\n this._additionalRefreshRequested = false;\n this._refreshTimeoutID = undefined; // No longer need to clear the timeout\n }, waitPeriodBeforeTrailingRefresh);\n }\n }\n\n private _innerRefresh(): void {\n // Make sure values are set\n if (this._rowStart === undefined || this._rowEnd === undefined || this._rowCount === undefined) {\n return;\n }\n\n // Clamp values\n const start = Math.max(this._rowStart, 0);\n const end = Math.min(this._rowEnd, this._rowCount - 1);\n\n // Reset debouncer (this happens before render callback as the render could trigger it again)\n this._rowStart = undefined;\n this._rowEnd = undefined;\n\n // Run render callback\n this._renderCallback(start, end);\n }\n}\n\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Disposable } from 'common/Lifecycle';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IColorSet, IViewport } from 'browser/Types';\nimport { ICharSizeService, IRenderService } from 'browser/services/Services';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\nimport { IBuffer } from 'common/buffer/Types';\nimport { IRenderDimensions } from 'browser/renderer/Types';\n\nconst FALLBACK_SCROLL_BAR_WIDTH = 15;\n\n/**\n * Represents the viewport of a terminal, the visible area within the larger buffer of output.\n * Logic for the virtual scroll bar is included in this object.\n */\nexport class Viewport extends Disposable implements IViewport {\n public scrollBarWidth: number = 0;\n private _currentRowHeight: number = 0;\n private _currentScaledCellHeight: number = 0;\n private _lastRecordedBufferLength: number = 0;\n private _lastRecordedViewportHeight: number = 0;\n private _lastRecordedBufferHeight: number = 0;\n private _lastTouchY: number = 0;\n private _lastScrollTop: number = 0;\n private _lastHadScrollBar: boolean = false;\n private _activeBuffer: IBuffer;\n private _renderDimensions: IRenderDimensions;\n\n // Stores a partial line amount when scrolling, this is used to keep track of how much of a line\n // is scrolled so we can \"scroll\" over partial lines and feel natural on touchpads. This is a\n // quick fix and could have a more robust solution in place that reset the value when needed.\n private _wheelPartialScroll: number = 0;\n\n private _refreshAnimationFrame: number | null = null;\n private _ignoreNextScrollEvent: boolean = false;\n\n constructor(\n private readonly _scrollLines: (amount: number) => void,\n private readonly _viewportElement: HTMLElement,\n private readonly _scrollArea: HTMLElement,\n private readonly _element: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n super();\n\n // Measure the width of the scrollbar. If it is 0 we can assume it's an OSX overlay scrollbar.\n // Unfortunately the overlay scrollbar would be hidden underneath the screen element in that case,\n // therefore we account for a standard amount to make it visible\n this.scrollBarWidth = (this._viewportElement.offsetWidth - this._scrollArea.offsetWidth) || FALLBACK_SCROLL_BAR_WIDTH;\n this._lastHadScrollBar = true;\n this.register(addDisposableDomListener(this._viewportElement, 'scroll', this._onScroll.bind(this)));\n\n // Track properties used in performance critical code manually to avoid using slow getters\n this._activeBuffer = this._bufferService.buffer;\n this.register(this._bufferService.buffers.onBufferActivate(e => this._activeBuffer = e.activeBuffer));\n this._renderDimensions = this._renderService.dimensions;\n this.register(this._renderService.onDimensionsChange(e => this._renderDimensions = e));\n\n // Perform this async to ensure the ICharSizeService is ready.\n setTimeout(() => this.syncScrollArea(), 0);\n }\n\n public onThemeChange(colors: IColorSet): void {\n this._viewportElement.style.backgroundColor = colors.background.css;\n }\n\n /**\n * Refreshes row height, setting line-height, viewport height and scroll area height if\n * necessary.\n */\n private _refresh(immediate: boolean): void {\n if (immediate) {\n this._innerRefresh();\n if (this._refreshAnimationFrame !== null) {\n cancelAnimationFrame(this._refreshAnimationFrame);\n }\n return;\n }\n if (this._refreshAnimationFrame === null) {\n this._refreshAnimationFrame = requestAnimationFrame(() => this._innerRefresh());\n }\n }\n\n private _innerRefresh(): void {\n if (this._charSizeService.height > 0) {\n this._currentRowHeight = this._renderService.dimensions.scaledCellHeight / window.devicePixelRatio;\n this._currentScaledCellHeight = this._renderService.dimensions.scaledCellHeight;\n this._lastRecordedViewportHeight = this._viewportElement.offsetHeight;\n const newBufferHeight = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._renderService.dimensions.canvasHeight);\n if (this._lastRecordedBufferHeight !== newBufferHeight) {\n this._lastRecordedBufferHeight = newBufferHeight;\n this._scrollArea.style.height = this._lastRecordedBufferHeight + 'px';\n }\n }\n\n // Sync scrollTop\n const scrollTop = this._bufferService.buffer.ydisp * this._currentRowHeight;\n if (this._viewportElement.scrollTop !== scrollTop) {\n // Ignore the next scroll event which will be triggered by setting the scrollTop as we do not\n // want this event to scroll the terminal\n this._ignoreNextScrollEvent = true;\n this._viewportElement.scrollTop = scrollTop;\n }\n\n // Update scroll bar width\n if (this._optionsService.rawOptions.scrollback === 0) {\n this.scrollBarWidth = 0;\n } else {\n this.scrollBarWidth = (this._viewportElement.offsetWidth - this._scrollArea.offsetWidth) || FALLBACK_SCROLL_BAR_WIDTH;\n }\n this._lastHadScrollBar = this.scrollBarWidth > 0;\n\n const elementStyle = window.getComputedStyle(this._element);\n const elementPadding = parseInt(elementStyle.paddingLeft) + parseInt(elementStyle.paddingRight);\n this._viewportElement.style.width = (this._renderService.dimensions.actualCellWidth * (this._bufferService.cols) + this.scrollBarWidth + (this._lastHadScrollBar ? elementPadding : 0)).toString() + 'px';\n this._refreshAnimationFrame = null;\n }\n\n /**\n * Updates dimensions and synchronizes the scroll area if necessary.\n */\n public syncScrollArea(immediate: boolean = false): void {\n // If buffer height changed\n if (this._lastRecordedBufferLength !== this._bufferService.buffer.lines.length) {\n this._lastRecordedBufferLength = this._bufferService.buffer.lines.length;\n this._refresh(immediate);\n return;\n }\n\n // If viewport height changed\n if (this._lastRecordedViewportHeight !== this._renderService.dimensions.canvasHeight) {\n this._refresh(immediate);\n return;\n }\n\n // If the buffer position doesn't match last scroll top\n if (this._lastScrollTop !== this._activeBuffer.ydisp * this._currentRowHeight) {\n this._refresh(immediate);\n return;\n }\n\n // If row height changed\n if (this._renderDimensions.scaledCellHeight !== this._currentScaledCellHeight) {\n this._refresh(immediate);\n return;\n }\n\n // If the scroll bar visibility changed\n if (this._lastHadScrollBar !== (this._optionsService.rawOptions.scrollback > 0)) {\n this._refresh(immediate);\n }\n }\n\n /**\n * Handles scroll events on the viewport, calculating the new viewport and requesting the\n * terminal to scroll to it.\n * @param ev The scroll event.\n */\n private _onScroll(ev: Event): void {\n // Record current scroll top position\n this._lastScrollTop = this._viewportElement.scrollTop;\n\n // Don't attempt to scroll if the element is not visible, otherwise scrollTop will be corrupt\n // which causes the terminal to scroll the buffer to the top\n if (!this._viewportElement.offsetParent) {\n return;\n }\n\n // Ignore the event if it was flagged to ignore (when the source of the event is from Viewport)\n if (this._ignoreNextScrollEvent) {\n this._ignoreNextScrollEvent = false;\n // Still trigger the scroll so lines get refreshed\n this._scrollLines(0);\n return;\n }\n\n const newRow = Math.round(this._lastScrollTop / this._currentRowHeight);\n const diff = newRow - this._bufferService.buffer.ydisp;\n this._scrollLines(diff);\n }\n\n /**\n * Handles bubbling of scroll event in case the viewport has reached top or bottom\n * @param ev The scroll event.\n * @param amount The amount scrolled\n */\n private _bubbleScroll(ev: Event, amount: number): boolean {\n const scrollPosFromTop = this._viewportElement.scrollTop + this._lastRecordedViewportHeight;\n if ((amount < 0 && this._viewportElement.scrollTop !== 0) ||\n (amount > 0 && scrollPosFromTop < this._lastRecordedBufferHeight)) {\n if (ev.cancelable) {\n ev.preventDefault();\n }\n return false;\n }\n return true;\n }\n\n /**\n * Handles mouse wheel events by adjusting the viewport's scrollTop and delegating the actual\n * scrolling to `onScroll`, this event needs to be attached manually by the consumer of\n * `Viewport`.\n * @param ev The mouse wheel event.\n */\n public onWheel(ev: WheelEvent): boolean {\n const amount = this._getPixelsScrolled(ev);\n if (amount === 0) {\n return false;\n }\n this._viewportElement.scrollTop += amount;\n return this._bubbleScroll(ev, amount);\n }\n\n private _getPixelsScrolled(ev: WheelEvent): number {\n // Do nothing if it's not a vertical scroll event\n if (ev.deltaY === 0 || ev.shiftKey) {\n return 0;\n }\n\n // Fallback to WheelEvent.DOM_DELTA_PIXEL\n let amount = this._applyScrollModifier(ev.deltaY, ev);\n if (ev.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n amount *= this._currentRowHeight;\n } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n amount *= this._currentRowHeight * this._bufferService.rows;\n }\n return amount;\n }\n\n /**\n * Gets the number of pixels scrolled by the mouse event taking into account what type of delta\n * is being used.\n * @param ev The mouse wheel event.\n */\n public getLinesScrolled(ev: WheelEvent): number {\n // Do nothing if it's not a vertical scroll event\n if (ev.deltaY === 0 || ev.shiftKey) {\n return 0;\n }\n\n // Fallback to WheelEvent.DOM_DELTA_LINE\n let amount = this._applyScrollModifier(ev.deltaY, ev);\n if (ev.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n amount /= this._currentRowHeight + 0.0; // Prevent integer division\n this._wheelPartialScroll += amount;\n amount = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1);\n this._wheelPartialScroll %= 1;\n } else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n amount *= this._bufferService.rows;\n }\n return amount;\n }\n\n private _applyScrollModifier(amount: number, ev: WheelEvent): number {\n const modifier = this._optionsService.rawOptions.fastScrollModifier;\n // Multiply the scroll speed when the modifier is down\n if ((modifier === 'alt' && ev.altKey) ||\n (modifier === 'ctrl' && ev.ctrlKey) ||\n (modifier === 'shift' && ev.shiftKey)) {\n return amount * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity;\n }\n\n return amount * this._optionsService.rawOptions.scrollSensitivity;\n }\n\n /**\n * Handles the touchstart event, recording the touch occurred.\n * @param ev The touch event.\n */\n public onTouchStart(ev: TouchEvent): void {\n this._lastTouchY = ev.touches[0].pageY;\n }\n\n /**\n * Handles the touchmove event, scrolling the viewport if the position shifted.\n * @param ev The touch event.\n */\n public onTouchMove(ev: TouchEvent): boolean {\n const deltaY = this._lastTouchY - ev.touches[0].pageY;\n this._lastTouchY = ev.touches[0].pageY;\n if (deltaY === 0) {\n return false;\n }\n this._viewportElement.scrollTop += deltaY;\n return this._bubbleScroll(ev, deltaY);\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderService } from 'browser/services/Services';\nimport { IBufferService, ICoreService, IOptionsService } from 'common/services/Services';\n\ninterface IPosition {\n start: number;\n end: number;\n}\n\n/**\n * Encapsulates the logic for handling compositionstart, compositionupdate and compositionend\n * events, displaying the in-progress composition to the UI and forwarding the final composition\n * to the handler.\n */\nexport class CompositionHelper {\n /**\n * Whether input composition is currently happening, eg. via a mobile keyboard, speech input or\n * IME. This variable determines whether the compositionText should be displayed on the UI.\n */\n private _isComposing: boolean;\n public get isComposing(): boolean { return this._isComposing; }\n\n /**\n * The position within the input textarea's value of the current composition.\n */\n private _compositionPosition: IPosition;\n\n /**\n * Whether a composition is in the process of being sent, setting this to false will cancel any\n * in-progress composition.\n */\n private _isSendingComposition: boolean;\n\n /**\n * Data already sent due to keydown event.\n */\n private _dataAlreadySent: string;\n\n constructor(\n private readonly _textarea: HTMLTextAreaElement,\n private readonly _compositionView: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @ICoreService private readonly _coreService: ICoreService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n this._isComposing = false;\n this._isSendingComposition = false;\n this._compositionPosition = { start: 0, end: 0 };\n this._dataAlreadySent = '';\n }\n\n /**\n * Handles the compositionstart event, activating the composition view.\n */\n public compositionstart(): void {\n this._isComposing = true;\n this._compositionPosition.start = this._textarea.value.length;\n this._compositionView.textContent = '';\n this._dataAlreadySent = '';\n this._compositionView.classList.add('active');\n }\n\n /**\n * Handles the compositionupdate event, updating the composition view.\n * @param ev The event.\n */\n public compositionupdate(ev: Pick): void {\n this._compositionView.textContent = ev.data;\n this.updateCompositionElements();\n setTimeout(() => {\n this._compositionPosition.end = this._textarea.value.length;\n }, 0);\n }\n\n /**\n * Handles the compositionend event, hiding the composition view and sending the composition to\n * the handler.\n */\n public compositionend(): void {\n this._finalizeComposition(true);\n }\n\n /**\n * Handles the keydown event, routing any necessary events to the CompositionHelper functions.\n * @param ev The keydown event.\n * @return Whether the Terminal should continue processing the keydown event.\n */\n public keydown(ev: KeyboardEvent): boolean {\n if (this._isComposing || this._isSendingComposition) {\n if (ev.keyCode === 229) {\n // Continue composing if the keyCode is the \"composition character\"\n return false;\n }\n if (ev.keyCode === 16 || ev.keyCode === 17 || ev.keyCode === 18) {\n // Continue composing if the keyCode is a modifier key\n return false;\n }\n // Finish composition immediately. This is mainly here for the case where enter is\n // pressed and the handler needs to be triggered before the command is executed.\n this._finalizeComposition(false);\n }\n\n if (ev.keyCode === 229) {\n // If the \"composition character\" is used but gets to this point it means a non-composition\n // character (eg. numbers and punctuation) was pressed when the IME was active.\n this._handleAnyTextareaChanges();\n return false;\n }\n\n return true;\n }\n\n /**\n * Finalizes the composition, resuming regular input actions. This is called when a composition\n * is ending.\n * @param waitForPropagation Whether to wait for events to propagate before sending\n * the input. This should be false if a non-composition keystroke is entered before the\n * compositionend event is triggered, such as enter, so that the composition is sent before\n * the command is executed.\n */\n private _finalizeComposition(waitForPropagation: boolean): void {\n this._compositionView.classList.remove('active');\n this._isComposing = false;\n\n if (!waitForPropagation) {\n // Cancel any delayed composition send requests and send the input immediately.\n this._isSendingComposition = false;\n const input = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end);\n this._coreService.triggerDataEvent(input, true);\n } else {\n // Make a deep copy of the composition position here as a new compositionstart event may\n // fire before the setTimeout executes.\n const currentCompositionPosition = {\n start: this._compositionPosition.start,\n end: this._compositionPosition.end\n };\n\n // Since composition* events happen before the changes take place in the textarea on most\n // browsers, use a setTimeout with 0ms time to allow the native compositionend event to\n // complete. This ensures the correct character is retrieved.\n // This solution was used because:\n // - The compositionend event's data property is unreliable, at least on Chromium\n // - The last compositionupdate event's data property does not always accurately describe\n // the character, a counter example being Korean where an ending consonsant can move to\n // the following character if the following input is a vowel.\n this._isSendingComposition = true;\n setTimeout(() => {\n // Ensure that the input has not already been sent\n if (this._isSendingComposition) {\n this._isSendingComposition = false;\n let input;\n // Add length of data already sent due to keydown event,\n // otherwise input characters can be duplicated. (Issue #3191)\n currentCompositionPosition.start += this._dataAlreadySent.length;\n if (this._isComposing) {\n // Use the end position to get the string if a new composition has started.\n input = this._textarea.value.substring(currentCompositionPosition.start, currentCompositionPosition.end);\n } else {\n // Don't use the end position here in order to pick up any characters after the\n // composition has finished, for example when typing a non-composition character\n // (eg. 2) after a composition character.\n input = this._textarea.value.substring(currentCompositionPosition.start);\n }\n if (input.length > 0) {\n this._coreService.triggerDataEvent(input, true);\n }\n }\n }, 0);\n }\n }\n\n /**\n * Apply any changes made to the textarea after the current event chain is allowed to complete.\n * This should be called when not currently composing but a keydown event with the \"composition\n * character\" (229) is triggered, in order to allow non-composition text to be entered when an\n * IME is active.\n */\n private _handleAnyTextareaChanges(): void {\n const oldValue = this._textarea.value;\n setTimeout(() => {\n // Ignore if a composition has started since the timeout\n if (!this._isComposing) {\n const newValue = this._textarea.value;\n const diff = newValue.replace(oldValue, '');\n if (diff.length > 0) {\n this._dataAlreadySent = diff;\n this._coreService.triggerDataEvent(diff, true);\n }\n }\n }, 0);\n }\n\n /**\n * Positions the composition view on top of the cursor and the textarea just below it (so the\n * IME helper dialog is positioned correctly).\n * @param dontRecurse Whether to use setTimeout to recursively trigger another update, this is\n * necessary as the IME events across browsers are not consistently triggered.\n */\n public updateCompositionElements(dontRecurse?: boolean): void {\n if (!this._isComposing) {\n return;\n }\n\n if (this._bufferService.buffer.isCursorInViewport) {\n const cursorX = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);\n\n const cellHeight = this._renderService.dimensions.actualCellHeight;\n const cursorTop = this._bufferService.buffer.y * this._renderService.dimensions.actualCellHeight;\n const cursorLeft = cursorX * this._renderService.dimensions.actualCellWidth;\n\n this._compositionView.style.left = cursorLeft + 'px';\n this._compositionView.style.top = cursorTop + 'px';\n this._compositionView.style.height = cellHeight + 'px';\n this._compositionView.style.lineHeight = cellHeight + 'px';\n this._compositionView.style.fontFamily = this._optionsService.rawOptions.fontFamily;\n this._compositionView.style.fontSize = this._optionsService.rawOptions.fontSize + 'px';\n // Sync the textarea to the exact position of the composition view so the IME knows where the\n // text is.\n const compositionViewBounds = this._compositionView.getBoundingClientRect();\n this._textarea.style.left = cursorLeft + 'px';\n this._textarea.style.top = cursorTop + 'px';\n // Ensure the text area is at least 1x1, otherwise certain IMEs may break\n this._textarea.style.width = Math.max(compositionViewBounds.width, 1) + 'px';\n this._textarea.style.height = Math.max(compositionViewBounds.height, 1) + 'px';\n this._textarea.style.lineHeight = compositionViewBounds.height + 'px';\n }\n\n if (!dontRecurse) {\n setTimeout(() => this.updateCompositionElements(true), 0);\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport function getCoordsRelativeToElement(event: {clientX: number, clientY: number}, element: HTMLElement): [number, number] {\n const rect = element.getBoundingClientRect();\n return [event.clientX - rect.left, event.clientY - rect.top];\n}\n\n/**\n * Gets coordinates within the terminal for a particular mouse event. The result\n * is returned as an array in the form [x, y] instead of an object as it's a\n * little faster and this function is used in some low level code.\n * @param event The mouse event.\n * @param element The terminal's container element.\n * @param colCount The number of columns in the terminal.\n * @param rowCount The number of rows n the terminal.\n * @param isSelection Whether the request is for the selection or not. This will\n * apply an offset to the x value such that the left half of the cell will\n * select that cell and the right half will select the next cell.\n */\nexport function getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, hasValidCharSize: boolean, actualCellWidth: number, actualCellHeight: number, isSelection?: boolean): [number, number] | undefined {\n // Coordinates cannot be measured if there are no valid\n if (!hasValidCharSize) {\n return undefined;\n }\n\n const coords = getCoordsRelativeToElement(event, element);\n if (!coords) {\n return undefined;\n }\n\n coords[0] = Math.ceil((coords[0] + (isSelection ? actualCellWidth / 2 : 0)) / actualCellWidth);\n coords[1] = Math.ceil(coords[1] / actualCellHeight);\n\n // Ensure coordinates are within the terminal viewport. Note that selections\n // need an addition point of precision to cover the end point (as characters\n // cover half of one char and half of the next).\n coords[0] = Math.min(Math.max(coords[0], 1), colCount + (isSelection ? 1 : 0));\n coords[1] = Math.min(Math.max(coords[1], 1), rowCount);\n\n return coords;\n}\n\n/**\n * Gets coordinates within the terminal for a particular mouse event, wrapping\n * them to the bounds of the terminal and adding 32 to both the x and y values\n * as expected by xterm.\n */\nexport function getRawByteCoords(coords: [number, number] | undefined): { x: number, y: number } | undefined {\n if (!coords) {\n return undefined;\n }\n\n // xterm sends raw bytes and starts at 32 (SP) for each.\n return { x: coords[0] + 32, y: coords[1] + 32 };\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { C0 } from 'common/data/EscapeSequences';\nimport { IBufferService } from 'common/services/Services';\n\nconst enum Direction {\n UP = 'A',\n DOWN = 'B',\n RIGHT = 'C',\n LEFT = 'D'\n}\n\n/**\n * Concatenates all the arrow sequences together.\n * Resets the starting row to an unwrapped row, moves to the requested row,\n * then moves to requested col.\n */\nexport function moveToCellSequence(targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n const startX = bufferService.buffer.x;\n const startY = bufferService.buffer.y;\n\n // The alt buffer should try to navigate between rows\n if (!bufferService.buffer.hasScrollback) {\n return resetStartingRow(startX, startY, targetX, targetY, bufferService, applicationCursor) +\n moveToRequestedRow(startY, targetY, bufferService, applicationCursor) +\n moveToRequestedCol(startX, startY, targetX, targetY, bufferService, applicationCursor);\n }\n\n // Only move horizontally for the normal buffer\n let direction;\n if (startY === targetY) {\n direction = startX > targetX ? Direction.LEFT : Direction.RIGHT;\n return repeat(Math.abs(startX - targetX), sequence(direction, applicationCursor));\n }\n direction = startY > targetY ? Direction.LEFT : Direction.RIGHT;\n const rowDifference = Math.abs(startY - targetY);\n const cellsToMove = colsFromRowEnd(startY > targetY ? targetX : startX, bufferService) +\n (rowDifference - 1) * bufferService.cols + 1 /* wrap around 1 row */ +\n colsFromRowBeginning(startY > targetY ? startX : targetX, bufferService);\n return repeat(cellsToMove, sequence(direction, applicationCursor));\n}\n\n/**\n * Find the number of cols from a row beginning to a col.\n */\nfunction colsFromRowBeginning(currX: number, bufferService: IBufferService): number {\n return currX - 1;\n}\n\n/**\n * Find the number of cols from a col to row end.\n */\nfunction colsFromRowEnd(currX: number, bufferService: IBufferService): number {\n return bufferService.cols - currX;\n}\n\n/**\n * If the initial position of the cursor is on a row that is wrapped, move the\n * cursor up to the first row that is not wrapped to have accurate vertical\n * positioning.\n */\nfunction resetStartingRow(startX: number, startY: number, targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n if (moveToRequestedRow(startY, targetY, bufferService, applicationCursor).length === 0) {\n return '';\n }\n return repeat(bufferLine(\n startX, startY, startX,\n startY - wrappedRowsForRow(bufferService, startY), false, bufferService\n ).length, sequence(Direction.LEFT, applicationCursor));\n}\n\n/**\n * Using the reset starting and ending row, move to the requested row,\n * ignoring wrapped rows\n */\nfunction moveToRequestedRow(startY: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n const startRow = startY - wrappedRowsForRow(bufferService, startY);\n const endRow = targetY - wrappedRowsForRow(bufferService, targetY);\n\n const rowsToMove = Math.abs(startRow - endRow) - wrappedRowsCount(startY, targetY, bufferService);\n\n return repeat(rowsToMove, sequence(verticalDirection(startY, targetY), applicationCursor));\n}\n\n/**\n * Move to the requested col on the ending row\n */\nfunction moveToRequestedCol(startX: number, startY: number, targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): string {\n let startRow;\n if (moveToRequestedRow(startY, targetY, bufferService, applicationCursor).length > 0) {\n startRow = targetY - wrappedRowsForRow(bufferService, targetY);\n } else {\n startRow = startY;\n }\n\n const endRow = targetY;\n const direction = horizontalDirection(startX, startY, targetX, targetY, bufferService, applicationCursor);\n\n return repeat(bufferLine(\n startX, startRow, targetX, endRow,\n direction === Direction.RIGHT, bufferService\n ).length, sequence(direction, applicationCursor));\n}\n\n/**\n * Utility functions\n */\n\n/**\n * Calculates the number of wrapped rows between the unwrapped starting and\n * ending rows. These rows need to ignored since the cursor skips over them.\n */\nfunction wrappedRowsCount(startY: number, targetY: number, bufferService: IBufferService): number {\n let wrappedRows = 0;\n const startRow = startY - wrappedRowsForRow(bufferService, startY);\n const endRow = targetY - wrappedRowsForRow(bufferService, targetY);\n\n for (let i = 0; i < Math.abs(startRow - endRow); i++) {\n const direction = verticalDirection(startY, targetY) === Direction.UP ? -1 : 1;\n const line = bufferService.buffer.lines.get(startRow + (direction * i));\n if (line?.isWrapped) {\n wrappedRows++;\n }\n }\n\n return wrappedRows;\n}\n\n/**\n * Calculates the number of wrapped rows that make up a given row.\n * @param currentRow The row to determine how many wrapped rows make it up\n */\nfunction wrappedRowsForRow(bufferService: IBufferService, currentRow: number): number {\n let rowCount = 0;\n let line = bufferService.buffer.lines.get(currentRow);\n let lineWraps = line?.isWrapped;\n\n while (lineWraps && currentRow >= 0 && currentRow < bufferService.rows) {\n rowCount++;\n line = bufferService.buffer.lines.get(--currentRow);\n lineWraps = line?.isWrapped;\n }\n\n return rowCount;\n}\n\n/**\n * Direction determiners\n */\n\n/**\n * Determines if the right or left arrow is needed\n */\nfunction horizontalDirection(startX: number, startY: number, targetX: number, targetY: number, bufferService: IBufferService, applicationCursor: boolean): Direction {\n let startRow;\n if (moveToRequestedRow(targetX, targetY, bufferService, applicationCursor).length > 0) {\n startRow = targetY - wrappedRowsForRow(bufferService, targetY);\n } else {\n startRow = startY;\n }\n\n if ((startX < targetX &&\n startRow <= targetY) || // down/right or same y/right\n (startX >= targetX &&\n startRow < targetY)) { // down/left or same y/left\n return Direction.RIGHT;\n }\n return Direction.LEFT;\n}\n\n/**\n * Determines if the up or down arrow is needed\n */\nfunction verticalDirection(startY: number, targetY: number): Direction {\n return startY > targetY ? Direction.UP : Direction.DOWN;\n}\n\n/**\n * Constructs the string of chars in the buffer from a starting row and col\n * to an ending row and col\n * @param startCol The starting column position\n * @param startRow The starting row position\n * @param endCol The ending column position\n * @param endRow The ending row position\n * @param forward Direction to move\n */\nfunction bufferLine(\n startCol: number,\n startRow: number,\n endCol: number,\n endRow: number,\n forward: boolean,\n bufferService: IBufferService\n): string {\n let currentCol = startCol;\n let currentRow = startRow;\n let bufferStr = '';\n\n while (currentCol !== endCol || currentRow !== endRow) {\n currentCol += forward ? 1 : -1;\n\n if (forward && currentCol > bufferService.cols - 1) {\n bufferStr += bufferService.buffer.translateBufferLineToString(\n currentRow, false, startCol, currentCol\n );\n currentCol = 0;\n startCol = 0;\n currentRow++;\n } else if (!forward && currentCol < 0) {\n bufferStr += bufferService.buffer.translateBufferLineToString(\n currentRow, false, 0, startCol + 1\n );\n currentCol = bufferService.cols - 1;\n startCol = currentCol;\n currentRow--;\n }\n }\n\n return bufferStr + bufferService.buffer.translateBufferLineToString(\n currentRow, false, startCol, currentCol\n );\n}\n\n/**\n * Constructs the escape sequence for clicking an arrow\n * @param direction The direction to move\n */\nfunction sequence(direction: Direction, applicationCursor: boolean): string {\n const mod = applicationCursor ? 'O' : '[';\n return C0.ESC + mod + direction;\n}\n\n/**\n * Returns a string repeated a given number of times\n * Polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n * @param count The number of times to repeat the string\n * @param string The string that is to be repeated\n */\nfunction repeat(count: number, str: string): string {\n count = Math.floor(count);\n let rpt = '';\n for (let i = 0; i < count; i++) {\n rpt += str;\n }\n return rpt;\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Terminal as ITerminalApi, IMarker, IDisposable, ILinkMatcherOptions, ITheme, ILocalizableStrings, ITerminalAddon, ISelectionPosition, IBufferNamespace as IBufferNamespaceApi, IParser, ILinkProvider, IUnicodeHandling, FontWeight, IModes, IDecorationOptions, IDecoration } from 'xterm';\nimport { ITerminal } from 'browser/Types';\nimport { Terminal as TerminalCore } from 'browser/Terminal';\nimport * as Strings from 'browser/LocalizableStrings';\nimport { IEvent } from 'common/EventEmitter';\nimport { ParserApi } from 'common/public/ParserApi';\nimport { UnicodeApi } from 'common/public/UnicodeApi';\nimport { AddonManager } from 'common/public/AddonManager';\nimport { BufferNamespaceApi } from 'common/public/BufferNamespaceApi';\nimport { ITerminalOptions } from 'common/Types';\n\n/**\n * The set of options that only have an effect when set in the Terminal constructor.\n */\nconst CONSTRUCTOR_ONLY_OPTIONS = ['cols', 'rows'];\n\nexport class Terminal implements ITerminalApi {\n private _core: ITerminal;\n private _addonManager: AddonManager;\n private _parser: IParser | undefined;\n private _buffer: BufferNamespaceApi | undefined;\n private _publicOptions: ITerminalOptions;\n\n constructor(options?: ITerminalOptions) {\n this._core = new TerminalCore(options);\n this._addonManager = new AddonManager();\n\n this._publicOptions = { ... this._core.options };\n const getter = (propName: string): any => {\n return this._core.options[propName];\n };\n const setter = (propName: string, value: any): void => {\n this._checkReadonlyOptions(propName);\n this._core.options[propName] = value;\n };\n\n for (const propName in this._core.options) {\n const desc = {\n get: getter.bind(this, propName),\n set: setter.bind(this, propName)\n };\n Object.defineProperty(this._publicOptions, propName, desc);\n }\n }\n\n private _checkReadonlyOptions(propName: string): void {\n // Throw an error if any constructor only option is modified\n // from terminal.options\n // Modifications from anywhere else are allowed\n if (CONSTRUCTOR_ONLY_OPTIONS.includes(propName)) {\n throw new Error(`Option \"${propName}\" can only be set in the constructor`);\n }\n }\n\n private _checkProposedApi(): void {\n if (!this._core.optionsService.rawOptions.allowProposedApi) {\n throw new Error('You must set the allowProposedApi option to true to use proposed API');\n }\n }\n\n public get onBell(): IEvent { return this._core.onBell; }\n public get onBinary(): IEvent { return this._core.onBinary; }\n public get onCursorMove(): IEvent { return this._core.onCursorMove; }\n public get onData(): IEvent { return this._core.onData; }\n public get onKey(): IEvent<{ key: string, domEvent: KeyboardEvent }> { return this._core.onKey; }\n public get onLineFeed(): IEvent { return this._core.onLineFeed; }\n public get onRender(): IEvent<{ start: number, end: number }> { return this._core.onRender; }\n public get onResize(): IEvent<{ cols: number, rows: number }> { return this._core.onResize; }\n public get onScroll(): IEvent { return this._core.onScroll; }\n public get onSelectionChange(): IEvent { return this._core.onSelectionChange; }\n public get onTitleChange(): IEvent { return this._core.onTitleChange; }\n\n public get element(): HTMLElement | undefined { return this._core.element; }\n public get parser(): IParser {\n this._checkProposedApi();\n if (!this._parser) {\n this._parser = new ParserApi(this._core);\n }\n return this._parser;\n }\n public get unicode(): IUnicodeHandling {\n this._checkProposedApi();\n return new UnicodeApi(this._core);\n }\n public get textarea(): HTMLTextAreaElement | undefined { return this._core.textarea; }\n public get rows(): number { return this._core.rows; }\n public get cols(): number { return this._core.cols; }\n public get buffer(): IBufferNamespaceApi {\n this._checkProposedApi();\n if (!this._buffer) {\n this._buffer = new BufferNamespaceApi(this._core);\n }\n return this._buffer;\n }\n public get markers(): ReadonlyArray {\n this._checkProposedApi();\n return this._core.markers;\n }\n public get modes(): IModes {\n const m = this._core.coreService.decPrivateModes;\n let mouseTrackingMode: 'none' | 'x10' | 'vt200' | 'drag' | 'any' = 'none';\n switch (this._core.coreMouseService.activeProtocol) {\n case 'X10': mouseTrackingMode = 'x10'; break;\n case 'VT200': mouseTrackingMode = 'vt200'; break;\n case 'DRAG': mouseTrackingMode = 'drag'; break;\n case 'ANY': mouseTrackingMode = 'any'; break;\n }\n return {\n applicationCursorKeysMode: m.applicationCursorKeys,\n applicationKeypadMode: m.applicationKeypad,\n bracketedPasteMode: m.bracketedPasteMode,\n insertMode: this._core.coreService.modes.insertMode,\n mouseTrackingMode: mouseTrackingMode,\n originMode: m.origin,\n reverseWraparoundMode: m.reverseWraparound,\n sendFocusMode: m.sendFocus,\n wraparoundMode: m.wraparound\n };\n }\n public get options(): ITerminalOptions {\n return this._publicOptions;\n }\n public set options(options: ITerminalOptions) {\n for (const propName in options) {\n this._publicOptions[propName] = options[propName];\n }\n }\n public blur(): void {\n this._core.blur();\n }\n public focus(): void {\n this._core.focus();\n }\n public resize(columns: number, rows: number): void {\n this._verifyIntegers(columns, rows);\n this._core.resize(columns, rows);\n }\n public open(parent: HTMLElement): void {\n this._core.open(parent);\n }\n public attachCustomKeyEventHandler(customKeyEventHandler: (event: KeyboardEvent) => boolean): void {\n this._core.attachCustomKeyEventHandler(customKeyEventHandler);\n }\n public registerLinkMatcher(regex: RegExp, handler: (event: MouseEvent, uri: string) => void, options?: ILinkMatcherOptions): number {\n this._checkProposedApi();\n return this._core.registerLinkMatcher(regex, handler, options);\n }\n public deregisterLinkMatcher(matcherId: number): void {\n this._checkProposedApi();\n this._core.deregisterLinkMatcher(matcherId);\n }\n public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {\n this._checkProposedApi();\n return this._core.registerLinkProvider(linkProvider);\n }\n public registerCharacterJoiner(handler: (text: string) => [number, number][]): number {\n this._checkProposedApi();\n return this._core.registerCharacterJoiner(handler);\n }\n public deregisterCharacterJoiner(joinerId: number): void {\n this._checkProposedApi();\n this._core.deregisterCharacterJoiner(joinerId);\n }\n public registerMarker(cursorYOffset: number = 0): IMarker | undefined {\n this._checkProposedApi();\n this._verifyIntegers(cursorYOffset);\n return this._core.addMarker(cursorYOffset);\n }\n public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined {\n this._checkProposedApi();\n this._verifyPositiveIntegers(decorationOptions.x ?? 0, decorationOptions.width ?? 0, decorationOptions.height ?? 0);\n return this._core.registerDecoration(decorationOptions);\n }\n public addMarker(cursorYOffset: number): IMarker | undefined {\n return this.registerMarker(cursorYOffset);\n }\n public hasSelection(): boolean {\n return this._core.hasSelection();\n }\n public select(column: number, row: number, length: number): void {\n this._verifyIntegers(column, row, length);\n this._core.select(column, row, length);\n }\n public getSelection(): string {\n return this._core.getSelection();\n }\n public getSelectionPosition(): ISelectionPosition | undefined {\n return this._core.getSelectionPosition();\n }\n public clearSelection(): void {\n this._core.clearSelection();\n }\n public selectAll(): void {\n this._core.selectAll();\n }\n public selectLines(start: number, end: number): void {\n this._verifyIntegers(start, end);\n this._core.selectLines(start, end);\n }\n public dispose(): void {\n this._addonManager.dispose();\n this._core.dispose();\n }\n public scrollLines(amount: number): void {\n this._verifyIntegers(amount);\n this._core.scrollLines(amount);\n }\n public scrollPages(pageCount: number): void {\n this._verifyIntegers(pageCount);\n this._core.scrollPages(pageCount);\n }\n public scrollToTop(): void {\n this._core.scrollToTop();\n }\n public scrollToBottom(): void {\n this._core.scrollToBottom();\n }\n public scrollToLine(line: number): void {\n this._verifyIntegers(line);\n this._core.scrollToLine(line);\n }\n public clear(): void {\n this._core.clear();\n }\n public write(data: string | Uint8Array, callback?: () => void): void {\n this._core.write(data, callback);\n }\n public writeUtf8(data: Uint8Array, callback?: () => void): void {\n this._core.write(data, callback);\n }\n public writeln(data: string | Uint8Array, callback?: () => void): void {\n this._core.write(data);\n this._core.write('\\r\\n', callback);\n }\n public paste(data: string): void {\n this._core.paste(data);\n }\n public getOption(key: 'bellSound' | 'bellStyle' | 'cursorStyle' | 'fontFamily' | 'logLevel' | 'rendererType' | 'termName' | 'wordSeparator'): string;\n public getOption(key: 'allowTransparency' | 'altClickMovesCursor' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'visualBell'): boolean;\n public getOption(key: 'cols' | 'fontSize' | 'letterSpacing' | 'lineHeight' | 'rows' | 'tabStopWidth' | 'scrollback'): number;\n public getOption(key: 'fontWeight' | 'fontWeightBold'): FontWeight;\n public getOption(key: string): any;\n public getOption(key: any): any {\n return this._core.optionsService.getOption(key);\n }\n public setOption(key: 'bellSound' | 'fontFamily' | 'termName' | 'wordSeparator', value: string): void;\n public setOption(key: 'fontWeight' | 'fontWeightBold', value: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | number): void;\n public setOption(key: 'logLevel', value: 'debug' | 'info' | 'warn' | 'error' | 'off'): void;\n public setOption(key: 'bellStyle', value: 'none' | 'visual' | 'sound' | 'both'): void;\n public setOption(key: 'cursorStyle', value: 'block' | 'underline' | 'bar'): void;\n public setOption(key: 'allowTransparency' | 'altClickMovesCursor' | 'cancelEvents' | 'convertEol' | 'cursorBlink' | 'disableStdin' | 'macOptionIsMeta' | 'rightClickSelectsWord' | 'popOnBell' | 'visualBell', value: boolean): void;\n public setOption(key: 'fontSize' | 'letterSpacing' | 'lineHeight' | 'tabStopWidth' | 'scrollback', value: number): void;\n public setOption(key: 'theme', value: ITheme): void;\n public setOption(key: 'cols' | 'rows', value: number): void;\n public setOption(key: string, value: any): void;\n public setOption(key: any, value: any): void {\n this._checkReadonlyOptions(key);\n this._core.optionsService.setOption(key, value);\n }\n public refresh(start: number, end: number): void {\n this._verifyIntegers(start, end);\n this._core.refresh(start, end);\n }\n public reset(): void {\n this._core.reset();\n }\n public clearTextureAtlas(): void {\n this._core.clearTextureAtlas();\n }\n public loadAddon(addon: ITerminalAddon): void {\n return this._addonManager.loadAddon(this, addon);\n }\n public static get strings(): ILocalizableStrings {\n return Strings;\n }\n\n private _verifyIntegers(...values: number[]): void {\n for (const value of values) {\n if (value === Infinity || isNaN(value) || value % 1 !== 0) {\n throw new Error('This API only accepts integers');\n }\n }\n }\n\n private _verifyPositiveIntegers(...values: number[]): void {\n for (const value of values) {\n if (value && (value === Infinity || isNaN(value) || value % 1 !== 0 || value < 0)) {\n throw new Error('This API only accepts positive integers');\n }\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions, IRenderLayer } from 'browser/renderer/Types';\nimport { ICellData } from 'common/Types';\nimport { DEFAULT_COLOR, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_CODE, Attributes } from 'common/buffer/Constants';\nimport { IGlyphIdentifier } from 'browser/renderer/atlas/Types';\nimport { DIM_OPACITY, INVERTED_DEFAULT_COLOR, TEXT_BASELINE } from 'browser/renderer/atlas/Constants';\nimport { BaseCharAtlas } from 'browser/renderer/atlas/BaseCharAtlas';\nimport { acquireCharAtlas } from 'browser/renderer/atlas/CharAtlasCache';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { IColorSet, IColor } from 'browser/Types';\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\nimport { throwIfFalsy } from 'browser/renderer/RendererUtils';\nimport { channels, color, rgba } from 'browser/Color';\nimport { removeElementFromParent } from 'browser/Dom';\nimport { tryDrawCustomChar } from 'browser/renderer/CustomGlyphs';\n\nexport abstract class BaseRenderLayer implements IRenderLayer {\n private _canvas: HTMLCanvasElement;\n protected _ctx!: CanvasRenderingContext2D;\n private _scaledCharWidth: number = 0;\n private _scaledCharHeight: number = 0;\n private _scaledCellWidth: number = 0;\n private _scaledCellHeight: number = 0;\n private _scaledCharLeft: number = 0;\n private _scaledCharTop: number = 0;\n\n protected _charAtlas: BaseCharAtlas | undefined;\n\n /**\n * An object that's reused when drawing glyphs in order to reduce GC.\n */\n private _currentGlyphIdentifier: IGlyphIdentifier = {\n chars: '',\n code: 0,\n bg: 0,\n fg: 0,\n bold: false,\n dim: false,\n italic: false\n };\n\n constructor(\n private _container: HTMLElement,\n id: string,\n zIndex: number,\n private _alpha: boolean,\n protected _colors: IColorSet,\n private _rendererId: number,\n protected readonly _bufferService: IBufferService,\n protected readonly _optionsService: IOptionsService\n ) {\n this._canvas = document.createElement('canvas');\n this._canvas.classList.add(`xterm-${id}-layer`);\n this._canvas.style.zIndex = zIndex.toString();\n this._initCanvas();\n this._container.appendChild(this._canvas);\n }\n\n public dispose(): void {\n removeElementFromParent(this._canvas);\n this._charAtlas?.dispose();\n }\n\n private _initCanvas(): void {\n this._ctx = throwIfFalsy(this._canvas.getContext('2d', { alpha: this._alpha }));\n // Draw the background if this is an opaque layer\n if (!this._alpha) {\n this._clearAll();\n }\n }\n\n public onOptionsChanged(): void {}\n public onBlur(): void {}\n public onFocus(): void {}\n public onCursorMove(): void {}\n public onGridChanged(startRow: number, endRow: number): void {}\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean = false): void {}\n\n public setColors(colorSet: IColorSet): void {\n this._refreshCharAtlas(colorSet);\n }\n\n protected _setTransparency(alpha: boolean): void {\n // Do nothing when alpha doesn't change\n if (alpha === this._alpha) {\n return;\n }\n\n // Create new canvas and replace old one\n const oldCanvas = this._canvas;\n this._alpha = alpha;\n // Cloning preserves properties\n this._canvas = this._canvas.cloneNode() as HTMLCanvasElement;\n this._initCanvas();\n this._container.replaceChild(this._canvas, oldCanvas);\n\n // Regenerate char atlas and force a full redraw\n this._refreshCharAtlas(this._colors);\n this.onGridChanged(0, this._bufferService.rows - 1);\n }\n\n /**\n * Refreshes the char atlas, aquiring a new one if necessary.\n * @param colorSet The color set to use for the char atlas.\n */\n private _refreshCharAtlas(colorSet: IColorSet): void {\n if (this._scaledCharWidth <= 0 && this._scaledCharHeight <= 0) {\n return;\n }\n this._charAtlas = acquireCharAtlas(this._optionsService.rawOptions, this._rendererId, colorSet, this._scaledCharWidth, this._scaledCharHeight);\n this._charAtlas.warmUp();\n }\n\n public resize(dim: IRenderDimensions): void {\n this._scaledCellWidth = dim.scaledCellWidth;\n this._scaledCellHeight = dim.scaledCellHeight;\n this._scaledCharWidth = dim.scaledCharWidth;\n this._scaledCharHeight = dim.scaledCharHeight;\n this._scaledCharLeft = dim.scaledCharLeft;\n this._scaledCharTop = dim.scaledCharTop;\n this._canvas.width = dim.scaledCanvasWidth;\n this._canvas.height = dim.scaledCanvasHeight;\n this._canvas.style.width = `${dim.canvasWidth}px`;\n this._canvas.style.height = `${dim.canvasHeight}px`;\n\n // Draw the background if this is an opaque layer\n if (!this._alpha) {\n this._clearAll();\n }\n\n this._refreshCharAtlas(this._colors);\n }\n\n public abstract reset(): void;\n\n public clearTextureAtlas(): void {\n this._charAtlas?.clear();\n }\n\n /**\n * Fills 1+ cells completely. This uses the existing fillStyle on the context.\n * @param x The column to start at.\n * @param y The row to start at\n * @param width The number of columns to fill.\n * @param height The number of rows to fill.\n */\n protected _fillCells(x: number, y: number, width: number, height: number): void {\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n width * this._scaledCellWidth,\n height * this._scaledCellHeight);\n }\n\n /**\n * Fills a 1px line (2px on HDPI) at the middle of the cell. This uses the\n * existing fillStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _fillMiddleLineAtCells(x: number, y: number, width: number = 1): void {\n const cellOffset = Math.ceil(this._scaledCellHeight * 0.5);\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n (y + 1) * this._scaledCellHeight - cellOffset - window.devicePixelRatio,\n width * this._scaledCellWidth,\n window.devicePixelRatio);\n }\n\n /**\n * Fills a 1px line (2px on HDPI) at the bottom of the cell. This uses the\n * existing fillStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _fillBottomLineAtCells(x: number, y: number, width: number = 1): void {\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n (y + 1) * this._scaledCellHeight - window.devicePixelRatio - 1 /* Ensure it's drawn within the cell */,\n width * this._scaledCellWidth,\n window.devicePixelRatio);\n }\n\n /**\n * Fills a 1px line (2px on HDPI) at the left of the cell. This uses the\n * existing fillStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _fillLeftLineAtCell(x: number, y: number, width: number): void {\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n window.devicePixelRatio * width,\n this._scaledCellHeight);\n }\n\n /**\n * Strokes a 1px rectangle (2px on HDPI) around a cell. This uses the existing\n * strokeStyle on the context.\n * @param x The column to fill.\n * @param y The row to fill.\n */\n protected _strokeRectAtCell(x: number, y: number, width: number, height: number): void {\n this._ctx.lineWidth = window.devicePixelRatio;\n this._ctx.strokeRect(\n x * this._scaledCellWidth + window.devicePixelRatio / 2,\n y * this._scaledCellHeight + (window.devicePixelRatio / 2),\n width * this._scaledCellWidth - window.devicePixelRatio,\n (height * this._scaledCellHeight) - window.devicePixelRatio);\n }\n\n /**\n * Clears the entire canvas.\n */\n protected _clearAll(): void {\n if (this._alpha) {\n this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n } else {\n this._ctx.fillStyle = this._colors.background.css;\n this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height);\n }\n }\n\n /**\n * Clears 1+ cells completely.\n * @param x The column to start at.\n * @param y The row to start at.\n * @param width The number of columns to clear.\n * @param height The number of rows to clear.\n */\n protected _clearCells(x: number, y: number, width: number, height: number): void {\n if (this._alpha) {\n this._ctx.clearRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n width * this._scaledCellWidth,\n height * this._scaledCellHeight);\n } else {\n this._ctx.fillStyle = this._colors.background.css;\n this._ctx.fillRect(\n x * this._scaledCellWidth,\n y * this._scaledCellHeight,\n width * this._scaledCellWidth,\n height * this._scaledCellHeight);\n }\n }\n\n /**\n * Draws a truecolor character at the cell. The character will be clipped to\n * ensure that it fits with the cell, including the cell to the right if it's\n * a wide character. This uses the existing fillStyle on the context.\n * @param cell The cell data for the character to draw.\n * @param x The column to draw at.\n * @param y The row to draw at.\n * @param color The color of the character.\n */\n protected _fillCharTrueColor(cell: CellData, x: number, y: number): void {\n this._ctx.font = this._getFont(false, false);\n this._ctx.textBaseline = TEXT_BASELINE;\n this._clipRow(y);\n\n // Draw custom characters if applicable\n let drawSuccess = false;\n if (this._optionsService.rawOptions.customGlyphs !== false) {\n drawSuccess = tryDrawCustomChar(this._ctx, cell.getChars(), x * this._scaledCellWidth, y * this._scaledCellHeight, this._scaledCellWidth, this._scaledCellHeight);\n }\n\n // Draw the character\n if (!drawSuccess) {\n this._ctx.fillText(\n cell.getChars(),\n x * this._scaledCellWidth + this._scaledCharLeft,\n y * this._scaledCellHeight + this._scaledCharTop + this._scaledCharHeight);\n }\n }\n\n /**\n * Draws one or more characters at a cell. If possible this will draw using\n * the character atlas to reduce draw time.\n * @param chars The character or characters.\n * @param code The character code.\n * @param width The width of the characters.\n * @param x The column to draw at.\n * @param y The row to draw at.\n * @param fg The foreground color, in the format stored within the attributes.\n * @param bg The background color, in the format stored within the attributes.\n * This is used to validate whether a cached image can be used.\n * @param bold Whether the text is bold.\n */\n protected _drawChars(cell: ICellData, x: number, y: number): void {\n const contrastColor = this._getContrastColor(cell);\n\n // skip cache right away if we draw in RGB\n // Note: to avoid bad runtime JoinedCellData will be skipped\n // in the cache handler itself (atlasDidDraw == false) and\n // fall through to uncached later down below\n if (contrastColor || cell.isFgRGB() || cell.isBgRGB()) {\n this._drawUncachedChars(cell, x, y, contrastColor);\n return;\n }\n\n let fg;\n let bg;\n if (cell.isInverse()) {\n fg = (cell.isBgDefault()) ? INVERTED_DEFAULT_COLOR : cell.getBgColor();\n bg = (cell.isFgDefault()) ? INVERTED_DEFAULT_COLOR : cell.getFgColor();\n } else {\n bg = (cell.isBgDefault()) ? DEFAULT_COLOR : cell.getBgColor();\n fg = (cell.isFgDefault()) ? DEFAULT_COLOR : cell.getFgColor();\n }\n\n const drawInBrightColor = this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && fg < 8;\n\n fg += drawInBrightColor ? 8 : 0;\n this._currentGlyphIdentifier.chars = cell.getChars() || WHITESPACE_CELL_CHAR;\n this._currentGlyphIdentifier.code = cell.getCode() || WHITESPACE_CELL_CODE;\n this._currentGlyphIdentifier.bg = bg;\n this._currentGlyphIdentifier.fg = fg;\n this._currentGlyphIdentifier.bold = !!cell.isBold();\n this._currentGlyphIdentifier.dim = !!cell.isDim();\n this._currentGlyphIdentifier.italic = !!cell.isItalic();\n const atlasDidDraw = this._charAtlas?.draw(this._ctx, this._currentGlyphIdentifier, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop);\n\n if (!atlasDidDraw) {\n this._drawUncachedChars(cell, x, y);\n }\n }\n\n /**\n * Draws one or more characters at one or more cells. The character(s) will be\n * clipped to ensure that they fit with the cell(s), including the cell to the\n * right if the last character is a wide character.\n * @param chars The character.\n * @param width The width of the character.\n * @param fg The foreground color, in the format stored within the attributes.\n * @param x The column to draw at.\n * @param y The row to draw at.\n */\n private _drawUncachedChars(cell: ICellData, x: number, y: number, fgOverride?: IColor): void {\n this._ctx.save();\n this._ctx.font = this._getFont(!!cell.isBold(), !!cell.isItalic());\n this._ctx.textBaseline = TEXT_BASELINE;\n\n if (cell.isInverse()) {\n if (fgOverride) {\n this._ctx.fillStyle = fgOverride.css;\n } else if (cell.isBgDefault()) {\n this._ctx.fillStyle = color.opaque(this._colors.background).css;\n } else if (cell.isBgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getBgColor()).join(',')})`;\n } else {\n let bg = cell.getBgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && bg < 8) {\n bg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[bg].css;\n }\n } else {\n if (fgOverride) {\n this._ctx.fillStyle = fgOverride.css;\n } else if (cell.isFgDefault()) {\n this._ctx.fillStyle = this._colors.foreground.css;\n } else if (cell.isFgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getFgColor()).join(',')})`;\n } else {\n let fg = cell.getFgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && fg < 8) {\n fg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[fg].css;\n }\n }\n\n this._clipRow(y);\n\n // Apply alpha to dim the character\n if (cell.isDim()) {\n this._ctx.globalAlpha = DIM_OPACITY;\n }\n\n // Draw custom characters if applicable\n let drawSuccess = false;\n if (this._optionsService.rawOptions.customGlyphs !== false) {\n drawSuccess = tryDrawCustomChar(this._ctx, cell.getChars(), x * this._scaledCellWidth, y * this._scaledCellHeight, this._scaledCellWidth, this._scaledCellHeight);\n }\n\n // Draw the character\n if (!drawSuccess) {\n this._ctx.fillText(\n cell.getChars(),\n x * this._scaledCellWidth + this._scaledCharLeft,\n y * this._scaledCellHeight + this._scaledCharTop + this._scaledCharHeight);\n }\n\n this._ctx.restore();\n }\n\n\n /**\n * Clips a row to ensure no pixels will be drawn outside the cells in the row.\n * @param y The row to clip.\n */\n private _clipRow(y: number): void {\n this._ctx.beginPath();\n this._ctx.rect(\n 0,\n y * this._scaledCellHeight,\n this._bufferService.cols * this._scaledCellWidth,\n this._scaledCellHeight);\n this._ctx.clip();\n }\n\n /**\n * Gets the current font.\n * @param isBold If we should use the bold fontWeight.\n */\n protected _getFont(isBold: boolean, isItalic: boolean): string {\n const fontWeight = isBold ? this._optionsService.rawOptions.fontWeightBold : this._optionsService.rawOptions.fontWeight;\n const fontStyle = isItalic ? 'italic' : '';\n\n return `${fontStyle} ${fontWeight} ${this._optionsService.rawOptions.fontSize * window.devicePixelRatio}px ${this._optionsService.rawOptions.fontFamily}`;\n }\n\n private _getContrastColor(cell: CellData): IColor | undefined {\n if (this._optionsService.rawOptions.minimumContrastRatio === 1) {\n return undefined;\n }\n\n // Try get from cache first\n const adjustedColor = this._colors.contrastCache.getColor(cell.bg, cell.fg);\n if (adjustedColor !== undefined) {\n return adjustedColor || undefined;\n }\n\n let fgColor = cell.getFgColor();\n let fgColorMode = cell.getFgColorMode();\n let bgColor = cell.getBgColor();\n let bgColorMode = cell.getBgColorMode();\n const isInverse = !!cell.isInverse();\n const isBold = !!cell.isInverse();\n if (isInverse) {\n const temp = fgColor;\n fgColor = bgColor;\n bgColor = temp;\n const temp2 = fgColorMode;\n fgColorMode = bgColorMode;\n bgColorMode = temp2;\n }\n\n const bgRgba = this._resolveBackgroundRgba(bgColorMode, bgColor, isInverse);\n const fgRgba = this._resolveForegroundRgba(fgColorMode, fgColor, isInverse, isBold);\n const result = rgba.ensureContrastRatio(bgRgba, fgRgba, this._optionsService.rawOptions.minimumContrastRatio);\n\n if (!result) {\n this._colors.contrastCache.setColor(cell.bg, cell.fg, null);\n return undefined;\n }\n\n const color: IColor = {\n css: channels.toCss(\n (result >> 24) & 0xFF,\n (result >> 16) & 0xFF,\n (result >> 8) & 0xFF\n ),\n rgba: result\n };\n this._colors.contrastCache.setColor(cell.bg, cell.fg, color);\n\n return color;\n }\n\n private _resolveBackgroundRgba(bgColorMode: number, bgColor: number, inverse: boolean): number {\n switch (bgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n return this._colors.ansi[bgColor].rgba;\n case Attributes.CM_RGB:\n return bgColor << 8;\n case Attributes.CM_DEFAULT:\n default:\n if (inverse) {\n return this._colors.foreground.rgba;\n }\n return this._colors.background.rgba;\n }\n }\n\n private _resolveForegroundRgba(fgColorMode: number, fgColor: number, inverse: boolean, bold: boolean): number {\n switch (fgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && bold && fgColor < 8) {\n fgColor += 8;\n }\n return this._colors.ansi[fgColor].rgba;\n case Attributes.CM_RGB:\n return fgColor << 8;\n case Attributes.CM_DEFAULT:\n default:\n if (inverse) {\n return this._colors.background.rgba;\n }\n return this._colors.foreground.rgba;\n }\n }\n}\n\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/Types';\nimport { BaseRenderLayer } from 'browser/renderer/BaseRenderLayer';\nimport { ICellData } from 'common/Types';\nimport { CellData } from 'common/buffer/CellData';\nimport { IColorSet } from 'browser/Types';\nimport { IBufferService, IOptionsService, ICoreService } from 'common/services/Services';\nimport { IEventEmitter } from 'common/EventEmitter';\nimport { ICoreBrowserService } from 'browser/services/Services';\n\ninterface ICursorState {\n x: number;\n y: number;\n isFocused: boolean;\n style: string;\n width: number;\n}\n\n/**\n * The time between cursor blinks.\n */\nconst BLINK_INTERVAL = 600;\n\nexport class CursorRenderLayer extends BaseRenderLayer {\n private _state: ICursorState;\n private _cursorRenderers: {[key: string]: (x: number, y: number, cell: ICellData) => void};\n private _cursorBlinkStateManager: CursorBlinkStateManager | undefined;\n private _cell: ICellData = new CellData();\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n rendererId: number,\n private _onRequestRedraw: IEventEmitter,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService,\n @ICoreService private readonly _coreService: ICoreService,\n @ICoreBrowserService private readonly _coreBrowserService: ICoreBrowserService\n ) {\n super(container, 'cursor', zIndex, true, colors, rendererId, bufferService, optionsService);\n this._state = {\n x: 0,\n y: 0,\n isFocused: false,\n style: '',\n width: 0\n };\n this._cursorRenderers = {\n 'bar': this._renderBarCursor.bind(this),\n 'block': this._renderBlockCursor.bind(this),\n 'underline': this._renderUnderlineCursor.bind(this)\n };\n }\n\n public dispose(): void {\n if (this._cursorBlinkStateManager) {\n this._cursorBlinkStateManager.dispose();\n this._cursorBlinkStateManager = undefined;\n }\n super.dispose();\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n // Resizing the canvas discards the contents of the canvas so clear state\n this._state = {\n x: 0,\n y: 0,\n isFocused: false,\n style: '',\n width: 0\n };\n }\n\n public reset(): void {\n this._clearCursor();\n this._cursorBlinkStateManager?.restartBlinkAnimation();\n this.onOptionsChanged();\n }\n\n public onBlur(): void {\n this._cursorBlinkStateManager?.pause();\n this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y });\n }\n\n public onFocus(): void {\n this._cursorBlinkStateManager?.resume();\n this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y });\n }\n\n public onOptionsChanged(): void {\n if (this._optionsService.rawOptions.cursorBlink) {\n if (!this._cursorBlinkStateManager) {\n this._cursorBlinkStateManager = new CursorBlinkStateManager(this._coreBrowserService.isFocused, () => {\n this._render(true);\n });\n }\n } else {\n this._cursorBlinkStateManager?.dispose();\n this._cursorBlinkStateManager = undefined;\n }\n // Request a refresh from the terminal as management of rendering is being\n // moved back to the terminal\n this._onRequestRedraw.fire({ start: this._bufferService.buffer.y, end: this._bufferService.buffer.y });\n }\n\n public onCursorMove(): void {\n this._cursorBlinkStateManager?.restartBlinkAnimation();\n }\n\n public onGridChanged(startRow: number, endRow: number): void {\n if (!this._cursorBlinkStateManager || this._cursorBlinkStateManager.isPaused) {\n this._render(false);\n } else {\n this._cursorBlinkStateManager.restartBlinkAnimation();\n }\n }\n\n private _render(triggeredByAnimationFrame: boolean): void {\n // Don't draw the cursor if it's hidden\n if (!this._coreService.isCursorInitialized || this._coreService.isCursorHidden) {\n this._clearCursor();\n return;\n }\n\n const cursorY = this._bufferService.buffer.ybase + this._bufferService.buffer.y;\n const viewportRelativeCursorY = cursorY - this._bufferService.buffer.ydisp;\n\n // Don't draw the cursor if it's off-screen\n if (viewportRelativeCursorY < 0 || viewportRelativeCursorY >= this._bufferService.rows) {\n this._clearCursor();\n return;\n }\n\n // in case cursor.x == cols adjust visual cursor to cols - 1\n const cursorX = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);\n this._bufferService.buffer.lines.get(cursorY)!.loadCell(cursorX, this._cell);\n if (this._cell.content === undefined) {\n return;\n }\n\n if (!this._coreBrowserService.isFocused) {\n this._clearCursor();\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n const cursorStyle = this._optionsService.rawOptions.cursorStyle;\n if (cursorStyle && cursorStyle !== 'block') {\n this._cursorRenderers[cursorStyle](cursorX, viewportRelativeCursorY, this._cell);\n } else {\n this._renderBlurCursor(cursorX, viewportRelativeCursorY, this._cell);\n }\n this._ctx.restore();\n this._state.x = cursorX;\n this._state.y = viewportRelativeCursorY;\n this._state.isFocused = false;\n this._state.style = cursorStyle;\n this._state.width = this._cell.getWidth();\n return;\n }\n\n // Don't draw the cursor if it's blinking\n if (this._cursorBlinkStateManager && !this._cursorBlinkStateManager.isCursorVisible) {\n this._clearCursor();\n return;\n }\n\n if (this._state) {\n // The cursor is already in the correct spot, don't redraw\n if (this._state.x === cursorX &&\n this._state.y === viewportRelativeCursorY &&\n this._state.isFocused === this._coreBrowserService.isFocused &&\n this._state.style === this._optionsService.rawOptions.cursorStyle &&\n this._state.width === this._cell.getWidth()) {\n return;\n }\n this._clearCursor();\n }\n\n this._ctx.save();\n this._cursorRenderers[this._optionsService.rawOptions.cursorStyle || 'block'](cursorX, viewportRelativeCursorY, this._cell);\n this._ctx.restore();\n\n this._state.x = cursorX;\n this._state.y = viewportRelativeCursorY;\n this._state.isFocused = false;\n this._state.style = this._optionsService.rawOptions.cursorStyle;\n this._state.width = this._cell.getWidth();\n }\n\n private _clearCursor(): void {\n if (this._state) {\n // Avoid potential rounding errors when device pixel ratio is less than 1\n if (window.devicePixelRatio < 1) {\n this._clearAll();\n } else {\n this._clearCells(this._state.x, this._state.y, this._state.width, 1);\n }\n this._state = {\n x: 0,\n y: 0,\n isFocused: false,\n style: '',\n width: 0\n };\n }\n }\n\n private _renderBarCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n this._fillLeftLineAtCell(x, y, this._optionsService.rawOptions.cursorWidth);\n this._ctx.restore();\n }\n\n private _renderBlockCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n this._fillCells(x, y, cell.getWidth(), 1);\n this._ctx.fillStyle = this._colors.cursorAccent.css;\n this._fillCharTrueColor(cell, x, y);\n this._ctx.restore();\n }\n\n private _renderUnderlineCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.fillStyle = this._colors.cursor.css;\n this._fillBottomLineAtCells(x, y);\n this._ctx.restore();\n }\n\n private _renderBlurCursor(x: number, y: number, cell: ICellData): void {\n this._ctx.save();\n this._ctx.strokeStyle = this._colors.cursor.css;\n this._strokeRectAtCell(x, y, cell.getWidth(), 1);\n this._ctx.restore();\n }\n}\n\nclass CursorBlinkStateManager {\n public isCursorVisible: boolean;\n\n private _animationFrame: number | undefined;\n private _blinkStartTimeout: number | undefined;\n private _blinkInterval: number | undefined;\n\n /**\n * The time at which the animation frame was restarted, this is used on the\n * next render to restart the timers so they don't need to restart the timers\n * multiple times over a short period.\n */\n private _animationTimeRestarted: number | undefined;\n\n constructor(\n isFocused: boolean,\n private _renderCallback: () => void\n ) {\n this.isCursorVisible = true;\n if (isFocused) {\n this._restartInterval();\n }\n }\n\n public get isPaused(): boolean { return !(this._blinkStartTimeout || this._blinkInterval); }\n\n public dispose(): void {\n if (this._blinkInterval) {\n window.clearInterval(this._blinkInterval);\n this._blinkInterval = undefined;\n }\n if (this._blinkStartTimeout) {\n window.clearTimeout(this._blinkStartTimeout);\n this._blinkStartTimeout = undefined;\n }\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = undefined;\n }\n }\n\n public restartBlinkAnimation(): void {\n if (this.isPaused) {\n return;\n }\n // Save a timestamp so that the restart can be done on the next interval\n this._animationTimeRestarted = Date.now();\n // Force a cursor render to ensure it's visible and in the correct position\n this.isCursorVisible = true;\n if (!this._animationFrame) {\n this._animationFrame = window.requestAnimationFrame(() => {\n this._renderCallback();\n this._animationFrame = undefined;\n });\n }\n }\n\n private _restartInterval(timeToStart: number = BLINK_INTERVAL): void {\n // Clear any existing interval\n if (this._blinkInterval) {\n window.clearInterval(this._blinkInterval);\n this._blinkInterval = undefined;\n }\n\n // Setup the initial timeout which will hide the cursor, this is done before\n // the regular interval is setup in order to support restarting the blink\n // animation in a lightweight way (without thrashing clearInterval and\n // setInterval).\n this._blinkStartTimeout = window.setTimeout(() => {\n // Check if another animation restart was requested while this was being\n // started\n if (this._animationTimeRestarted) {\n const time = BLINK_INTERVAL - (Date.now() - this._animationTimeRestarted);\n this._animationTimeRestarted = undefined;\n if (time > 0) {\n this._restartInterval(time);\n return;\n }\n }\n\n // Hide the cursor\n this.isCursorVisible = false;\n this._animationFrame = window.requestAnimationFrame(() => {\n this._renderCallback();\n this._animationFrame = undefined;\n });\n\n // Setup the blink interval\n this._blinkInterval = window.setInterval(() => {\n // Adjust the animation time if it was restarted\n if (this._animationTimeRestarted) {\n // calc time diff\n // Make restart interval do a setTimeout initially?\n const time = BLINK_INTERVAL - (Date.now() - this._animationTimeRestarted);\n this._animationTimeRestarted = undefined;\n this._restartInterval(time);\n return;\n }\n\n // Invert visibility and render\n this.isCursorVisible = !this.isCursorVisible;\n this._animationFrame = window.requestAnimationFrame(() => {\n this._renderCallback();\n this._animationFrame = undefined;\n });\n }, BLINK_INTERVAL);\n }, timeToStart);\n }\n\n public pause(): void {\n this.isCursorVisible = true;\n if (this._blinkInterval) {\n window.clearInterval(this._blinkInterval);\n this._blinkInterval = undefined;\n }\n if (this._blinkStartTimeout) {\n window.clearTimeout(this._blinkStartTimeout);\n this._blinkStartTimeout = undefined;\n }\n if (this._animationFrame) {\n window.cancelAnimationFrame(this._animationFrame);\n this._animationFrame = undefined;\n }\n }\n\n public resume(): void {\n // Clear out any existing timers just in case\n this.pause();\n\n this._animationTimeRestarted = undefined;\n this._restartInterval();\n this.restartBlinkAnimation();\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { throwIfFalsy } from 'browser/renderer/RendererUtils';\n\ninterface IBlockVector {\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\nexport const blockElementDefinitions: { [index: string]: IBlockVector[] | undefined } = {\n // Block elements (0x2580-0x2590)\n '\u2580': [{ x: 0, y: 0, w: 8, h: 4 }], // UPPER HALF BLOCK\n '\u2581': [{ x: 0, y: 7, w: 8, h: 1 }], // LOWER ONE EIGHTH BLOCK\n '\u2582': [{ x: 0, y: 6, w: 8, h: 2 }], // LOWER ONE QUARTER BLOCK\n '\u2583': [{ x: 0, y: 5, w: 8, h: 3 }], // LOWER THREE EIGHTHS BLOCK\n '\u2584': [{ x: 0, y: 4, w: 8, h: 4 }], // LOWER HALF BLOCK\n '\u2585': [{ x: 0, y: 3, w: 8, h: 5 }], // LOWER FIVE EIGHTHS BLOCK\n '\u2586': [{ x: 0, y: 2, w: 8, h: 6 }], // LOWER THREE QUARTERS BLOCK\n '\u2587': [{ x: 0, y: 1, w: 8, h: 7 }], // LOWER SEVEN EIGHTHS BLOCK\n '\u2588': [{ x: 0, y: 0, w: 8, h: 8 }], // FULL BLOCK\n '\u2589': [{ x: 0, y: 0, w: 7, h: 8 }], // LEFT SEVEN EIGHTHS BLOCK\n '\u258A': [{ x: 0, y: 0, w: 6, h: 8 }], // LEFT THREE QUARTERS BLOCK\n '\u258B': [{ x: 0, y: 0, w: 5, h: 8 }], // LEFT FIVE EIGHTHS BLOCK\n '\u258C': [{ x: 0, y: 0, w: 4, h: 8 }], // LEFT HALF BLOCK\n '\u258D': [{ x: 0, y: 0, w: 3, h: 8 }], // LEFT THREE EIGHTHS BLOCK\n '\u258E': [{ x: 0, y: 0, w: 2, h: 8 }], // LEFT ONE QUARTER BLOCK\n '\u258F': [{ x: 0, y: 0, w: 1, h: 8 }], // LEFT ONE EIGHTH BLOCK\n '\u2590': [{ x: 4, y: 0, w: 4, h: 8 }], // RIGHT HALF BLOCK\n\n // Block elements (0x2594-0x2595)\n '\u2594': [{ x: 0, y: 0, w: 9, h: 1 }], // UPPER ONE EIGHTH BLOCK\n '\u2595': [{ x: 7, y: 0, w: 1, h: 8 }], // RIGHT ONE EIGHTH BLOCK\n\n // Terminal graphic characters (0x2596-0x259F)\n '\u2596': [{ x: 0, y: 4, w: 4, h: 4 }], // QUADRANT LOWER LEFT\n '\u2597': [{ x: 4, y: 4, w: 4, h: 4 }], // QUADRANT LOWER RIGHT\n '\u2598': [{ x: 0, y: 0, w: 4, h: 4 }], // QUADRANT UPPER LEFT\n '\u2599': [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], // QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT\n '\u259A': [{ x: 0, y: 0, w: 4, h: 4 }, { x: 4, y: 4, w: 4, h: 4 }], // QUADRANT UPPER LEFT AND LOWER RIGHT\n '\u259B': [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 0, w: 4, h: 8 }], // QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT\n '\u259C': [{ x: 0, y: 0, w: 8, h: 4 }, { x: 4, y: 0, w: 4, h: 8 }], // QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT\n '\u259D': [{ x: 4, y: 0, w: 4, h: 4 }], // QUADRANT UPPER RIGHT\n '\u259E': [{ x: 4, y: 0, w: 4, h: 4 }, { x: 0, y: 4, w: 4, h: 4 }], // QUADRANT UPPER RIGHT AND LOWER LEFT\n '\u259F': [{ x: 4, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }], // QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT\n\n // VERTICAL ONE EIGHTH BLOCK-2 through VERTICAL ONE EIGHTH BLOCK-7\n '\\u{1FB70}': [{ x: 1, y: 0, w: 1, h: 8 }],\n '\\u{1FB71}': [{ x: 2, y: 0, w: 1, h: 8 }],\n '\\u{1FB72}': [{ x: 3, y: 0, w: 1, h: 8 }],\n '\\u{1FB73}': [{ x: 4, y: 0, w: 1, h: 8 }],\n '\\u{1FB74}': [{ x: 5, y: 0, w: 1, h: 8 }],\n '\\u{1FB75}': [{ x: 6, y: 0, w: 1, h: 8 }],\n\n // HORIZONTAL ONE EIGHTH BLOCK-2 through HORIZONTAL ONE EIGHTH BLOCK-7\n '\\u{1FB76}': [{ x: 0, y: 1, w: 8, h: 1 }],\n '\\u{1FB77}': [{ x: 0, y: 2, w: 8, h: 1 }],\n '\\u{1FB78}': [{ x: 0, y: 3, w: 8, h: 1 }],\n '\\u{1FB79}': [{ x: 0, y: 4, w: 8, h: 1 }],\n '\\u{1FB7A}': [{ x: 0, y: 5, w: 8, h: 1 }],\n '\\u{1FB7B}': [{ x: 0, y: 6, w: 8, h: 1 }],\n\n // LEFT AND LOWER ONE EIGHTH BLOCK\n '\\u{1FB7C}': [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }],\n // LEFT AND UPPER ONE EIGHTH BLOCK\n '\\u{1FB7D}': [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }],\n // RIGHT AND UPPER ONE EIGHTH BLOCK\n '\\u{1FB7E}': [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }],\n // RIGHT AND LOWER ONE EIGHTH BLOCK\n '\\u{1FB7F}': [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }],\n // UPPER AND LOWER ONE EIGHTH BLOCK\n '\\u{1FB80}': [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }],\n // HORIZONTAL ONE EIGHTH BLOCK-1358\n '\\u{1FB81}': [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 2, w: 8, h: 1 }, { x: 0, y: 4, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }],\n\n // UPPER ONE QUARTER BLOCK\n '\\u{1FB82}': [{ x: 0, y: 0, w: 8, h: 2 }],\n // UPPER THREE EIGHTHS BLOCK\n '\\u{1FB83}': [{ x: 0, y: 0, w: 8, h: 3 }],\n // UPPER FIVE EIGHTHS BLOCK\n '\\u{1FB84}': [{ x: 0, y: 0, w: 8, h: 5 }],\n // UPPER THREE QUARTERS BLOCK\n '\\u{1FB85}': [{ x: 0, y: 0, w: 8, h: 6 }],\n // UPPER SEVEN EIGHTHS BLOCK\n '\\u{1FB86}': [{ x: 0, y: 0, w: 8, h: 7 }],\n\n // RIGHT ONE QUARTER BLOCK\n '\\u{1FB87}': [{ x: 6, y: 0, w: 2, h: 8 }],\n // RIGHT THREE EIGHTHS B0OCK\n '\\u{1FB88}': [{ x: 5, y: 0, w: 3, h: 8 }],\n // RIGHT FIVE EIGHTHS BL0CK\n '\\u{1FB89}': [{ x: 3, y: 0, w: 5, h: 8 }],\n // RIGHT THREE QUARTERS 0LOCK\n '\\u{1FB8A}': [{ x: 2, y: 0, w: 6, h: 8 }],\n // RIGHT SEVEN EIGHTHS B0OCK\n '\\u{1FB8B}': [{ x: 1, y: 0, w: 7, h: 8 }],\n\n // CHECKER BOARD FILL\n '\\u{1FB95}': [\n { x: 0, y: 0, w: 2, h: 2 }, { x: 4, y: 0, w: 2, h: 2 },\n { x: 2, y: 2, w: 2, h: 2 }, { x: 6, y: 2, w: 2, h: 2 },\n { x: 0, y: 4, w: 2, h: 2 }, { x: 4, y: 4, w: 2, h: 2 },\n { x: 2, y: 6, w: 2, h: 2 }, { x: 6, y: 6, w: 2, h: 2 }\n ],\n // INVERSE CHECKER BOARD FILL\n '\\u{1FB96}': [\n { x: 2, y: 0, w: 2, h: 2 }, { x: 6, y: 0, w: 2, h: 2 },\n { x: 0, y: 2, w: 2, h: 2 }, { x: 4, y: 2, w: 2, h: 2 },\n { x: 2, y: 4, w: 2, h: 2 }, { x: 6, y: 4, w: 2, h: 2 },\n { x: 0, y: 6, w: 2, h: 2 }, { x: 4, y: 6, w: 2, h: 2 }\n ],\n // HEAVY HORIZONTAL FILL (upper middle and lower one quarter block)\n '\\u{1FB97}': [{ x: 0, y: 2, w: 8, h: 2 }, { x: 0, y: 6, w: 8, h: 2 }]\n};\n\ntype PatternDefinition = number[][];\n\n/**\n * Defines the repeating pattern used by special characters, the pattern is made up of a 2d array of\n * pixel values to be filled (1) or not filled (0).\n */\nconst patternCharacterDefinitions: { [key: string]: PatternDefinition | undefined } = {\n // Shade characters (0x2591-0x2593)\n '\u2591': [ // LIGHT SHADE (25%)\n [1, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 1, 0],\n [0, 0, 0, 0]\n ],\n '\u2592': [ // MEDIUM SHADE (50%)\n [1, 0],\n [0, 0],\n [0, 1],\n [0, 0]\n ],\n '\u2593': [ // DARK SHADE (75%)\n [0, 1],\n [1, 1],\n [1, 0],\n [1, 1]\n ]\n};\n\nconst enum Shapes {\n /** \u2502 */ TOP_TO_BOTTOM = 'M.5,0 L.5,1',\n /** \u2500 */ LEFT_TO_RIGHT = 'M0,.5 L1,.5',\n\n /** \u2514 */ TOP_TO_RIGHT = 'M.5,0 L.5,.5 L1,.5',\n /** \u2518 */ TOP_TO_LEFT = 'M.5,0 L.5,.5 L0,.5',\n /** \u2510 */ LEFT_TO_BOTTOM = 'M0,.5 L.5,.5 L.5,1',\n /** \u250C */ RIGHT_TO_BOTTOM = 'M0.5,1 L.5,.5 L1,.5',\n\n /** \u2575 */ MIDDLE_TO_TOP = 'M.5,.5 L.5,0',\n /** \u2574 */ MIDDLE_TO_LEFT = 'M.5,.5 L0,.5',\n /** \u2576 */ MIDDLE_TO_RIGHT = 'M.5,.5 L1,.5',\n /** \u2577 */ MIDDLE_TO_BOTTOM = 'M.5,.5 L.5,1',\n\n /** \u2534 */ T_TOP = 'M0,.5 L1,.5 M.5,.5 L.5,0',\n /** \u2524 */ T_LEFT = 'M.5,0 L.5,1 M.5,.5 L0,.5',\n /** \u251C */ T_RIGHT = 'M.5,0 L.5,1 M.5,.5 L1,.5',\n /** \u252C */ T_BOTTOM = 'M0,.5 L1,.5 M.5,.5 L.5,1',\n\n /** \u253C */ CROSS = 'M0,.5 L1,.5 M.5,0 L.5,1',\n\n /** \u254C */ TWO_DASHES_HORIZONTAL = 'M.1,.5 L.4,.5 M.6,.5 L.9,.5', // .2 empty, .3 filled\n /** \u2504 */ THREE_DASHES_HORIZONTAL = 'M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5', // .1333 empty, .2 filled\n /** \u2509 */ FOUR_DASHES_HORIZONTAL = 'M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5', // .1 empty, .15 filled\n /** \u254E */ TWO_DASHES_VERTICAL = 'M.5,.1 L.5,.4 M.5,.6 L.5,.9',\n /** \u2506 */ THREE_DASHES_VERTICAL = 'M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333',\n /** \u250A */ FOUR_DASHES_VERTICAL = 'M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95',\n}\n\nconst enum Style {\n NORMAL = 1,\n BOLD = 3\n}\n\n/**\n * This contains the definitions of all box drawing characters in the format of SVG paths (ie. the\n * svg d attribute).\n */\nexport const boxDrawingDefinitions: { [character: string]: { [fontWeight: number]: string | ((xp: number, yp: number) => string) } | undefined } = {\n // Uniform normal and bold\n '\u2500': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT },\n '\u2501': { [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '\u2502': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM },\n '\u2503': { [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '\u250C': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM },\n '\u250F': { [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '\u2510': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM },\n '\u2513': { [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '\u2514': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT },\n '\u2517': { [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '\u2518': { [Style.NORMAL]: Shapes.TOP_TO_LEFT },\n '\u251B': { [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '\u251C': { [Style.NORMAL]: Shapes.T_RIGHT },\n '\u2523': { [Style.BOLD]: Shapes.T_RIGHT },\n '\u2524': { [Style.NORMAL]: Shapes.T_LEFT },\n '\u252B': { [Style.BOLD]: Shapes.T_LEFT },\n '\u252C': { [Style.NORMAL]: Shapes.T_BOTTOM },\n '\u2533': { [Style.BOLD]: Shapes.T_BOTTOM },\n '\u2534': { [Style.NORMAL]: Shapes.T_TOP },\n '\u253B': { [Style.BOLD]: Shapes.T_TOP },\n '\u253C': { [Style.NORMAL]: Shapes.CROSS },\n '\u254B': { [Style.BOLD]: Shapes.CROSS },\n '\u2574': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT },\n '\u2578': { [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u2575': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP },\n '\u2579': { [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u2576': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT },\n '\u257A': { [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u2577': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM },\n '\u257B': { [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n\n // Double border\n '\u2550': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp}` },\n '\u2551': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1` },\n '\u2552': { [Style.NORMAL]: (xp, yp) => `M.5,1 L.5,${.5 - yp} L1,${.5 - yp} M.5,${.5 + yp} L1,${.5 + yp}` },\n '\u2553': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},1 L${.5 - xp},.5 L1,.5 M${.5 + xp},.5 L${.5 + xp},1` },\n '\u2554': { [Style.NORMAL]: (xp, yp) => `M1,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1` },\n '\u2555': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L.5,${.5 - yp} L.5,1 M0,${.5 + yp} L.5,${.5 + yp}` },\n '\u2556': { [Style.NORMAL]: (xp, yp) => `M${.5 + xp},1 L${.5 + xp},.5 L0,.5 M${.5 - xp},.5 L${.5 - xp},1` },\n '\u2557': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M0,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},1` },\n '\u2558': { [Style.NORMAL]: (xp, yp) => `M.5,0 L.5,${.5 + yp} L1,${.5 + yp} M.5,${.5 - yp} L1,${.5 - yp}` },\n '\u2559': { [Style.NORMAL]: (xp, yp) => `M1,.5 L${.5 - xp},.5 L${.5 - xp},0 M${.5 + xp},.5 L${.5 + xp},0` },\n '\u255A': { [Style.NORMAL]: (xp, yp) => `M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0 M1,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},0` },\n '\u255B': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L.5,${.5 + yp} L.5,0 M0,${.5 - yp} L.5,${.5 - yp}` },\n '\u255C': { [Style.NORMAL]: (xp, yp) => `M0,.5 L${.5 + xp},.5 L${.5 + xp},0 M${.5 - xp},.5 L${.5 - xp},0` },\n '\u255D': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0 M0,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},0` },\n '\u255E': { [Style.NORMAL]: (xp, yp) => `${Shapes.TOP_TO_BOTTOM} M.5,${.5 - yp} L1,${.5 - yp} M.5,${.5 + yp} L1,${.5 + yp}` },\n '\u255F': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1 M${.5 + xp},.5 L1,.5` },\n '\u2560': { [Style.NORMAL]: (xp, yp) => `M${.5 - xp},0 L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1 M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0` },\n '\u2561': { [Style.NORMAL]: (xp, yp) => `${Shapes.TOP_TO_BOTTOM} M0,${.5 - yp} L.5,${.5 - yp} M0,${.5 + yp} L.5,${.5 + yp}` },\n '\u2562': { [Style.NORMAL]: (xp, yp) => `M0,.5 L${.5 - xp},.5 M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1` },\n '\u2563': { [Style.NORMAL]: (xp, yp) => `M${.5 + xp},0 L${.5 + xp},1 M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0` },\n '\u2564': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp} M.5,${.5 + yp} L.5,1` },\n '\u2565': { [Style.NORMAL]: (xp, yp) => `${Shapes.LEFT_TO_RIGHT} M${.5 - xp},.5 L${.5 - xp},1 M${.5 + xp},.5 L${.5 + xp},1` },\n '\u2566': { [Style.NORMAL]: (xp, yp) => `M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1` },\n '\u2567': { [Style.NORMAL]: (xp, yp) => `M.5,0 L.5,${.5 - yp} M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp}` },\n '\u2568': { [Style.NORMAL]: (xp, yp) => `${Shapes.LEFT_TO_RIGHT} M${.5 - xp},.5 L${.5 - xp},0 M${.5 + xp},.5 L${.5 + xp},0` },\n '\u2569': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L1,${.5 + yp} M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0 M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0` },\n '\u256A': { [Style.NORMAL]: (xp, yp) => `${Shapes.TOP_TO_BOTTOM} M0,${.5 - yp} L1,${.5 - yp} M0,${.5 + yp} L1,${.5 + yp}` },\n '\u256B': { [Style.NORMAL]: (xp, yp) => `${Shapes.LEFT_TO_RIGHT} M${.5 - xp},0 L${.5 - xp},1 M${.5 + xp},0 L${.5 + xp},1` },\n '\u256C': { [Style.NORMAL]: (xp, yp) => `M0,${.5 + yp} L${.5 - xp},${.5 + yp} L${.5 - xp},1 M1,${.5 + yp} L${.5 + xp},${.5 + yp} L${.5 + xp},1 M0,${.5 - yp} L${.5 - xp},${.5 - yp} L${.5 - xp},0 M1,${.5 - yp} L${.5 + xp},${.5 - yp} L${.5 + xp},0` },\n\n // Diagonal\n '\u2571': { [Style.NORMAL]: 'M1,0 L0,1' },\n '\u2572': { [Style.NORMAL]: 'M0,0 L1,1' },\n '\u2573': { [Style.NORMAL]: 'M1,0 L0,1 M0,0 L1,1' },\n\n // Mixed weight\n '\u257C': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u257D': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u257E': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u257F': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u250D': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u250E': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u2511': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u2512': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u2515': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u2516': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u2519': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u251A': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u251D': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u251E': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u251F': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u2520': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '\u2521': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '\u2522': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '\u2525': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u2526': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u2527': { [Style.NORMAL]: Shapes.TOP_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u2528': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '\u2529': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '\u252A': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '\u252D': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u252E': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u252F': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '\u2530': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u2531': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '\u2532': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '\u2535': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u2536': { [Style.NORMAL]: Shapes.TOP_TO_LEFT, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u2537': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '\u2538': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u2539': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '\u253A': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '\u253D': { [Style.NORMAL]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_RIGHT}`, [Style.BOLD]: Shapes.MIDDLE_TO_LEFT },\n '\u253E': { [Style.NORMAL]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_LEFT}`, [Style.BOLD]: Shapes.MIDDLE_TO_RIGHT },\n '\u253F': { [Style.NORMAL]: Shapes.TOP_TO_BOTTOM, [Style.BOLD]: Shapes.LEFT_TO_RIGHT },\n '\u2540': { [Style.NORMAL]: `${Shapes.LEFT_TO_RIGHT} ${Shapes.MIDDLE_TO_BOTTOM}`, [Style.BOLD]: Shapes.MIDDLE_TO_TOP },\n '\u2541': { [Style.NORMAL]: `${Shapes.MIDDLE_TO_TOP} ${Shapes.LEFT_TO_RIGHT}`, [Style.BOLD]: Shapes.MIDDLE_TO_BOTTOM },\n '\u2542': { [Style.NORMAL]: Shapes.LEFT_TO_RIGHT, [Style.BOLD]: Shapes.TOP_TO_BOTTOM },\n '\u2543': { [Style.NORMAL]: Shapes.RIGHT_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_LEFT },\n '\u2544': { [Style.NORMAL]: Shapes.LEFT_TO_BOTTOM, [Style.BOLD]: Shapes.TOP_TO_RIGHT },\n '\u2545': { [Style.NORMAL]: Shapes.TOP_TO_RIGHT, [Style.BOLD]: Shapes.LEFT_TO_BOTTOM },\n '\u2546': { [Style.NORMAL]: Shapes.TOP_TO_LEFT, [Style.BOLD]: Shapes.RIGHT_TO_BOTTOM },\n '\u2547': { [Style.NORMAL]: Shapes.MIDDLE_TO_BOTTOM, [Style.BOLD]: `${Shapes.MIDDLE_TO_TOP} ${Shapes.LEFT_TO_RIGHT}` },\n '\u2548': { [Style.NORMAL]: Shapes.MIDDLE_TO_TOP, [Style.BOLD]: `${Shapes.LEFT_TO_RIGHT} ${Shapes.MIDDLE_TO_BOTTOM}` },\n '\u2549': { [Style.NORMAL]: Shapes.MIDDLE_TO_RIGHT, [Style.BOLD]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_LEFT}` },\n '\u254A': { [Style.NORMAL]: Shapes.MIDDLE_TO_LEFT, [Style.BOLD]: `${Shapes.TOP_TO_BOTTOM} ${Shapes.MIDDLE_TO_RIGHT}` },\n\n // Dashed\n '\u254C': { [Style.NORMAL]: Shapes.TWO_DASHES_HORIZONTAL },\n '\u254D': { [Style.BOLD]: Shapes.TWO_DASHES_HORIZONTAL },\n '\u2504': { [Style.NORMAL]: Shapes.THREE_DASHES_HORIZONTAL },\n '\u2505': { [Style.BOLD]: Shapes.THREE_DASHES_HORIZONTAL },\n '\u2508': { [Style.NORMAL]: Shapes.FOUR_DASHES_HORIZONTAL },\n '\u2509': { [Style.BOLD]: Shapes.FOUR_DASHES_HORIZONTAL },\n '\u254E': { [Style.NORMAL]: Shapes.TWO_DASHES_VERTICAL },\n '\u254F': { [Style.BOLD]: Shapes.TWO_DASHES_VERTICAL },\n '\u2506': { [Style.NORMAL]: Shapes.THREE_DASHES_VERTICAL },\n '\u2507': { [Style.BOLD]: Shapes.THREE_DASHES_VERTICAL },\n '\u250A': { [Style.NORMAL]: Shapes.FOUR_DASHES_VERTICAL },\n '\u250B': { [Style.BOLD]: Shapes.FOUR_DASHES_VERTICAL },\n\n // Curved\n '\u256D': { [Style.NORMAL]: 'C.5,1,.5,.5,1,.5' },\n '\u256E': { [Style.NORMAL]: 'C.5,1,.5,.5,0,.5' },\n '\u256F': { [Style.NORMAL]: 'C.5,0,.5,.5,0,.5' },\n '\u2570': { [Style.NORMAL]: 'C.5,0,.5,.5,1,.5' }\n};\n\n/**\n * Try drawing a custom block element or box drawing character, returning whether it was\n * successfully drawn.\n */\nexport function tryDrawCustomChar(\n ctx: CanvasRenderingContext2D,\n c: string,\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): boolean {\n const blockElementDefinition = blockElementDefinitions[c];\n if (blockElementDefinition) {\n drawBlockElementChar(ctx, blockElementDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n const patternDefinition = patternCharacterDefinitions[c];\n if (patternDefinition) {\n drawPatternChar(ctx, patternDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n const boxDrawingDefinition = boxDrawingDefinitions[c];\n if (boxDrawingDefinition) {\n drawBoxDrawingChar(ctx, boxDrawingDefinition, xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n return true;\n }\n\n return false;\n}\n\nfunction drawBlockElementChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: IBlockVector[],\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n for (let i = 0; i < charDefinition.length; i++) {\n const box = charDefinition[i];\n const xEighth = scaledCellWidth / 8;\n const yEighth = scaledCellHeight / 8;\n ctx.fillRect(\n xOffset + box.x * xEighth,\n yOffset + box.y * yEighth,\n box.w * xEighth,\n box.h * yEighth\n );\n }\n}\n\nconst cachedPatterns: Map> = new Map();\n\nfunction drawPatternChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: number[][],\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n let patternSet = cachedPatterns.get(charDefinition);\n if (!patternSet) {\n patternSet = new Map();\n cachedPatterns.set(charDefinition, patternSet);\n }\n const fillStyle = ctx.fillStyle;\n if (typeof fillStyle !== 'string') {\n throw new Error(`Unexpected fillStyle type \"${fillStyle}\"`);\n }\n let pattern = patternSet.get(fillStyle);\n if (!pattern) {\n const width = charDefinition[0].length;\n const height = charDefinition.length;\n const tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n const tmpCtx = throwIfFalsy(tmpCanvas.getContext('2d'));\n const imageData = new ImageData(width, height);\n\n // Extract rgba from fillStyle\n let r: number;\n let g: number;\n let b: number;\n let a: number;\n if (fillStyle.startsWith('#')) {\n r = parseInt(fillStyle.substr(1, 2), 16);\n g = parseInt(fillStyle.substr(3, 2), 16);\n b = parseInt(fillStyle.substr(5, 2), 16);\n a = fillStyle.length > 7 && parseInt(fillStyle.substr(7, 2), 16) || 1;\n } else if (fillStyle.startsWith('rgba')) {\n ([r, g, b, a] = fillStyle.substring(5, fillStyle.length - 1).split(',').map(e => parseFloat(e)));\n } else {\n throw new Error(`Unexpected fillStyle color format \"${fillStyle}\" when drawing pattern glyph`);\n }\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n imageData.data[(y * width + x) * 4 ] = r;\n imageData.data[(y * width + x) * 4 + 1] = g;\n imageData.data[(y * width + x) * 4 + 2] = b;\n imageData.data[(y * width + x) * 4 + 3] = charDefinition[y][x] * (a * 255);\n }\n }\n tmpCtx.putImageData(imageData, 0, 0);\n pattern = throwIfFalsy(ctx.createPattern(tmpCanvas, null));\n patternSet.set(fillStyle, pattern);\n }\n ctx.fillStyle = pattern;\n ctx.fillRect(xOffset, yOffset, scaledCellWidth, scaledCellHeight);\n}\n\n/**\n * Draws the following box drawing characters by mapping a subset of SVG d attribute instructions to\n * canvas draw calls.\n *\n * Box styles: \u250E\u2530\u2512\u250D\u252F\u2511\u2553\u2565\u2556\u2552\u2564\u2555 \u250F\u2533\u2513\u250C\u2532\u2513\u250C\u252C\u2510\u250F\u2531\u2510\n * \u250C\u2500\u252C\u2500\u2510 \u250F\u2501\u2533\u2501\u2513 \u2554\u2550\u2566\u2550\u2557 \u2520\u2542\u2528\u251D\u253F\u2525\u255F\u256B\u2562\u255E\u256A\u2561 \u2521\u2547\u2529\u251C\u254A\u252B\u2522\u2548\u252A\u2523\u2549\u2524\n * \u2502 \u2502 \u2502 \u2503 \u2503 \u2503 \u2551 \u2551 \u2551 \u2516\u2538\u251A\u2515\u2537\u2519\u2559\u2568\u255C\u2558\u2567\u255B \u2514\u2534\u2518\u2514\u253A\u251B\u2517\u253B\u251B\u2517\u2539\u2518\n * \u251C\u2500\u253C\u2500\u2524 \u2523\u2501\u254B\u2501\u252B \u2560\u2550\u256C\u2550\u2563 \u250F\u2531\u2510\u250C\u2532\u2513\u250C\u252C\u2510\u250C\u252C\u2510 \u250F\u2533\u2513\u250C\u252E\u2513\u250C\u252C\u2510\u250F\u252D\u2510\n * \u2502 \u2502 \u2502 \u2503 \u2503 \u2503 \u2551 \u2551 \u2551 \u2521\u2543\u2524\u251C\u2544\u2529\u251C\u2546\u252A\u2522\u2545\u2524 \u251E\u2540\u2526\u251C\u253E\u252B\u251F\u2541\u2527\u2523\u253D\u2524\n * \u2514\u2500\u2534\u2500\u2518 \u2517\u2501\u253B\u2501\u251B \u255A\u2550\u2569\u2550\u255D \u2514\u2534\u2518\u2514\u2534\u2518\u2514\u253A\u251B\u2517\u2539\u2518 \u2514\u2534\u2518\u2514\u2536\u251B\u2517\u253B\u251B\u2517\u2535\u2518\n *\n * Other:\n * \u256D\u2500\u256E \u2572 \u2571 \u2577\u257B\u254E\u254F\u2506\u2507\u250A\u250B \u257A\u257E\u2574 \u254C\u254C\u254C \u2504\u2504\u2504 \u2508\u2508\u2508\n * \u2502 \u2502 \u2573 \u257D\u257F\u254E\u254F\u2506\u2507\u250A\u250B \u2576\u257C\u2578 \u254D\u254D\u254D \u2505\u2505\u2505 \u2509\u2509\u2509\n * \u2570\u2500\u256F \u2571 \u2572 \u2579\u2575\u254E\u254F\u2506\u2507\u250A\u250B\n *\n * All box drawing characters:\n * \u2500 \u2501 \u2502 \u2503 \u2504 \u2505 \u2506 \u2507 \u2508 \u2509 \u250A \u250B \u250C \u250D \u250E \u250F\n * \u2510 \u2511 \u2512 \u2513 \u2514 \u2515 \u2516 \u2517 \u2518 \u2519 \u251A \u251B \u251C \u251D \u251E \u251F\n * \u2520 \u2521 \u2522 \u2523 \u2524 \u2525 \u2526 \u2527 \u2528 \u2529 \u252A \u252B \u252C \u252D \u252E \u252F\n * \u2530 \u2531 \u2532 \u2533 \u2534 \u2535 \u2536 \u2537 \u2538 \u2539 \u253A \u253B \u253C \u253D \u253E \u253F\n * \u2540 \u2541 \u2542 \u2543 \u2544 \u2545 \u2546 \u2547 \u2548 \u2549 \u254A \u254B \u254C \u254D \u254E \u254F\n * \u2550 \u2551 \u2552 \u2553 \u2554 \u2555 \u2556 \u2557 \u2558 \u2559 \u255A \u255B \u255C \u255D \u255E \u255F\n * \u2560 \u2561 \u2562 \u2563 \u2564 \u2565 \u2566 \u2567 \u2568 \u2569 \u256A \u256B \u256C \u256D \u256E \u256F\n * \u2570 \u2571 \u2572 \u2573 \u2574 \u2575 \u2576 \u2577 \u2578 \u2579 \u257A \u257B \u257C \u257D \u257E \u257F\n *\n * ---\n *\n * Box drawing alignment tests: \u2588\n * \u2589\n * \u2554\u2550\u2550\u2566\u2550\u2550\u2557 \u250C\u2500\u2500\u252C\u2500\u2500\u2510 \u256D\u2500\u2500\u252C\u2500\u2500\u256E \u256D\u2500\u2500\u252C\u2500\u2500\u256E \u250F\u2501\u2501\u2533\u2501\u2501\u2513 \u250E\u2512\u250F\u2511 \u2577 \u257B \u250F\u252F\u2513 \u250C\u2530\u2510 \u258A \u2571\u2572\u2571\u2572\u2573\u2573\u2573\n * \u2551\u250C\u2500\u2568\u2500\u2510\u2551 \u2502\u2554\u2550\u2567\u2550\u2557\u2502 \u2502\u2552\u2550\u256A\u2550\u2555\u2502 \u2502\u2553\u2500\u2541\u2500\u2556\u2502 \u2503\u250C\u2500\u2542\u2500\u2510\u2503 \u2517\u2543\u2544\u2519 \u2576\u253C\u2574\u257A\u254B\u2578\u2520\u253C\u2528 \u251D\u254B\u2525 \u258B \u2572\u2571\u2572\u2571\u2573\u2573\u2573\n * \u2551\u2502\u2572 \u2571\u2502\u2551 \u2502\u2551 \u2551\u2502 \u2502\u2502 \u2502 \u2502\u2502 \u2502\u2551 \u2503 \u2551\u2502 \u2503\u2502 \u257F \u2502\u2503 \u250D\u2545\u2546\u2513 \u2575 \u2579 \u2517\u2537\u251B \u2514\u2538\u2518 \u258C \u2571\u2572\u2571\u2572\u2573\u2573\u2573\n * \u2560\u2561 \u2573 \u255E\u2563 \u251C\u2562 \u255F\u2524 \u251C\u253C\u2500\u253C\u2500\u253C\u2524 \u251C\u256B\u2500\u2542\u2500\u256B\u2524 \u2523\u253F\u257E\u253C\u257C\u253F\u252B \u2515\u251B\u2516\u251A \u250C\u2504\u2504\u2510 \u254E \u250F\u2505\u2505\u2513 \u250B \u258D \u2572\u2571\u2572\u2571\u2573\u2573\u2573\n * \u2551\u2502\u2571 \u2572\u2502\u2551 \u2502\u2551 \u2551\u2502 \u2502\u2502 \u2502 \u2502\u2502 \u2502\u2551 \u2503 \u2551\u2502 \u2503\u2502 \u257D \u2502\u2503 \u2591\u2591\u2592\u2592\u2593\u2593\u2588\u2588 \u250A \u2506 \u254E \u254F \u2507 \u250B \u258E\n * \u2551\u2514\u2500\u2565\u2500\u2518\u2551 \u2502\u255A\u2550\u2564\u2550\u255D\u2502 \u2502\u2558\u2550\u256A\u2550\u255B\u2502 \u2502\u2559\u2500\u2540\u2500\u255C\u2502 \u2503\u2514\u2500\u2542\u2500\u2518\u2503 \u2591\u2591\u2592\u2592\u2593\u2593\u2588\u2588 \u250A \u2506 \u254E \u254F \u2507 \u250B \u258F\n * \u255A\u2550\u2550\u2569\u2550\u2550\u255D \u2514\u2500\u2500\u2534\u2500\u2500\u2518 \u2570\u2500\u2500\u2534\u2500\u2500\u256F \u2570\u2500\u2500\u2534\u2500\u2500\u256F \u2517\u2501\u2501\u253B\u2501\u2501\u251B \u2514\u254C\u254C\u2518 \u254E \u2517\u254D\u254D\u251B \u250B \u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\n *\n * Source: https://www.w3.org/2001/06/utf-8-test/UTF-8-demo.html\n */\nfunction drawBoxDrawingChar(\n ctx: CanvasRenderingContext2D,\n charDefinition: { [fontWeight: number]: string | ((xp: number, yp: number) => string) },\n xOffset: number,\n yOffset: number,\n scaledCellWidth: number,\n scaledCellHeight: number\n): void {\n ctx.strokeStyle = ctx.fillStyle;\n for (const [fontWeight, instructions] of Object.entries(charDefinition)) {\n ctx.beginPath();\n ctx.lineWidth = window.devicePixelRatio * Number.parseInt(fontWeight);\n let actualInstructions: string;\n if (typeof instructions === 'function') {\n const xp = .15;\n const yp = .15 / scaledCellHeight * scaledCellWidth;\n actualInstructions = instructions(xp, yp);\n } else {\n actualInstructions = instructions;\n }\n for (const instruction of actualInstructions.split(' ')) {\n const type = instruction[0];\n const f = svgToCanvasInstructionMap[type];\n if (!f) {\n console.error(`Could not find drawing instructions for \"${type}\"`);\n continue;\n }\n const args: string[] = instruction.substring(1).split(',');\n if (!args[0] || !args[1]) {\n continue;\n }\n f(ctx, translateArgs(args, scaledCellWidth, scaledCellHeight, xOffset, yOffset));\n }\n ctx.stroke();\n ctx.closePath();\n }\n}\n\nfunction clamp(value: number, max: number, min: number = 0): number {\n return Math.max(Math.min(value, max), min);\n}\n\nconst svgToCanvasInstructionMap: { [index: string]: any } = {\n 'C': (ctx: CanvasRenderingContext2D, args: number[]) => ctx.bezierCurveTo(args[0], args[1], args[2], args[3], args[4], args[5]),\n 'L': (ctx: CanvasRenderingContext2D, args: number[]) => ctx.lineTo(args[0], args[1]),\n 'M': (ctx: CanvasRenderingContext2D, args: number[]) => ctx.moveTo(args[0], args[1])\n};\n\nfunction translateArgs(args: string[], cellWidth: number, cellHeight: number, xOffset: number, yOffset: number): number[] {\n const result = args.map(e => parseFloat(e) || parseInt(e));\n\n if (result.length < 2) {\n throw new Error('Too few arguments for instruction');\n }\n\n for (let x = 0; x < result.length; x += 2) {\n // Translate from 0-1 to 0-cellWidth\n result[x] *= cellWidth;\n // Ensure coordinate doesn't escape cell bounds and round to the nearest 0.5 to ensure a crisp\n // line at 100% devicePixelRatio\n if (result[x] !== 0) {\n result[x] = clamp(Math.round(result[x] + 0.5) - 0.5, cellWidth, 0);\n }\n // Apply the cell's offset (ie. x*cellWidth)\n result[x] += xOffset;\n }\n\n for (let y = 1; y < result.length; y += 2) {\n // Translate from 0-1 to 0-cellHeight\n result[y] *= cellHeight;\n // Ensure coordinate doesn't escape cell bounds and round to the nearest 0.5 to ensure a crisp\n // line at 100% devicePixelRatio\n if (result[y] !== 0) {\n result[y] = clamp(Math.round(result[y] + 0.5) - 0.5, cellHeight, 0);\n }\n // Apply the cell's offset (ie. x*cellHeight)\n result[y] += yOffset;\n }\n\n return result;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport class GridCache {\n public cache: (T | undefined)[][];\n\n public constructor() {\n this.cache = [];\n }\n\n public resize(width: number, height: number): void {\n for (let x = 0; x < width; x++) {\n if (this.cache.length <= x) {\n this.cache.push([]);\n }\n for (let y = this.cache[x].length; y < height; y++) {\n this.cache[x].push(undefined);\n }\n this.cache[x].length = height;\n }\n this.cache.length = width;\n }\n\n public clear(): void {\n for (let x = 0; x < this.cache.length; x++) {\n for (let y = 0; y < this.cache[x].length; y++) {\n this.cache[x][y] = undefined;\n }\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions } from 'browser/renderer/Types';\nimport { BaseRenderLayer } from './BaseRenderLayer';\nimport { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';\nimport { is256Color } from 'browser/renderer/atlas/CharAtlasUtils';\nimport { IColorSet, ILinkifierEvent, ILinkifier, ILinkifier2 } from 'browser/Types';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\n\nexport class LinkRenderLayer extends BaseRenderLayer {\n private _state: ILinkifierEvent | undefined;\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n rendererId: number,\n linkifier: ILinkifier,\n linkifier2: ILinkifier2,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService\n ) {\n super(container, 'link', zIndex, true, colors, rendererId, bufferService, optionsService);\n linkifier.onShowLinkUnderline(e => this._onShowLinkUnderline(e));\n linkifier.onHideLinkUnderline(e => this._onHideLinkUnderline(e));\n\n linkifier2.onShowLinkUnderline(e => this._onShowLinkUnderline(e));\n linkifier2.onHideLinkUnderline(e => this._onHideLinkUnderline(e));\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n // Resizing the canvas discards the contents of the canvas so clear state\n this._state = undefined;\n }\n\n public reset(): void {\n this._clearCurrentLink();\n }\n\n private _clearCurrentLink(): void {\n if (this._state) {\n this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1);\n const middleRowCount = this._state.y2 - this._state.y1 - 1;\n if (middleRowCount > 0) {\n this._clearCells(0, this._state.y1 + 1, this._state.cols, middleRowCount);\n }\n this._clearCells(0, this._state.y2, this._state.x2, 1);\n this._state = undefined;\n }\n }\n\n private _onShowLinkUnderline(e: ILinkifierEvent): void {\n if (e.fg === INVERTED_DEFAULT_COLOR) {\n this._ctx.fillStyle = this._colors.background.css;\n } else if (e.fg && is256Color(e.fg)) {\n // 256 color support\n this._ctx.fillStyle = this._colors.ansi[e.fg].css;\n } else {\n this._ctx.fillStyle = this._colors.foreground.css;\n }\n\n if (e.y1 === e.y2) {\n // Single line link\n this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1);\n } else {\n // Multi-line link\n this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1);\n for (let y = e.y1 + 1; y < e.y2; y++) {\n this._fillBottomLineAtCells(0, y, e.cols);\n }\n this._fillBottomLineAtCells(0, e.y2, e.x2);\n }\n this._state = e;\n }\n\n private _onHideLinkUnderline(e: ILinkifierEvent): void {\n this._clearCurrentLink();\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { TextRenderLayer } from 'browser/renderer/TextRenderLayer';\nimport { SelectionRenderLayer } from 'browser/renderer/SelectionRenderLayer';\nimport { CursorRenderLayer } from 'browser/renderer/CursorRenderLayer';\nimport { IRenderLayer, IRenderer, IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/Types';\nimport { LinkRenderLayer } from 'browser/renderer/LinkRenderLayer';\nimport { Disposable } from 'common/Lifecycle';\nimport { IColorSet, ILinkifier, ILinkifier2 } from 'browser/Types';\nimport { ICharSizeService } from 'browser/services/Services';\nimport { IBufferService, IOptionsService, IInstantiationService } from 'common/services/Services';\nimport { removeTerminalFromCache } from 'browser/renderer/atlas/CharAtlasCache';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IDecorationOptions, IDecoration } from 'xterm';\n\nlet nextRendererId = 1;\n\nexport class Renderer extends Disposable implements IRenderer {\n private _id = nextRendererId++;\n\n private _renderLayers: IRenderLayer[];\n private _devicePixelRatio: number;\n\n public dimensions: IRenderDimensions;\n\n private _onRequestRedraw = new EventEmitter();\n public get onRequestRedraw(): IEvent { return this._onRequestRedraw.event; }\n\n constructor(\n private _colors: IColorSet,\n private readonly _screenElement: HTMLElement,\n linkifier: ILinkifier,\n linkifier2: ILinkifier2,\n @IInstantiationService instantiationService: IInstantiationService,\n @IBufferService private readonly _bufferService: IBufferService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n const allowTransparency = this._optionsService.rawOptions.allowTransparency;\n this._renderLayers = [\n instantiationService.createInstance(TextRenderLayer, this._screenElement, 0, this._colors, allowTransparency, this._id),\n instantiationService.createInstance(SelectionRenderLayer, this._screenElement, 1, this._colors, this._id),\n instantiationService.createInstance(LinkRenderLayer, this._screenElement, 2, this._colors, this._id, linkifier, linkifier2),\n instantiationService.createInstance(CursorRenderLayer, this._screenElement, 3, this._colors, this._id, this._onRequestRedraw)\n ];\n this.dimensions = {\n scaledCharWidth: 0,\n scaledCharHeight: 0,\n scaledCellWidth: 0,\n scaledCellHeight: 0,\n scaledCharLeft: 0,\n scaledCharTop: 0,\n scaledCanvasWidth: 0,\n scaledCanvasHeight: 0,\n canvasWidth: 0,\n canvasHeight: 0,\n actualCellWidth: 0,\n actualCellHeight: 0\n };\n this._devicePixelRatio = window.devicePixelRatio;\n this._updateDimensions();\n this.onOptionsChanged();\n }\n\n public dispose(): void {\n for (const l of this._renderLayers) {\n l.dispose();\n }\n super.dispose();\n removeTerminalFromCache(this._id);\n }\n\n public onDevicePixelRatioChange(): void {\n // If the device pixel ratio changed, the char atlas needs to be regenerated\n // and the terminal needs to refreshed\n if (this._devicePixelRatio !== window.devicePixelRatio) {\n this._devicePixelRatio = window.devicePixelRatio;\n this.onResize(this._bufferService.cols, this._bufferService.rows);\n }\n }\n\n public setColors(colors: IColorSet): void {\n this._colors = colors;\n // Clear layers and force a full render\n for (const l of this._renderLayers) {\n l.setColors(this._colors);\n l.reset();\n }\n }\n\n public onResize(cols: number, rows: number): void {\n // Update character and canvas dimensions\n this._updateDimensions();\n\n // Resize all render layers\n for (const l of this._renderLayers) {\n l.resize(this.dimensions);\n }\n\n // Resize the screen\n this._screenElement.style.width = `${this.dimensions.canvasWidth}px`;\n this._screenElement.style.height = `${this.dimensions.canvasHeight}px`;\n }\n\n public onCharSizeChanged(): void {\n this.onResize(this._bufferService.cols, this._bufferService.rows);\n }\n\n public onBlur(): void {\n this._runOperation(l => l.onBlur());\n }\n\n public onFocus(): void {\n this._runOperation(l => l.onFocus());\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean = false): void {\n this._runOperation(l => l.onSelectionChanged(start, end, columnSelectMode));\n }\n\n public onCursorMove(): void {\n this._runOperation(l => l.onCursorMove());\n }\n\n public onOptionsChanged(): void {\n this._runOperation(l => l.onOptionsChanged());\n }\n\n public clear(): void {\n this._runOperation(l => l.reset());\n }\n\n private _runOperation(operation: (layer: IRenderLayer) => void): void {\n for (const l of this._renderLayers) {\n operation(l);\n }\n }\n\n /**\n * Performs the refresh loop callback, calling refresh only if a refresh is\n * necessary before queueing up the next one.\n */\n public renderRows(start: number, end: number): void {\n for (const l of this._renderLayers) {\n l.onGridChanged(start, end);\n }\n }\n\n public clearTextureAtlas(): void {\n for (const layer of this._renderLayers) {\n layer.clearTextureAtlas();\n }\n }\n\n /**\n * Recalculates the character and canvas dimensions.\n */\n private _updateDimensions(): void {\n if (!this._charSizeService.hasValidSize) {\n return;\n }\n\n // Calculate the scaled character width. Width is floored as it must be\n // drawn to an integer grid in order for the CharAtlas \"stamps\" to not be\n // blurry. When text is drawn to the grid not using the CharAtlas, it is\n // clipped to ensure there is no overlap with the next cell.\n this.dimensions.scaledCharWidth = Math.floor(this._charSizeService.width * window.devicePixelRatio);\n\n // Calculate the scaled character height. Height is ceiled in case\n // devicePixelRatio is a floating point number in order to ensure there is\n // enough space to draw the character to the cell.\n this.dimensions.scaledCharHeight = Math.ceil(this._charSizeService.height * window.devicePixelRatio);\n\n // Calculate the scaled cell height, if lineHeight is not 1 then the value\n // will be floored because since lineHeight can never be lower then 1, there\n // is a guarentee that the scaled line height will always be larger than\n // scaled char height.\n this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._optionsService.rawOptions.lineHeight);\n\n // Calculate the y coordinate within a cell that text should draw from in\n // order to draw in the center of a cell.\n this.dimensions.scaledCharTop = this._optionsService.rawOptions.lineHeight === 1 ? 0 : Math.round((this.dimensions.scaledCellHeight - this.dimensions.scaledCharHeight) / 2);\n\n // Calculate the scaled cell width, taking the letterSpacing into account.\n this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._optionsService.rawOptions.letterSpacing);\n\n // Calculate the x coordinate with a cell that text should draw from in\n // order to draw in the center of a cell.\n this.dimensions.scaledCharLeft = Math.floor(this._optionsService.rawOptions.letterSpacing / 2);\n\n // Recalculate the canvas dimensions; scaled* define the actual number of\n // pixel in the canvas\n this.dimensions.scaledCanvasHeight = this._bufferService.rows * this.dimensions.scaledCellHeight;\n this.dimensions.scaledCanvasWidth = this._bufferService.cols * this.dimensions.scaledCellWidth;\n\n // The the size of the canvas on the page. It's very important that this\n // rounds to nearest integer and not ceils as browsers often set\n // window.devicePixelRatio as something like 1.100000023841858, when it's\n // actually 1.1. Ceiling causes blurriness as the backing canvas image is 1\n // pixel too large for the canvas element size.\n this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n\n // Get the _actual_ dimensions of an individual cell. This needs to be\n // derived from the canvasWidth/Height calculated above which takes into\n // account window.devicePixelRatio. ICharSizeService.width/height by itself\n // is insufficient when the page is not at 100% zoom level as it's measured\n // in CSS pixels, but the actual char size on the canvas can differ.\n this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._bufferService.rows;\n this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._bufferService.cols;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport function throwIfFalsy(value: T | undefined | null): T {\n if (!value) {\n throw new Error('value must not be falsy');\n }\n return value;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions } from 'browser/renderer/Types';\nimport { BaseRenderLayer } from 'browser/renderer/BaseRenderLayer';\nimport { IColorSet } from 'browser/Types';\nimport { IBufferService, IOptionsService } from 'common/services/Services';\n\ninterface ISelectionState {\n start?: [number, number];\n end?: [number, number];\n columnSelectMode?: boolean;\n ydisp?: number;\n}\n\nexport class SelectionRenderLayer extends BaseRenderLayer {\n private _state!: ISelectionState;\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n rendererId: number,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService\n ) {\n super(container, 'selection', zIndex, true, colors, rendererId, bufferService, optionsService);\n this._clearState();\n }\n\n private _clearState(): void {\n this._state = {\n start: undefined,\n end: undefined,\n columnSelectMode: undefined,\n ydisp: undefined\n };\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n // Resizing the canvas discards the contents of the canvas so clear state\n this._clearState();\n }\n\n public reset(): void {\n if (this._state.start && this._state.end) {\n this._clearState();\n this._clearAll();\n }\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n // Selection has not changed\n if (!this._didStateChange(start, end, columnSelectMode, this._bufferService.buffer.ydisp)) {\n return;\n }\n\n // Remove all selections\n this._clearAll();\n\n // Selection does not exist\n if (!start || !end) {\n this._clearState();\n return;\n }\n\n // Translate from buffer position to viewport position\n const viewportStartRow = start[1] - this._bufferService.buffer.ydisp;\n const viewportEndRow = end[1] - this._bufferService.buffer.ydisp;\n const viewportCappedStartRow = Math.max(viewportStartRow, 0);\n const viewportCappedEndRow = Math.min(viewportEndRow, this._bufferService.rows - 1);\n\n // No need to draw the selection\n if (viewportCappedStartRow >= this._bufferService.rows || viewportCappedEndRow < 0) {\n this._state.ydisp = this._bufferService.buffer.ydisp;\n return;\n }\n\n this._ctx.fillStyle = this._colors.selectionTransparent.css;\n\n if (columnSelectMode) {\n const startCol = start[0];\n const width = end[0] - startCol;\n const height = viewportCappedEndRow - viewportCappedStartRow + 1;\n this._fillCells(startCol, viewportCappedStartRow, width, height);\n } else {\n // Draw first row\n const startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n const startRowEndCol = viewportCappedStartRow === viewportEndRow ? end[0] : this._bufferService.cols;\n this._fillCells(startCol, viewportCappedStartRow, startRowEndCol - startCol, 1);\n\n // Draw middle rows\n const middleRowsCount = Math.max(viewportCappedEndRow - viewportCappedStartRow - 1, 0);\n this._fillCells(0, viewportCappedStartRow + 1, this._bufferService.cols, middleRowsCount);\n\n // Draw final row\n if (viewportCappedStartRow !== viewportCappedEndRow) {\n // Only draw viewportEndRow if it's not the same as viewportStartRow\n const endCol = viewportEndRow === viewportCappedEndRow ? end[0] : this._bufferService.cols;\n this._fillCells(0, viewportCappedEndRow, endCol, 1);\n }\n }\n\n // Save state for next render\n this._state.start = [start[0], start[1]];\n this._state.end = [end[0], end[1]];\n this._state.columnSelectMode = columnSelectMode;\n this._state.ydisp = this._bufferService.buffer.ydisp;\n }\n\n private _didStateChange(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean, ydisp: number): boolean {\n return !this._areCoordinatesEqual(start, this._state.start) ||\n !this._areCoordinatesEqual(end, this._state.end) ||\n columnSelectMode !== this._state.columnSelectMode ||\n ydisp !== this._state.ydisp;\n }\n\n private _areCoordinatesEqual(coord1: [number, number] | undefined, coord2: [number, number] | undefined): boolean {\n if (!coord1 || !coord2) {\n return false;\n }\n\n return coord1[0] === coord2[0] && coord1[1] === coord2[1];\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderDimensions } from 'browser/renderer/Types';\nimport { CharData, ICellData } from 'common/Types';\nimport { GridCache } from 'browser/renderer/GridCache';\nimport { BaseRenderLayer } from 'browser/renderer/BaseRenderLayer';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { NULL_CELL_CODE, Content } from 'common/buffer/Constants';\nimport { IColorSet } from 'browser/Types';\nimport { CellData } from 'common/buffer/CellData';\nimport { IOptionsService, IBufferService } from 'common/services/Services';\nimport { ICharacterJoinerService } from 'browser/services/Services';\nimport { JoinedCellData } from 'browser/services/CharacterJoinerService';\n\n/**\n * This CharData looks like a null character, which will forc a clear and render\n * when the character changes (a regular space ' ' character may not as it's\n * drawn state is a cleared cell).\n */\n// const OVERLAP_OWNED_CHAR_DATA: CharData = [null, '', 0, -1];\n\nexport class TextRenderLayer extends BaseRenderLayer {\n private _state: GridCache;\n private _characterWidth: number = 0;\n private _characterFont: string = '';\n private _characterOverlapCache: { [key: string]: boolean } = {};\n private _workCell = new CellData();\n\n constructor(\n container: HTMLElement,\n zIndex: number,\n colors: IColorSet,\n alpha: boolean,\n rendererId: number,\n @IBufferService bufferService: IBufferService,\n @IOptionsService optionsService: IOptionsService,\n @ICharacterJoinerService private readonly _characterJoinerService: ICharacterJoinerService\n ) {\n super(container, 'text', zIndex, alpha, colors, rendererId, bufferService, optionsService);\n this._state = new GridCache();\n }\n\n public resize(dim: IRenderDimensions): void {\n super.resize(dim);\n\n // Clear the character width cache if the font or width has changed\n const terminalFont = this._getFont(false, false);\n if (this._characterWidth !== dim.scaledCharWidth || this._characterFont !== terminalFont) {\n this._characterWidth = dim.scaledCharWidth;\n this._characterFont = terminalFont;\n this._characterOverlapCache = {};\n }\n // Resizing the canvas discards the contents of the canvas so clear state\n this._state.clear();\n this._state.resize(this._bufferService.cols, this._bufferService.rows);\n }\n\n public reset(): void {\n this._state.clear();\n this._clearAll();\n }\n\n private _forEachCell(\n firstRow: number,\n lastRow: number,\n callback: (\n cell: ICellData,\n x: number,\n y: number\n ) => void\n ): void {\n for (let y = firstRow; y <= lastRow; y++) {\n const row = y + this._bufferService.buffer.ydisp;\n const line = this._bufferService.buffer.lines.get(row);\n const joinedRanges = this._characterJoinerService.getJoinedCharacters(row);\n for (let x = 0; x < this._bufferService.cols; x++) {\n line!.loadCell(x, this._workCell);\n let cell = this._workCell;\n\n // If true, indicates that the current character(s) to draw were joined.\n let isJoined = false;\n let lastCharX = x;\n\n // The character to the left is a wide character, drawing is owned by\n // the char at x-1\n if (cell.getWidth() === 0) {\n continue;\n }\n\n // Process any joined character ranges as needed. Because of how the\n // ranges are produced, we know that they are valid for the characters\n // and attributes of our input.\n if (joinedRanges.length > 0 && x === joinedRanges[0][0]) {\n isJoined = true;\n const range = joinedRanges.shift()!;\n\n // We already know the exact start and end column of the joined range,\n // so we get the string and width representing it directly\n cell = new JoinedCellData(\n this._workCell,\n line!.translateToString(true, range[0], range[1]),\n range[1] - range[0]\n );\n\n // Skip over the cells occupied by this range in the loop\n lastCharX = range[1] - 1;\n }\n\n // If the character is an overlapping char and the character to the\n // right is a space, take ownership of the cell to the right. We skip\n // this check for joined characters because their rendering likely won't\n // yield the same result as rendering the last character individually.\n if (!isJoined && this._isOverlapping(cell)) {\n // If the character is overlapping, we want to force a re-render on every\n // frame. This is specifically to work around the case where two\n // overlaping chars `a` and `b` are adjacent, the cursor is moved to b and a\n // space is added. Without this, the first half of `b` would never\n // get removed, and `a` would not re-render because it thinks it's\n // already in the correct state.\n // this._state.cache[x][y] = OVERLAP_OWNED_CHAR_DATA;\n if (lastCharX < line!.length - 1 && line!.getCodePoint(lastCharX + 1) === NULL_CELL_CODE) {\n // patch width to 2\n cell.content &= ~Content.WIDTH_MASK;\n cell.content |= 2 << Content.WIDTH_SHIFT;\n // this._clearChar(x + 1, y);\n // The overlapping char's char data will force a clear and render when the\n // overlapping char is no longer to the left of the character and also when\n // the space changes to another character.\n // this._state.cache[x + 1][y] = OVERLAP_OWNED_CHAR_DATA;\n }\n }\n\n callback(\n cell,\n x,\n y\n );\n\n x = lastCharX;\n }\n }\n }\n\n /**\n * Draws the background for a specified range of columns. Tries to batch adjacent cells of the\n * same color together to reduce draw calls.\n */\n private _drawBackground(firstRow: number, lastRow: number): void {\n const ctx = this._ctx;\n const cols = this._bufferService.cols;\n let startX: number = 0;\n let startY: number = 0;\n let prevFillStyle: string | null = null;\n\n ctx.save();\n\n this._forEachCell(firstRow, lastRow, (cell, x, y) => {\n // libvte and xterm both draw the background (but not foreground) of invisible characters,\n // so we should too.\n let nextFillStyle = null; // null represents default background color\n\n if (cell.isInverse()) {\n if (cell.isFgDefault()) {\n nextFillStyle = this._colors.foreground.css;\n } else if (cell.isFgRGB()) {\n nextFillStyle = `rgb(${AttributeData.toColorRGB(cell.getFgColor()).join(',')})`;\n } else {\n nextFillStyle = this._colors.ansi[cell.getFgColor()].css;\n }\n } else if (cell.isBgRGB()) {\n nextFillStyle = `rgb(${AttributeData.toColorRGB(cell.getBgColor()).join(',')})`;\n } else if (cell.isBgPalette()) {\n nextFillStyle = this._colors.ansi[cell.getBgColor()].css;\n }\n\n if (prevFillStyle === null) {\n // This is either the first iteration, or the default background was set. Either way, we\n // don't need to draw anything.\n startX = x;\n startY = y;\n }\n\n if (y !== startY) {\n // our row changed, draw the previous row\n ctx.fillStyle = prevFillStyle || '';\n this._fillCells(startX, startY, cols - startX, 1);\n startX = x;\n startY = y;\n } else if (prevFillStyle !== nextFillStyle) {\n // our color changed, draw the previous characters in this row\n ctx.fillStyle = prevFillStyle || '';\n this._fillCells(startX, startY, x - startX, 1);\n startX = x;\n startY = y;\n }\n\n prevFillStyle = nextFillStyle;\n });\n\n // flush the last color we encountered\n if (prevFillStyle !== null) {\n ctx.fillStyle = prevFillStyle;\n this._fillCells(startX, startY, cols - startX, 1);\n }\n\n ctx.restore();\n }\n\n private _drawForeground(firstRow: number, lastRow: number): void {\n this._forEachCell(firstRow, lastRow, (cell, x, y) => {\n if (cell.isInvisible()) {\n return;\n }\n this._drawChars(cell, x, y);\n if (cell.isUnderline() || cell.isStrikethrough()) {\n this._ctx.save();\n\n if (cell.isInverse()) {\n if (cell.isBgDefault()) {\n this._ctx.fillStyle = this._colors.background.css;\n } else if (cell.isBgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getBgColor()).join(',')})`;\n } else {\n let bg = cell.getBgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && bg < 8) {\n bg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[bg].css;\n }\n } else {\n if (cell.isFgDefault()) {\n this._ctx.fillStyle = this._colors.foreground.css;\n } else if (cell.isFgRGB()) {\n this._ctx.fillStyle = `rgb(${AttributeData.toColorRGB(cell.getFgColor()).join(',')})`;\n } else {\n let fg = cell.getFgColor();\n if (this._optionsService.rawOptions.drawBoldTextInBrightColors && cell.isBold() && fg < 8) {\n fg += 8;\n }\n this._ctx.fillStyle = this._colors.ansi[fg].css;\n }\n }\n\n if (cell.isStrikethrough()) {\n this._fillMiddleLineAtCells(x, y, cell.getWidth());\n }\n if (cell.isUnderline()) {\n this._fillBottomLineAtCells(x, y, cell.getWidth());\n }\n this._ctx.restore();\n }\n });\n }\n\n public onGridChanged(firstRow: number, lastRow: number): void {\n // Resize has not been called yet\n if (this._state.cache.length === 0) {\n return;\n }\n\n if (this._charAtlas) {\n this._charAtlas.beginFrame();\n }\n\n this._clearCells(0, firstRow, this._bufferService.cols, lastRow - firstRow + 1);\n this._drawBackground(firstRow, lastRow);\n this._drawForeground(firstRow, lastRow);\n }\n\n public onOptionsChanged(): void {\n this._setTransparency(this._optionsService.rawOptions.allowTransparency);\n }\n\n /**\n * Whether a character is overlapping to the next cell.\n */\n private _isOverlapping(cell: ICellData): boolean {\n // Only single cell characters can be overlapping, rendering issues can\n // occur without this check\n if (cell.getWidth() !== 1) {\n return false;\n }\n\n // We assume that any ascii character will not overlap\n if (cell.getCode() < 256) {\n return false;\n }\n\n const chars = cell.getChars();\n\n // Deliver from cache if available\n if (this._characterOverlapCache.hasOwnProperty(chars)) {\n return this._characterOverlapCache[chars];\n }\n\n // Setup the font\n this._ctx.save();\n this._ctx.font = this._characterFont;\n\n // Measure the width of the character, but Math.floor it\n // because that is what the renderer does when it calculates\n // the character dimensions we are comparing against\n const overlaps = Math.floor(this._ctx.measureText(chars).width) > this._characterWidth;\n\n // Restore the original context\n this._ctx.restore();\n\n // Cache and return\n this._characterOverlapCache[chars] = overlaps;\n return overlaps;\n }\n\n /**\n * Clear the charcater at the cell specified.\n * @param x The column of the char.\n * @param y The row of the char.\n */\n // private _clearChar(x: number, y: number): void {\n // let colsToClear = 1;\n // // Clear the adjacent character if it was wide\n // const state = this._state.cache[x][y];\n // if (state && state[CHAR_DATA_WIDTH_INDEX] === 2) {\n // colsToClear = 2;\n // }\n // this.clearCells(x, y, colsToClear, 1);\n // }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IGlyphIdentifier } from 'browser/renderer/atlas/Types';\nimport { IDisposable } from 'common/Types';\n\nexport abstract class BaseCharAtlas implements IDisposable {\n private _didWarmUp: boolean = false;\n\n public dispose(): void { }\n\n /**\n * Perform any work needed to warm the cache before it can be used. May be called multiple times.\n * Implement _doWarmUp instead if you only want to get called once.\n */\n public warmUp(): void {\n if (!this._didWarmUp) {\n this._doWarmUp();\n this._didWarmUp = true;\n }\n }\n\n /**\n * Perform any work needed to warm the cache before it can be used. Used by the default\n * implementation of warmUp(), and will only be called once.\n */\n private _doWarmUp(): void { }\n\n public clear(): void { }\n\n /**\n * Called when we start drawing a new frame.\n *\n * TODO: We rely on this getting called by TextRenderLayer. This should really be called by\n * Renderer instead, but we need to make Renderer the source-of-truth for the char atlas, instead\n * of BaseRenderLayer.\n */\n public beginFrame(): void { }\n\n /**\n * May be called before warmUp finishes, however it is okay for the implementation to\n * do nothing and return false in that case.\n *\n * @param ctx Where to draw the character onto.\n * @param glyph Information about what to draw\n * @param x The position on the context to start drawing at\n * @param y The position on the context to start drawing at\n * @returns The success state. True if we drew the character.\n */\n public abstract draw(\n ctx: CanvasRenderingContext2D,\n glyph: IGlyphIdentifier,\n x: number,\n y: number\n ): boolean;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { generateConfig, configEquals } from 'browser/renderer/atlas/CharAtlasUtils';\nimport { BaseCharAtlas } from 'browser/renderer/atlas/BaseCharAtlas';\nimport { DynamicCharAtlas } from 'browser/renderer/atlas/DynamicCharAtlas';\nimport { ICharAtlasConfig } from 'browser/renderer/atlas/Types';\nimport { IColorSet } from 'browser/Types';\nimport { ITerminalOptions } from 'common/services/Services';\n\ninterface ICharAtlasCacheEntry {\n atlas: BaseCharAtlas;\n config: ICharAtlasConfig;\n // N.B. This implementation potentially holds onto copies of the terminal forever, so\n // this may cause memory leaks.\n ownedBy: number[];\n}\n\nconst charAtlasCache: ICharAtlasCacheEntry[] = [];\n\n/**\n * Acquires a char atlas, either generating a new one or returning an existing\n * one that is in use by another terminal.\n */\nexport function acquireCharAtlas(\n options: ITerminalOptions,\n rendererId: number,\n colors: IColorSet,\n scaledCharWidth: number,\n scaledCharHeight: number\n): BaseCharAtlas {\n const newConfig = generateConfig(scaledCharWidth, scaledCharHeight, options, colors);\n\n // Check to see if the renderer already owns this config\n for (let i = 0; i < charAtlasCache.length; i++) {\n const entry = charAtlasCache[i];\n const ownedByIndex = entry.ownedBy.indexOf(rendererId);\n if (ownedByIndex >= 0) {\n if (configEquals(entry.config, newConfig)) {\n return entry.atlas;\n }\n // The configs differ, release the renderer from the entry\n if (entry.ownedBy.length === 1) {\n entry.atlas.dispose();\n charAtlasCache.splice(i, 1);\n } else {\n entry.ownedBy.splice(ownedByIndex, 1);\n }\n break;\n }\n }\n\n // Try match a char atlas from the cache\n for (let i = 0; i < charAtlasCache.length; i++) {\n const entry = charAtlasCache[i];\n if (configEquals(entry.config, newConfig)) {\n // Add the renderer to the cache entry and return\n entry.ownedBy.push(rendererId);\n return entry.atlas;\n }\n }\n\n const newEntry: ICharAtlasCacheEntry = {\n atlas: new DynamicCharAtlas(\n document,\n newConfig\n ),\n config: newConfig,\n ownedBy: [rendererId]\n };\n charAtlasCache.push(newEntry);\n return newEntry.atlas;\n}\n\n/**\n * Removes a terminal reference from the cache, allowing its memory to be freed.\n */\nexport function removeTerminalFromCache(rendererId: number): void {\n for (let i = 0; i < charAtlasCache.length; i++) {\n const index = charAtlasCache[i].ownedBy.indexOf(rendererId);\n if (index !== -1) {\n if (charAtlasCache[i].ownedBy.length === 1) {\n // Remove the cache entry if it's the only renderer\n charAtlasCache[i].atlas.dispose();\n charAtlasCache.splice(i, 1);\n } else {\n // Remove the reference from the cache entry\n charAtlasCache[i].ownedBy.splice(index, 1);\n }\n break;\n }\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharAtlasConfig } from 'browser/renderer/atlas/Types';\nimport { DEFAULT_COLOR } from 'common/buffer/Constants';\nimport { IColorSet, IPartialColorSet } from 'browser/Types';\nimport { ITerminalOptions } from 'common/services/Services';\n\nexport function generateConfig(scaledCharWidth: number, scaledCharHeight: number, options: ITerminalOptions, colors: IColorSet): ICharAtlasConfig {\n // null out some fields that don't matter\n const clonedColors: IPartialColorSet = {\n foreground: colors.foreground,\n background: colors.background,\n cursor: undefined,\n cursorAccent: undefined,\n selection: undefined,\n ansi: [...colors.ansi]\n };\n return {\n devicePixelRatio: window.devicePixelRatio,\n scaledCharWidth,\n scaledCharHeight,\n fontFamily: options.fontFamily,\n fontSize: options.fontSize,\n fontWeight: options.fontWeight,\n fontWeightBold: options.fontWeightBold,\n allowTransparency: options.allowTransparency,\n colors: clonedColors\n };\n}\n\nexport function configEquals(a: ICharAtlasConfig, b: ICharAtlasConfig): boolean {\n for (let i = 0; i < a.colors.ansi.length; i++) {\n if (a.colors.ansi[i].rgba !== b.colors.ansi[i].rgba) {\n return false;\n }\n }\n return a.devicePixelRatio === b.devicePixelRatio &&\n a.fontFamily === b.fontFamily &&\n a.fontSize === b.fontSize &&\n a.fontWeight === b.fontWeight &&\n a.fontWeightBold === b.fontWeightBold &&\n a.allowTransparency === b.allowTransparency &&\n a.scaledCharWidth === b.scaledCharWidth &&\n a.scaledCharHeight === b.scaledCharHeight &&\n a.colors.foreground === b.colors.foreground &&\n a.colors.background === b.colors.background;\n}\n\nexport function is256Color(colorCode: number): boolean {\n return colorCode < DEFAULT_COLOR;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { isFirefox, isLegacyEdge } from 'common/Platform';\n\nexport const INVERTED_DEFAULT_COLOR = 257;\nexport const DIM_OPACITY = 0.5;\n// The text baseline is set conditionally by browser. Using 'ideographic' for Firefox or Legacy Edge would\n// result in truncated text (Issue 3353). Using 'bottom' for Chrome would result in slightly\n// unaligned Powerline fonts (PR 3356#issuecomment-850928179).\nexport const TEXT_BASELINE: CanvasTextBaseline = isFirefox || isLegacyEdge ? 'bottom' : 'ideographic';\n\nexport const CHAR_ATLAS_CELL_SPACING = 1;\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { DIM_OPACITY, INVERTED_DEFAULT_COLOR, TEXT_BASELINE } from 'browser/renderer/atlas/Constants';\nimport { IGlyphIdentifier, ICharAtlasConfig } from 'browser/renderer/atlas/Types';\nimport { BaseCharAtlas } from 'browser/renderer/atlas/BaseCharAtlas';\nimport { DEFAULT_ANSI_COLORS } from 'browser/ColorManager';\nimport { LRUMap } from 'browser/renderer/atlas/LRUMap';\nimport { isFirefox, isSafari } from 'common/Platform';\nimport { IColor } from 'browser/Types';\nimport { throwIfFalsy } from 'browser/renderer/RendererUtils';\nimport { color } from 'browser/Color';\n\n// In practice we're probably never going to exhaust a texture this large. For debugging purposes,\n// however, it can be useful to set this to a really tiny value, to verify that LRU eviction works.\nconst TEXTURE_WIDTH = 1024;\nconst TEXTURE_HEIGHT = 1024;\n\nconst TRANSPARENT_COLOR = {\n css: 'rgba(0, 0, 0, 0)',\n rgba: 0\n};\n\n// Drawing to the cache is expensive: If we have to draw more than this number of glyphs to the\n// cache in a single frame, give up on trying to cache anything else, and try to finish the current\n// frame ASAP.\n//\n// This helps to limit the amount of damage a program can do when it would otherwise thrash the\n// cache.\nconst FRAME_CACHE_DRAW_LIMIT = 100;\n\n/**\n * The number of milliseconds to wait before generating the ImageBitmap, this is to debounce/batch\n * the operation as window.createImageBitmap is asynchronous.\n */\nconst GLYPH_BITMAP_COMMIT_DELAY = 100;\n\ninterface IGlyphCacheValue {\n index: number;\n isEmpty: boolean;\n inBitmap: boolean;\n}\n\nexport function getGlyphCacheKey(glyph: IGlyphIdentifier): number {\n // Note that this only returns a valid key when code < 256\n // Layout:\n // 0b00000000000000000000000000000001: italic (1)\n // 0b00000000000000000000000000000010: dim (1)\n // 0b00000000000000000000000000000100: bold (1)\n // 0b00000000000000000000111111111000: fg (9)\n // 0b00000000000111111111000000000000: bg (9)\n // 0b00011111111000000000000000000000: code (8)\n // 0b11100000000000000000000000000000: unused (3)\n return glyph.code << 21 | glyph.bg << 12 | glyph.fg << 3 | (glyph.bold ? 0 : 4) + (glyph.dim ? 0 : 2) + (glyph.italic ? 0 : 1);\n}\n\nexport class DynamicCharAtlas extends BaseCharAtlas {\n // An ordered map that we're using to keep track of where each glyph is in the atlas texture.\n // It's ordered so that we can determine when to remove the old entries.\n private _cacheMap: LRUMap;\n\n // The texture that the atlas is drawn to\n private _cacheCanvas: HTMLCanvasElement;\n private _cacheCtx: CanvasRenderingContext2D;\n\n // A temporary context that glyphs are drawn to before being transfered to the atlas.\n private _tmpCtx: CanvasRenderingContext2D;\n\n // The number of characters stored in the atlas by width/height\n private _width: number;\n private _height: number;\n\n private _drawToCacheCount: number = 0;\n\n // An array of glyph keys that are waiting on the bitmap to be generated.\n private _glyphsWaitingOnBitmap: IGlyphCacheValue[] = [];\n\n // The timeout that is used to batch bitmap generation so it's not requested for every new glyph.\n private _bitmapCommitTimeout: number | null = null;\n\n // The bitmap to draw from, this is much faster on other browsers than others.\n private _bitmap: ImageBitmap | null = null;\n\n constructor(document: Document, private _config: ICharAtlasConfig) {\n super();\n this._cacheCanvas = document.createElement('canvas');\n this._cacheCanvas.width = TEXTURE_WIDTH;\n this._cacheCanvas.height = TEXTURE_HEIGHT;\n // The canvas needs alpha because we use clearColor to convert the background color to alpha.\n // It might also contain some characters with transparent backgrounds if allowTransparency is\n // set.\n this._cacheCtx = throwIfFalsy(this._cacheCanvas.getContext('2d', { alpha: true }));\n\n const tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = this._config.scaledCharWidth;\n tmpCanvas.height = this._config.scaledCharHeight;\n this._tmpCtx = throwIfFalsy(tmpCanvas.getContext('2d', { alpha: this._config.allowTransparency }));\n\n this._width = Math.floor(TEXTURE_WIDTH / this._config.scaledCharWidth);\n this._height = Math.floor(TEXTURE_HEIGHT / this._config.scaledCharHeight);\n const capacity = this._width * this._height;\n this._cacheMap = new LRUMap(capacity);\n this._cacheMap.prealloc(capacity);\n\n // This is useful for debugging\n // document.body.appendChild(this._cacheCanvas);\n }\n\n public dispose(): void {\n if (this._bitmapCommitTimeout !== null) {\n window.clearTimeout(this._bitmapCommitTimeout);\n this._bitmapCommitTimeout = null;\n }\n }\n\n public beginFrame(): void {\n this._drawToCacheCount = 0;\n }\n\n public clear(): void {\n if (this._cacheMap.size > 0) {\n const capacity = this._width * this._height;\n this._cacheMap = new LRUMap(capacity);\n this._cacheMap.prealloc(capacity);\n }\n this._cacheCtx.clearRect(0, 0, TEXTURE_WIDTH, TEXTURE_HEIGHT);\n this._tmpCtx.clearRect(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n }\n\n public draw(\n ctx: CanvasRenderingContext2D,\n glyph: IGlyphIdentifier,\n x: number,\n y: number\n ): boolean {\n // Space is always an empty cell, special case this as it's so common\n if (glyph.code === 32) {\n return true;\n }\n\n // Exit early for uncachable glyphs\n if (!this._canCache(glyph)) {\n return false;\n }\n\n const glyphKey = getGlyphCacheKey(glyph);\n const cacheValue = this._cacheMap.get(glyphKey);\n if (cacheValue !== null && cacheValue !== undefined) {\n this._drawFromCache(ctx, cacheValue, x, y);\n return true;\n }\n if (this._drawToCacheCount < FRAME_CACHE_DRAW_LIMIT) {\n let index;\n if (this._cacheMap.size < this._cacheMap.capacity) {\n index = this._cacheMap.size;\n } else {\n // we're out of space, so our call to set will delete this item\n index = this._cacheMap.peek()!.index;\n }\n const cacheValue = this._drawToCache(glyph, index);\n this._cacheMap.set(glyphKey, cacheValue);\n this._drawFromCache(ctx, cacheValue, x, y);\n return true;\n }\n return false;\n }\n\n private _canCache(glyph: IGlyphIdentifier): boolean {\n // Only cache ascii and extended characters for now, to be safe. In the future, we could do\n // something more complicated to determine the expected width of a character.\n //\n // If we switch the renderer over to webgl at some point, we may be able to use blending modes\n // to draw overlapping glyphs from the atlas:\n // https://github.com/servo/webrender/issues/464#issuecomment-255632875\n // https://webglfundamentals.org/webgl/lessons/webgl-text-texture.html\n return glyph.code < 256;\n }\n\n private _toCoordinateX(index: number): number {\n return (index % this._width) * this._config.scaledCharWidth;\n }\n\n private _toCoordinateY(index: number): number {\n return Math.floor(index / this._width) * this._config.scaledCharHeight;\n }\n\n private _drawFromCache(\n ctx: CanvasRenderingContext2D,\n cacheValue: IGlyphCacheValue,\n x: number,\n y: number\n ): void {\n // We don't actually need to do anything if this is whitespace.\n if (cacheValue.isEmpty) {\n return;\n }\n const cacheX = this._toCoordinateX(cacheValue.index);\n const cacheY = this._toCoordinateY(cacheValue.index);\n ctx.drawImage(\n cacheValue.inBitmap ? this._bitmap! : this._cacheCanvas,\n cacheX,\n cacheY,\n this._config.scaledCharWidth,\n this._config.scaledCharHeight,\n x,\n y,\n this._config.scaledCharWidth,\n this._config.scaledCharHeight\n );\n }\n\n private _getColorFromAnsiIndex(idx: number): IColor {\n if (idx < this._config.colors.ansi.length) {\n return this._config.colors.ansi[idx];\n }\n return DEFAULT_ANSI_COLORS[idx];\n }\n\n private _getBackgroundColor(glyph: IGlyphIdentifier): IColor {\n if (this._config.allowTransparency) {\n // The background color might have some transparency, so we need to render it as fully\n // transparent in the atlas. Otherwise we'd end up drawing the transparent background twice\n // around the anti-aliased edges of the glyph, and it would look too dark.\n return TRANSPARENT_COLOR;\n }\n if (glyph.bg === INVERTED_DEFAULT_COLOR) {\n return this._config.colors.foreground;\n }\n if (glyph.bg < 256) {\n return this._getColorFromAnsiIndex(glyph.bg);\n }\n return this._config.colors.background;\n }\n\n private _getForegroundColor(glyph: IGlyphIdentifier): IColor {\n if (glyph.fg === INVERTED_DEFAULT_COLOR) {\n return color.opaque(this._config.colors.background);\n }\n if (glyph.fg < 256) {\n // 256 color support\n return this._getColorFromAnsiIndex(glyph.fg);\n }\n return this._config.colors.foreground;\n }\n\n // TODO: We do this (or something similar) in multiple places. We should split this off\n // into a shared function.\n private _drawToCache(glyph: IGlyphIdentifier, index: number): IGlyphCacheValue {\n this._drawToCacheCount++;\n\n this._tmpCtx.save();\n\n // draw the background\n const backgroundColor = this._getBackgroundColor(glyph);\n // Use a 'copy' composite operation to clear any existing glyph out of _tmpCtxWithAlpha, regardless of\n // transparency in backgroundColor\n this._tmpCtx.globalCompositeOperation = 'copy';\n this._tmpCtx.fillStyle = backgroundColor.css;\n this._tmpCtx.fillRect(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n this._tmpCtx.globalCompositeOperation = 'source-over';\n\n // draw the foreground/glyph\n const fontWeight = glyph.bold ? this._config.fontWeightBold : this._config.fontWeight;\n const fontStyle = glyph.italic ? 'italic' : '';\n this._tmpCtx.font =\n `${fontStyle} ${fontWeight} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`;\n this._tmpCtx.textBaseline = TEXT_BASELINE;\n\n this._tmpCtx.fillStyle = this._getForegroundColor(glyph).css;\n\n // Apply alpha to dim the character\n if (glyph.dim) {\n this._tmpCtx.globalAlpha = DIM_OPACITY;\n }\n // Draw the character\n this._tmpCtx.fillText(glyph.chars, 0, this._config.scaledCharHeight);\n\n // clear the background from the character to avoid issues with drawing over the previous\n // character if it extends past it's bounds\n let imageData = this._tmpCtx.getImageData(\n 0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight\n );\n let isEmpty = false;\n if (!this._config.allowTransparency) {\n isEmpty = clearColor(imageData, backgroundColor);\n }\n\n // If this charcater is underscore and empty, shift it up until it is visible, try for a maximum\n // of 5 pixels.\n if (isEmpty && glyph.chars === '_' && !this._config.allowTransparency) {\n for (let offset = 1; offset <= 5; offset++) {\n // Draw the character\n this._tmpCtx.fillText(glyph.chars, 0, this._config.scaledCharHeight - offset);\n\n // clear the background from the character to avoid issues with drawing over the previous\n // character if it extends past it's bounds\n imageData = this._tmpCtx.getImageData(\n 0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight\n );\n isEmpty = clearColor(imageData, backgroundColor);\n if (!isEmpty) {\n break;\n }\n }\n }\n\n this._tmpCtx.restore();\n\n // copy the data from imageData to _cacheCanvas\n const x = this._toCoordinateX(index);\n const y = this._toCoordinateY(index);\n // putImageData doesn't do any blending, so it will overwrite any existing cache entry for us\n this._cacheCtx.putImageData(imageData, x, y);\n\n // Add the glyph and queue it to the bitmap (if the browser supports it)\n const cacheValue = {\n index,\n isEmpty,\n inBitmap: false\n };\n this._addGlyphToBitmap(cacheValue);\n\n return cacheValue;\n }\n\n private _addGlyphToBitmap(cacheValue: IGlyphCacheValue): void {\n // Support is patchy for createImageBitmap at the moment, pass a canvas back\n // if support is lacking as drawImage works there too. Firefox is also\n // included here as ImageBitmap appears both buggy and has horrible\n // performance (tested on v55).\n if (!('createImageBitmap' in window) || isFirefox || isSafari) {\n return;\n }\n\n // Add the glyph to the queue\n this._glyphsWaitingOnBitmap.push(cacheValue);\n\n // Check if bitmap generation timeout already exists\n if (this._bitmapCommitTimeout !== null) {\n return;\n }\n\n this._bitmapCommitTimeout = window.setTimeout(() => this._generateBitmap(), GLYPH_BITMAP_COMMIT_DELAY);\n }\n\n private _generateBitmap(): void {\n const glyphsMovingToBitmap = this._glyphsWaitingOnBitmap;\n this._glyphsWaitingOnBitmap = [];\n window.createImageBitmap(this._cacheCanvas).then(bitmap => {\n // Set bitmap\n this._bitmap = bitmap;\n\n // Mark all new glyphs as in bitmap, excluding glyphs that came in after\n // the bitmap was requested\n for (let i = 0; i < glyphsMovingToBitmap.length; i++) {\n const value = glyphsMovingToBitmap[i];\n // It doesn't matter if the value was already evicted, it will be\n // released from memory after this block if so.\n value.inBitmap = true;\n }\n });\n this._bitmapCommitTimeout = null;\n }\n}\n\n// This is used for debugging the renderer, just swap out `new DynamicCharAtlas` with\n// `new NoneCharAtlas`.\nexport class NoneCharAtlas extends BaseCharAtlas {\n constructor(document: Document, config: ICharAtlasConfig) {\n super();\n }\n\n public draw(\n ctx: CanvasRenderingContext2D,\n glyph: IGlyphIdentifier,\n x: number,\n y: number\n ): boolean {\n return false;\n }\n}\n\n/**\n * Makes a partiicular rgb color in an ImageData completely transparent.\n * @returns True if the result is \"empty\", meaning all pixels are fully transparent.\n */\nfunction clearColor(imageData: ImageData, color: IColor): boolean {\n let isEmpty = true;\n const r = color.rgba >>> 24;\n const g = color.rgba >>> 16 & 0xFF;\n const b = color.rgba >>> 8 & 0xFF;\n for (let offset = 0; offset < imageData.data.length; offset += 4) {\n if (imageData.data[offset] === r &&\n imageData.data[offset + 1] === g &&\n imageData.data[offset + 2] === b) {\n imageData.data[offset + 3] = 0;\n } else {\n isEmpty = false;\n }\n }\n return isEmpty;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\ninterface ILinkedListNode {\n prev: ILinkedListNode | null;\n next: ILinkedListNode | null;\n key: number | null;\n value: T | null;\n}\n\nexport class LRUMap {\n private _map: { [key: number]: ILinkedListNode } = {};\n private _head: ILinkedListNode | null = null;\n private _tail: ILinkedListNode | null = null;\n private _nodePool: ILinkedListNode[] = [];\n public size: number = 0;\n\n constructor(public capacity: number) { }\n\n private _unlinkNode(node: ILinkedListNode): void {\n const prev = node.prev;\n const next = node.next;\n if (node === this._head) {\n this._head = next;\n }\n if (node === this._tail) {\n this._tail = prev;\n }\n if (prev !== null) {\n prev.next = next;\n }\n if (next !== null) {\n next.prev = prev;\n }\n }\n\n private _appendNode(node: ILinkedListNode): void {\n const tail = this._tail;\n if (tail !== null) {\n tail.next = node;\n }\n node.prev = tail;\n node.next = null;\n this._tail = node;\n if (this._head === null) {\n this._head = node;\n }\n }\n\n /**\n * Preallocate a bunch of linked-list nodes. Allocating these nodes ahead of time means that\n * they're more likely to live next to each other in memory, which seems to improve performance.\n *\n * Each empty object only consumes about 60 bytes of memory, so this is pretty cheap, even for\n * large maps.\n */\n public prealloc(count: number): void {\n const nodePool = this._nodePool;\n for (let i = 0; i < count; i++) {\n nodePool.push({\n prev: null,\n next: null,\n key: null,\n value: null\n });\n }\n }\n\n public get(key: number): T | null {\n // This is unsafe: We're assuming our keyspace doesn't overlap with Object.prototype. However,\n // it's faster than calling hasOwnProperty, and in our case, it would never overlap.\n const node = this._map[key];\n if (node !== undefined) {\n this._unlinkNode(node);\n this._appendNode(node);\n return node.value;\n }\n return null;\n }\n\n /**\n * Gets a value from a key without marking it as the most recently used item.\n */\n public peekValue(key: number): T | null {\n const node = this._map[key];\n if (node !== undefined) {\n return node.value;\n }\n return null;\n }\n\n public peek(): T | null {\n const head = this._head;\n return head === null ? null : head.value;\n }\n\n public set(key: number, value: T): void {\n // This is unsafe: See note above.\n let node = this._map[key];\n if (node !== undefined) {\n // already exists, we just need to mutate it and move it to the end of the list\n node = this._map[key];\n this._unlinkNode(node);\n node.value = value;\n } else if (this.size >= this.capacity) {\n // we're out of space: recycle the head node, move it to the tail\n node = this._head!;\n this._unlinkNode(node);\n delete this._map[node.key!];\n node.key = key;\n node.value = value;\n this._map[key] = node;\n } else {\n // make a new element\n const nodePool = this._nodePool;\n if (nodePool.length > 0) {\n // use a preallocated node if we can\n node = nodePool.pop()!;\n node.key = key;\n node.value = value;\n } else {\n node = {\n prev: null,\n next: null,\n key,\n value\n };\n }\n this._map[key] = node;\n this.size++;\n }\n this._appendNode(node);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderer, IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/Types';\nimport { BOLD_CLASS, ITALIC_CLASS, CURSOR_CLASS, CURSOR_STYLE_BLOCK_CLASS, CURSOR_BLINK_CLASS, CURSOR_STYLE_BAR_CLASS, CURSOR_STYLE_UNDERLINE_CLASS, DomRendererRowFactory } from 'browser/renderer/dom/DomRendererRowFactory';\nimport { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';\nimport { Disposable } from 'common/Lifecycle';\nimport { IColorSet, ILinkifierEvent, ILinkifier, ILinkifier2 } from 'browser/Types';\nimport { ICharSizeService } from 'browser/services/Services';\nimport { IOptionsService, IBufferService, IInstantiationService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { color } from 'browser/Color';\nimport { removeElementFromParent } from 'browser/Dom';\n\nconst TERMINAL_CLASS_PREFIX = 'xterm-dom-renderer-owner-';\nconst ROW_CONTAINER_CLASS = 'xterm-rows';\nconst FG_CLASS_PREFIX = 'xterm-fg-';\nconst BG_CLASS_PREFIX = 'xterm-bg-';\nconst FOCUS_CLASS = 'xterm-focus';\nconst SELECTION_CLASS = 'xterm-selection';\n\nlet nextTerminalId = 1;\n\n/**\n * A fallback renderer for when canvas is slow. This is not meant to be\n * particularly fast or feature complete, more just stable and usable for when\n * canvas is not an option.\n */\nexport class DomRenderer extends Disposable implements IRenderer {\n private _rowFactory: DomRendererRowFactory;\n private _terminalClass: number = nextTerminalId++;\n\n private _themeStyleElement!: HTMLStyleElement;\n private _dimensionsStyleElement!: HTMLStyleElement;\n private _rowContainer: HTMLElement;\n private _rowElements: HTMLElement[] = [];\n private _selectionContainer: HTMLElement;\n\n public dimensions: IRenderDimensions;\n\n public get onRequestRedraw(): IEvent { return new EventEmitter().event; }\n\n constructor(\n private _colors: IColorSet,\n private readonly _element: HTMLElement,\n private readonly _screenElement: HTMLElement,\n private readonly _viewportElement: HTMLElement,\n private readonly _linkifier: ILinkifier,\n private readonly _linkifier2: ILinkifier2,\n @IInstantiationService instantiationService: IInstantiationService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n super();\n this._rowContainer = document.createElement('div');\n this._rowContainer.classList.add(ROW_CONTAINER_CLASS);\n this._rowContainer.style.lineHeight = 'normal';\n this._rowContainer.setAttribute('aria-hidden', 'true');\n this._refreshRowElements(this._bufferService.cols, this._bufferService.rows);\n this._selectionContainer = document.createElement('div');\n this._selectionContainer.classList.add(SELECTION_CLASS);\n this._selectionContainer.setAttribute('aria-hidden', 'true');\n\n this.dimensions = {\n scaledCharWidth: 0,\n scaledCharHeight: 0,\n scaledCellWidth: 0,\n scaledCellHeight: 0,\n scaledCharLeft: 0,\n scaledCharTop: 0,\n scaledCanvasWidth: 0,\n scaledCanvasHeight: 0,\n canvasWidth: 0,\n canvasHeight: 0,\n actualCellWidth: 0,\n actualCellHeight: 0\n };\n this._updateDimensions();\n this._injectCss();\n\n this._rowFactory = instantiationService.createInstance(DomRendererRowFactory, document, this._colors);\n\n this._element.classList.add(TERMINAL_CLASS_PREFIX + this._terminalClass);\n this._screenElement.appendChild(this._rowContainer);\n this._screenElement.appendChild(this._selectionContainer);\n\n this._linkifier.onShowLinkUnderline(e => this._onLinkHover(e));\n this._linkifier.onHideLinkUnderline(e => this._onLinkLeave(e));\n\n this._linkifier2.onShowLinkUnderline(e => this._onLinkHover(e));\n this._linkifier2.onHideLinkUnderline(e => this._onLinkLeave(e));\n }\n\n public dispose(): void {\n this._element.classList.remove(TERMINAL_CLASS_PREFIX + this._terminalClass);\n\n // Outside influences such as React unmounts may manipulate the DOM before our disposal.\n // https://github.com/xtermjs/xterm.js/issues/2960\n removeElementFromParent(this._rowContainer, this._selectionContainer, this._themeStyleElement, this._dimensionsStyleElement);\n\n super.dispose();\n }\n\n private _updateDimensions(): void {\n this.dimensions.scaledCharWidth = this._charSizeService.width * window.devicePixelRatio;\n this.dimensions.scaledCharHeight = Math.ceil(this._charSizeService.height * window.devicePixelRatio);\n this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._optionsService.rawOptions.letterSpacing);\n this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._optionsService.rawOptions.lineHeight);\n this.dimensions.scaledCharLeft = 0;\n this.dimensions.scaledCharTop = 0;\n this.dimensions.scaledCanvasWidth = this.dimensions.scaledCellWidth * this._bufferService.cols;\n this.dimensions.scaledCanvasHeight = this.dimensions.scaledCellHeight * this._bufferService.rows;\n this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._bufferService.cols;\n this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._bufferService.rows;\n\n for (const element of this._rowElements) {\n element.style.width = `${this.dimensions.canvasWidth}px`;\n element.style.height = `${this.dimensions.actualCellHeight}px`;\n element.style.lineHeight = `${this.dimensions.actualCellHeight}px`;\n // Make sure rows don't overflow onto following row\n element.style.overflow = 'hidden';\n }\n\n if (!this._dimensionsStyleElement) {\n this._dimensionsStyleElement = document.createElement('style');\n this._screenElement.appendChild(this._dimensionsStyleElement);\n }\n\n const styles =\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} span {` +\n ` display: inline-block;` +\n ` height: 100%;` +\n ` vertical-align: top;` +\n ` width: ${this.dimensions.actualCellWidth}px` +\n `}`;\n\n this._dimensionsStyleElement.textContent = styles;\n\n this._selectionContainer.style.height = this._viewportElement.style.height;\n this._screenElement.style.width = `${this.dimensions.canvasWidth}px`;\n this._screenElement.style.height = `${this.dimensions.canvasHeight}px`;\n }\n\n public setColors(colors: IColorSet): void {\n this._colors = colors;\n this._injectCss();\n }\n\n private _injectCss(): void {\n if (!this._themeStyleElement) {\n this._themeStyleElement = document.createElement('style');\n this._screenElement.appendChild(this._themeStyleElement);\n }\n\n // Base CSS\n let styles =\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} {` +\n ` color: ${this._colors.foreground.css};` +\n ` font-family: ${this._optionsService.rawOptions.fontFamily};` +\n ` font-size: ${this._optionsService.rawOptions.fontSize}px;` +\n `}`;\n // Text styles\n styles +=\n `${this._terminalSelector} span:not(.${BOLD_CLASS}) {` +\n ` font-weight: ${this._optionsService.rawOptions.fontWeight};` +\n `}` +\n `${this._terminalSelector} span.${BOLD_CLASS} {` +\n ` font-weight: ${this._optionsService.rawOptions.fontWeightBold};` +\n `}` +\n `${this._terminalSelector} span.${ITALIC_CLASS} {` +\n ` font-style: italic;` +\n `}`;\n // Blink animation\n styles +=\n `@keyframes blink_box_shadow` + `_` + this._terminalClass + ` {` +\n ` 50% {` +\n ` box-shadow: none;` +\n ` }` +\n `}`;\n styles +=\n `@keyframes blink_block` + `_` + this._terminalClass + ` {` +\n ` 0% {` +\n ` background-color: ${this._colors.cursor.css};` +\n ` color: ${this._colors.cursorAccent.css};` +\n ` }` +\n ` 50% {` +\n ` background-color: ${this._colors.cursorAccent.css};` +\n ` color: ${this._colors.cursor.css};` +\n ` }` +\n `}`;\n // Cursor\n styles +=\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}:not(.${FOCUS_CLASS}) .${CURSOR_CLASS}.${CURSOR_STYLE_BLOCK_CLASS} {` +\n ` outline: 1px solid ${this._colors.cursor.css};` +\n ` outline-offset: -1px;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}.${FOCUS_CLASS} .${CURSOR_CLASS}.${CURSOR_BLINK_CLASS}:not(.${CURSOR_STYLE_BLOCK_CLASS}) {` +\n ` animation: blink_box_shadow` + `_` + this._terminalClass + ` 1s step-end infinite;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}.${FOCUS_CLASS} .${CURSOR_CLASS}.${CURSOR_BLINK_CLASS}.${CURSOR_STYLE_BLOCK_CLASS} {` +\n ` animation: blink_block` + `_` + this._terminalClass + ` 1s step-end infinite;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS}.${FOCUS_CLASS} .${CURSOR_CLASS}.${CURSOR_STYLE_BLOCK_CLASS} {` +\n ` background-color: ${this._colors.cursor.css};` +\n ` color: ${this._colors.cursorAccent.css};` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} .${CURSOR_CLASS}.${CURSOR_STYLE_BAR_CLASS} {` +\n ` box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${this._colors.cursor.css} inset;` +\n `}` +\n `${this._terminalSelector} .${ROW_CONTAINER_CLASS} .${CURSOR_CLASS}.${CURSOR_STYLE_UNDERLINE_CLASS} {` +\n ` box-shadow: 0 -1px 0 ${this._colors.cursor.css} inset;` +\n `}`;\n // Selection\n styles +=\n `${this._terminalSelector} .${SELECTION_CLASS} {` +\n ` position: absolute;` +\n ` top: 0;` +\n ` left: 0;` +\n ` z-index: 1;` +\n ` pointer-events: none;` +\n `}` +\n `${this._terminalSelector} .${SELECTION_CLASS} div {` +\n ` position: absolute;` +\n ` background-color: ${this._colors.selectionTransparent.css};` +\n `}`;\n // Colors\n this._colors.ansi.forEach((c, i) => {\n styles +=\n `${this._terminalSelector} .${FG_CLASS_PREFIX}${i} { color: ${c.css}; }` +\n `${this._terminalSelector} .${BG_CLASS_PREFIX}${i} { background-color: ${c.css}; }`;\n });\n styles +=\n `${this._terminalSelector} .${FG_CLASS_PREFIX}${INVERTED_DEFAULT_COLOR} { color: ${color.opaque(this._colors.background).css}; }` +\n `${this._terminalSelector} .${BG_CLASS_PREFIX}${INVERTED_DEFAULT_COLOR} { background-color: ${this._colors.foreground.css}; }`;\n\n this._themeStyleElement.textContent = styles;\n }\n\n public onDevicePixelRatioChange(): void {\n this._updateDimensions();\n }\n\n private _refreshRowElements(cols: number, rows: number): void {\n // Add missing elements\n for (let i = this._rowElements.length; i <= rows; i++) {\n const row = document.createElement('div');\n this._rowContainer.appendChild(row);\n this._rowElements.push(row);\n }\n // Remove excess elements\n while (this._rowElements.length > rows) {\n this._rowContainer.removeChild(this._rowElements.pop()!);\n }\n }\n\n public onResize(cols: number, rows: number): void {\n this._refreshRowElements(cols, rows);\n this._updateDimensions();\n }\n\n public onCharSizeChanged(): void {\n this._updateDimensions();\n }\n\n public onBlur(): void {\n this._rowContainer.classList.remove(FOCUS_CLASS);\n }\n\n public onFocus(): void {\n this._rowContainer.classList.add(FOCUS_CLASS);\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n // Remove all selections\n while (this._selectionContainer.children.length) {\n this._selectionContainer.removeChild(this._selectionContainer.children[0]);\n }\n\n // Selection does not exist\n if (!start || !end) {\n return;\n }\n\n // Translate from buffer position to viewport position\n const viewportStartRow = start[1] - this._bufferService.buffer.ydisp;\n const viewportEndRow = end[1] - this._bufferService.buffer.ydisp;\n const viewportCappedStartRow = Math.max(viewportStartRow, 0);\n const viewportCappedEndRow = Math.min(viewportEndRow, this._bufferService.rows - 1);\n\n // No need to draw the selection\n if (viewportCappedStartRow >= this._bufferService.rows || viewportCappedEndRow < 0) {\n return;\n }\n\n // Create the selections\n const documentFragment = document.createDocumentFragment();\n\n if (columnSelectMode) {\n documentFragment.appendChild(\n this._createSelectionElement(viewportCappedStartRow, start[0], end[0], viewportCappedEndRow - viewportCappedStartRow + 1)\n );\n } else {\n // Draw first row\n const startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n const endCol = viewportCappedStartRow === viewportEndRow ? end[0] : this._bufferService.cols;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow, startCol, endCol));\n // Draw middle rows\n const middleRowsCount = viewportCappedEndRow - viewportCappedStartRow - 1;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow + 1, 0, this._bufferService.cols, middleRowsCount));\n // Draw final row\n if (viewportCappedStartRow !== viewportCappedEndRow) {\n // Only draw viewportEndRow if it's not the same as viewporttartRow\n const endCol = viewportEndRow === viewportCappedEndRow ? end[0] : this._bufferService.cols;\n documentFragment.appendChild(this._createSelectionElement(viewportCappedEndRow, 0, endCol));\n }\n }\n this._selectionContainer.appendChild(documentFragment);\n }\n\n /**\n * Creates a selection element at the specified position.\n * @param row The row of the selection.\n * @param colStart The start column.\n * @param colEnd The end columns.\n */\n private _createSelectionElement(row: number, colStart: number, colEnd: number, rowCount: number = 1): HTMLElement {\n const element = document.createElement('div');\n element.style.height = `${rowCount * this.dimensions.actualCellHeight}px`;\n element.style.top = `${row * this.dimensions.actualCellHeight}px`;\n element.style.left = `${colStart * this.dimensions.actualCellWidth}px`;\n element.style.width = `${this.dimensions.actualCellWidth * (colEnd - colStart)}px`;\n return element;\n }\n\n public onCursorMove(): void {\n // No-op, the cursor is drawn when rows are drawn\n }\n\n public onOptionsChanged(): void {\n // Force a refresh\n this._updateDimensions();\n this._injectCss();\n }\n\n public clear(): void {\n for (const e of this._rowElements) {\n e.innerText = '';\n }\n }\n\n public renderRows(start: number, end: number): void {\n const cursorAbsoluteY = this._bufferService.buffer.ybase + this._bufferService.buffer.y;\n const cursorX = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);\n const cursorBlink = this._optionsService.rawOptions.cursorBlink;\n\n for (let y = start; y <= end; y++) {\n const rowElement = this._rowElements[y];\n rowElement.innerText = '';\n\n const row = y + this._bufferService.buffer.ydisp;\n const lineData = this._bufferService.buffer.lines.get(row);\n const cursorStyle = this._optionsService.rawOptions.cursorStyle;\n rowElement.appendChild(this._rowFactory.createRow(lineData!, row, row === cursorAbsoluteY, cursorStyle, cursorX, cursorBlink, this.dimensions.actualCellWidth, this._bufferService.cols));\n }\n }\n\n private get _terminalSelector(): string {\n return `.${TERMINAL_CLASS_PREFIX}${this._terminalClass}`;\n }\n\n private _onLinkHover(e: ILinkifierEvent): void {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, true);\n }\n\n private _onLinkLeave(e: ILinkifierEvent): void {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, false);\n }\n\n private _setCellUnderline(x: number, x2: number, y: number, y2: number, cols: number, enabled: boolean): void {\n while (x !== x2 || y !== y2) {\n const row = this._rowElements[y];\n if (!row) {\n return;\n }\n const span = row.children[x] as HTMLElement;\n if (span) {\n span.style.textDecoration = enabled ? 'underline' : 'none';\n }\n if (++x >= cols) {\n x = 0;\n y++;\n }\n }\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferLine } from 'common/Types';\nimport { INVERTED_DEFAULT_COLOR } from 'browser/renderer/atlas/Constants';\nimport { NULL_CELL_CODE, WHITESPACE_CELL_CHAR, Attributes } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { ICoreService, IOptionsService } from 'common/services/Services';\nimport { color, rgba } from 'browser/Color';\nimport { IColorSet, IColor } from 'browser/Types';\nimport { ICharacterJoinerService } from 'browser/services/Services';\nimport { JoinedCellData } from 'browser/services/CharacterJoinerService';\n\nexport const BOLD_CLASS = 'xterm-bold';\nexport const DIM_CLASS = 'xterm-dim';\nexport const ITALIC_CLASS = 'xterm-italic';\nexport const UNDERLINE_CLASS = 'xterm-underline';\nexport const STRIKETHROUGH_CLASS = 'xterm-strikethrough';\nexport const CURSOR_CLASS = 'xterm-cursor';\nexport const CURSOR_BLINK_CLASS = 'xterm-cursor-blink';\nexport const CURSOR_STYLE_BLOCK_CLASS = 'xterm-cursor-block';\nexport const CURSOR_STYLE_BAR_CLASS = 'xterm-cursor-bar';\nexport const CURSOR_STYLE_UNDERLINE_CLASS = 'xterm-cursor-underline';\n\nexport class DomRendererRowFactory {\n private _workCell: CellData = new CellData();\n\n constructor(\n private readonly _document: Document,\n private _colors: IColorSet,\n @ICharacterJoinerService private readonly _characterJoinerService: ICharacterJoinerService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @ICoreService private readonly _coreService: ICoreService\n ) {\n }\n\n public setColors(colors: IColorSet): void {\n this._colors = colors;\n }\n\n public createRow(lineData: IBufferLine, row: number, isCursorRow: boolean, cursorStyle: string | undefined, cursorX: number, cursorBlink: boolean, cellWidth: number, cols: number): DocumentFragment {\n const fragment = this._document.createDocumentFragment();\n\n const joinedRanges = this._characterJoinerService.getJoinedCharacters(row);\n // Find the line length first, this prevents the need to output a bunch of\n // empty cells at the end. This cannot easily be integrated into the main\n // loop below because of the colCount feature (which can be removed after we\n // properly support reflow and disallow data to go beyond the right-side of\n // the viewport).\n let lineLength = 0;\n for (let x = Math.min(lineData.length, cols) - 1; x >= 0; x--) {\n if (lineData.loadCell(x, this._workCell).getCode() !== NULL_CELL_CODE || (isCursorRow && x === cursorX)) {\n lineLength = x + 1;\n break;\n }\n }\n\n for (let x = 0; x < lineLength; x++) {\n lineData.loadCell(x, this._workCell);\n let width = this._workCell.getWidth();\n\n // The character to the left is a wide character, drawing is owned by the char at x-1\n if (width === 0) {\n continue;\n }\n\n // If true, indicates that the current character(s) to draw were joined.\n let isJoined = false;\n let lastCharX = x;\n\n // Process any joined character ranges as needed. Because of how the\n // ranges are produced, we know that they are valid for the characters\n // and attributes of our input.\n let cell = this._workCell;\n if (joinedRanges.length > 0 && x === joinedRanges[0][0]) {\n isJoined = true;\n const range = joinedRanges.shift()!;\n\n // We already know the exact start and end column of the joined range,\n // so we get the string and width representing it directly\n cell = new JoinedCellData(\n this._workCell,\n lineData.translateToString(true, range[0], range[1]),\n range[1] - range[0]\n );\n\n // Skip over the cells occupied by this range in the loop\n lastCharX = range[1] - 1;\n\n // Recalculate width\n width = cell.getWidth();\n }\n\n const charElement = this._document.createElement('span');\n if (width > 1) {\n charElement.style.width = `${cellWidth * width}px`;\n }\n\n if (isJoined) {\n // Ligatures in the DOM renderer must use display inline, as they may not show with\n // inline-block if they are outside the bounds of the element\n charElement.style.display = 'inline';\n\n // The DOM renderer colors the background of the cursor but for ligatures all cells are\n // joined. The workaround here is to show a cursor around the whole ligature so it shows up,\n // the cursor looks the same when on any character of the ligature though\n if (cursorX >= x && cursorX <= lastCharX) {\n cursorX = x;\n }\n }\n\n if (!this._coreService.isCursorHidden && isCursorRow && x === cursorX) {\n charElement.classList.add(CURSOR_CLASS);\n\n if (cursorBlink) {\n charElement.classList.add(CURSOR_BLINK_CLASS);\n }\n\n switch (cursorStyle) {\n case 'bar':\n charElement.classList.add(CURSOR_STYLE_BAR_CLASS);\n break;\n case 'underline':\n charElement.classList.add(CURSOR_STYLE_UNDERLINE_CLASS);\n break;\n default:\n charElement.classList.add(CURSOR_STYLE_BLOCK_CLASS);\n break;\n }\n }\n\n if (cell.isBold()) {\n charElement.classList.add(BOLD_CLASS);\n }\n\n if (cell.isItalic()) {\n charElement.classList.add(ITALIC_CLASS);\n }\n\n if (cell.isDim()) {\n charElement.classList.add(DIM_CLASS);\n }\n\n if (cell.isUnderline()) {\n charElement.classList.add(UNDERLINE_CLASS);\n }\n\n if (cell.isInvisible()) {\n charElement.textContent = WHITESPACE_CELL_CHAR;\n } else {\n charElement.textContent = cell.getChars() || WHITESPACE_CELL_CHAR;\n }\n\n if (cell.isStrikethrough()) {\n charElement.classList.add(STRIKETHROUGH_CLASS);\n }\n\n let fg = cell.getFgColor();\n let fgColorMode = cell.getFgColorMode();\n let bg = cell.getBgColor();\n let bgColorMode = cell.getBgColorMode();\n const isInverse = !!cell.isInverse();\n if (isInverse) {\n const temp = fg;\n fg = bg;\n bg = temp;\n const temp2 = fgColorMode;\n fgColorMode = bgColorMode;\n bgColorMode = temp2;\n }\n\n // Foreground\n switch (fgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n if (cell.isBold() && fg < 8 && this._optionsService.rawOptions.drawBoldTextInBrightColors) {\n fg += 8;\n }\n if (!this._applyMinimumContrast(charElement, this._colors.background, this._colors.ansi[fg])) {\n charElement.classList.add(`xterm-fg-${fg}`);\n }\n break;\n case Attributes.CM_RGB:\n const color = rgba.toColor(\n (fg >> 16) & 0xFF,\n (fg >> 8) & 0xFF,\n (fg ) & 0xFF\n );\n if (!this._applyMinimumContrast(charElement, this._colors.background, color)) {\n this._addStyle(charElement, `color:#${padStart(fg.toString(16), '0', 6)}`);\n }\n break;\n case Attributes.CM_DEFAULT:\n default:\n if (!this._applyMinimumContrast(charElement, this._colors.background, this._colors.foreground)) {\n if (isInverse) {\n charElement.classList.add(`xterm-fg-${INVERTED_DEFAULT_COLOR}`);\n }\n }\n }\n\n // Background\n switch (bgColorMode) {\n case Attributes.CM_P16:\n case Attributes.CM_P256:\n charElement.classList.add(`xterm-bg-${bg}`);\n break;\n case Attributes.CM_RGB:\n this._addStyle(charElement, `background-color:#${padStart(bg.toString(16), '0', 6)}`);\n break;\n case Attributes.CM_DEFAULT:\n default:\n if (isInverse) {\n charElement.classList.add(`xterm-bg-${INVERTED_DEFAULT_COLOR}`);\n }\n }\n\n fragment.appendChild(charElement);\n\n x = lastCharX;\n }\n return fragment;\n }\n\n private _applyMinimumContrast(element: HTMLElement, bg: IColor, fg: IColor): boolean {\n if (this._optionsService.rawOptions.minimumContrastRatio === 1) {\n return false;\n }\n\n // Try get from cache first\n let adjustedColor = this._colors.contrastCache.getColor(this._workCell.bg, this._workCell.fg);\n\n // Calculate and store in cache\n if (adjustedColor === undefined) {\n adjustedColor = color.ensureContrastRatio(bg, fg, this._optionsService.rawOptions.minimumContrastRatio);\n this._colors.contrastCache.setColor(this._workCell.bg, this._workCell.fg, adjustedColor ?? null);\n }\n\n if (adjustedColor) {\n this._addStyle(element, `color:${adjustedColor.css}`);\n return true;\n }\n\n return false;\n }\n\n private _addStyle(element: HTMLElement, style: string): void {\n element.setAttribute('style', `${element.getAttribute('style') || ''}${style};`);\n }\n}\n\nfunction padStart(text: string, padChar: string, length: number): string {\n while (text.length < length) {\n text = padChar + text;\n }\n return text;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferService } from 'common/services/Services';\n\n/**\n * Represents a selection within the buffer. This model only cares about column\n * and row coordinates, not wide characters.\n */\nexport class SelectionModel {\n /**\n * Whether select all is currently active.\n */\n public isSelectAllActive: boolean = false;\n\n /**\n * The minimal length of the selection from the start position. When double\n * clicking on a word, the word will be selected which makes the selection\n * start at the start of the word and makes this variable the length.\n */\n public selectionStartLength: number = 0;\n\n /**\n * The [x, y] position the selection starts at.\n */\n public selectionStart: [number, number] | undefined;\n\n /**\n * The [x, y] position the selection ends at.\n */\n public selectionEnd: [number, number] | undefined;\n\n constructor(\n private _bufferService: IBufferService\n ) {\n }\n\n /**\n * Clears the current selection.\n */\n public clearSelection(): void {\n this.selectionStart = undefined;\n this.selectionEnd = undefined;\n this.isSelectAllActive = false;\n this.selectionStartLength = 0;\n }\n\n /**\n * The final selection start, taking into consideration select all.\n */\n public get finalSelectionStart(): [number, number] | undefined {\n if (this.isSelectAllActive) {\n return [0, 0];\n }\n\n if (!this.selectionEnd || !this.selectionStart) {\n return this.selectionStart;\n }\n\n return this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart;\n }\n\n /**\n * The final selection end, taking into consideration select all, double click\n * word selection and triple click line selection.\n */\n public get finalSelectionEnd(): [number, number] | undefined {\n if (this.isSelectAllActive) {\n return [this._bufferService.cols, this._bufferService.buffer.ybase + this._bufferService.rows - 1];\n }\n\n if (!this.selectionStart) {\n return undefined;\n }\n\n // Use the selection start + length if the end doesn't exist or they're reversed\n if (!this.selectionEnd || this.areSelectionValuesReversed()) {\n const startPlusLength = this.selectionStart[0] + this.selectionStartLength;\n if (startPlusLength > this._bufferService.cols) {\n // Ensure the trailing EOL isn't included when the selection ends on the right edge\n if (startPlusLength % this._bufferService.cols === 0) {\n return [this._bufferService.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._bufferService.cols) - 1];\n }\n return [startPlusLength % this._bufferService.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._bufferService.cols)];\n }\n return [startPlusLength, this.selectionStart[1]];\n }\n\n // Ensure the the word/line is selected after a double/triple click\n if (this.selectionStartLength) {\n // Select the larger of the two when start and end are on the same line\n if (this.selectionEnd[1] === this.selectionStart[1]) {\n return [Math.max(this.selectionStart[0] + this.selectionStartLength, this.selectionEnd[0]), this.selectionEnd[1]];\n }\n }\n return this.selectionEnd;\n }\n\n /**\n * Returns whether the selection start and end are reversed.\n */\n public areSelectionValuesReversed(): boolean {\n const start = this.selectionStart;\n const end = this.selectionEnd;\n if (!start || !end) {\n return false;\n }\n return start[1] > end[1] || (start[1] === end[1] && start[0] > end[0]);\n }\n\n /**\n * Handle the buffer being trimmed, adjust the selection position.\n * @param amount The amount the buffer is being trimmed.\n * @return Whether a refresh is necessary.\n */\n public onTrim(amount: number): boolean {\n // Adjust the selection position based on the trimmed amount.\n if (this.selectionStart) {\n this.selectionStart[1] -= amount;\n }\n if (this.selectionEnd) {\n this.selectionEnd[1] -= amount;\n }\n\n // The selection has moved off the buffer, clear it.\n if (this.selectionEnd && this.selectionEnd[1] < 0) {\n this.clearSelection();\n return true;\n }\n\n // If the selection start is trimmed, ensure the start column is 0.\n if (this.selectionStart && this.selectionStart[1] < 0) {\n this.selectionStart[1] = 0;\n }\n return false;\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOptionsService } from 'common/services/Services';\nimport { IEvent, EventEmitter } from 'common/EventEmitter';\nimport { ICharSizeService } from 'browser/services/Services';\n\nexport class CharSizeService implements ICharSizeService {\n public serviceBrand: undefined;\n\n public width: number = 0;\n public height: number = 0;\n private _measureStrategy: IMeasureStrategy;\n\n public get hasValidSize(): boolean { return this.width > 0 && this.height > 0; }\n\n private _onCharSizeChange = new EventEmitter();\n public get onCharSizeChange(): IEvent { return this._onCharSizeChange.event; }\n\n constructor(\n document: Document,\n parentElement: HTMLElement,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n this._measureStrategy = new DomMeasureStrategy(document, parentElement, this._optionsService);\n }\n\n public measure(): void {\n const result = this._measureStrategy.measure();\n if (result.width !== this.width || result.height !== this.height) {\n this.width = result.width;\n this.height = result.height;\n this._onCharSizeChange.fire();\n }\n }\n}\n\ninterface IMeasureStrategy {\n measure(): IReadonlyMeasureResult;\n}\n\ninterface IReadonlyMeasureResult {\n readonly width: number;\n readonly height: number;\n}\n\ninterface IMeasureResult {\n width: number;\n height: number;\n}\n\n// TODO: For supporting browsers we should also provide a CanvasCharDimensionsProvider that uses ctx.measureText\nclass DomMeasureStrategy implements IMeasureStrategy {\n private _result: IMeasureResult = { width: 0, height: 0 };\n private _measureElement: HTMLElement;\n\n constructor(\n private _document: Document,\n private _parentElement: HTMLElement,\n private _optionsService: IOptionsService\n ) {\n this._measureElement = this._document.createElement('span');\n this._measureElement.classList.add('xterm-char-measure-element');\n this._measureElement.textContent = 'W';\n this._measureElement.setAttribute('aria-hidden', 'true');\n this._parentElement.appendChild(this._measureElement);\n }\n\n public measure(): IReadonlyMeasureResult {\n this._measureElement.style.fontFamily = this._optionsService.rawOptions.fontFamily;\n this._measureElement.style.fontSize = `${this._optionsService.rawOptions.fontSize}px`;\n\n // Note that this triggers a synchronous layout\n const geometry = this._measureElement.getBoundingClientRect();\n\n // If values are 0 then the element is likely currently display:none, in which case we should\n // retain the previous value.\n if (geometry.width !== 0 && geometry.height !== 0) {\n this._result.width = geometry.width;\n this._result.height = Math.ceil(geometry.height);\n }\n\n return this._result;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferLine, ICellData, CharData } from 'common/Types';\nimport { ICharacterJoiner } from 'browser/Types';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { WHITESPACE_CELL_CHAR, Content } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferService } from 'common/services/Services';\nimport { ICharacterJoinerService } from 'browser/services/Services';\n\nexport class JoinedCellData extends AttributeData implements ICellData {\n private _width: number;\n // .content carries no meaning for joined CellData, simply nullify it\n // thus we have to overload all other .content accessors\n public content: number = 0;\n public fg: number;\n public bg: number;\n public combinedData: string = '';\n\n constructor(firstCell: ICellData, chars: string, width: number) {\n super();\n this.fg = firstCell.fg;\n this.bg = firstCell.bg;\n this.combinedData = chars;\n this._width = width;\n }\n\n public isCombined(): number {\n // always mark joined cell data as combined\n return Content.IS_COMBINED_MASK;\n }\n\n public getWidth(): number {\n return this._width;\n }\n\n public getChars(): string {\n return this.combinedData;\n }\n\n public getCode(): number {\n // code always gets the highest possible fake codepoint (read as -1)\n // this is needed as code is used by caches as identifier\n return 0x1FFFFF;\n }\n\n public setFromCharData(value: CharData): void {\n throw new Error('not implemented');\n }\n\n public getAsCharData(): CharData {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n}\n\nexport class CharacterJoinerService implements ICharacterJoinerService {\n public serviceBrand: undefined;\n\n private _characterJoiners: ICharacterJoiner[] = [];\n private _nextCharacterJoinerId: number = 0;\n private _workCell: CellData = new CellData();\n\n constructor(\n @IBufferService private _bufferService: IBufferService\n ) { }\n\n public register(handler: (text: string) => [number, number][]): number {\n const joiner: ICharacterJoiner = {\n id: this._nextCharacterJoinerId++,\n handler\n };\n\n this._characterJoiners.push(joiner);\n return joiner.id;\n }\n\n public deregister(joinerId: number): boolean {\n for (let i = 0; i < this._characterJoiners.length; i++) {\n if (this._characterJoiners[i].id === joinerId) {\n this._characterJoiners.splice(i, 1);\n return true;\n }\n }\n\n return false;\n }\n\n public getJoinedCharacters(row: number): [number, number][] {\n if (this._characterJoiners.length === 0) {\n return [];\n }\n\n const line = this._bufferService.buffer.lines.get(row);\n if (!line || line.length === 0) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n const lineStr = line.translateToString(true);\n\n // Because some cells can be represented by multiple javascript characters,\n // we track the cell and the string indexes separately. This allows us to\n // translate the string ranges we get from the joiners back into cell ranges\n // for use when rendering\n let rangeStartColumn = 0;\n let currentStringIndex = 0;\n let rangeStartStringIndex = 0;\n let rangeAttrFG = line.getFg(0);\n let rangeAttrBG = line.getBg(0);\n\n for (let x = 0; x < line.getTrimmedLength(); x++) {\n line.loadCell(x, this._workCell);\n\n if (this._workCell.getWidth() === 0) {\n // If this character is of width 0, skip it.\n continue;\n }\n\n // End of range\n if (this._workCell.fg !== rangeAttrFG || this._workCell.bg !== rangeAttrBG) {\n // If we ended up with a sequence of more than one character,\n // look for ranges to join.\n if (x - rangeStartColumn > 1) {\n const joinedRanges = this._getJoinedRanges(\n lineStr,\n rangeStartStringIndex,\n currentStringIndex,\n line,\n rangeStartColumn\n );\n for (let i = 0; i < joinedRanges.length; i++) {\n ranges.push(joinedRanges[i]);\n }\n }\n\n // Reset our markers for a new range.\n rangeStartColumn = x;\n rangeStartStringIndex = currentStringIndex;\n rangeAttrFG = this._workCell.fg;\n rangeAttrBG = this._workCell.bg;\n }\n\n currentStringIndex += this._workCell.getChars().length || WHITESPACE_CELL_CHAR.length;\n }\n\n // Process any trailing ranges.\n if (this._bufferService.cols - rangeStartColumn > 1) {\n const joinedRanges = this._getJoinedRanges(\n lineStr,\n rangeStartStringIndex,\n currentStringIndex,\n line,\n rangeStartColumn\n );\n for (let i = 0; i < joinedRanges.length; i++) {\n ranges.push(joinedRanges[i]);\n }\n }\n\n return ranges;\n }\n\n /**\n * Given a segment of a line of text, find all ranges of text that should be\n * joined in a single rendering unit. Ranges are internally converted to\n * column ranges, rather than string ranges.\n * @param line String representation of the full line of text\n * @param startIndex Start position of the range to search in the string (inclusive)\n * @param endIndex End position of the range to search in the string (exclusive)\n */\n private _getJoinedRanges(line: string, startIndex: number, endIndex: number, lineData: IBufferLine, startCol: number): [number, number][] {\n const text = line.substring(startIndex, endIndex);\n // At this point we already know that there is at least one joiner so\n // we can just pull its value and assign it directly rather than\n // merging it into an empty array, which incurs unnecessary writes.\n let allJoinedRanges: [number, number][] = [];\n try {\n allJoinedRanges = this._characterJoiners[0].handler(text);\n } catch (error) {\n console.error(error);\n }\n for (let i = 1; i < this._characterJoiners.length; i++) {\n // We merge any overlapping ranges across the different joiners\n try {\n const joinerRanges = this._characterJoiners[i].handler(text);\n for (let j = 0; j < joinerRanges.length; j++) {\n CharacterJoinerService._mergeRanges(allJoinedRanges, joinerRanges[j]);\n }\n } catch (error) {\n console.error(error);\n }\n }\n this._stringRangesToCellRanges(allJoinedRanges, lineData, startCol);\n return allJoinedRanges;\n }\n\n /**\n * Modifies the provided ranges in-place to adjust for variations between\n * string length and cell width so that the range represents a cell range,\n * rather than the string range the joiner provides.\n * @param ranges String ranges containing start (inclusive) and end (exclusive) index\n * @param line Cell data for the relevant line in the terminal\n * @param startCol Offset within the line to start from\n */\n private _stringRangesToCellRanges(ranges: [number, number][], line: IBufferLine, startCol: number): void {\n let currentRangeIndex = 0;\n let currentRangeStarted = false;\n let currentStringIndex = 0;\n let currentRange = ranges[currentRangeIndex];\n\n // If we got through all of the ranges, stop searching\n if (!currentRange) {\n return;\n }\n\n for (let x = startCol; x < this._bufferService.cols; x++) {\n const width = line.getWidth(x);\n const length = line.getString(x).length || WHITESPACE_CELL_CHAR.length;\n\n // We skip zero-width characters when creating the string to join the text\n // so we do the same here\n if (width === 0) {\n continue;\n }\n\n // Adjust the start of the range\n if (!currentRangeStarted && currentRange[0] <= currentStringIndex) {\n currentRange[0] = x;\n currentRangeStarted = true;\n }\n\n // Adjust the end of the range\n if (currentRange[1] <= currentStringIndex) {\n currentRange[1] = x;\n\n // We're finished with this range, so we move to the next one\n currentRange = ranges[++currentRangeIndex];\n\n // If there are no more ranges left, stop searching\n if (!currentRange) {\n break;\n }\n\n // Ranges can be on adjacent characters. Because the end index of the\n // ranges are exclusive, this means that the index for the start of a\n // range can be the same as the end index of the previous range. To\n // account for the start of the next range, we check here just in case.\n if (currentRange[0] <= currentStringIndex) {\n currentRange[0] = x;\n currentRangeStarted = true;\n } else {\n currentRangeStarted = false;\n }\n }\n\n // Adjust the string index based on the character length to line up with\n // the column adjustment\n currentStringIndex += length;\n }\n\n // If there is still a range left at the end, it must extend all the way to\n // the end of the line.\n if (currentRange) {\n currentRange[1] = this._bufferService.cols;\n }\n }\n\n /**\n * Merges the range defined by the provided start and end into the list of\n * existing ranges. The merge is done in place on the existing range for\n * performance and is also returned.\n * @param ranges Existing range list\n * @param newRange Tuple of two numbers representing the new range to merge in.\n * @returns The ranges input with the new range merged in place\n */\n private static _mergeRanges(ranges: [number, number][], newRange: [number, number]): [number, number][] {\n let inRange = false;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (!inRange) {\n if (newRange[1] <= range[0]) {\n // Case 1: New range is before the search range\n ranges.splice(i, 0, newRange);\n return ranges;\n }\n\n if (newRange[1] <= range[1]) {\n // Case 2: New range is either wholly contained within the\n // search range or overlaps with the front of it\n range[0] = Math.min(newRange[0], range[0]);\n return ranges;\n }\n\n if (newRange[0] < range[1]) {\n // Case 3: New range either wholly contains the search range\n // or overlaps with the end of it\n range[0] = Math.min(newRange[0], range[0]);\n inRange = true;\n }\n\n // Case 4: New range starts after the search range\n continue;\n } else {\n if (newRange[1] <= range[0]) {\n // Case 5: New range extends from previous range but doesn't\n // reach the current one\n ranges[i - 1][1] = newRange[1];\n return ranges;\n }\n\n if (newRange[1] <= range[1]) {\n // Case 6: New range extends from prvious range into the\n // current range\n ranges[i - 1][1] = Math.max(newRange[1], range[1]);\n ranges.splice(i, 1);\n return ranges;\n }\n\n // Case 7: New range extends from previous range past the\n // end of the current range\n ranges.splice(i, 1);\n i--;\n }\n }\n\n if (inRange) {\n // Case 8: New range extends past the last existing range\n ranges[ranges.length - 1][1] = newRange[1];\n } else {\n // Case 9: New range starts after the last existing range\n ranges.push(newRange);\n }\n\n return ranges;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICoreBrowserService } from './Services';\n\nexport class CoreBrowserService implements ICoreBrowserService {\n public serviceBrand: undefined;\n\n constructor(\n private _textarea: HTMLTextAreaElement\n ) {\n }\n\n public get isFocused(): boolean {\n const docOrShadowRoot = this._textarea.getRootNode ? this._textarea.getRootNode() as Document | ShadowRoot : document;\n return docOrShadowRoot.activeElement === this._textarea && document.hasFocus();\n }\n}\n", "/**\n * Copyright (c) 2022 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDecorationService, IRenderService } from 'browser/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { IBufferService, IInstantiationService } from 'common/services/Services';\nimport { IDecorationOptions, IDecoration, IMarker } from 'xterm';\n\nexport class DecorationService extends Disposable implements IDecorationService {\n\n private readonly _decorations: Decoration[] = [];\n private _container: HTMLElement | undefined;\n private _screenElement: HTMLElement | undefined;\n private _renderService: IRenderService | undefined;\n private _animationFrame: number | undefined;\n\n constructor(@IInstantiationService private readonly _instantiationService: IInstantiationService) { super(); }\n\n public attachToDom(screenElement: HTMLElement, renderService: IRenderService): void {\n this._renderService = renderService;\n this._screenElement = screenElement;\n this._container = document.createElement('div');\n this._container.classList.add('xterm-decoration-container');\n screenElement.appendChild(this._container);\n this.register(this._renderService.onRenderedBufferChange(() => this.refresh()));\n this.register(this._renderService.onDimensionsChange(() => this.refresh(true)));\n }\n\n public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined {\n if (decorationOptions.marker.isDisposed || !this._container) {\n return undefined;\n }\n const decoration = this._instantiationService.createInstance(Decoration, decorationOptions, this._container);\n this._decorations.push(decoration);\n decoration.onDispose(() => this._decorations.splice(this._decorations.indexOf(decoration), 1));\n this._queueRefresh();\n return decoration;\n }\n\n private _queueRefresh(): void {\n if (this._animationFrame !== undefined) {\n return;\n }\n this._animationFrame = window.requestAnimationFrame(() => {\n this.refresh();\n this._animationFrame = undefined;\n });\n }\n\n public refresh(shouldRecreate?: boolean): void {\n if (!this._renderService) {\n return;\n }\n for (const decoration of this._decorations) {\n decoration.render(this._renderService, shouldRecreate);\n }\n }\n\n public dispose(): void {\n for (const decoration of this._decorations) {\n decoration.dispose();\n }\n if (this._screenElement && this._container && this._screenElement.contains(this._container)) {\n this._screenElement.removeChild(this._container);\n }\n }\n}\nexport class Decoration extends Disposable implements IDecoration {\n private readonly _marker: IMarker;\n private _element: HTMLElement | undefined;\n\n public isDisposed: boolean = false;\n\n public get element(): HTMLElement | undefined { return this._element; }\n public get marker(): IMarker { return this._marker; }\n\n private _onDispose = new EventEmitter();\n public get onDispose(): IEvent { return this._onDispose.event; }\n\n private _onRender = new EventEmitter();\n public get onRender(): IEvent { return this._onRender.event; }\n\n public x: number;\n public anchor: 'left' | 'right';\n public width: number;\n public height: number;\n\n constructor(\n options: IDecorationOptions,\n private readonly _container: HTMLElement,\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n super();\n this.x = options.x ?? 0;\n this._marker = options.marker;\n this._marker.onDispose(() => this.dispose());\n this.anchor = options.anchor || 'left';\n this.width = options.width || 1;\n this.height = options.height || 1;\n }\n\n public render(renderService: IRenderService, shouldRecreate?: boolean): void {\n if (!this._element || shouldRecreate) {\n this._createElement(renderService, shouldRecreate);\n }\n if (this._container && this._element && !this._container.contains(this._element)) {\n this._container.append(this._element);\n }\n this._refreshStyle(renderService);\n if (this._element) {\n this._onRender.fire(this._element);\n }\n }\n\n private _createElement(renderService: IRenderService, shouldRecreate?: boolean): void {\n if (shouldRecreate && this._element && this._container.contains(this._element)) {\n this._container.removeChild(this._element);\n }\n this._element = document.createElement('div');\n this._element.classList.add('xterm-decoration');\n this._element.style.width = `${this.width * renderService.dimensions.actualCellWidth}px`;\n this._element.style.height = `${this.height * renderService.dimensions.actualCellHeight}px`;\n this._element.style.top = `${(this.marker.line - this._bufferService.buffers.active.ydisp) * renderService.dimensions.actualCellHeight}px`;\n this._element.style.lineHeight = `${renderService.dimensions.actualCellHeight}px`;\n\n if (this.x && this.x > this._bufferService.cols) {\n // exceeded the container width, so hide\n this._element.style.display = 'none';\n }\n if (this.anchor === 'right') {\n this._element.style.right = this.x ? `${this.x * renderService.dimensions.actualCellWidth}px` : '';\n } else {\n this._element.style.left = this.x ? `${this.x * renderService.dimensions.actualCellWidth}px` : '';\n }\n }\n\n private _refreshStyle(renderService: IRenderService): void {\n if (!this._element) {\n return;\n }\n const line = this.marker.line - this._bufferService.buffers.active.ydisp;\n if (line < 0 || line > this._bufferService.rows) {\n // outside of viewport\n this._element.style.display = 'none';\n } else {\n this._element.style.top = `${line * renderService.dimensions.actualCellHeight}px`;\n this._element.style.display = this._bufferService.buffer === this._bufferService.buffers.alt ? 'none' : 'block';\n }\n }\n\n public override dispose(): void {\n if (this.isDisposed) {\n return;\n }\n if (this._element && this._container.contains(this._element)) {\n this._container.removeChild(this._element);\n }\n this.isDisposed = true;\n this._onDispose.fire();\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharSizeService, IRenderService, IMouseService } from './Services';\nimport { getCoords, getRawByteCoords } from 'browser/input/Mouse';\n\nexport class MouseService implements IMouseService {\n public serviceBrand: undefined;\n\n constructor(\n @IRenderService private readonly _renderService: IRenderService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService\n ) {\n }\n\n public getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, isSelection?: boolean): [number, number] | undefined {\n return getCoords(\n event,\n element,\n colCount,\n rowCount,\n this._charSizeService.hasValidSize,\n this._renderService.dimensions.actualCellWidth,\n this._renderService.dimensions.actualCellHeight,\n isSelection\n );\n }\n\n public getRawByteCoords(event: MouseEvent, element: HTMLElement, colCount: number, rowCount: number): { x: number, y: number } | undefined {\n const coords = this.getCoords(event, element, colCount, rowCount);\n return getRawByteCoords(coords);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IRenderer, IRenderDimensions } from 'browser/renderer/Types';\nimport { RenderDebouncer } from 'browser/RenderDebouncer';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { ScreenDprMonitor } from 'browser/ScreenDprMonitor';\nimport { addDisposableDomListener } from 'browser/Lifecycle';\nimport { IColorSet, IRenderDebouncer } from 'browser/Types';\nimport { IOptionsService, IBufferService } from 'common/services/Services';\nimport { ICharSizeService, IRenderService } from 'browser/services/Services';\n\ninterface ISelectionState {\n start: [number, number] | undefined;\n end: [number, number] | undefined;\n columnSelectMode: boolean;\n}\n\nexport class RenderService extends Disposable implements IRenderService {\n public serviceBrand: undefined;\n\n private _renderDebouncer: IRenderDebouncer;\n private _screenDprMonitor: ScreenDprMonitor;\n\n private _isPaused: boolean = false;\n private _needsFullRefresh: boolean = false;\n private _isNextRenderRedrawOnly: boolean = true;\n private _needsSelectionRefresh: boolean = false;\n private _canvasWidth: number = 0;\n private _canvasHeight: number = 0;\n private _selectionState: ISelectionState = {\n start: undefined,\n end: undefined,\n columnSelectMode: false\n };\n\n private _onDimensionsChange = new EventEmitter();\n public get onDimensionsChange(): IEvent { return this._onDimensionsChange.event; }\n private _onRender = new EventEmitter<{ start: number, end: number }>();\n public get onRenderedBufferChange(): IEvent<{ start: number, end: number }> { return this._onRender.event; }\n private _onRefreshRequest = new EventEmitter<{ start: number, end: number }>();\n public get onRefreshRequest(): IEvent<{ start: number, end: number }> { return this._onRefreshRequest.event; }\n\n public get dimensions(): IRenderDimensions { return this._renderer.dimensions; }\n\n constructor(\n private _renderer: IRenderer,\n private _rowCount: number,\n screenElement: HTMLElement,\n @IOptionsService optionsService: IOptionsService,\n @ICharSizeService private readonly _charSizeService: ICharSizeService,\n @IBufferService bufferService: IBufferService\n ) {\n super();\n\n this.register({ dispose: () => this._renderer.dispose() });\n\n this._renderDebouncer = new RenderDebouncer((start, end) => this._renderRows(start, end));\n this.register(this._renderDebouncer);\n\n this._screenDprMonitor = new ScreenDprMonitor();\n this._screenDprMonitor.setListener(() => this.onDevicePixelRatioChange());\n this.register(this._screenDprMonitor);\n\n this.register(bufferService.onResize(() => this._fullRefresh()));\n this.register(bufferService.buffers.onBufferActivate(() => this._renderer?.clear()));\n this.register(optionsService.onOptionChange(() => this._renderer.onOptionsChanged()));\n this.register(this._charSizeService.onCharSizeChange(() => this.onCharSizeChanged()));\n\n // No need to register this as renderer is explicitly disposed in RenderService.dispose\n this._renderer.onRequestRedraw(e => this.refreshRows(e.start, e.end, true));\n\n // dprchange should handle this case, we need this as well for browsers that don't support the\n // matchMedia query.\n this.register(addDisposableDomListener(window, 'resize', () => this.onDevicePixelRatioChange()));\n\n // Detect whether IntersectionObserver is detected and enable renderer pause\n // and resume based on terminal visibility if so\n if ('IntersectionObserver' in window) {\n const observer = new IntersectionObserver(e => this._onIntersectionChange(e[e.length - 1]), { threshold: 0 });\n observer.observe(screenElement);\n this.register({ dispose: () => observer.disconnect() });\n }\n }\n\n private _onIntersectionChange(entry: IntersectionObserverEntry): void {\n this._isPaused = entry.isIntersecting === undefined ? (entry.intersectionRatio === 0) : !entry.isIntersecting;\n\n // Terminal was hidden on open\n if (!this._isPaused && !this._charSizeService.hasValidSize) {\n this._charSizeService.measure();\n }\n\n if (!this._isPaused && this._needsFullRefresh) {\n this.refreshRows(0, this._rowCount - 1);\n this._needsFullRefresh = false;\n }\n }\n\n public refreshRows(start: number, end: number, isRedrawOnly: boolean = false): void {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n return;\n }\n if (!isRedrawOnly) {\n this._isNextRenderRedrawOnly = false;\n }\n this._renderDebouncer.refresh(start, end, this._rowCount);\n }\n\n private _renderRows(start: number, end: number): void {\n this._renderer.renderRows(start, end);\n\n // Update selection if needed\n if (this._needsSelectionRefresh) {\n this._renderer.onSelectionChanged(this._selectionState.start, this._selectionState.end, this._selectionState.columnSelectMode);\n this._needsSelectionRefresh = false;\n }\n\n // Fire render event only if it was not a redraw\n if (!this._isNextRenderRedrawOnly) {\n this._onRender.fire({ start, end });\n }\n this._isNextRenderRedrawOnly = true;\n }\n\n public resize(cols: number, rows: number): void {\n this._rowCount = rows;\n this._fireOnCanvasResize();\n }\n\n public changeOptions(): void {\n this._renderer.onOptionsChanged();\n this.refreshRows(0, this._rowCount - 1);\n this._fireOnCanvasResize();\n }\n\n private _fireOnCanvasResize(): void {\n // Don't fire the event if the dimensions haven't changed\n if (this._renderer.dimensions.canvasWidth === this._canvasWidth && this._renderer.dimensions.canvasHeight === this._canvasHeight) {\n return;\n }\n this._onDimensionsChange.fire(this._renderer.dimensions);\n }\n\n public dispose(): void {\n super.dispose();\n }\n\n public setRenderer(renderer: IRenderer): void {\n // TODO: RenderService should be the only one to dispose the renderer\n this._renderer.dispose();\n this._renderer = renderer;\n this._renderer.onRequestRedraw(e => this.refreshRows(e.start, e.end, true));\n\n // Force a refresh\n this._needsSelectionRefresh = true;\n this._fullRefresh();\n }\n\n private _fullRefresh(): void {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n } else {\n this.refreshRows(0, this._rowCount - 1);\n }\n }\n\n public clearTextureAtlas(): void {\n this._renderer?.clearTextureAtlas?.();\n this._fullRefresh();\n }\n\n public setColors(colors: IColorSet): void {\n this._renderer.setColors(colors);\n this._fullRefresh();\n }\n\n public onDevicePixelRatioChange(): void {\n // Force char size measurement as DomMeasureStrategy(getBoundingClientRect) is not stable\n // when devicePixelRatio changes\n this._charSizeService.measure();\n\n this._renderer.onDevicePixelRatioChange();\n this.refreshRows(0, this._rowCount - 1);\n }\n\n public onResize(cols: number, rows: number): void {\n this._renderer.onResize(cols, rows);\n this._fullRefresh();\n }\n\n // TODO: Is this useful when we have onResize?\n public onCharSizeChanged(): void {\n this._renderer.onCharSizeChanged();\n }\n\n public onBlur(): void {\n this._renderer.onBlur();\n }\n\n public onFocus(): void {\n this._renderer.onFocus();\n }\n\n public onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void {\n this._selectionState.start = start;\n this._selectionState.end = end;\n this._selectionState.columnSelectMode = columnSelectMode;\n this._renderer.onSelectionChanged(start, end, columnSelectMode);\n }\n\n public onCursorMove(): void {\n this._renderer.onCursorMove();\n }\n\n public clear(): void {\n this._renderer.clear();\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ISelectionRedrawRequestEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types';\nimport { IBuffer } from 'common/buffer/Types';\nimport { IBufferLine, IDisposable } from 'common/Types';\nimport * as Browser from 'common/Platform';\nimport { SelectionModel } from 'browser/selection/SelectionModel';\nimport { CellData } from 'common/buffer/CellData';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IMouseService, ISelectionService, IRenderService } from 'browser/services/Services';\nimport { ILinkifier2 } from 'browser/Types';\nimport { IBufferService, IOptionsService, ICoreService } from 'common/services/Services';\nimport { getCoordsRelativeToElement } from 'browser/input/Mouse';\nimport { moveToCellSequence } from 'browser/input/MoveToCell';\nimport { Disposable } from 'common/Lifecycle';\nimport { getRangeLength } from 'common/buffer/BufferRange';\n\n/**\n * The number of pixels the mouse needs to be above or below the viewport in\n * order to scroll at the maximum speed.\n */\nconst DRAG_SCROLL_MAX_THRESHOLD = 50;\n\n/**\n * The maximum scrolling speed\n */\nconst DRAG_SCROLL_MAX_SPEED = 15;\n\n/**\n * The number of milliseconds between drag scroll updates.\n */\nconst DRAG_SCROLL_INTERVAL = 50;\n\n/**\n * The maximum amount of time that can have elapsed for an alt click to move the\n * cursor.\n */\nconst ALT_CLICK_MOVE_CURSOR_TIME = 500;\n\nconst NON_BREAKING_SPACE_CHAR = String.fromCharCode(160);\nconst ALL_NON_BREAKING_SPACE_REGEX = new RegExp(NON_BREAKING_SPACE_CHAR, 'g');\n\n/**\n * Represents a position of a word on a line.\n */\ninterface IWordPosition {\n start: number;\n length: number;\n}\n\n/**\n * A selection mode, this drives how the selection behaves on mouse move.\n */\nexport const enum SelectionMode {\n NORMAL,\n WORD,\n LINE,\n COLUMN\n}\n\n/**\n * A class that manages the selection of the terminal. With help from\n * SelectionModel, SelectionService handles with all logic associated with\n * dealing with the selection, including handling mouse interaction, wide\n * characters and fetching the actual text within the selection. Rendering is\n * not handled by the SelectionService but the onRedrawRequest event is fired\n * when the selection is ready to be redrawn (on an animation frame).\n */\nexport class SelectionService extends Disposable implements ISelectionService {\n public serviceBrand: undefined;\n\n protected _model: SelectionModel;\n\n /**\n * The amount to scroll every drag scroll update (depends on how far the mouse\n * drag is above or below the terminal).\n */\n private _dragScrollAmount: number = 0;\n\n /**\n * The current selection mode.\n */\n protected _activeSelectionMode: SelectionMode;\n\n /**\n * A setInterval timer that is active while the mouse is down whose callback\n * scrolls the viewport when necessary.\n */\n private _dragScrollIntervalTimer: number | undefined;\n\n /**\n * The animation frame ID used for refreshing the selection.\n */\n private _refreshAnimationFrame: number | undefined;\n\n /**\n * Whether selection is enabled.\n */\n private _enabled = true;\n\n private _mouseMoveListener: EventListener;\n private _mouseUpListener: EventListener;\n private _trimListener: IDisposable;\n private _workCell: CellData = new CellData();\n\n private _mouseDownTimeStamp: number = 0;\n private _oldHasSelection: boolean = false;\n private _oldSelectionStart: [number, number] | undefined = undefined;\n private _oldSelectionEnd: [number, number] | undefined = undefined;\n\n private _onLinuxMouseSelection = this.register(new EventEmitter());\n public get onLinuxMouseSelection(): IEvent { return this._onLinuxMouseSelection.event; }\n private _onRedrawRequest = this.register(new EventEmitter());\n public get onRequestRedraw(): IEvent { return this._onRedrawRequest.event; }\n private _onSelectionChange = this.register(new EventEmitter());\n public get onSelectionChange(): IEvent { return this._onSelectionChange.event; }\n private _onRequestScrollLines = this.register(new EventEmitter());\n public get onRequestScrollLines(): IEvent { return this._onRequestScrollLines.event; }\n\n constructor(\n private readonly _element: HTMLElement,\n private readonly _screenElement: HTMLElement,\n private readonly _linkifier: ILinkifier2,\n @IBufferService private readonly _bufferService: IBufferService,\n @ICoreService private readonly _coreService: ICoreService,\n @IMouseService private readonly _mouseService: IMouseService,\n @IOptionsService private readonly _optionsService: IOptionsService,\n @IRenderService private readonly _renderService: IRenderService\n ) {\n super();\n\n // Init listeners\n this._mouseMoveListener = event => this._onMouseMove(event as MouseEvent);\n this._mouseUpListener = event => this._onMouseUp(event as MouseEvent);\n this._coreService.onUserInput(() => {\n if (this.hasSelection) {\n this.clearSelection();\n }\n });\n this._trimListener = this._bufferService.buffer.lines.onTrim(amount => this._onTrim(amount));\n this.register(this._bufferService.buffers.onBufferActivate(e => this._onBufferActivate(e)));\n\n this.enable();\n\n this._model = new SelectionModel(this._bufferService);\n this._activeSelectionMode = SelectionMode.NORMAL;\n }\n\n public dispose(): void {\n this._removeMouseDownListeners();\n }\n\n public reset(): void {\n this.clearSelection();\n }\n\n /**\n * Disables the selection manager. This is useful for when terminal mouse\n * are enabled.\n */\n public disable(): void {\n this.clearSelection();\n this._enabled = false;\n }\n\n /**\n * Enable the selection manager.\n */\n public enable(): void {\n this._enabled = true;\n }\n\n public get selectionStart(): [number, number] | undefined { return this._model.finalSelectionStart; }\n public get selectionEnd(): [number, number] | undefined { return this._model.finalSelectionEnd; }\n\n /**\n * Gets whether there is an active text selection.\n */\n public get hasSelection(): boolean {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n if (!start || !end) {\n return false;\n }\n return start[0] !== end[0] || start[1] !== end[1];\n }\n\n /**\n * Gets the text currently selected.\n */\n public get selectionText(): string {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n if (!start || !end) {\n return '';\n }\n\n const buffer = this._bufferService.buffer;\n const result: string[] = [];\n\n if (this._activeSelectionMode === SelectionMode.COLUMN) {\n // Ignore zero width selections\n if (start[0] === end[0]) {\n return '';\n }\n\n for (let i = start[1]; i <= end[1]; i++) {\n const lineText = buffer.translateBufferLineToString(i, true, start[0], end[0]);\n result.push(lineText);\n }\n } else {\n // Get first row\n const startRowEndCol = start[1] === end[1] ? end[0] : undefined;\n result.push(buffer.translateBufferLineToString(start[1], true, start[0], startRowEndCol));\n\n // Get middle rows\n for (let i = start[1] + 1; i <= end[1] - 1; i++) {\n const bufferLine = buffer.lines.get(i);\n const lineText = buffer.translateBufferLineToString(i, true);\n if (bufferLine?.isWrapped) {\n result[result.length - 1] += lineText;\n } else {\n result.push(lineText);\n }\n }\n\n // Get final row\n if (start[1] !== end[1]) {\n const bufferLine = buffer.lines.get(end[1]);\n const lineText = buffer.translateBufferLineToString(end[1], true, 0, end[0]);\n if (bufferLine && bufferLine!.isWrapped) {\n result[result.length - 1] += lineText;\n } else {\n result.push(lineText);\n }\n }\n }\n\n // Format string by replacing non-breaking space chars with regular spaces\n // and joining the array into a multi-line string.\n const formattedResult = result.map(line => {\n return line.replace(ALL_NON_BREAKING_SPACE_REGEX, ' ');\n }).join(Browser.isWindows ? '\\r\\n' : '\\n');\n\n return formattedResult;\n }\n\n /**\n * Clears the current terminal selection.\n */\n public clearSelection(): void {\n this._model.clearSelection();\n this._removeMouseDownListeners();\n this.refresh();\n this._onSelectionChange.fire();\n }\n\n /**\n * Queues a refresh, redrawing the selection on the next opportunity.\n * @param isLinuxMouseSelection Whether the selection should be registered as a new\n * selection on Linux.\n */\n public refresh(isLinuxMouseSelection?: boolean): void {\n // Queue the refresh for the renderer\n if (!this._refreshAnimationFrame) {\n this._refreshAnimationFrame = window.requestAnimationFrame(() => this._refresh());\n }\n\n // If the platform is Linux and the refresh call comes from a mouse event,\n // we need to update the selection for middle click to paste selection.\n if (Browser.isLinux && isLinuxMouseSelection) {\n const selectionText = this.selectionText;\n if (selectionText.length) {\n this._onLinuxMouseSelection.fire(this.selectionText);\n }\n }\n }\n\n /**\n * Fires the refresh event, causing consumers to pick it up and redraw the\n * selection state.\n */\n private _refresh(): void {\n this._refreshAnimationFrame = undefined;\n this._onRedrawRequest.fire({\n start: this._model.finalSelectionStart,\n end: this._model.finalSelectionEnd,\n columnSelectMode: this._activeSelectionMode === SelectionMode.COLUMN\n });\n }\n\n /**\n * Checks if the current click was inside the current selection\n * @param event The mouse event\n */\n private _isClickInSelection(event: MouseEvent): boolean {\n const coords = this._getMouseBufferCoords(event);\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n\n if (!start || !end || !coords) {\n return false;\n }\n\n return this._areCoordsInSelection(coords, start, end);\n }\n\n protected _areCoordsInSelection(coords: [number, number], start: [number, number], end: [number, number]): boolean {\n return (coords[1] > start[1] && coords[1] < end[1]) ||\n (start[1] === end[1] && coords[1] === start[1] && coords[0] >= start[0] && coords[0] < end[0]) ||\n (start[1] < end[1] && coords[1] === end[1] && coords[0] < end[0]) ||\n (start[1] < end[1] && coords[1] === start[1] && coords[0] >= start[0]);\n }\n\n /**\n * Selects word at the current mouse event coordinates.\n * @param event The mouse event.\n */\n private _selectWordAtCursor(event: MouseEvent, allowWhitespaceOnlySelection: boolean): boolean {\n // Check if there is a link under the cursor first and select that if so\n const range = this._linkifier.currentLink?.link?.range;\n if (range) {\n this._model.selectionStart = [range.start.x - 1, range.start.y - 1];\n this._model.selectionStartLength = getRangeLength(range, this._bufferService.cols);\n this._model.selectionEnd = undefined;\n return true;\n }\n\n const coords = this._getMouseBufferCoords(event);\n if (coords) {\n this._selectWordAt(coords, allowWhitespaceOnlySelection);\n this._model.selectionEnd = undefined;\n return true;\n }\n return false;\n }\n\n /**\n * Selects all text within the terminal.\n */\n public selectAll(): void {\n this._model.isSelectAllActive = true;\n this.refresh();\n this._onSelectionChange.fire();\n }\n\n public selectLines(start: number, end: number): void {\n this._model.clearSelection();\n start = Math.max(start, 0);\n end = Math.min(end, this._bufferService.buffer.lines.length - 1);\n this._model.selectionStart = [0, start];\n this._model.selectionEnd = [this._bufferService.cols, end];\n this.refresh();\n this._onSelectionChange.fire();\n }\n\n /**\n * Handle the buffer being trimmed, adjust the selection position.\n * @param amount The amount the buffer is being trimmed.\n */\n private _onTrim(amount: number): void {\n const needsRefresh = this._model.onTrim(amount);\n if (needsRefresh) {\n this.refresh();\n }\n }\n\n /**\n * Gets the 0-based [x, y] buffer coordinates of the current mouse event.\n * @param event The mouse event.\n */\n private _getMouseBufferCoords(event: MouseEvent): [number, number] | undefined {\n const coords = this._mouseService.getCoords(event, this._screenElement, this._bufferService.cols, this._bufferService.rows, true);\n if (!coords) {\n return undefined;\n }\n\n // Convert to 0-based\n coords[0]--;\n coords[1]--;\n\n // Convert viewport coords to buffer coords\n coords[1] += this._bufferService.buffer.ydisp;\n return coords;\n }\n\n /**\n * Gets the amount the viewport should be scrolled based on how far out of the\n * terminal the mouse is.\n * @param event The mouse event.\n */\n private _getMouseEventScrollAmount(event: MouseEvent): number {\n let offset = getCoordsRelativeToElement(event, this._screenElement)[1];\n const terminalHeight = this._renderService.dimensions.canvasHeight;\n if (offset >= 0 && offset <= terminalHeight) {\n return 0;\n }\n if (offset > terminalHeight) {\n offset -= terminalHeight;\n }\n\n offset = Math.min(Math.max(offset, -DRAG_SCROLL_MAX_THRESHOLD), DRAG_SCROLL_MAX_THRESHOLD);\n offset /= DRAG_SCROLL_MAX_THRESHOLD;\n return (offset / Math.abs(offset)) + Math.round(offset * (DRAG_SCROLL_MAX_SPEED - 1));\n }\n\n /**\n * Returns whether the selection manager should force selection, regardless of\n * whether the terminal is in mouse events mode.\n * @param event The mouse event.\n */\n public shouldForceSelection(event: MouseEvent): boolean {\n if (Browser.isMac) {\n return event.altKey && this._optionsService.rawOptions.macOptionClickForcesSelection;\n }\n\n return event.shiftKey;\n }\n\n /**\n * Handles te mousedown event, setting up for a new selection.\n * @param event The mousedown event.\n */\n public onMouseDown(event: MouseEvent): void {\n this._mouseDownTimeStamp = event.timeStamp;\n // If we have selection, we want the context menu on right click even if the\n // terminal is in mouse mode.\n if (event.button === 2 && this.hasSelection) {\n return;\n }\n\n // Only action the primary button\n if (event.button !== 0) {\n return;\n }\n\n // Allow selection when using a specific modifier key, even when disabled\n if (!this._enabled) {\n if (!this.shouldForceSelection(event)) {\n return;\n }\n\n // Don't send the mouse down event to the current process, we want to select\n event.stopPropagation();\n }\n\n // Tell the browser not to start a regular selection\n event.preventDefault();\n\n // Reset drag scroll state\n this._dragScrollAmount = 0;\n\n if (this._enabled && event.shiftKey) {\n this._onIncrementalClick(event);\n } else {\n if (event.detail === 1) {\n this._onSingleClick(event);\n } else if (event.detail === 2) {\n this._onDoubleClick(event);\n } else if (event.detail === 3) {\n this._onTripleClick(event);\n }\n }\n\n this._addMouseDownListeners();\n this.refresh(true);\n }\n\n /**\n * Adds listeners when mousedown is triggered.\n */\n private _addMouseDownListeners(): void {\n // Listen on the document so that dragging outside of viewport works\n if (this._screenElement.ownerDocument) {\n this._screenElement.ownerDocument.addEventListener('mousemove', this._mouseMoveListener);\n this._screenElement.ownerDocument.addEventListener('mouseup', this._mouseUpListener);\n }\n this._dragScrollIntervalTimer = window.setInterval(() => this._dragScroll(), DRAG_SCROLL_INTERVAL);\n }\n\n /**\n * Removes the listeners that are registered when mousedown is triggered.\n */\n private _removeMouseDownListeners(): void {\n if (this._screenElement.ownerDocument) {\n this._screenElement.ownerDocument.removeEventListener('mousemove', this._mouseMoveListener);\n this._screenElement.ownerDocument.removeEventListener('mouseup', this._mouseUpListener);\n }\n clearInterval(this._dragScrollIntervalTimer);\n this._dragScrollIntervalTimer = undefined;\n }\n\n /**\n * Performs an incremental click, setting the selection end position to the mouse\n * position.\n * @param event The mouse event.\n */\n private _onIncrementalClick(event: MouseEvent): void {\n if (this._model.selectionStart) {\n this._model.selectionEnd = this._getMouseBufferCoords(event);\n }\n }\n\n /**\n * Performs a single click, resetting relevant state and setting the selection\n * start position.\n * @param event The mouse event.\n */\n private _onSingleClick(event: MouseEvent): void {\n this._model.selectionStartLength = 0;\n this._model.isSelectAllActive = false;\n this._activeSelectionMode = this.shouldColumnSelect(event) ? SelectionMode.COLUMN : SelectionMode.NORMAL;\n\n // Initialize the new selection\n this._model.selectionStart = this._getMouseBufferCoords(event);\n if (!this._model.selectionStart) {\n return;\n }\n this._model.selectionEnd = undefined;\n\n // Ensure the line exists\n const line = this._bufferService.buffer.lines.get(this._model.selectionStart[1]);\n if (!line) {\n return;\n }\n\n // Return early if the click event is not in the buffer (eg. in scroll bar)\n if (line.length === this._model.selectionStart[0]) {\n return;\n }\n\n // If the mouse is over the second half of a wide character, adjust the\n // selection to cover the whole character\n if (line.hasWidth(this._model.selectionStart[0]) === 0) {\n this._model.selectionStart[0]++;\n }\n }\n\n /**\n * Performs a double click, selecting the current word.\n * @param event The mouse event.\n */\n private _onDoubleClick(event: MouseEvent): void {\n if (this._selectWordAtCursor(event, true)) {\n this._activeSelectionMode = SelectionMode.WORD;\n }\n }\n\n /**\n * Performs a triple click, selecting the current line and activating line\n * select mode.\n * @param event The mouse event.\n */\n private _onTripleClick(event: MouseEvent): void {\n const coords = this._getMouseBufferCoords(event);\n if (coords) {\n this._activeSelectionMode = SelectionMode.LINE;\n this._selectLineAt(coords[1]);\n }\n }\n\n /**\n * Returns whether the selection manager should operate in column select mode\n * @param event the mouse or keyboard event\n */\n public shouldColumnSelect(event: KeyboardEvent | MouseEvent): boolean {\n return event.altKey && !(Browser.isMac && this._optionsService.rawOptions.macOptionClickForcesSelection);\n }\n\n /**\n * Handles the mousemove event when the mouse button is down, recording the\n * end of the selection and refreshing the selection.\n * @param event The mousemove event.\n */\n private _onMouseMove(event: MouseEvent): void {\n // If the mousemove listener is active it means that a selection is\n // currently being made, we should stop propagation to prevent mouse events\n // to be sent to the pty.\n event.stopImmediatePropagation();\n\n // Do nothing if there is no selection start, this can happen if the first\n // click in the terminal is an incremental click\n if (!this._model.selectionStart) {\n return;\n }\n\n // Record the previous position so we know whether to redraw the selection\n // at the end.\n const previousSelectionEnd = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null;\n\n // Set the initial selection end based on the mouse coordinates\n this._model.selectionEnd = this._getMouseBufferCoords(event);\n if (!this._model.selectionEnd) {\n this.refresh(true);\n return;\n }\n\n // Select the entire line if line select mode is active.\n if (this._activeSelectionMode === SelectionMode.LINE) {\n if (this._model.selectionEnd[1] < this._model.selectionStart[1]) {\n this._model.selectionEnd[0] = 0;\n } else {\n this._model.selectionEnd[0] = this._bufferService.cols;\n }\n } else if (this._activeSelectionMode === SelectionMode.WORD) {\n this._selectToWordAt(this._model.selectionEnd);\n }\n\n // Determine the amount of scrolling that will happen.\n this._dragScrollAmount = this._getMouseEventScrollAmount(event);\n\n // If the cursor was above or below the viewport, make sure it's at the\n // start or end of the viewport respectively. This should only happen when\n // NOT in column select mode.\n if (this._activeSelectionMode !== SelectionMode.COLUMN) {\n if (this._dragScrollAmount > 0) {\n this._model.selectionEnd[0] = this._bufferService.cols;\n } else if (this._dragScrollAmount < 0) {\n this._model.selectionEnd[0] = 0;\n }\n }\n\n // If the character is a wide character include the cell to the right in the\n // selection. Note that selections at the very end of the line will never\n // have a character.\n const buffer = this._bufferService.buffer;\n if (this._model.selectionEnd[1] < buffer.lines.length) {\n const line = buffer.lines.get(this._model.selectionEnd[1]);\n if (line && line.hasWidth(this._model.selectionEnd[0]) === 0) {\n this._model.selectionEnd[0]++;\n }\n }\n\n // Only draw here if the selection changes.\n if (!previousSelectionEnd ||\n previousSelectionEnd[0] !== this._model.selectionEnd[0] ||\n previousSelectionEnd[1] !== this._model.selectionEnd[1]) {\n this.refresh(true);\n }\n }\n\n /**\n * The callback that occurs every DRAG_SCROLL_INTERVAL ms that does the\n * scrolling of the viewport.\n */\n private _dragScroll(): void {\n if (!this._model.selectionEnd || !this._model.selectionStart) {\n return;\n }\n if (this._dragScrollAmount) {\n this._onRequestScrollLines.fire({ amount: this._dragScrollAmount, suppressScrollEvent: false });\n // Re-evaluate selection\n // If the cursor was above or below the viewport, make sure it's at the\n // start or end of the viewport respectively. This should only happen when\n // NOT in column select mode.\n const buffer = this._bufferService.buffer;\n if (this._dragScrollAmount > 0) {\n if (this._activeSelectionMode !== SelectionMode.COLUMN) {\n this._model.selectionEnd[0] = this._bufferService.cols;\n }\n this._model.selectionEnd[1] = Math.min(buffer.ydisp + this._bufferService.rows, buffer.lines.length - 1);\n } else {\n if (this._activeSelectionMode !== SelectionMode.COLUMN) {\n this._model.selectionEnd[0] = 0;\n }\n this._model.selectionEnd[1] = buffer.ydisp;\n }\n this.refresh();\n }\n }\n\n /**\n * Handles the mouseup event, removing the mousedown listeners.\n * @param event The mouseup event.\n */\n private _onMouseUp(event: MouseEvent): void {\n const timeElapsed = event.timeStamp - this._mouseDownTimeStamp;\n\n this._removeMouseDownListeners();\n\n if (this.selectionText.length <= 1 && timeElapsed < ALT_CLICK_MOVE_CURSOR_TIME && event.altKey && this._optionsService.getOption('altClickMovesCursor')) {\n if (this._bufferService.buffer.ybase === this._bufferService.buffer.ydisp) {\n const coordinates = this._mouseService.getCoords(\n event,\n this._element,\n this._bufferService.cols,\n this._bufferService.rows,\n false\n );\n if (coordinates && coordinates[0] !== undefined && coordinates[1] !== undefined) {\n const sequence = moveToCellSequence(coordinates[0] - 1, coordinates[1] - 1, this._bufferService, this._coreService.decPrivateModes.applicationCursorKeys);\n this._coreService.triggerDataEvent(sequence, true);\n }\n }\n } else {\n this._fireEventIfSelectionChanged();\n }\n }\n\n private _fireEventIfSelectionChanged(): void {\n const start = this._model.finalSelectionStart;\n const end = this._model.finalSelectionEnd;\n const hasSelection = !!start && !!end && (start[0] !== end[0] || start[1] !== end[1]);\n\n if (!hasSelection) {\n if (this._oldHasSelection) {\n this._fireOnSelectionChange(start, end, hasSelection);\n }\n return;\n }\n\n // Sanity check, these should not be undefined as there is a selection\n if (!start || !end) {\n return;\n }\n\n if (!this._oldSelectionStart || !this._oldSelectionEnd || (\n start[0] !== this._oldSelectionStart[0] || start[1] !== this._oldSelectionStart[1] ||\n end[0] !== this._oldSelectionEnd[0] || end[1] !== this._oldSelectionEnd[1])) {\n\n this._fireOnSelectionChange(start, end, hasSelection);\n }\n }\n\n private _fireOnSelectionChange(start: [number, number] | undefined, end: [number, number] | undefined, hasSelection: boolean): void {\n this._oldSelectionStart = start;\n this._oldSelectionEnd = end;\n this._oldHasSelection = hasSelection;\n this._onSelectionChange.fire();\n }\n\n private _onBufferActivate(e: {activeBuffer: IBuffer, inactiveBuffer: IBuffer}): void {\n this.clearSelection();\n // Only adjust the selection on trim, shiftElements is rarely used (only in\n // reverseIndex) and delete in a splice is only ever used when the same\n // number of elements was just added. Given this is could actually be\n // beneficial to leave the selection as is for these cases.\n this._trimListener.dispose();\n this._trimListener = e.activeBuffer.lines.onTrim(amount => this._onTrim(amount));\n }\n\n /**\n * Converts a viewport column to the character index on the buffer line, the\n * latter takes into account wide characters.\n * @param coords The coordinates to find the 2 index for.\n */\n private _convertViewportColToCharacterIndex(bufferLine: IBufferLine, coords: [number, number]): number {\n let charIndex = coords[0];\n for (let i = 0; coords[0] >= i; i++) {\n const length = bufferLine.loadCell(i, this._workCell).getChars().length;\n if (this._workCell.getWidth() === 0) {\n // Wide characters aren't included in the line string so decrement the\n // index so the index is back on the wide character.\n charIndex--;\n } else if (length > 1 && coords[0] !== i) {\n // Emojis take up multiple characters, so adjust accordingly. For these\n // we don't want ot include the character at the column as we're\n // returning the start index in the string, not the end index.\n charIndex += length - 1;\n }\n }\n return charIndex;\n }\n\n public setSelection(col: number, row: number, length: number): void {\n this._model.clearSelection();\n this._removeMouseDownListeners();\n this._model.selectionStart = [col, row];\n this._model.selectionStartLength = length;\n this.refresh();\n }\n\n public rightClickSelect(ev: MouseEvent): void {\n if (!this._isClickInSelection(ev)) {\n if (this._selectWordAtCursor(ev, false)) {\n this.refresh(true);\n }\n this._fireEventIfSelectionChanged();\n }\n }\n\n /**\n * Gets positional information for the word at the coordinated specified.\n * @param coords The coordinates to get the word at.\n */\n private _getWordAt(coords: [number, number], allowWhitespaceOnlySelection: boolean, followWrappedLinesAbove: boolean = true, followWrappedLinesBelow: boolean = true): IWordPosition | undefined {\n // Ensure coords are within viewport (eg. not within scroll bar)\n if (coords[0] >= this._bufferService.cols) {\n return undefined;\n }\n\n const buffer = this._bufferService.buffer;\n const bufferLine = buffer.lines.get(coords[1]);\n if (!bufferLine) {\n return undefined;\n }\n\n const line = buffer.translateBufferLineToString(coords[1], false);\n\n // Get actual index, taking into consideration wide characters\n let startIndex = this._convertViewportColToCharacterIndex(bufferLine, coords);\n let endIndex = startIndex;\n\n // Record offset to be used later\n const charOffset = coords[0] - startIndex;\n let leftWideCharCount = 0;\n let rightWideCharCount = 0;\n let leftLongCharOffset = 0;\n let rightLongCharOffset = 0;\n\n if (line.charAt(startIndex) === ' ') {\n // Expand until non-whitespace is hit\n while (startIndex > 0 && line.charAt(startIndex - 1) === ' ') {\n startIndex--;\n }\n while (endIndex < line.length && line.charAt(endIndex + 1) === ' ') {\n endIndex++;\n }\n } else {\n // Expand until whitespace is hit. This algorithm works by scanning left\n // and right from the starting position, keeping both the index format\n // (line) and the column format (bufferLine) in sync. When a wide\n // character is hit, it is recorded and the column index is adjusted.\n let startCol = coords[0];\n let endCol = coords[0];\n\n // Consider the initial position, skip it and increment the wide char\n // variable\n if (bufferLine.getWidth(startCol) === 0) {\n leftWideCharCount++;\n startCol--;\n }\n if (bufferLine.getWidth(endCol) === 2) {\n rightWideCharCount++;\n endCol++;\n }\n\n // Adjust the end index for characters whose length are > 1 (emojis)\n const length = bufferLine.getString(endCol).length;\n if (length > 1) {\n rightLongCharOffset += length - 1;\n endIndex += length - 1;\n }\n\n // Expand the string in both directions until a space is hit\n while (startCol > 0 && startIndex > 0 && !this._isCharWordSeparator(bufferLine.loadCell(startCol - 1, this._workCell))) {\n bufferLine.loadCell(startCol - 1, this._workCell);\n const length = this._workCell.getChars().length;\n if (this._workCell.getWidth() === 0) {\n // If the next character is a wide char, record it and skip the column\n leftWideCharCount++;\n startCol--;\n } else if (length > 1) {\n // If the next character's string is longer than 1 char (eg. emoji),\n // adjust the index\n leftLongCharOffset += length - 1;\n startIndex -= length - 1;\n }\n startIndex--;\n startCol--;\n }\n while (endCol < bufferLine.length && endIndex + 1 < line.length && !this._isCharWordSeparator(bufferLine.loadCell(endCol + 1, this._workCell))) {\n bufferLine.loadCell(endCol + 1, this._workCell);\n const length = this._workCell.getChars().length;\n if (this._workCell.getWidth() === 2) {\n // If the next character is a wide char, record it and skip the column\n rightWideCharCount++;\n endCol++;\n } else if (length > 1) {\n // If the next character's string is longer than 1 char (eg. emoji),\n // adjust the index\n rightLongCharOffset += length - 1;\n endIndex += length - 1;\n }\n endIndex++;\n endCol++;\n }\n }\n\n // Incremenet the end index so it is at the start of the next character\n endIndex++;\n\n // Calculate the start _column_, converting the the string indexes back to\n // column coordinates.\n let start =\n startIndex // The index of the selection's start char in the line string\n + charOffset // The difference between the initial char's column and index\n - leftWideCharCount // The number of wide chars left of the initial char\n + leftLongCharOffset; // The number of additional chars left of the initial char added by columns with strings longer than 1 (emojis)\n\n // Calculate the length in _columns_, converting the the string indexes back\n // to column coordinates.\n let length = Math.min(this._bufferService.cols, // Disallow lengths larger than the terminal cols\n endIndex // The index of the selection's end char in the line string\n - startIndex // The index of the selection's start char in the line string\n + leftWideCharCount // The number of wide chars left of the initial char\n + rightWideCharCount // The number of wide chars right of the initial char (inclusive)\n - leftLongCharOffset // The number of additional chars left of the initial char added by columns with strings longer than 1 (emojis)\n - rightLongCharOffset); // The number of additional chars right of the initial char (inclusive) added by columns with strings longer than 1 (emojis)\n\n if (!allowWhitespaceOnlySelection && line.slice(startIndex, endIndex).trim() === '') {\n return undefined;\n }\n\n // Recurse upwards if the line is wrapped and the word wraps to the above line\n if (followWrappedLinesAbove) {\n if (start === 0 && bufferLine.getCodePoint(0) !== 32 /* ' ' */) {\n const previousBufferLine = buffer.lines.get(coords[1] - 1);\n if (previousBufferLine && bufferLine.isWrapped && previousBufferLine.getCodePoint(this._bufferService.cols - 1) !== 32 /* ' ' */) {\n const previousLineWordPosition = this._getWordAt([this._bufferService.cols - 1, coords[1] - 1], false, true, false);\n if (previousLineWordPosition) {\n const offset = this._bufferService.cols - previousLineWordPosition.start;\n start -= offset;\n length += offset;\n }\n }\n }\n }\n\n // Recurse downwards if the line is wrapped and the word wraps to the next line\n if (followWrappedLinesBelow) {\n if (start + length === this._bufferService.cols && bufferLine.getCodePoint(this._bufferService.cols - 1) !== 32 /* ' ' */) {\n const nextBufferLine = buffer.lines.get(coords[1] + 1);\n if (nextBufferLine?.isWrapped && nextBufferLine.getCodePoint(0) !== 32 /* ' ' */) {\n const nextLineWordPosition = this._getWordAt([0, coords[1] + 1], false, false, true);\n if (nextLineWordPosition) {\n length += nextLineWordPosition.length;\n }\n }\n }\n }\n\n return { start, length };\n }\n\n /**\n * Selects the word at the coordinates specified.\n * @param coords The coordinates to get the word at.\n * @param allowWhitespaceOnlySelection If whitespace should be selected\n */\n protected _selectWordAt(coords: [number, number], allowWhitespaceOnlySelection: boolean): void {\n const wordPosition = this._getWordAt(coords, allowWhitespaceOnlySelection);\n if (wordPosition) {\n // Adjust negative start value\n while (wordPosition.start < 0) {\n wordPosition.start += this._bufferService.cols;\n coords[1]--;\n }\n this._model.selectionStart = [wordPosition.start, coords[1]];\n this._model.selectionStartLength = wordPosition.length;\n }\n }\n\n /**\n * Sets the selection end to the word at the coordinated specified.\n * @param coords The coordinates to get the word at.\n */\n private _selectToWordAt(coords: [number, number]): void {\n const wordPosition = this._getWordAt(coords, true);\n if (wordPosition) {\n let endRow = coords[1];\n\n // Adjust negative start value\n while (wordPosition.start < 0) {\n wordPosition.start += this._bufferService.cols;\n endRow--;\n }\n\n // Adjust wrapped length value, this only needs to happen when values are reversed as in that\n // case we're interested in the start of the word, not the end\n if (!this._model.areSelectionValuesReversed()) {\n while (wordPosition.start + wordPosition.length > this._bufferService.cols) {\n wordPosition.length -= this._bufferService.cols;\n endRow++;\n }\n }\n\n this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? wordPosition.start : wordPosition.start + wordPosition.length, endRow];\n }\n }\n\n /**\n * Gets whether the character is considered a word separator by the select\n * word logic.\n * @param char The character to check.\n */\n private _isCharWordSeparator(cell: CellData): boolean {\n // Zero width characters are never separators as they are always to the\n // right of wide characters\n if (cell.getWidth() === 0) {\n return false;\n }\n return this._optionsService.rawOptions.wordSeparator.indexOf(cell.getChars()) >= 0;\n }\n\n /**\n * Selects the line specified.\n * @param line The line index.\n */\n protected _selectLineAt(line: number): void {\n const wrappedRange = this._bufferService.buffer.getWrappedRangeForLine(line);\n this._model.selectionStart = [0, wrappedRange.first];\n this._model.selectionEnd = [this._bufferService.cols, wrappedRange.last];\n this._model.selectionStartLength = 0;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IEvent } from 'common/EventEmitter';\nimport { IRenderDimensions, IRenderer } from 'browser/renderer/Types';\nimport { IColorSet } from 'browser/Types';\nimport { ISelectionRedrawRequestEvent as ISelectionRequestRedrawEvent, ISelectionRequestScrollLinesEvent } from 'browser/selection/Types';\nimport { createDecorator } from 'common/services/ServiceRegistry';\nimport { IDisposable } from 'common/Types';\nimport { IDecorationOptions, IDecoration } from 'xterm';\nimport { IBufferService } from 'common/services/Services';\n\nexport const ICharSizeService = createDecorator('CharSizeService');\nexport interface ICharSizeService {\n serviceBrand: undefined;\n\n readonly width: number;\n readonly height: number;\n readonly hasValidSize: boolean;\n\n readonly onCharSizeChange: IEvent;\n\n measure(): void;\n}\n\nexport const ICoreBrowserService = createDecorator('CoreBrowserService');\nexport interface ICoreBrowserService {\n serviceBrand: undefined;\n\n readonly isFocused: boolean;\n}\n\nexport const IMouseService = createDecorator('MouseService');\nexport interface IMouseService {\n serviceBrand: undefined;\n\n getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, isSelection?: boolean): [number, number] | undefined;\n getRawByteCoords(event: MouseEvent, element: HTMLElement, colCount: number, rowCount: number): { x: number, y: number } | undefined;\n}\n\nexport const IRenderService = createDecorator('RenderService');\nexport interface IRenderService extends IDisposable {\n serviceBrand: undefined;\n\n onDimensionsChange: IEvent;\n /**\n * Fires when buffer changes are rendered. This does not fire when only cursor\n * or selections are rendered.\n */\n onRenderedBufferChange: IEvent<{ start: number, end: number }>;\n onRefreshRequest: IEvent<{ start: number, end: number }>;\n\n dimensions: IRenderDimensions;\n\n refreshRows(start: number, end: number): void;\n clearTextureAtlas(): void;\n resize(cols: number, rows: number): void;\n changeOptions(): void;\n setRenderer(renderer: IRenderer): void;\n setColors(colors: IColorSet): void;\n onDevicePixelRatioChange(): void;\n onResize(cols: number, rows: number): void;\n // TODO: Is this useful when we have onResize?\n onCharSizeChanged(): void;\n onBlur(): void;\n onFocus(): void;\n onSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean): void;\n onCursorMove(): void;\n clear(): void;\n}\n\nexport const ISelectionService = createDecorator('SelectionService');\nexport interface ISelectionService {\n serviceBrand: undefined;\n\n readonly selectionText: string;\n readonly hasSelection: boolean;\n readonly selectionStart: [number, number] | undefined;\n readonly selectionEnd: [number, number] | undefined;\n\n readonly onLinuxMouseSelection: IEvent;\n readonly onRequestRedraw: IEvent;\n readonly onRequestScrollLines: IEvent;\n readonly onSelectionChange: IEvent;\n\n disable(): void;\n enable(): void;\n reset(): void;\n setSelection(row: number, col: number, length: number): void;\n selectAll(): void;\n selectLines(start: number, end: number): void;\n clearSelection(): void;\n rightClickSelect(event: MouseEvent): void;\n shouldColumnSelect(event: KeyboardEvent | MouseEvent): boolean;\n shouldForceSelection(event: MouseEvent): boolean;\n refresh(isLinuxMouseSelection?: boolean): void;\n onMouseDown(event: MouseEvent): void;\n}\n\nexport const ISoundService = createDecorator('SoundService');\nexport interface ISoundService {\n serviceBrand: undefined;\n\n playBellSound(): void;\n}\n\n\nexport const ICharacterJoinerService = createDecorator('CharacterJoinerService');\nexport interface ICharacterJoinerService {\n serviceBrand: undefined;\n\n register(handler: (text: string) => [number, number][]): number;\n deregister(joinerId: number): boolean;\n getJoinedCharacters(row: number): [number, number][];\n}\n\n\nexport const IDecorationService = createDecorator('DecorationService');\nexport interface IDecorationService extends IDisposable {\n registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined;\n refresh(): void;\n attachToDom(screenElement: HTMLElement, renderService: IRenderService, bufferService: IBufferService): void;\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOptionsService } from 'common/services/Services';\nimport { ISoundService } from 'browser/services/Services';\n\nexport class SoundService implements ISoundService {\n public serviceBrand: undefined;\n\n private static _audioContext: AudioContext;\n\n public static get audioContext(): AudioContext | null {\n if (!SoundService._audioContext) {\n const audioContextCtor: typeof AudioContext = (window as any).AudioContext || (window as any).webkitAudioContext;\n if (!audioContextCtor) {\n console.warn('Web Audio API is not supported by this browser. Consider upgrading to the latest version');\n return null;\n }\n SoundService._audioContext = new audioContextCtor();\n }\n return SoundService._audioContext;\n }\n\n constructor(\n @IOptionsService private _optionsService: IOptionsService\n ) {\n }\n\n public playBellSound(): void {\n const ctx = SoundService.audioContext;\n if (!ctx) {\n return;\n }\n const bellAudioSource = ctx.createBufferSource();\n ctx.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._optionsService.rawOptions.bellSound)), (buffer) => {\n bellAudioSource.buffer = buffer;\n bellAudioSource.connect(ctx.destination);\n bellAudioSource.start(0);\n });\n }\n\n private _base64ToArrayBuffer(base64: string): ArrayBuffer {\n const binaryString = window.atob(base64);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n return bytes.buffer;\n }\n\n private _removeMimeType(dataURI: string): string {\n // Split the input to get the mime-type and the data itself\n const splitUri = dataURI.split(',');\n\n // Return only the data\n return splitUri[1];\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICircularList } from 'common/Types';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\n\nexport interface IInsertEvent {\n index: number;\n amount: number;\n}\n\nexport interface IDeleteEvent {\n index: number;\n amount: number;\n}\n\n/**\n * Represents a circular list; a list with a maximum size that wraps around when push is called,\n * overriding values at the start of the list.\n */\nexport class CircularList implements ICircularList {\n protected _array: (T | undefined)[];\n private _startIndex: number;\n private _length: number;\n\n public onDeleteEmitter = new EventEmitter();\n public get onDelete(): IEvent { return this.onDeleteEmitter.event; }\n public onInsertEmitter = new EventEmitter();\n public get onInsert(): IEvent { return this.onInsertEmitter.event; }\n public onTrimEmitter = new EventEmitter();\n public get onTrim(): IEvent { return this.onTrimEmitter.event; }\n\n constructor(\n private _maxLength: number\n ) {\n this._array = new Array(this._maxLength);\n this._startIndex = 0;\n this._length = 0;\n }\n\n public get maxLength(): number {\n return this._maxLength;\n }\n\n public set maxLength(newMaxLength: number) {\n // There was no change in maxLength, return early.\n if (this._maxLength === newMaxLength) {\n return;\n }\n\n // Reconstruct array, starting at index 0. Only transfer values from the\n // indexes 0 to length.\n const newArray = new Array(newMaxLength);\n for (let i = 0; i < Math.min(newMaxLength, this.length); i++) {\n newArray[i] = this._array[this._getCyclicIndex(i)];\n }\n this._array = newArray;\n this._maxLength = newMaxLength;\n this._startIndex = 0;\n }\n\n public get length(): number {\n return this._length;\n }\n\n public set length(newLength: number) {\n if (newLength > this._length) {\n for (let i = this._length; i < newLength; i++) {\n this._array[i] = undefined;\n }\n }\n this._length = newLength;\n }\n\n /**\n * Gets the value at an index.\n *\n * Note that for performance reasons there is no bounds checking here, the index reference is\n * circular so this should always return a value and never throw.\n * @param index The index of the value to get.\n * @return The value corresponding to the index.\n */\n public get(index: number): T | undefined {\n return this._array[this._getCyclicIndex(index)];\n }\n\n /**\n * Sets the value at an index.\n *\n * Note that for performance reasons there is no bounds checking here, the index reference is\n * circular so this should always return a value and never throw.\n * @param index The index to set.\n * @param value The value to set.\n */\n public set(index: number, value: T | undefined): void {\n this._array[this._getCyclicIndex(index)] = value;\n }\n\n /**\n * Pushes a new value onto the list, wrapping around to the start of the array, overriding index 0\n * if the maximum length is reached.\n * @param value The value to push onto the list.\n */\n public push(value: T): void {\n this._array[this._getCyclicIndex(this._length)] = value;\n if (this._length === this._maxLength) {\n this._startIndex = ++this._startIndex % this._maxLength;\n this.onTrimEmitter.fire(1);\n } else {\n this._length++;\n }\n }\n\n /**\n * Advance ringbuffer index and return current element for recycling.\n * Note: The buffer must be full for this method to work.\n * @throws When the buffer is not full.\n */\n public recycle(): T {\n if (this._length !== this._maxLength) {\n throw new Error('Can only recycle when the buffer is full');\n }\n this._startIndex = ++this._startIndex % this._maxLength;\n this.onTrimEmitter.fire(1);\n return this._array[this._getCyclicIndex(this._length - 1)]!;\n }\n\n /**\n * Ringbuffer is at max length.\n */\n public get isFull(): boolean {\n return this._length === this._maxLength;\n }\n\n /**\n * Removes and returns the last value on the list.\n * @return The popped value.\n */\n public pop(): T | undefined {\n return this._array[this._getCyclicIndex(this._length-- - 1)];\n }\n\n /**\n * Deletes and/or inserts items at a particular index (in that order). Unlike\n * Array.prototype.splice, this operation does not return the deleted items as a new array in\n * order to save creating a new array. Note that this operation may shift all values in the list\n * in the worst case.\n * @param start The index to delete and/or insert.\n * @param deleteCount The number of elements to delete.\n * @param items The items to insert.\n */\n public splice(start: number, deleteCount: number, ...items: T[]): void {\n // Delete items\n if (deleteCount) {\n for (let i = start; i < this._length - deleteCount; i++) {\n this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + deleteCount)];\n }\n this._length -= deleteCount;\n this.onDeleteEmitter.fire({ index: start, amount: deleteCount });\n }\n\n // Add items\n for (let i = this._length - 1; i >= start; i--) {\n this._array[this._getCyclicIndex(i + items.length)] = this._array[this._getCyclicIndex(i)];\n }\n for (let i = 0; i < items.length; i++) {\n this._array[this._getCyclicIndex(start + i)] = items[i];\n }\n if (items.length) {\n this.onInsertEmitter.fire({ index: start, amount: items.length });\n }\n\n // Adjust length as needed\n if (this._length + items.length > this._maxLength) {\n const countToTrim = (this._length + items.length) - this._maxLength;\n this._startIndex += countToTrim;\n this._length = this._maxLength;\n this.onTrimEmitter.fire(countToTrim);\n } else {\n this._length += items.length;\n }\n }\n\n /**\n * Trims a number of items from the start of the list.\n * @param count The number of items to remove.\n */\n public trimStart(count: number): void {\n if (count > this._length) {\n count = this._length;\n }\n this._startIndex += count;\n this._length -= count;\n this.onTrimEmitter.fire(count);\n }\n\n public shiftElements(start: number, count: number, offset: number): void {\n if (count <= 0) {\n return;\n }\n if (start < 0 || start >= this._length) {\n throw new Error('start argument out of range');\n }\n if (start + offset < 0) {\n throw new Error('Cannot shift elements in list beyond index 0');\n }\n\n if (offset > 0) {\n for (let i = count - 1; i >= 0; i--) {\n this.set(start + i + offset, this.get(start + i));\n }\n const expandListBy = (start + count + offset) - this._length;\n if (expandListBy > 0) {\n this._length += expandListBy;\n while (this._length > this._maxLength) {\n this._length--;\n this._startIndex++;\n this.onTrimEmitter.fire(1);\n }\n }\n } else {\n for (let i = 0; i < count; i++) {\n this.set(start + i + offset, this.get(start + i));\n }\n }\n }\n\n /**\n * Gets the cyclic index for the specified regular index. The cyclic index can then be used on the\n * backing array to get the element associated with the regular index.\n * @param index The regular index.\n * @returns The cyclic index.\n */\n private _getCyclicIndex(index: number): number {\n return (this._startIndex + index) % this._maxLength;\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/*\n * A simple utility for cloning values\n */\nexport function clone(val: T, depth: number = 5): T {\n if (typeof val !== 'object') {\n return val;\n }\n\n // If we're cloning an array, use an array as the base, otherwise use an object\n const clonedObject: any = Array.isArray(val) ? [] : {};\n\n for (const key in val) {\n // Recursively clone eack item unless we're at the maximum depth\n clonedObject[key] = depth <= 1 ? val[key] : (val[key] && clone(val[key], depth - 1));\n }\n\n return clonedObject as T;\n}\n", "/**\n * Copyright (c) 2014-2020 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n *\n * Originally forked from (with the author's permission):\n * Fabrice Bellard's javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n *\n * Terminal Emulation References:\n * http://vt100.net/\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.txt\n * http://invisible-island.net/xterm/ctlseqs/ctlseqs.html\n * http://invisible-island.net/vttest/\n * http://www.inwap.com/pdp10/ansicode.txt\n * http://linux.die.net/man/4/console_codes\n * http://linux.die.net/man/7/urxvt\n */\n\nimport { Disposable } from 'common/Lifecycle';\nimport { IInstantiationService, IOptionsService, IBufferService, ILogService, ICharsetService, ICoreService, ICoreMouseService, IUnicodeService, IDirtyRowService, LogLevelEnum, ITerminalOptions } from 'common/services/Services';\nimport { InstantiationService } from 'common/services/InstantiationService';\nimport { LogService } from 'common/services/LogService';\nimport { BufferService, MINIMUM_COLS, MINIMUM_ROWS } from 'common/services/BufferService';\nimport { OptionsService } from 'common/services/OptionsService';\nimport { IDisposable, IBufferLine, IAttributeData, ICoreTerminal, IKeyboardEvent, IScrollEvent, ScrollSource, ITerminalOptions as IPublicTerminalOptions } from 'common/Types';\nimport { CoreService } from 'common/services/CoreService';\nimport { EventEmitter, IEvent, forwardEvent } from 'common/EventEmitter';\nimport { CoreMouseService } from 'common/services/CoreMouseService';\nimport { DirtyRowService } from 'common/services/DirtyRowService';\nimport { UnicodeService } from 'common/services/UnicodeService';\nimport { CharsetService } from 'common/services/CharsetService';\nimport { updateWindowsModeWrappedState } from 'common/WindowsMode';\nimport { IFunctionIdentifier, IParams } from 'common/parser/Types';\nimport { IBufferSet } from 'common/buffer/Types';\nimport { InputHandler } from 'common/InputHandler';\nimport { WriteBuffer } from 'common/input/WriteBuffer';\n\n// Only trigger this warning a single time per session\nlet hasWriteSyncWarnHappened = false;\n\nexport abstract class CoreTerminal extends Disposable implements ICoreTerminal {\n protected readonly _instantiationService: IInstantiationService;\n protected readonly _bufferService: IBufferService;\n protected readonly _logService: ILogService;\n protected readonly _charsetService: ICharsetService;\n protected readonly _dirtyRowService: IDirtyRowService;\n\n public readonly coreMouseService: ICoreMouseService;\n public readonly coreService: ICoreService;\n public readonly unicodeService: IUnicodeService;\n public readonly optionsService: IOptionsService;\n\n protected _inputHandler: InputHandler;\n private _writeBuffer: WriteBuffer;\n private _windowsMode: IDisposable | undefined;\n\n private _onBinary = new EventEmitter();\n public get onBinary(): IEvent { return this._onBinary.event; }\n private _onData = new EventEmitter();\n public get onData(): IEvent { return this._onData.event; }\n protected _onLineFeed = new EventEmitter();\n public get onLineFeed(): IEvent { return this._onLineFeed.event; }\n private _onResize = new EventEmitter<{ cols: number, rows: number }>();\n public get onResize(): IEvent<{ cols: number, rows: number }> { return this._onResize.event; }\n protected _onScroll = new EventEmitter();\n /**\n * Internally we track the source of the scroll but this is meaningless outside the library so\n * it's filtered out.\n */\n protected _onScrollApi?: EventEmitter;\n public get onScroll(): IEvent {\n if (!this._onScrollApi) {\n this._onScrollApi = new EventEmitter();\n this.register(this._onScroll.event(ev => {\n this._onScrollApi?.fire(ev.position);\n }));\n }\n return this._onScrollApi.event;\n }\n\n public get cols(): number { return this._bufferService.cols; }\n public get rows(): number { return this._bufferService.rows; }\n public get buffers(): IBufferSet { return this._bufferService.buffers; }\n public get options(): ITerminalOptions { return this.optionsService.options; }\n public set options(options: ITerminalOptions) {\n for (const key in options) {\n this.optionsService.options[key] = options[key];\n }\n }\n\n constructor(\n options: Partial\n ) {\n super();\n\n // Setup and initialize services\n this._instantiationService = new InstantiationService();\n this.optionsService = new OptionsService(options);\n this._instantiationService.setService(IOptionsService, this.optionsService);\n this._bufferService = this.register(this._instantiationService.createInstance(BufferService));\n this._instantiationService.setService(IBufferService, this._bufferService);\n this._logService = this._instantiationService.createInstance(LogService);\n this._instantiationService.setService(ILogService, this._logService);\n this.coreService = this.register(this._instantiationService.createInstance(CoreService, () => this.scrollToBottom()));\n this._instantiationService.setService(ICoreService, this.coreService);\n this.coreMouseService = this._instantiationService.createInstance(CoreMouseService);\n this._instantiationService.setService(ICoreMouseService, this.coreMouseService);\n this._dirtyRowService = this._instantiationService.createInstance(DirtyRowService);\n this._instantiationService.setService(IDirtyRowService, this._dirtyRowService);\n this.unicodeService = this._instantiationService.createInstance(UnicodeService);\n this._instantiationService.setService(IUnicodeService, this.unicodeService);\n this._charsetService = this._instantiationService.createInstance(CharsetService);\n this._instantiationService.setService(ICharsetService, this._charsetService);\n\n // Register input handler and handle/forward events\n this._inputHandler = new InputHandler(this._bufferService, this._charsetService, this.coreService, this._dirtyRowService, this._logService, this.optionsService, this.coreMouseService, this.unicodeService);\n this.register(forwardEvent(this._inputHandler.onLineFeed, this._onLineFeed));\n this.register(this._inputHandler);\n\n // Setup listeners\n this.register(forwardEvent(this._bufferService.onResize, this._onResize));\n this.register(forwardEvent(this.coreService.onData, this._onData));\n this.register(forwardEvent(this.coreService.onBinary, this._onBinary));\n this.register(this.optionsService.onOptionChange(key => this._updateOptions(key)));\n this.register(this._bufferService.onScroll(event => {\n this._onScroll.fire({ position: this._bufferService.buffer.ydisp, source: ScrollSource.TERMINAL });\n this._dirtyRowService.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom);\n }));\n this.register(this._inputHandler.onScroll(event => {\n this._onScroll.fire({ position: this._bufferService.buffer.ydisp, source: ScrollSource.TERMINAL });\n this._dirtyRowService.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom);\n }));\n\n // Setup WriteBuffer\n this._writeBuffer = new WriteBuffer((data, promiseResult) => this._inputHandler.parse(data, promiseResult));\n }\n\n public dispose(): void {\n if (this._isDisposed) {\n return;\n }\n super.dispose();\n this._windowsMode?.dispose();\n this._windowsMode = undefined;\n }\n\n public write(data: string | Uint8Array, callback?: () => void): void {\n this._writeBuffer.write(data, callback);\n }\n\n /**\n * Write data to terminal synchonously.\n *\n * This method is unreliable with async parser handlers, thus should not\n * be used anymore. If you need blocking semantics on data input consider\n * `write` with a callback instead.\n *\n * @deprecated Unreliable, will be removed soon.\n */\n public writeSync(data: string | Uint8Array, maxSubsequentCalls?: number): void {\n if (this._logService.logLevel <= LogLevelEnum.WARN && !hasWriteSyncWarnHappened) {\n this._logService.warn('writeSync is unreliable and will be removed soon.');\n hasWriteSyncWarnHappened = true;\n }\n this._writeBuffer.writeSync(data, maxSubsequentCalls);\n }\n\n public resize(x: number, y: number): void {\n if (isNaN(x) || isNaN(y)) {\n return;\n }\n\n x = Math.max(x, MINIMUM_COLS);\n y = Math.max(y, MINIMUM_ROWS);\n\n this._bufferService.resize(x, y);\n }\n\n /**\n * Scroll the terminal down 1 row, creating a blank line.\n * @param isWrapped Whether the new line is wrapped from the previous line.\n */\n public scroll(eraseAttr: IAttributeData, isWrapped: boolean = false): void {\n this._bufferService.scroll(eraseAttr, isWrapped);\n }\n\n /**\n * Scroll the display of the terminal\n * @param disp The number of lines to scroll down (negative scroll up).\n * @param suppressScrollEvent Don't emit the scroll event as scrollLines. This is used\n * to avoid unwanted events being handled by the viewport when the event was triggered from the\n * viewport originally.\n */\n public scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void {\n this._bufferService.scrollLines(disp, suppressScrollEvent, source);\n }\n\n /**\n * Scroll the display of the terminal by a number of pages.\n * @param pageCount The number of pages to scroll (negative scrolls up).\n */\n public scrollPages(pageCount: number): void {\n this._bufferService.scrollPages(pageCount);\n }\n\n /**\n * Scrolls the display of the terminal to the top.\n */\n public scrollToTop(): void {\n this._bufferService.scrollToTop();\n }\n\n /**\n * Scrolls the display of the terminal to the bottom.\n */\n public scrollToBottom(): void {\n this._bufferService.scrollToBottom();\n }\n\n public scrollToLine(line: number): void {\n this._bufferService.scrollToLine(line);\n }\n\n /** Add handler for ESC escape sequence. See xterm.d.ts for details. */\n public registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable {\n return this._inputHandler.registerEscHandler(id, callback);\n }\n\n /** Add handler for DCS escape sequence. See xterm.d.ts for details. */\n public registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable {\n return this._inputHandler.registerDcsHandler(id, callback);\n }\n\n /** Add handler for CSI escape sequence. See xterm.d.ts for details. */\n public registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable {\n return this._inputHandler.registerCsiHandler(id, callback);\n }\n\n /** Add handler for OSC escape sequence. See xterm.d.ts for details. */\n public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this._inputHandler.registerOscHandler(ident, callback);\n }\n\n protected _setup(): void {\n if (this.optionsService.rawOptions.windowsMode) {\n this._enableWindowsMode();\n }\n }\n\n public reset(): void {\n this._inputHandler.reset();\n this._bufferService.reset();\n this._charsetService.reset();\n this.coreService.reset();\n this.coreMouseService.reset();\n }\n\n protected _updateOptions(key: string): void {\n // TODO: These listeners should be owned by individual components\n switch (key) {\n case 'scrollback':\n this.buffers.resize(this.cols, this.rows);\n break;\n case 'windowsMode':\n if (this.optionsService.rawOptions.windowsMode) {\n this._enableWindowsMode();\n } else {\n this._windowsMode?.dispose();\n this._windowsMode = undefined;\n }\n break;\n }\n }\n\n protected _enableWindowsMode(): void {\n if (!this._windowsMode) {\n const disposables: IDisposable[] = [];\n disposables.push(this.onLineFeed(updateWindowsModeWrappedState.bind(null, this._bufferService)));\n disposables.push(this.registerCsiHandler({ final: 'H' }, () => {\n updateWindowsModeWrappedState(this._bufferService);\n return false;\n }));\n this._windowsMode = {\n dispose: () => {\n for (const d of disposables) {\n d.dispose();\n }\n }\n };\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\ninterface IListener {\n (arg1: T, arg2: U): void;\n}\n\nexport interface IEvent {\n (listener: (arg1: T, arg2: U) => any): IDisposable;\n}\n\nexport interface IEventEmitter {\n event: IEvent;\n fire(arg1: T, arg2: U): void;\n dispose(): void;\n}\n\nexport class EventEmitter implements IEventEmitter {\n private _listeners: IListener[] = [];\n private _event?: IEvent;\n private _disposed: boolean = false;\n\n public get event(): IEvent {\n if (!this._event) {\n this._event = (listener: (arg1: T, arg2: U) => any) => {\n this._listeners.push(listener);\n const disposable = {\n dispose: () => {\n if (!this._disposed) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n }\n }\n };\n return disposable;\n };\n }\n return this._event;\n }\n\n public fire(arg1: T, arg2: U): void {\n const queue: IListener[] = [];\n for (let i = 0; i < this._listeners.length; i++) {\n queue.push(this._listeners[i]);\n }\n for (let i = 0; i < queue.length; i++) {\n queue[i].call(undefined, arg1, arg2);\n }\n }\n\n public dispose(): void {\n if (this._listeners) {\n this._listeners.length = 0;\n }\n this._disposed = true;\n }\n}\n\nexport function forwardEvent(from: IEvent, to: IEventEmitter): IDisposable {\n return from(e => to.fire(e));\n}\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n */\n\nimport { IInputHandler, IAttributeData, IDisposable, IWindowOptions, IColorEvent, IParseStack, ColorIndex, ColorRequestType } from 'common/Types';\nimport { C0, C1 } from 'common/data/EscapeSequences';\nimport { CHARSETS, DEFAULT_CHARSET } from 'common/data/Charsets';\nimport { EscapeSequenceParser } from 'common/parser/EscapeSequenceParser';\nimport { Disposable } from 'common/Lifecycle';\nimport { concat } from 'common/TypedArrayUtils';\nimport { StringToUtf32, stringFromCodePoint, utf32ToString, Utf8ToUtf32 } from 'common/input/TextDecoder';\nimport { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IParsingState, IDcsHandler, IEscapeSequenceParser, IParams, IFunctionIdentifier } from 'common/parser/Types';\nimport { NULL_CELL_CODE, NULL_CELL_WIDTH, Attributes, FgFlags, BgFlags, Content, UnderlineStyle } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { AttributeData } from 'common/buffer/AttributeData';\nimport { ICoreService, IBufferService, IOptionsService, ILogService, IDirtyRowService, ICoreMouseService, ICharsetService, IUnicodeService, LogLevelEnum } from 'common/services/Services';\nimport { OscHandler } from 'common/parser/OscParser';\nimport { DcsHandler } from 'common/parser/DcsParser';\nimport { IBuffer } from 'common/buffer/Types';\nimport { parseColor } from 'common/input/XParseColor';\n\n/**\n * Map collect to glevel. Used in `selectCharset`.\n */\nconst GLEVEL: { [key: string]: number } = { '(': 0, ')': 1, '*': 2, '+': 3, '-': 1, '.': 2 };\n\n/**\n * VT commands done by the parser - FIXME: move this to the parser?\n */\n// @vt: #Y ESC CSI \"Control Sequence Introducer\" \"ESC [\" \"Start of a CSI sequence.\"\n// @vt: #Y ESC OSC \"Operating System Command\" \"ESC ]\" \"Start of an OSC sequence.\"\n// @vt: #Y ESC DCS \"Device Control String\" \"ESC P\" \"Start of a DCS sequence.\"\n// @vt: #Y ESC ST \"String Terminator\" \"ESC \\\" \"Terminator used for string type sequences.\"\n// @vt: #Y ESC PM \"Privacy Message\" \"ESC ^\" \"Start of a privacy message.\"\n// @vt: #Y ESC APC \"Application Program Command\" \"ESC _\" \"Start of an APC sequence.\"\n// @vt: #Y C1 CSI \"Control Sequence Introducer\" \"\\x9B\" \"Start of a CSI sequence.\"\n// @vt: #Y C1 OSC \"Operating System Command\" \"\\x9D\" \"Start of an OSC sequence.\"\n// @vt: #Y C1 DCS \"Device Control String\" \"\\x90\" \"Start of a DCS sequence.\"\n// @vt: #Y C1 ST \"String Terminator\" \"\\x9C\" \"Terminator used for string type sequences.\"\n// @vt: #Y C1 PM \"Privacy Message\" \"\\x9E\" \"Start of a privacy message.\"\n// @vt: #Y C1 APC \"Application Program Command\" \"\\x9F\" \"Start of an APC sequence.\"\n// @vt: #Y C0 NUL \"Null\" \"\\0, \\x00\" \"NUL is ignored.\"\n// @vt: #Y C0 ESC \"Escape\" \"\\e, \\x1B\" \"Start of a sequence. Cancels any other sequence.\"\n\n/**\n * Document common VT features here that are currently unsupported\n */\n// @vt: #N DCS SIXEL \"SIXEL Graphics\" \"DCS Ps ; Ps ; Ps ; q \tPt ST\" \"Draw SIXEL image starting at cursor position.\"\n// @vt: #N OSC 1 \"Set Icon Name\" \"OSC 1 ; Pt BEL\" \"Set icon name.\"\n\n/**\n * Max length of the UTF32 input buffer. Real memory consumption is 4 times higher.\n */\nconst MAX_PARSEBUFFER_LENGTH = 131072;\n\n/**\n * Limit length of title and icon name stacks.\n */\nconst STACK_LIMIT = 10;\n\n// map params to window option\nfunction paramToWindowOption(n: number, opts: IWindowOptions): boolean {\n if (n > 24) {\n return opts.setWinLines || false;\n }\n switch (n) {\n case 1: return !!opts.restoreWin;\n case 2: return !!opts.minimizeWin;\n case 3: return !!opts.setWinPosition;\n case 4: return !!opts.setWinSizePixels;\n case 5: return !!opts.raiseWin;\n case 6: return !!opts.lowerWin;\n case 7: return !!opts.refreshWin;\n case 8: return !!opts.setWinSizeChars;\n case 9: return !!opts.maximizeWin;\n case 10: return !!opts.fullscreenWin;\n case 11: return !!opts.getWinState;\n case 13: return !!opts.getWinPosition;\n case 14: return !!opts.getWinSizePixels;\n case 15: return !!opts.getScreenSizePixels;\n case 16: return !!opts.getCellSizePixels;\n case 18: return !!opts.getWinSizeChars;\n case 19: return !!opts.getScreenSizeChars;\n case 20: return !!opts.getIconTitle;\n case 21: return !!opts.getWinTitle;\n case 22: return !!opts.pushTitle;\n case 23: return !!opts.popTitle;\n case 24: return !!opts.setWinLines;\n }\n return false;\n}\n\nexport enum WindowsOptionsReportType {\n GET_WIN_SIZE_PIXELS = 0,\n GET_CELL_SIZE_PIXELS = 1\n}\n\n// create a warning log if an async handler takes longer than the limit (in ms)\nconst SLOW_ASYNC_LIMIT = 5000;\n\n/**\n * DCS subparser implementations\n */\n\n/**\n * DCS $ q Pt ST\n * DECRQSS (https://vt100.net/docs/vt510-rm/DECRQSS.html)\n * Request Status String (DECRQSS), VT420 and up.\n * Response: DECRPSS (https://vt100.net/docs/vt510-rm/DECRPSS.html)\n *\n * @vt: #P[See limited support below.] DCS DECRQSS \"Request Selection or Setting\" \"DCS $ q Pt ST\" \"Request several terminal settings.\"\n * Response is in the form `ESC P 1 $ r Pt ST` for valid requests, where `Pt` contains the corresponding CSI string,\n * `ESC P 0 ST` for invalid requests.\n *\n * Supported requests and responses:\n *\n * | Type | Request | Response (`Pt`) |\n * | -------------------------------- | ----------------- | ----------------------------------------------------- |\n * | Graphic Rendition (SGR) | `DCS $ q m ST` | always reporting `0m` (currently broken) |\n * | Top and Bottom Margins (DECSTBM) | `DCS $ q r ST` | `Ps ; Ps r` |\n * | Cursor Style (DECSCUSR) | `DCS $ q SP q ST` | `Ps SP q` |\n * | Protection Attribute (DECSCA) | `DCS $ q \" q ST` | always reporting `0 \" q` (DECSCA is unsupported) |\n * | Conformance Level (DECSCL) | `DCS $ q \" p ST` | always reporting `61 ; 1 \" p` (DECSCL is unsupported) |\n *\n *\n * TODO:\n * - fix SGR report\n * - either implement DECSCA or remove the report\n * - either check which conformance is better suited or remove the report completely\n * --> we are currently a mixture of all up to VT400 but dont follow anyone strictly\n */\nclass DECRQSS implements IDcsHandler {\n private _data: Uint32Array = new Uint32Array(0);\n\n constructor(\n private _bufferService: IBufferService,\n private _coreService: ICoreService,\n private _logService: ILogService,\n private _optionsService: IOptionsService\n ) { }\n\n public hook(params: IParams): void {\n this._data = new Uint32Array(0);\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n this._data = concat(this._data, data.subarray(start, end));\n }\n\n public unhook(success: boolean): boolean {\n if (!success) {\n this._data = new Uint32Array(0);\n return true;\n }\n const data = utf32ToString(this._data);\n this._data = new Uint32Array(0);\n switch (data) {\n // valid: DCS 1 $ r Pt ST (xterm)\n case '\"q': // DECSCA\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r0\"q${C0.ESC}\\\\`);\n break;\n case '\"p': // DECSCL\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r61;1\"p${C0.ESC}\\\\`);\n break;\n case 'r': // DECSTBM\n const pt = '' + (this._bufferService.buffer.scrollTop + 1) +\n ';' + (this._bufferService.buffer.scrollBottom + 1) + 'r';\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r${pt}${C0.ESC}\\\\`);\n break;\n case 'm': // SGR\n // TODO: report real settings instead of 0m\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r0m${C0.ESC}\\\\`);\n break;\n case ' q': // DECSCUSR\n const STYLES: { [key: string]: number } = { 'block': 2, 'underline': 4, 'bar': 6 };\n let style = STYLES[this._optionsService.rawOptions.cursorStyle];\n style -= this._optionsService.rawOptions.cursorBlink ? 1 : 0;\n this._coreService.triggerDataEvent(`${C0.ESC}P1$r${style} q${C0.ESC}\\\\`);\n break;\n default:\n // invalid: DCS 0 $ r Pt ST (xterm)\n this._logService.debug('Unknown DCS $q %s', data);\n this._coreService.triggerDataEvent(`${C0.ESC}P0$r${C0.ESC}\\\\`);\n }\n return true;\n }\n}\n\n/**\n * DCS Ps; Ps| Pt ST\n * DECUDK (https://vt100.net/docs/vt510-rm/DECUDK.html)\n * not supported\n *\n * @vt: #N DCS DECUDK \"User Defined Keys\" \"DCS Ps ; Ps | Pt ST\" \"Definitions for user-defined keys.\"\n */\n\n/**\n * DCS + q Pt ST (xterm)\n * Request Terminfo String\n * not implemented\n *\n * @vt: #N DCS XTGETTCAP \"Request Terminfo String\" \"DCS + q Pt ST\" \"Request Terminfo String.\"\n */\n\n/**\n * DCS + p Pt ST (xterm)\n * Set Terminfo Data\n * not supported\n *\n * @vt: #N DCS XTSETTCAP \"Set Terminfo Data\" \"DCS + p Pt ST\" \"Set Terminfo Data.\"\n */\n\n\n\n/**\n * The terminal's standard implementation of IInputHandler, this handles all\n * input from the Parser.\n *\n * Refer to http://invisible-island.net/xterm/ctlseqs/ctlseqs.html to understand\n * each function's header comment.\n */\nexport class InputHandler extends Disposable implements IInputHandler {\n private _parseBuffer: Uint32Array = new Uint32Array(4096);\n private _stringDecoder: StringToUtf32 = new StringToUtf32();\n private _utf8Decoder: Utf8ToUtf32 = new Utf8ToUtf32();\n private _workCell: CellData = new CellData();\n private _windowTitle = '';\n private _iconName = '';\n protected _windowTitleStack: string[] = [];\n protected _iconNameStack: string[] = [];\n\n private _curAttrData: IAttributeData = DEFAULT_ATTR_DATA.clone();\n private _eraseAttrDataInternal: IAttributeData = DEFAULT_ATTR_DATA.clone();\n\n private _activeBuffer: IBuffer;\n\n private _onRequestBell = new EventEmitter();\n public get onRequestBell(): IEvent { return this._onRequestBell.event; }\n private _onRequestRefreshRows = new EventEmitter();\n public get onRequestRefreshRows(): IEvent { return this._onRequestRefreshRows.event; }\n private _onRequestReset = new EventEmitter();\n public get onRequestReset(): IEvent { return this._onRequestReset.event; }\n private _onRequestSendFocus = new EventEmitter();\n public get onRequestSendFocus(): IEvent { return this._onRequestSendFocus.event; }\n private _onRequestSyncScrollBar = new EventEmitter();\n public get onRequestSyncScrollBar(): IEvent { return this._onRequestSyncScrollBar.event; }\n private _onRequestWindowsOptionsReport = new EventEmitter();\n public get onRequestWindowsOptionsReport(): IEvent { return this._onRequestWindowsOptionsReport.event; }\n\n private _onA11yChar = new EventEmitter();\n public get onA11yChar(): IEvent { return this._onA11yChar.event; }\n private _onA11yTab = new EventEmitter();\n public get onA11yTab(): IEvent { return this._onA11yTab.event; }\n private _onCursorMove = new EventEmitter();\n public get onCursorMove(): IEvent { return this._onCursorMove.event; }\n private _onLineFeed = new EventEmitter();\n public get onLineFeed(): IEvent { return this._onLineFeed.event; }\n private _onScroll = new EventEmitter();\n public get onScroll(): IEvent { return this._onScroll.event; }\n private _onTitleChange = new EventEmitter();\n public get onTitleChange(): IEvent { return this._onTitleChange.event; }\n private _onColor = new EventEmitter();\n public get onColor(): IEvent { return this._onColor.event; }\n\n private _parseStack: IParseStack = {\n paused: false,\n cursorStartX: 0,\n cursorStartY: 0,\n decodedLength: 0,\n position: 0\n };\n\n constructor(\n private readonly _bufferService: IBufferService,\n private readonly _charsetService: ICharsetService,\n private readonly _coreService: ICoreService,\n private readonly _dirtyRowService: IDirtyRowService,\n private readonly _logService: ILogService,\n private readonly _optionsService: IOptionsService,\n private readonly _coreMouseService: ICoreMouseService,\n private readonly _unicodeService: IUnicodeService,\n private readonly _parser: IEscapeSequenceParser = new EscapeSequenceParser()\n ) {\n super();\n this.register(this._parser);\n\n // Track properties used in performance critical code manually to avoid using slow getters\n this._activeBuffer = this._bufferService.buffer;\n this.register(this._bufferService.buffers.onBufferActivate(e => this._activeBuffer = e.activeBuffer));\n\n /**\n * custom fallback handlers\n */\n this._parser.setCsiHandlerFallback((ident, params) => {\n this._logService.debug('Unknown CSI code: ', { identifier: this._parser.identToString(ident), params: params.toArray() });\n });\n this._parser.setEscHandlerFallback(ident => {\n this._logService.debug('Unknown ESC code: ', { identifier: this._parser.identToString(ident) });\n });\n this._parser.setExecuteHandlerFallback(code => {\n this._logService.debug('Unknown EXECUTE code: ', { code });\n });\n this._parser.setOscHandlerFallback((identifier, action, data) => {\n this._logService.debug('Unknown OSC code: ', { identifier, action, data });\n });\n this._parser.setDcsHandlerFallback((ident, action, payload) => {\n if (action === 'HOOK') {\n payload = payload.toArray();\n }\n this._logService.debug('Unknown DCS code: ', { identifier: this._parser.identToString(ident), action, payload });\n });\n\n /**\n * print handler\n */\n this._parser.setPrintHandler((data, start, end) => this.print(data, start, end));\n\n /**\n * CSI handler\n */\n this._parser.registerCsiHandler({ final: '@' }, params => this.insertChars(params));\n this._parser.registerCsiHandler({ intermediates: ' ', final: '@' }, params => this.scrollLeft(params));\n this._parser.registerCsiHandler({ final: 'A' }, params => this.cursorUp(params));\n this._parser.registerCsiHandler({ intermediates: ' ', final: 'A' }, params => this.scrollRight(params));\n this._parser.registerCsiHandler({ final: 'B' }, params => this.cursorDown(params));\n this._parser.registerCsiHandler({ final: 'C' }, params => this.cursorForward(params));\n this._parser.registerCsiHandler({ final: 'D' }, params => this.cursorBackward(params));\n this._parser.registerCsiHandler({ final: 'E' }, params => this.cursorNextLine(params));\n this._parser.registerCsiHandler({ final: 'F' }, params => this.cursorPrecedingLine(params));\n this._parser.registerCsiHandler({ final: 'G' }, params => this.cursorCharAbsolute(params));\n this._parser.registerCsiHandler({ final: 'H' }, params => this.cursorPosition(params));\n this._parser.registerCsiHandler({ final: 'I' }, params => this.cursorForwardTab(params));\n this._parser.registerCsiHandler({ final: 'J' }, params => this.eraseInDisplay(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'J' }, params => this.eraseInDisplay(params));\n this._parser.registerCsiHandler({ final: 'K' }, params => this.eraseInLine(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'K' }, params => this.eraseInLine(params));\n this._parser.registerCsiHandler({ final: 'L' }, params => this.insertLines(params));\n this._parser.registerCsiHandler({ final: 'M' }, params => this.deleteLines(params));\n this._parser.registerCsiHandler({ final: 'P' }, params => this.deleteChars(params));\n this._parser.registerCsiHandler({ final: 'S' }, params => this.scrollUp(params));\n this._parser.registerCsiHandler({ final: 'T' }, params => this.scrollDown(params));\n this._parser.registerCsiHandler({ final: 'X' }, params => this.eraseChars(params));\n this._parser.registerCsiHandler({ final: 'Z' }, params => this.cursorBackwardTab(params));\n this._parser.registerCsiHandler({ final: '`' }, params => this.charPosAbsolute(params));\n this._parser.registerCsiHandler({ final: 'a' }, params => this.hPositionRelative(params));\n this._parser.registerCsiHandler({ final: 'b' }, params => this.repeatPrecedingCharacter(params));\n this._parser.registerCsiHandler({ final: 'c' }, params => this.sendDeviceAttributesPrimary(params));\n this._parser.registerCsiHandler({ prefix: '>', final: 'c' }, params => this.sendDeviceAttributesSecondary(params));\n this._parser.registerCsiHandler({ final: 'd' }, params => this.linePosAbsolute(params));\n this._parser.registerCsiHandler({ final: 'e' }, params => this.vPositionRelative(params));\n this._parser.registerCsiHandler({ final: 'f' }, params => this.hVPosition(params));\n this._parser.registerCsiHandler({ final: 'g' }, params => this.tabClear(params));\n this._parser.registerCsiHandler({ final: 'h' }, params => this.setMode(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'h' }, params => this.setModePrivate(params));\n this._parser.registerCsiHandler({ final: 'l' }, params => this.resetMode(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'l' }, params => this.resetModePrivate(params));\n this._parser.registerCsiHandler({ final: 'm' }, params => this.charAttributes(params));\n this._parser.registerCsiHandler({ final: 'n' }, params => this.deviceStatus(params));\n this._parser.registerCsiHandler({ prefix: '?', final: 'n' }, params => this.deviceStatusPrivate(params));\n this._parser.registerCsiHandler({ intermediates: '!', final: 'p' }, params => this.softReset(params));\n this._parser.registerCsiHandler({ intermediates: ' ', final: 'q' }, params => this.setCursorStyle(params));\n this._parser.registerCsiHandler({ final: 'r' }, params => this.setScrollRegion(params));\n this._parser.registerCsiHandler({ final: 's' }, params => this.saveCursor(params));\n this._parser.registerCsiHandler({ final: 't' }, params => this.windowOptions(params));\n this._parser.registerCsiHandler({ final: 'u' }, params => this.restoreCursor(params));\n this._parser.registerCsiHandler({ intermediates: '\\'', final: '}' }, params => this.insertColumns(params));\n this._parser.registerCsiHandler({ intermediates: '\\'', final: '~' }, params => this.deleteColumns(params));\n\n /**\n * execute handler\n */\n this._parser.setExecuteHandler(C0.BEL, () => this.bell());\n this._parser.setExecuteHandler(C0.LF, () => this.lineFeed());\n this._parser.setExecuteHandler(C0.VT, () => this.lineFeed());\n this._parser.setExecuteHandler(C0.FF, () => this.lineFeed());\n this._parser.setExecuteHandler(C0.CR, () => this.carriageReturn());\n this._parser.setExecuteHandler(C0.BS, () => this.backspace());\n this._parser.setExecuteHandler(C0.HT, () => this.tab());\n this._parser.setExecuteHandler(C0.SO, () => this.shiftOut());\n this._parser.setExecuteHandler(C0.SI, () => this.shiftIn());\n // FIXME: What do to with missing? Old code just added those to print.\n\n this._parser.setExecuteHandler(C1.IND, () => this.index());\n this._parser.setExecuteHandler(C1.NEL, () => this.nextLine());\n this._parser.setExecuteHandler(C1.HTS, () => this.tabSet());\n\n /**\n * OSC handler\n */\n // 0 - icon name + title\n this._parser.registerOscHandler(0, new OscHandler(data => { this.setTitle(data); this.setIconName(data); return true; }));\n // 1 - icon name\n this._parser.registerOscHandler(1, new OscHandler(data => this.setIconName(data)));\n // 2 - title\n this._parser.registerOscHandler(2, new OscHandler(data => this.setTitle(data)));\n // 3 - set property X in the form \"prop=value\"\n // 4 - Change Color Number\n this._parser.registerOscHandler(4, new OscHandler(data => this.setOrReportIndexedColor(data)));\n // 5 - Change Special Color Number\n // 6 - Enable/disable Special Color Number c\n // 7 - current directory? (not in xterm spec, see https://gitlab.com/gnachman/iterm2/issues/3939)\n // 10 - Change VT100 text foreground color to Pt.\n this._parser.registerOscHandler(10, new OscHandler(data => this.setOrReportFgColor(data)));\n // 11 - Change VT100 text background color to Pt.\n this._parser.registerOscHandler(11, new OscHandler(data => this.setOrReportBgColor(data)));\n // 12 - Change text cursor color to Pt.\n this._parser.registerOscHandler(12, new OscHandler(data => this.setOrReportCursorColor(data)));\n // 13 - Change mouse foreground color to Pt.\n // 14 - Change mouse background color to Pt.\n // 15 - Change Tektronix foreground color to Pt.\n // 16 - Change Tektronix background color to Pt.\n // 17 - Change highlight background color to Pt.\n // 18 - Change Tektronix cursor color to Pt.\n // 19 - Change highlight foreground color to Pt.\n // 46 - Change Log File to Pt.\n // 50 - Set Font to Pt.\n // 51 - reserved for Emacs shell.\n // 52 - Manipulate Selection Data.\n // 104 ; c - Reset Color Number c.\n this._parser.registerOscHandler(104, new OscHandler(data => this.restoreIndexedColor(data)));\n // 105 ; c - Reset Special Color Number c.\n // 106 ; c; f - Enable/disable Special Color Number c.\n // 110 - Reset VT100 text foreground color.\n this._parser.registerOscHandler(110, new OscHandler(data => this.restoreFgColor(data)));\n // 111 - Reset VT100 text background color.\n this._parser.registerOscHandler(111, new OscHandler(data => this.restoreBgColor(data)));\n // 112 - Reset text cursor color.\n this._parser.registerOscHandler(112, new OscHandler(data => this.restoreCursorColor(data)));\n // 113 - Reset mouse foreground color.\n // 114 - Reset mouse background color.\n // 115 - Reset Tektronix foreground color.\n // 116 - Reset Tektronix background color.\n // 117 - Reset highlight color.\n // 118 - Reset Tektronix cursor color.\n // 119 - Reset highlight foreground color.\n\n /**\n * ESC handlers\n */\n this._parser.registerEscHandler({ final: '7' }, () => this.saveCursor());\n this._parser.registerEscHandler({ final: '8' }, () => this.restoreCursor());\n this._parser.registerEscHandler({ final: 'D' }, () => this.index());\n this._parser.registerEscHandler({ final: 'E' }, () => this.nextLine());\n this._parser.registerEscHandler({ final: 'H' }, () => this.tabSet());\n this._parser.registerEscHandler({ final: 'M' }, () => this.reverseIndex());\n this._parser.registerEscHandler({ final: '=' }, () => this.keypadApplicationMode());\n this._parser.registerEscHandler({ final: '>' }, () => this.keypadNumericMode());\n this._parser.registerEscHandler({ final: 'c' }, () => this.fullReset());\n this._parser.registerEscHandler({ final: 'n' }, () => this.setgLevel(2));\n this._parser.registerEscHandler({ final: 'o' }, () => this.setgLevel(3));\n this._parser.registerEscHandler({ final: '|' }, () => this.setgLevel(3));\n this._parser.registerEscHandler({ final: '}' }, () => this.setgLevel(2));\n this._parser.registerEscHandler({ final: '~' }, () => this.setgLevel(1));\n this._parser.registerEscHandler({ intermediates: '%', final: '@' }, () => this.selectDefaultCharset());\n this._parser.registerEscHandler({ intermediates: '%', final: 'G' }, () => this.selectDefaultCharset());\n for (const flag in CHARSETS) {\n this._parser.registerEscHandler({ intermediates: '(', final: flag }, () => this.selectCharset('(' + flag));\n this._parser.registerEscHandler({ intermediates: ')', final: flag }, () => this.selectCharset(')' + flag));\n this._parser.registerEscHandler({ intermediates: '*', final: flag }, () => this.selectCharset('*' + flag));\n this._parser.registerEscHandler({ intermediates: '+', final: flag }, () => this.selectCharset('+' + flag));\n this._parser.registerEscHandler({ intermediates: '-', final: flag }, () => this.selectCharset('-' + flag));\n this._parser.registerEscHandler({ intermediates: '.', final: flag }, () => this.selectCharset('.' + flag));\n this._parser.registerEscHandler({ intermediates: '/', final: flag }, () => this.selectCharset('/' + flag)); // TODO: supported?\n }\n this._parser.registerEscHandler({ intermediates: '#', final: '8' }, () => this.screenAlignmentPattern());\n\n /**\n * error handler\n */\n this._parser.setErrorHandler((state: IParsingState) => {\n this._logService.error('Parsing error: ', state);\n return state;\n });\n\n /**\n * DCS handler\n */\n this._parser.registerDcsHandler({ intermediates: '$', final: 'q' }, new DECRQSS(this._bufferService, this._coreService, this._logService, this._optionsService));\n }\n\n public dispose(): void {\n super.dispose();\n }\n\n /**\n * Async parse support.\n */\n private _preserveStack(cursorStartX: number, cursorStartY: number, decodedLength: number, position: number): void {\n this._parseStack.paused = true;\n this._parseStack.cursorStartX = cursorStartX;\n this._parseStack.cursorStartY = cursorStartY;\n this._parseStack.decodedLength = decodedLength;\n this._parseStack.position = position;\n }\n\n private _logSlowResolvingAsync(p: Promise): void {\n // log a limited warning about an async handler taking too long\n if (this._logService.logLevel <= LogLevelEnum.WARN) {\n Promise.race([p, new Promise((res, rej) => setTimeout(() => rej('#SLOW_TIMEOUT'), SLOW_ASYNC_LIMIT))])\n .catch(err => {\n if (err !== '#SLOW_TIMEOUT') {\n throw err;\n }\n console.warn(`async parser handler taking longer than ${SLOW_ASYNC_LIMIT} ms`);\n });\n }\n }\n\n /**\n * Parse call with async handler support.\n *\n * Whether the stack state got preserved for the next call, is indicated by the return value:\n * - undefined (void):\n * all handlers were sync, no stack save, continue normally with next chunk\n * - Promise\\:\n * execution stopped at async handler, stack saved, continue with\n * same chunk and the promise resolve value as `promiseResult` until the method returns `undefined`\n *\n * Note: This method should only be called by `Terminal.write` to ensure correct execution order and\n * proper continuation of async parser handlers.\n */\n public parse(data: string | Uint8Array, promiseResult?: boolean): void | Promise {\n let result: void | Promise;\n let cursorStartX = this._activeBuffer.x;\n let cursorStartY = this._activeBuffer.y;\n let start = 0;\n const wasPaused = this._parseStack.paused;\n\n if (wasPaused) {\n // assumption: _parseBuffer never mutates between async calls\n if (result = this._parser.parse(this._parseBuffer, this._parseStack.decodedLength, promiseResult)) {\n this._logSlowResolvingAsync(result);\n return result;\n }\n cursorStartX = this._parseStack.cursorStartX;\n cursorStartY = this._parseStack.cursorStartY;\n this._parseStack.paused = false;\n if (data.length > MAX_PARSEBUFFER_LENGTH) {\n start = this._parseStack.position + MAX_PARSEBUFFER_LENGTH;\n }\n }\n\n // Log debug data, the log level gate is to prevent extra work in this hot path\n if (this._logService.logLevel <= LogLevelEnum.DEBUG) {\n this._logService.debug(`parsing data${typeof data === 'string' ? ` \"${data}\"` : ` \"${Array.prototype.map.call(data, e => String.fromCharCode(e)).join('')}\"`}`, typeof data === 'string'\n ? data.split('').map(e => e.charCodeAt(0))\n : data\n );\n }\n\n // resize input buffer if needed\n if (this._parseBuffer.length < data.length) {\n if (this._parseBuffer.length < MAX_PARSEBUFFER_LENGTH) {\n this._parseBuffer = new Uint32Array(Math.min(data.length, MAX_PARSEBUFFER_LENGTH));\n }\n }\n\n // Clear the dirty row service so we know which lines changed as a result of parsing\n // Important: do not clear between async calls, otherwise we lost pending update information.\n if (!wasPaused) {\n this._dirtyRowService.clearRange();\n }\n\n // process big data in smaller chunks\n if (data.length > MAX_PARSEBUFFER_LENGTH) {\n for (let i = start; i < data.length; i += MAX_PARSEBUFFER_LENGTH) {\n const end = i + MAX_PARSEBUFFER_LENGTH < data.length ? i + MAX_PARSEBUFFER_LENGTH : data.length;\n const len = (typeof data === 'string')\n ? this._stringDecoder.decode(data.substring(i, end), this._parseBuffer)\n : this._utf8Decoder.decode(data.subarray(i, end), this._parseBuffer);\n if (result = this._parser.parse(this._parseBuffer, len)) {\n this._preserveStack(cursorStartX, cursorStartY, len, i);\n this._logSlowResolvingAsync(result);\n return result;\n }\n }\n } else {\n if (!wasPaused) {\n const len = (typeof data === 'string')\n ? this._stringDecoder.decode(data, this._parseBuffer)\n : this._utf8Decoder.decode(data, this._parseBuffer);\n if (result = this._parser.parse(this._parseBuffer, len)) {\n this._preserveStack(cursorStartX, cursorStartY, len, 0);\n this._logSlowResolvingAsync(result);\n return result;\n }\n }\n }\n\n if (this._activeBuffer.x !== cursorStartX || this._activeBuffer.y !== cursorStartY) {\n this._onCursorMove.fire();\n }\n\n // Refresh any dirty rows accumulated as part of parsing\n this._onRequestRefreshRows.fire(this._dirtyRowService.start, this._dirtyRowService.end);\n }\n\n public print(data: Uint32Array, start: number, end: number): void {\n let code: number;\n let chWidth: number;\n const charset = this._charsetService.charset;\n const screenReaderMode = this._optionsService.rawOptions.screenReaderMode;\n const cols = this._bufferService.cols;\n const wraparoundMode = this._coreService.decPrivateModes.wraparound;\n const insertMode = this._coreService.modes.insertMode;\n const curAttr = this._curAttrData;\n let bufferRow = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!;\n\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n\n // handle wide chars: reset start_cell-1 if we would overwrite the second cell of a wide char\n if (this._activeBuffer.x && end - start > 0 && bufferRow.getWidth(this._activeBuffer.x - 1) === 2) {\n bufferRow.setCellFromCodePoint(this._activeBuffer.x - 1, 0, 1, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n\n for (let pos = start; pos < end; ++pos) {\n code = data[pos];\n\n // calculate print space\n // expensive call, therefore we save width in line buffer\n chWidth = this._unicodeService.wcwidth(code);\n\n // get charset replacement character\n // charset is only defined for ASCII, therefore we only\n // search for an replacement char if code < 127\n if (code < 127 && charset) {\n const ch = charset[String.fromCharCode(code)];\n if (ch) {\n code = ch.charCodeAt(0);\n }\n }\n\n if (screenReaderMode) {\n this._onA11yChar.fire(stringFromCodePoint(code));\n }\n\n // insert combining char at last cursor position\n // this._activeBuffer.x should never be 0 for a combining char\n // since they always follow a cell consuming char\n // therefore we can test for this._activeBuffer.x to avoid overflow left\n if (!chWidth && this._activeBuffer.x) {\n if (!bufferRow.getWidth(this._activeBuffer.x - 1)) {\n // found empty cell after fullwidth, need to go 2 cells back\n // it is save to step 2 cells back here\n // since an empty cell is only set by fullwidth chars\n bufferRow.addCodepointToCell(this._activeBuffer.x - 2, code);\n } else {\n bufferRow.addCodepointToCell(this._activeBuffer.x - 1, code);\n }\n continue;\n }\n\n // goto next line if ch would overflow\n // NOTE: To avoid costly width checks here,\n // the terminal does not allow a cols < 2.\n if (this._activeBuffer.x + chWidth - 1 >= cols) {\n // autowrap - DECAWM\n // automatically wraps to the beginning of the next line\n if (wraparoundMode) {\n // clear left over cells to the right\n while (this._activeBuffer.x < cols) {\n bufferRow.setCellFromCodePoint(this._activeBuffer.x++, 0, 1, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n this._activeBuffer.x = 0;\n this._activeBuffer.y++;\n if (this._activeBuffer.y === this._activeBuffer.scrollBottom + 1) {\n this._activeBuffer.y--;\n this._bufferService.scroll(this._eraseAttrData(), true);\n } else {\n if (this._activeBuffer.y >= this._bufferService.rows) {\n this._activeBuffer.y = this._bufferService.rows - 1;\n }\n // The line already exists (eg. the initial viewport), mark it as a\n // wrapped line\n this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!.isWrapped = true;\n }\n // row changed, get it again\n bufferRow = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!;\n } else {\n this._activeBuffer.x = cols - 1;\n if (chWidth === 2) {\n // FIXME: check for xterm behavior\n // What to do here? We got a wide char that does not fit into last cell\n continue;\n }\n }\n }\n\n // insert mode: move characters to right\n if (insertMode) {\n // right shift cells according to the width\n bufferRow.insertCells(this._activeBuffer.x, chWidth, this._activeBuffer.getNullCell(curAttr), curAttr);\n // test last cell - since the last cell has only room for\n // a halfwidth char any fullwidth shifted there is lost\n // and will be set to empty cell\n if (bufferRow.getWidth(cols - 1) === 2) {\n bufferRow.setCellFromCodePoint(cols - 1, NULL_CELL_CODE, NULL_CELL_WIDTH, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n }\n\n // write current char to buffer and advance cursor\n bufferRow.setCellFromCodePoint(this._activeBuffer.x++, code, chWidth, curAttr.fg, curAttr.bg, curAttr.extended);\n\n // fullwidth char - also set next cell to placeholder stub and advance cursor\n // for graphemes bigger than fullwidth we can simply loop to zero\n // we already made sure above, that this._activeBuffer.x + chWidth will not overflow right\n if (chWidth > 0) {\n while (--chWidth) {\n // other than a regular empty cell a cell following a wide char has no width\n bufferRow.setCellFromCodePoint(this._activeBuffer.x++, 0, 0, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n }\n }\n // store last char in Parser.precedingCodepoint for REP to work correctly\n // This needs to check whether:\n // - fullwidth + surrogates: reset\n // - combining: only base char gets carried on (bug in xterm?)\n if (end - start > 0) {\n bufferRow.loadCell(this._activeBuffer.x - 1, this._workCell);\n if (this._workCell.getWidth() === 2 || this._workCell.getCode() > 0xFFFF) {\n this._parser.precedingCodepoint = 0;\n } else if (this._workCell.isCombined()) {\n this._parser.precedingCodepoint = this._workCell.getChars().charCodeAt(0);\n } else {\n this._parser.precedingCodepoint = this._workCell.content;\n }\n }\n\n // handle wide chars: reset cell to the right if it is second cell of a wide char\n if (this._activeBuffer.x < cols && end - start > 0 && bufferRow.getWidth(this._activeBuffer.x) === 0 && !bufferRow.hasContent(this._activeBuffer.x)) {\n bufferRow.setCellFromCodePoint(this._activeBuffer.x, 0, 1, curAttr.fg, curAttr.bg, curAttr.extended);\n }\n\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n\n /**\n * Forward registerCsiHandler from parser.\n */\n public registerCsiHandler(id: IFunctionIdentifier, callback: (params: IParams) => boolean | Promise): IDisposable {\n if (id.final === 't' && !id.prefix && !id.intermediates) {\n // security: always check whether window option is allowed\n return this._parser.registerCsiHandler(id, params => {\n if (!paramToWindowOption(params.params[0], this._optionsService.rawOptions.windowOptions)) {\n return true;\n }\n return callback(params);\n });\n }\n return this._parser.registerCsiHandler(id, callback);\n }\n\n /**\n * Forward registerDcsHandler from parser.\n */\n public registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise): IDisposable {\n return this._parser.registerDcsHandler(id, new DcsHandler(callback));\n }\n\n /**\n * Forward registerEscHandler from parser.\n */\n public registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise): IDisposable {\n return this._parser.registerEscHandler(id, callback);\n }\n\n /**\n * Forward registerOscHandler from parser.\n */\n public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this._parser.registerOscHandler(ident, new OscHandler(callback));\n }\n\n /**\n * BEL\n * Bell (Ctrl-G).\n *\n * @vt: #Y C0 BEL \"Bell\" \"\\a, \\x07\" \"Ring the bell.\"\n * The behavior of the bell is further customizable with `ITerminalOptions.bellStyle`\n * and `ITerminalOptions.bellSound`.\n */\n public bell(): boolean {\n this._onRequestBell.fire();\n return true;\n }\n\n /**\n * LF\n * Line Feed or New Line (NL). (LF is Ctrl-J).\n *\n * @vt: #Y C0 LF \"Line Feed\" \"\\n, \\x0A\" \"Move the cursor one row down, scrolling if needed.\"\n * Scrolling is restricted to scroll margins and will only happen on the bottom line.\n *\n * @vt: #Y C0 VT \"Vertical Tabulation\" \"\\v, \\x0B\" \"Treated as LF.\"\n * @vt: #Y C0 FF \"Form Feed\" \"\\f, \\x0C\" \"Treated as LF.\"\n */\n public lineFeed(): boolean {\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n if (this._optionsService.rawOptions.convertEol) {\n this._activeBuffer.x = 0;\n }\n this._activeBuffer.y++;\n if (this._activeBuffer.y === this._activeBuffer.scrollBottom + 1) {\n this._activeBuffer.y--;\n this._bufferService.scroll(this._eraseAttrData());\n } else if (this._activeBuffer.y >= this._bufferService.rows) {\n this._activeBuffer.y = this._bufferService.rows - 1;\n }\n // If the end of the line is hit, prevent this action from wrapping around to the next line.\n if (this._activeBuffer.x >= this._bufferService.cols) {\n this._activeBuffer.x--;\n }\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n\n this._onLineFeed.fire();\n return true;\n }\n\n /**\n * CR\n * Carriage Return (Ctrl-M).\n *\n * @vt: #Y C0 CR \"Carriage Return\" \"\\r, \\x0D\" \"Move the cursor to the beginning of the row.\"\n */\n public carriageReturn(): boolean {\n this._activeBuffer.x = 0;\n return true;\n }\n\n /**\n * BS\n * Backspace (Ctrl-H).\n *\n * @vt: #Y C0 BS \"Backspace\" \"\\b, \\x08\" \"Move the cursor one position to the left.\"\n * By default it is not possible to move the cursor past the leftmost position.\n * If `reverse wrap-around` (`CSI ? 45 h`) is set, a previous soft line wrap (DECAWM)\n * can be undone with BS within the scroll margins. In that case the cursor will wrap back\n * to the end of the previous row. Note that it is not possible to peek back into the scrollbuffer\n * with the cursor, thus at the home position (top-leftmost cell) this has no effect.\n */\n public backspace(): boolean {\n // reverse wrap-around is disabled\n if (!this._coreService.decPrivateModes.reverseWraparound) {\n this._restrictCursor();\n if (this._activeBuffer.x > 0) {\n this._activeBuffer.x--;\n }\n return true;\n }\n\n // reverse wrap-around is enabled\n // other than for normal operation mode, reverse wrap-around allows the cursor\n // to be at x=cols to be able to address the last cell of a row by BS\n this._restrictCursor(this._bufferService.cols);\n\n if (this._activeBuffer.x > 0) {\n this._activeBuffer.x--;\n } else {\n /**\n * reverse wrap-around handling:\n * Our implementation deviates from xterm on purpose. Details:\n * - only previous soft NLs can be reversed (isWrapped=true)\n * - only works within scrollborders (top/bottom, left/right not yet supported)\n * - cannot peek into scrollbuffer\n * - any cursor movement sequence keeps working as expected\n */\n if (this._activeBuffer.x === 0\n && this._activeBuffer.y > this._activeBuffer.scrollTop\n && this._activeBuffer.y <= this._activeBuffer.scrollBottom\n && this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)?.isWrapped) {\n this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!.isWrapped = false;\n this._activeBuffer.y--;\n this._activeBuffer.x = this._bufferService.cols - 1;\n // find last taken cell - last cell can have 3 different states:\n // - hasContent(true) + hasWidth(1): narrow char - we are done\n // - hasWidth(0): second part of wide char - we are done\n // - hasContent(false) + hasWidth(1): empty cell due to early wrapping wide char, go one cell further back\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)!;\n if (line.hasWidth(this._activeBuffer.x) && !line.hasContent(this._activeBuffer.x)) {\n this._activeBuffer.x--;\n // We do this only once, since width=1 + hasContent=false currently happens only once before\n // early wrapping of a wide char.\n // This needs to be fixed once we support graphemes taking more than 2 cells.\n }\n }\n }\n this._restrictCursor();\n return true;\n }\n\n /**\n * TAB\n * Horizontal Tab (HT) (Ctrl-I).\n *\n * @vt: #Y C0 HT \"Horizontal Tabulation\" \"\\t, \\x09\" \"Move the cursor to the next character tab stop.\"\n */\n public tab(): boolean {\n if (this._activeBuffer.x >= this._bufferService.cols) {\n return true;\n }\n const originalX = this._activeBuffer.x;\n this._activeBuffer.x = this._activeBuffer.nextStop();\n if (this._optionsService.rawOptions.screenReaderMode) {\n this._onA11yTab.fire(this._activeBuffer.x - originalX);\n }\n return true;\n }\n\n /**\n * SO\n * Shift Out (Ctrl-N) -> Switch to Alternate Character Set. This invokes the\n * G1 character set.\n *\n * @vt: #P[Only limited ISO-2022 charset support.] C0 SO \"Shift Out\" \"\\x0E\" \"Switch to an alternative character set.\"\n */\n public shiftOut(): boolean {\n this._charsetService.setgLevel(1);\n return true;\n }\n\n /**\n * SI\n * Shift In (Ctrl-O) -> Switch to Standard Character Set. This invokes the G0\n * character set (the default).\n *\n * @vt: #Y C0 SI \"Shift In\" \"\\x0F\" \"Return to regular character set after Shift Out.\"\n */\n public shiftIn(): boolean {\n this._charsetService.setgLevel(0);\n return true;\n }\n\n /**\n * Restrict cursor to viewport size / scroll margin (origin mode).\n */\n private _restrictCursor(maxCol: number = this._bufferService.cols - 1): void {\n this._activeBuffer.x = Math.min(maxCol, Math.max(0, this._activeBuffer.x));\n this._activeBuffer.y = this._coreService.decPrivateModes.origin\n ? Math.min(this._activeBuffer.scrollBottom, Math.max(this._activeBuffer.scrollTop, this._activeBuffer.y))\n : Math.min(this._bufferService.rows - 1, Math.max(0, this._activeBuffer.y));\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n\n /**\n * Set absolute cursor position.\n */\n private _setCursor(x: number, y: number): void {\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n if (this._coreService.decPrivateModes.origin) {\n this._activeBuffer.x = x;\n this._activeBuffer.y = this._activeBuffer.scrollTop + y;\n } else {\n this._activeBuffer.x = x;\n this._activeBuffer.y = y;\n }\n this._restrictCursor();\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n\n /**\n * Set relative cursor position.\n */\n private _moveCursor(x: number, y: number): void {\n // for relative changes we have to make sure we are within 0 .. cols/rows - 1\n // before calculating the new position\n this._restrictCursor();\n this._setCursor(this._activeBuffer.x + x, this._activeBuffer.y + y);\n }\n\n /**\n * CSI Ps A\n * Cursor Up Ps Times (default = 1) (CUU).\n *\n * @vt: #Y CSI CUU \"Cursor Up\" \"CSI Ps A\" \"Move cursor `Ps` times up (default=1).\"\n * If the cursor would pass the top scroll margin, it will stop there.\n */\n public cursorUp(params: IParams): boolean {\n // stop at scrollTop\n const diffToTop = this._activeBuffer.y - this._activeBuffer.scrollTop;\n if (diffToTop >= 0) {\n this._moveCursor(0, -Math.min(diffToTop, params.params[0] || 1));\n } else {\n this._moveCursor(0, -(params.params[0] || 1));\n }\n return true;\n }\n\n /**\n * CSI Ps B\n * Cursor Down Ps Times (default = 1) (CUD).\n *\n * @vt: #Y CSI CUD \"Cursor Down\" \"CSI Ps B\" \"Move cursor `Ps` times down (default=1).\"\n * If the cursor would pass the bottom scroll margin, it will stop there.\n */\n public cursorDown(params: IParams): boolean {\n // stop at scrollBottom\n const diffToBottom = this._activeBuffer.scrollBottom - this._activeBuffer.y;\n if (diffToBottom >= 0) {\n this._moveCursor(0, Math.min(diffToBottom, params.params[0] || 1));\n } else {\n this._moveCursor(0, params.params[0] || 1);\n }\n return true;\n }\n\n /**\n * CSI Ps C\n * Cursor Forward Ps Times (default = 1) (CUF).\n *\n * @vt: #Y CSI CUF \"Cursor Forward\" \"CSI Ps C\" \"Move cursor `Ps` times forward (default=1).\"\n */\n public cursorForward(params: IParams): boolean {\n this._moveCursor(params.params[0] || 1, 0);\n return true;\n }\n\n /**\n * CSI Ps D\n * Cursor Backward Ps Times (default = 1) (CUB).\n *\n * @vt: #Y CSI CUB \"Cursor Backward\" \"CSI Ps D\" \"Move cursor `Ps` times backward (default=1).\"\n */\n public cursorBackward(params: IParams): boolean {\n this._moveCursor(-(params.params[0] || 1), 0);\n return true;\n }\n\n /**\n * CSI Ps E\n * Cursor Next Line Ps Times (default = 1) (CNL).\n * Other than cursorDown (CUD) also set the cursor to first column.\n *\n * @vt: #Y CSI CNL \"Cursor Next Line\" \"CSI Ps E\" \"Move cursor `Ps` times down (default=1) and to the first column.\"\n * Same as CUD, additionally places the cursor at the first column.\n */\n public cursorNextLine(params: IParams): boolean {\n this.cursorDown(params);\n this._activeBuffer.x = 0;\n return true;\n }\n\n /**\n * CSI Ps F\n * Cursor Previous Line Ps Times (default = 1) (CPL).\n * Other than cursorUp (CUU) also set the cursor to first column.\n *\n * @vt: #Y CSI CPL \"Cursor Backward\" \"CSI Ps F\" \"Move cursor `Ps` times up (default=1) and to the first column.\"\n * Same as CUU, additionally places the cursor at the first column.\n */\n public cursorPrecedingLine(params: IParams): boolean {\n this.cursorUp(params);\n this._activeBuffer.x = 0;\n return true;\n }\n\n /**\n * CSI Ps G\n * Cursor Character Absolute [column] (default = [row,1]) (CHA).\n *\n * @vt: #Y CSI CHA \"Cursor Horizontal Absolute\" \"CSI Ps G\" \"Move cursor to `Ps`-th column of the active row (default=1).\"\n */\n public cursorCharAbsolute(params: IParams): boolean {\n this._setCursor((params.params[0] || 1) - 1, this._activeBuffer.y);\n return true;\n }\n\n /**\n * CSI Ps ; Ps H\n * Cursor Position [row;column] (default = [1,1]) (CUP).\n *\n * @vt: #Y CSI CUP \"Cursor Position\" \"CSI Ps ; Ps H\" \"Set cursor to position [`Ps`, `Ps`] (default = [1, 1]).\"\n * If ORIGIN mode is set, places the cursor to the absolute position within the scroll margins.\n * If ORIGIN mode is not set, places the cursor to the absolute position within the viewport.\n * Note that the coordinates are 1-based, thus the top left position starts at `1 ; 1`.\n */\n public cursorPosition(params: IParams): boolean {\n this._setCursor(\n // col\n (params.length >= 2) ? (params.params[1] || 1) - 1 : 0,\n // row\n (params.params[0] || 1) - 1\n );\n return true;\n }\n\n /**\n * CSI Pm ` Character Position Absolute\n * [column] (default = [row,1]) (HPA).\n * Currently same functionality as CHA.\n *\n * @vt: #Y CSI HPA \"Horizontal Position Absolute\" \"CSI Ps ` \" \"Same as CHA.\"\n */\n public charPosAbsolute(params: IParams): boolean {\n this._setCursor((params.params[0] || 1) - 1, this._activeBuffer.y);\n return true;\n }\n\n /**\n * CSI Pm a Character Position Relative\n * [columns] (default = [row,col+1]) (HPR)\n *\n * @vt: #Y CSI HPR \"Horizontal Position Relative\" \"CSI Ps a\" \"Same as CUF.\"\n */\n public hPositionRelative(params: IParams): boolean {\n this._moveCursor(params.params[0] || 1, 0);\n return true;\n }\n\n /**\n * CSI Pm d Vertical Position Absolute (VPA)\n * [row] (default = [1,column])\n *\n * @vt: #Y CSI VPA \"Vertical Position Absolute\" \"CSI Ps d\" \"Move cursor to `Ps`-th row (default=1).\"\n */\n public linePosAbsolute(params: IParams): boolean {\n this._setCursor(this._activeBuffer.x, (params.params[0] || 1) - 1);\n return true;\n }\n\n /**\n * CSI Pm e Vertical Position Relative (VPR)\n * [rows] (default = [row+1,column])\n * reuse CSI Ps B ?\n *\n * @vt: #Y CSI VPR \"Vertical Position Relative\" \"CSI Ps e\" \"Move cursor `Ps` times down (default=1).\"\n */\n public vPositionRelative(params: IParams): boolean {\n this._moveCursor(0, params.params[0] || 1);\n return true;\n }\n\n /**\n * CSI Ps ; Ps f\n * Horizontal and Vertical Position [row;column] (default =\n * [1,1]) (HVP).\n * Same as CUP.\n *\n * @vt: #Y CSI HVP \"Horizontal and Vertical Position\" \"CSI Ps ; Ps f\" \"Same as CUP.\"\n */\n public hVPosition(params: IParams): boolean {\n this.cursorPosition(params);\n return true;\n }\n\n /**\n * CSI Ps g Tab Clear (TBC).\n * Ps = 0 -> Clear Current Column (default).\n * Ps = 3 -> Clear All.\n * Potentially:\n * Ps = 2 -> Clear Stops on Line.\n * http://vt100.net/annarbor/aaa-ug/section6.html\n *\n * @vt: #Y CSI TBC \"Tab Clear\" \"CSI Ps g\" \"Clear tab stops at current position (0) or all (3) (default=0).\"\n * Clearing tabstops off the active row (Ps = 2, VT100) is currently not supported.\n */\n public tabClear(params: IParams): boolean {\n const param = params.params[0];\n if (param === 0) {\n delete this._activeBuffer.tabs[this._activeBuffer.x];\n } else if (param === 3) {\n this._activeBuffer.tabs = {};\n }\n return true;\n }\n\n /**\n * CSI Ps I\n * Cursor Forward Tabulation Ps tab stops (default = 1) (CHT).\n *\n * @vt: #Y CSI CHT \"Cursor Horizontal Tabulation\" \"CSI Ps I\" \"Move cursor `Ps` times tabs forward (default=1).\"\n */\n public cursorForwardTab(params: IParams): boolean {\n if (this._activeBuffer.x >= this._bufferService.cols) {\n return true;\n }\n let param = params.params[0] || 1;\n while (param--) {\n this._activeBuffer.x = this._activeBuffer.nextStop();\n }\n return true;\n }\n\n /**\n * CSI Ps Z Cursor Backward Tabulation Ps tab stops (default = 1) (CBT).\n *\n * @vt: #Y CSI CBT \"Cursor Backward Tabulation\" \"CSI Ps Z\" \"Move cursor `Ps` tabs backward (default=1).\"\n */\n public cursorBackwardTab(params: IParams): boolean {\n if (this._activeBuffer.x >= this._bufferService.cols) {\n return true;\n }\n let param = params.params[0] || 1;\n\n while (param--) {\n this._activeBuffer.x = this._activeBuffer.prevStop();\n }\n return true;\n }\n\n\n /**\n * Helper method to erase cells in a terminal row.\n * The cell gets replaced with the eraseChar of the terminal.\n * @param y row index\n * @param start first cell index to be erased\n * @param end end - 1 is last erased cell\n * @param cleanWrap clear the isWrapped flag\n */\n private _eraseInBufferLine(y: number, start: number, end: number, clearWrap: boolean = false): void {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.replaceCells(\n start,\n end,\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n if (clearWrap) {\n line.isWrapped = false;\n }\n }\n\n /**\n * Helper method to reset cells in a terminal row.\n * The cell gets replaced with the eraseChar of the terminal and the isWrapped property is set to false.\n * @param y row index\n */\n private _resetBufferLine(y: number): void {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.fill(this._activeBuffer.getNullCell(this._eraseAttrData()));\n this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase + y);\n line.isWrapped = false;\n }\n\n /**\n * CSI Ps J Erase in Display (ED).\n * Ps = 0 -> Erase Below (default).\n * Ps = 1 -> Erase Above.\n * Ps = 2 -> Erase All.\n * Ps = 3 -> Erase Saved Lines (xterm).\n * CSI ? Ps J\n * Erase in Display (DECSED).\n * Ps = 0 -> Selective Erase Below (default).\n * Ps = 1 -> Selective Erase Above.\n * Ps = 2 -> Selective Erase All.\n *\n * @vt: #Y CSI ED \"Erase In Display\" \"CSI Ps J\" \"Erase various parts of the viewport.\"\n * Supported param values:\n *\n * | Ps | Effect |\n * | -- | ------------------------------------------------------------ |\n * | 0 | Erase from the cursor through the end of the viewport. |\n * | 1 | Erase from the beginning of the viewport through the cursor. |\n * | 2 | Erase complete viewport. |\n * | 3 | Erase scrollback. |\n *\n * @vt: #P[Protection attributes are not supported.] CSI DECSED \"Selective Erase In Display\" \"CSI ? Ps J\" \"Currently the same as ED.\"\n */\n public eraseInDisplay(params: IParams): boolean {\n this._restrictCursor(this._bufferService.cols);\n let j;\n switch (params.params[0]) {\n case 0:\n j = this._activeBuffer.y;\n this._dirtyRowService.markDirty(j);\n this._eraseInBufferLine(j++, this._activeBuffer.x, this._bufferService.cols, this._activeBuffer.x === 0);\n for (; j < this._bufferService.rows; j++) {\n this._resetBufferLine(j);\n }\n this._dirtyRowService.markDirty(j);\n break;\n case 1:\n j = this._activeBuffer.y;\n this._dirtyRowService.markDirty(j);\n // Deleted front part of line and everything before. This line will no longer be wrapped.\n this._eraseInBufferLine(j, 0, this._activeBuffer.x + 1, true);\n if (this._activeBuffer.x + 1 >= this._bufferService.cols) {\n // Deleted entire previous line. This next line can no longer be wrapped.\n this._activeBuffer.lines.get(j + 1)!.isWrapped = false;\n }\n while (j--) {\n this._resetBufferLine(j);\n }\n this._dirtyRowService.markDirty(0);\n break;\n case 2:\n j = this._bufferService.rows;\n this._dirtyRowService.markDirty(j - 1);\n while (j--) {\n this._resetBufferLine(j);\n }\n this._dirtyRowService.markDirty(0);\n break;\n case 3:\n // Clear scrollback (everything not in viewport)\n const scrollBackSize = this._activeBuffer.lines.length - this._bufferService.rows;\n if (scrollBackSize > 0) {\n this._activeBuffer.lines.trimStart(scrollBackSize);\n this._activeBuffer.ybase = Math.max(this._activeBuffer.ybase - scrollBackSize, 0);\n this._activeBuffer.ydisp = Math.max(this._activeBuffer.ydisp - scrollBackSize, 0);\n // Force a scroll event to refresh viewport\n this._onScroll.fire(0);\n }\n break;\n }\n return true;\n }\n\n /**\n * CSI Ps K Erase in Line (EL).\n * Ps = 0 -> Erase to Right (default).\n * Ps = 1 -> Erase to Left.\n * Ps = 2 -> Erase All.\n * CSI ? Ps K\n * Erase in Line (DECSEL).\n * Ps = 0 -> Selective Erase to Right (default).\n * Ps = 1 -> Selective Erase to Left.\n * Ps = 2 -> Selective Erase All.\n *\n * @vt: #Y CSI EL \"Erase In Line\" \"CSI Ps K\" \"Erase various parts of the active row.\"\n * Supported param values:\n *\n * | Ps | Effect |\n * | -- | -------------------------------------------------------- |\n * | 0 | Erase from the cursor through the end of the row. |\n * | 1 | Erase from the beginning of the line through the cursor. |\n * | 2 | Erase complete line. |\n *\n * @vt: #P[Protection attributes are not supported.] CSI DECSEL \"Selective Erase In Line\" \"CSI ? Ps K\" \"Currently the same as EL.\"\n */\n public eraseInLine(params: IParams): boolean {\n this._restrictCursor(this._bufferService.cols);\n switch (params.params[0]) {\n case 0:\n this._eraseInBufferLine(this._activeBuffer.y, this._activeBuffer.x, this._bufferService.cols, this._activeBuffer.x === 0);\n break;\n case 1:\n this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, false);\n break;\n case 2:\n this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, true);\n break;\n }\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n return true;\n }\n\n /**\n * CSI Ps L\n * Insert Ps Line(s) (default = 1) (IL).\n *\n * @vt: #Y CSI IL \"Insert Line\" \"CSI Ps L\" \"Insert `Ps` blank lines at active row (default=1).\"\n * For every inserted line at the scroll top one line at the scroll bottom gets removed.\n * The cursor is set to the first column.\n * IL has no effect if the cursor is outside the scroll margins.\n */\n public insertLines(params: IParams): boolean {\n this._restrictCursor();\n let param = params.params[0] || 1;\n\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n\n const row: number = this._activeBuffer.ybase + this._activeBuffer.y;\n\n const scrollBottomRowsOffset = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom;\n const scrollBottomAbsolute = this._bufferService.rows - 1 + this._activeBuffer.ybase - scrollBottomRowsOffset + 1;\n while (param--) {\n // test: echo -e '\\e[44m\\e[1L\\e[0m'\n // blankLine(true) - xterm/linux behavior\n this._activeBuffer.lines.splice(scrollBottomAbsolute - 1, 1);\n this._activeBuffer.lines.splice(row, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n }\n\n this._dirtyRowService.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom);\n this._activeBuffer.x = 0; // see https://vt100.net/docs/vt220-rm/chapter4.html - vt220 only?\n return true;\n }\n\n /**\n * CSI Ps M\n * Delete Ps Line(s) (default = 1) (DL).\n *\n * @vt: #Y CSI DL \"Delete Line\" \"CSI Ps M\" \"Delete `Ps` lines at active row (default=1).\"\n * For every deleted line at the scroll top one blank line at the scroll bottom gets appended.\n * The cursor is set to the first column.\n * DL has no effect if the cursor is outside the scroll margins.\n */\n public deleteLines(params: IParams): boolean {\n this._restrictCursor();\n let param = params.params[0] || 1;\n\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n\n const row: number = this._activeBuffer.ybase + this._activeBuffer.y;\n\n let j: number;\n j = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom;\n j = this._bufferService.rows - 1 + this._activeBuffer.ybase - j;\n while (param--) {\n // test: echo -e '\\e[44m\\e[1M\\e[0m'\n // blankLine(true) - xterm/linux behavior\n this._activeBuffer.lines.splice(row, 1);\n this._activeBuffer.lines.splice(j, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n }\n\n this._dirtyRowService.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom);\n this._activeBuffer.x = 0; // see https://vt100.net/docs/vt220-rm/chapter4.html - vt220 only?\n return true;\n }\n\n /**\n * CSI Ps @\n * Insert Ps (Blank) Character(s) (default = 1) (ICH).\n *\n * @vt: #Y CSI ICH \"Insert Characters\" \"CSI Ps @\" \"Insert `Ps` (blank) characters (default = 1).\"\n * The ICH sequence inserts `Ps` blank characters. The cursor remains at the beginning of the blank characters.\n * Text between the cursor and right margin moves to the right. Characters moved past the right margin are lost.\n *\n *\n * FIXME: check against xterm - should not work outside of scroll margins (see VT520 manual)\n */\n public insertChars(params: IParams): boolean {\n this._restrictCursor();\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (line) {\n line.insertCells(\n this._activeBuffer.x,\n params.params[0] || 1,\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n return true;\n }\n\n /**\n * CSI Ps P\n * Delete Ps Character(s) (default = 1) (DCH).\n *\n * @vt: #Y CSI DCH \"Delete Character\" \"CSI Ps P\" \"Delete `Ps` characters (default=1).\"\n * As characters are deleted, the remaining characters between the cursor and right margin move to the left.\n * Character attributes move with the characters. The terminal adds blank characters at the right margin.\n *\n *\n * FIXME: check against xterm - should not work outside of scroll margins (see VT520 manual)\n */\n public deleteChars(params: IParams): boolean {\n this._restrictCursor();\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (line) {\n line.deleteCells(\n this._activeBuffer.x,\n params.params[0] || 1,\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n return true;\n }\n\n /**\n * CSI Ps S Scroll up Ps lines (default = 1) (SU).\n *\n * @vt: #Y CSI SU \"Scroll Up\" \"CSI Ps S\" \"Scroll `Ps` lines up (default=1).\"\n *\n *\n * FIXME: scrolled out lines at top = 1 should add to scrollback (xterm)\n */\n public scrollUp(params: IParams): boolean {\n let param = params.params[0] || 1;\n\n while (param--) {\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 1);\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps T Scroll down Ps lines (default = 1) (SD).\n *\n * @vt: #Y CSI SD \"Scroll Down\" \"CSI Ps T\" \"Scroll `Ps` lines down (default=1).\"\n */\n public scrollDown(params: IParams): boolean {\n let param = params.params[0] || 1;\n\n while (param--) {\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 1);\n this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 0, this._activeBuffer.getBlankLine(DEFAULT_ATTR_DATA));\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps SP @ Scroll left Ps columns (default = 1) (SL) ECMA-48\n *\n * Notation: (Pn)\n * Representation: CSI Pn 02/00 04/00\n * Parameter default value: Pn = 1\n * SL causes the data in the presentation component to be moved by n character positions\n * if the line orientation is horizontal, or by n line positions if the line orientation\n * is vertical, such that the data appear to move to the left; where n equals the value of Pn.\n * The active presentation position is not affected by this control function.\n *\n * Supported:\n * - always left shift (no line orientation setting respected)\n *\n * @vt: #Y CSI SL \"Scroll Left\" \"CSI Ps SP @\" \"Scroll viewport `Ps` times to the left.\"\n * SL moves the content of all lines within the scroll margins `Ps` times to the left.\n * SL has no effect outside of the scroll margins.\n */\n public scrollLeft(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.deleteCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps SP A Scroll right Ps columns (default = 1) (SR) ECMA-48\n *\n * Notation: (Pn)\n * Representation: CSI Pn 02/00 04/01\n * Parameter default value: Pn = 1\n * SR causes the data in the presentation component to be moved by n character positions\n * if the line orientation is horizontal, or by n line positions if the line orientation\n * is vertical, such that the data appear to move to the right; where n equals the value of Pn.\n * The active presentation position is not affected by this control function.\n *\n * Supported:\n * - always right shift (no line orientation setting respected)\n *\n * @vt: #Y CSI SR \"Scroll Right\" \"CSI Ps SP A\" \"Scroll viewport `Ps` times to the right.\"\n * SL moves the content of all lines within the scroll margins `Ps` times to the right.\n * Content at the right margin is lost.\n * SL has no effect outside of the scroll margins.\n */\n public scrollRight(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.insertCells(0, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Pm ' }\n * Insert Ps Column(s) (default = 1) (DECIC), VT420 and up.\n *\n * @vt: #Y CSI DECIC \"Insert Columns\" \"CSI Ps ' }\" \"Insert `Ps` columns at cursor position.\"\n * DECIC inserts `Ps` times blank columns at the cursor position for all lines with the scroll margins,\n * moving content to the right. Content at the right margin is lost.\n * DECIC has no effect outside the scrolling margins.\n */\n public insertColumns(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.insertCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Pm ' ~\n * Delete Ps Column(s) (default = 1) (DECDC), VT420 and up.\n *\n * @vt: #Y CSI DECDC \"Delete Columns\" \"CSI Ps ' ~\" \"Delete `Ps` columns at cursor position.\"\n * DECDC deletes `Ps` times columns at the cursor position for all lines with the scroll margins,\n * moving content to the left. Blank columns are added at the right margin.\n * DECDC has no effect outside the scrolling margins.\n */\n public deleteColumns(params: IParams): boolean {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) {\n return true;\n }\n const param = params.params[0] || 1;\n for (let y = this._activeBuffer.scrollTop; y <= this._activeBuffer.scrollBottom; ++y) {\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + y)!;\n line.deleteCells(this._activeBuffer.x, param, this._activeBuffer.getNullCell(this._eraseAttrData()), this._eraseAttrData());\n line.isWrapped = false;\n }\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n return true;\n }\n\n /**\n * CSI Ps X\n * Erase Ps Character(s) (default = 1) (ECH).\n *\n * @vt: #Y CSI ECH \"Erase Character\" \"CSI Ps X\" \"Erase `Ps` characters from current cursor position to the right (default=1).\"\n * ED erases `Ps` characters from current cursor position to the right.\n * ED works inside or outside the scrolling margins.\n */\n public eraseChars(params: IParams): boolean {\n this._restrictCursor();\n const line = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (line) {\n line.replaceCells(\n this._activeBuffer.x,\n this._activeBuffer.x + (params.params[0] || 1),\n this._activeBuffer.getNullCell(this._eraseAttrData()),\n this._eraseAttrData()\n );\n this._dirtyRowService.markDirty(this._activeBuffer.y);\n }\n return true;\n }\n\n /**\n * CSI Ps b Repeat the preceding graphic character Ps times (REP).\n * From ECMA 48 (@see http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf)\n * Notation: (Pn)\n * Representation: CSI Pn 06/02\n * Parameter default value: Pn = 1\n * REP is used to indicate that the preceding character in the data stream,\n * if it is a graphic character (represented by one or more bit combinations) including SPACE,\n * is to be repeated n times, where n equals the value of Pn.\n * If the character preceding REP is a control function or part of a control function,\n * the effect of REP is not defined by this Standard.\n *\n * Since we propagate the terminal as xterm-256color we have to follow xterm's behavior:\n * - fullwidth + surrogate chars are ignored\n * - for combining chars only the base char gets repeated\n * - text attrs are applied normally\n * - wrap around is respected\n * - any valid sequence resets the carried forward char\n *\n * Note: To get reset on a valid sequence working correctly without much runtime penalty,\n * the preceding codepoint is stored on the parser in `this.print` and reset during `parser.parse`.\n *\n * @vt: #Y CSI REP \"Repeat Preceding Character\" \"CSI Ps b\" \"Repeat preceding character `Ps` times (default=1).\"\n * REP repeats the previous character `Ps` times advancing the cursor, also wrapping if DECAWM is set.\n * REP has no effect if the sequence does not follow a printable ASCII character\n * (NOOP for any other sequence in between or NON ASCII characters).\n */\n public repeatPrecedingCharacter(params: IParams): boolean {\n if (!this._parser.precedingCodepoint) {\n return true;\n }\n // call print to insert the chars and handle correct wrapping\n const length = params.params[0] || 1;\n const data = new Uint32Array(length);\n for (let i = 0; i < length; ++i) {\n data[i] = this._parser.precedingCodepoint;\n }\n this.print(data, 0, data.length);\n return true;\n }\n\n /**\n * CSI Ps c Send Device Attributes (Primary DA).\n * Ps = 0 or omitted -> request attributes from terminal. The\n * response depends on the decTerminalID resource setting.\n * -> CSI ? 1 ; 2 c (``VT100 with Advanced Video Option'')\n * -> CSI ? 1 ; 0 c (``VT101 with No Options'')\n * -> CSI ? 6 c (``VT102'')\n * -> CSI ? 6 0 ; 1 ; 2 ; 6 ; 8 ; 9 ; 1 5 ; c (``VT220'')\n * The VT100-style response parameters do not mean anything by\n * themselves. VT220 parameters do, telling the host what fea-\n * tures the terminal supports:\n * Ps = 1 -> 132-columns.\n * Ps = 2 -> Printer.\n * Ps = 6 -> Selective erase.\n * Ps = 8 -> User-defined keys.\n * Ps = 9 -> National replacement character sets.\n * Ps = 1 5 -> Technical characters.\n * Ps = 2 2 -> ANSI color, e.g., VT525.\n * Ps = 2 9 -> ANSI text locator (i.e., DEC Locator mode).\n *\n * @vt: #Y CSI DA1 \"Primary Device Attributes\" \"CSI c\" \"Send primary device attributes.\"\n *\n *\n * TODO: fix and cleanup response\n */\n public sendDeviceAttributesPrimary(params: IParams): boolean {\n if (params.params[0] > 0) {\n return true;\n }\n if (this._is('xterm') || this._is('rxvt-unicode') || this._is('screen')) {\n this._coreService.triggerDataEvent(C0.ESC + '[?1;2c');\n } else if (this._is('linux')) {\n this._coreService.triggerDataEvent(C0.ESC + '[?6c');\n }\n return true;\n }\n\n /**\n * CSI > Ps c\n * Send Device Attributes (Secondary DA).\n * Ps = 0 or omitted -> request the terminal's identification\n * code. The response depends on the decTerminalID resource set-\n * ting. It should apply only to VT220 and up, but xterm extends\n * this to VT100.\n * -> CSI > Pp ; Pv ; Pc c\n * where Pp denotes the terminal type\n * Pp = 0 -> ``VT100''.\n * Pp = 1 -> ``VT220''.\n * and Pv is the firmware version (for xterm, this was originally\n * the XFree86 patch number, starting with 95). In a DEC termi-\n * nal, Pc indicates the ROM cartridge registration number and is\n * always zero.\n * More information:\n * xterm/charproc.c - line 2012, for more information.\n * vim responds with ^[[?0c or ^[[?1c after the terminal's response (?)\n *\n * @vt: #Y CSI DA2 \"Secondary Device Attributes\" \"CSI > c\" \"Send primary device attributes.\"\n *\n *\n * TODO: fix and cleanup response\n */\n public sendDeviceAttributesSecondary(params: IParams): boolean {\n if (params.params[0] > 0) {\n return true;\n }\n // xterm and urxvt\n // seem to spit this\n // out around ~370 times (?).\n if (this._is('xterm')) {\n this._coreService.triggerDataEvent(C0.ESC + '[>0;276;0c');\n } else if (this._is('rxvt-unicode')) {\n this._coreService.triggerDataEvent(C0.ESC + '[>85;95;0c');\n } else if (this._is('linux')) {\n // not supported by linux console.\n // linux console echoes parameters.\n this._coreService.triggerDataEvent(params.params[0] + 'c');\n } else if (this._is('screen')) {\n this._coreService.triggerDataEvent(C0.ESC + '[>83;40003;0c');\n }\n return true;\n }\n\n /**\n * Evaluate if the current terminal is the given argument.\n * @param term The terminal name to evaluate\n */\n private _is(term: string): boolean {\n return (this._optionsService.rawOptions.termName + '').indexOf(term) === 0;\n }\n\n /**\n * CSI Pm h Set Mode (SM).\n * Ps = 2 -> Keyboard Action Mode (AM).\n * Ps = 4 -> Insert Mode (IRM).\n * Ps = 1 2 -> Send/receive (SRM).\n * Ps = 2 0 -> Automatic Newline (LNM).\n *\n * @vt: #P[Only IRM is supported.] CSI SM \"Set Mode\" \"CSI Pm h\" \"Set various terminal modes.\"\n * Supported param values by SM:\n *\n * | Param | Action | Support |\n * | ----- | -------------------------------------- | ------- |\n * | 2 | Keyboard Action Mode (KAM). Always on. | #N |\n * | 4 | Insert Mode (IRM). | #Y |\n * | 12 | Send/receive (SRM). Always off. | #N |\n * | 20 | Automatic Newline (LNM). Always off. | #N |\n */\n public setMode(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 4:\n this._coreService.modes.insertMode = true;\n break;\n case 20:\n // this._t.convertEol = true;\n break;\n }\n }\n return true;\n }\n\n /**\n * CSI ? Pm h\n * DEC Private Mode Set (DECSET).\n * Ps = 1 -> Application Cursor Keys (DECCKM).\n * Ps = 2 -> Designate USASCII for character sets G0-G3\n * (DECANM), and set VT100 mode.\n * Ps = 3 -> 132 Column Mode (DECCOLM).\n * Ps = 4 -> Smooth (Slow) Scroll (DECSCLM).\n * Ps = 5 -> Reverse Video (DECSCNM).\n * Ps = 6 -> Origin Mode (DECOM).\n * Ps = 7 -> Wraparound Mode (DECAWM).\n * Ps = 8 -> Auto-repeat Keys (DECARM).\n * Ps = 9 -> Send Mouse X & Y on button press. See the sec-\n * tion Mouse Tracking.\n * Ps = 1 0 -> Show toolbar (rxvt).\n * Ps = 1 2 -> Start Blinking Cursor (att610).\n * Ps = 1 8 -> Print form feed (DECPFF).\n * Ps = 1 9 -> Set print extent to full screen (DECPEX).\n * Ps = 2 5 -> Show Cursor (DECTCEM).\n * Ps = 3 0 -> Show scrollbar (rxvt).\n * Ps = 3 5 -> Enable font-shifting functions (rxvt).\n * Ps = 3 8 -> Enter Tektronix Mode (DECTEK).\n * Ps = 4 0 -> Allow 80 -> 132 Mode.\n * Ps = 4 1 -> more(1) fix (see curses resource).\n * Ps = 4 2 -> Enable Nation Replacement Character sets (DECN-\n * RCM).\n * Ps = 4 4 -> Turn On Margin Bell.\n * Ps = 4 5 -> Reverse-wraparound Mode.\n * Ps = 4 6 -> Start Logging. This is normally disabled by a\n * compile-time option.\n * Ps = 4 7 -> Use Alternate Screen Buffer. (This may be dis-\n * abled by the titeInhibit resource).\n * Ps = 6 6 -> Application keypad (DECNKM).\n * Ps = 6 7 -> Backarrow key sends backspace (DECBKM).\n * Ps = 1 0 0 0 -> Send Mouse X & Y on button press and\n * release. See the section Mouse Tracking.\n * Ps = 1 0 0 1 -> Use Hilite Mouse Tracking.\n * Ps = 1 0 0 2 -> Use Cell Motion Mouse Tracking.\n * Ps = 1 0 0 3 -> Use All Motion Mouse Tracking.\n * Ps = 1 0 0 4 -> Send FocusIn/FocusOut events.\n * Ps = 1 0 0 5 -> Enable Extended Mouse Mode.\n * Ps = 1 0 1 0 -> Scroll to bottom on tty output (rxvt).\n * Ps = 1 0 1 1 -> Scroll to bottom on key press (rxvt).\n * Ps = 1 0 3 4 -> Interpret \"meta\" key, sets eighth bit.\n * (enables the eightBitInput resource).\n * Ps = 1 0 3 5 -> Enable special modifiers for Alt and Num-\n * Lock keys. (This enables the numLock resource).\n * Ps = 1 0 3 6 -> Send ESC when Meta modifies a key. (This\n * enables the metaSendsEscape resource).\n * Ps = 1 0 3 7 -> Send DEL from the editing-keypad Delete\n * key.\n * Ps = 1 0 3 9 -> Send ESC when Alt modifies a key. (This\n * enables the altSendsEscape resource).\n * Ps = 1 0 4 0 -> Keep selection even if not highlighted.\n * (This enables the keepSelection resource).\n * Ps = 1 0 4 1 -> Use the CLIPBOARD selection. (This enables\n * the selectToClipboard resource).\n * Ps = 1 0 4 2 -> Enable Urgency window manager hint when\n * Control-G is received. (This enables the bellIsUrgent\n * resource).\n * Ps = 1 0 4 3 -> Enable raising of the window when Control-G\n * is received. (enables the popOnBell resource).\n * Ps = 1 0 4 7 -> Use Alternate Screen Buffer. (This may be\n * disabled by the titeInhibit resource).\n * Ps = 1 0 4 8 -> Save cursor as in DECSC. (This may be dis-\n * abled by the titeInhibit resource).\n * Ps = 1 0 4 9 -> Save cursor as in DECSC and use Alternate\n * Screen Buffer, clearing it first. (This may be disabled by\n * the titeInhibit resource). This combines the effects of the 1\n * 0 4 7 and 1 0 4 8 modes. Use this with terminfo-based\n * applications rather than the 4 7 mode.\n * Ps = 1 0 5 0 -> Set terminfo/termcap function-key mode.\n * Ps = 1 0 5 1 -> Set Sun function-key mode.\n * Ps = 1 0 5 2 -> Set HP function-key mode.\n * Ps = 1 0 5 3 -> Set SCO function-key mode.\n * Ps = 1 0 6 0 -> Set legacy keyboard emulation (X11R6).\n * Ps = 1 0 6 1 -> Set VT220 keyboard emulation.\n * Ps = 2 0 0 4 -> Set bracketed paste mode.\n * Modes:\n * http: *vt100.net/docs/vt220-rm/chapter4.html\n *\n * @vt: #P[See below for supported modes.] CSI DECSET \"DEC Private Set Mode\" \"CSI ? Pm h\" \"Set various terminal attributes.\"\n * Supported param values by DECSET:\n *\n * | param | Action | Support |\n * | ----- | ------------------------------------------------------- | --------|\n * | 1 | Application Cursor Keys (DECCKM). | #Y |\n * | 2 | Designate US-ASCII for character sets G0-G3 (DECANM). | #Y |\n * | 3 | 132 Column Mode (DECCOLM). | #Y |\n * | 6 | Origin Mode (DECOM). | #Y |\n * | 7 | Auto-wrap Mode (DECAWM). | #Y |\n * | 8 | Auto-repeat Keys (DECARM). Always on. | #N |\n * | 9 | X10 xterm mouse protocol. | #Y |\n * | 12 | Start Blinking Cursor. | #Y |\n * | 25 | Show Cursor (DECTCEM). | #Y |\n * | 45 | Reverse wrap-around. | #Y |\n * | 47 | Use Alternate Screen Buffer. | #Y |\n * | 66 | Application keypad (DECNKM). | #Y |\n * | 1000 | X11 xterm mouse protocol. | #Y |\n * | 1002 | Use Cell Motion Mouse Tracking. | #Y |\n * | 1003 | Use All Motion Mouse Tracking. | #Y |\n * | 1004 | Send FocusIn/FocusOut events | #Y |\n * | 1005 | Enable UTF-8 Mouse Mode. | #N |\n * | 1006 | Enable SGR Mouse Mode. | #Y |\n * | 1015 | Enable urxvt Mouse Mode. | #N |\n * | 1047 | Use Alternate Screen Buffer. | #Y |\n * | 1048 | Save cursor as in DECSC. | #Y |\n * | 1049 | Save cursor and switch to alternate buffer clearing it. | #P[Does not clear the alternate buffer.] |\n * | 2004 | Set bracketed paste mode. | #Y |\n *\n *\n * FIXME: implement DECSCNM, 1049 should clear altbuffer\n */\n public setModePrivate(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 1:\n this._coreService.decPrivateModes.applicationCursorKeys = true;\n break;\n case 2:\n this._charsetService.setgCharset(0, DEFAULT_CHARSET);\n this._charsetService.setgCharset(1, DEFAULT_CHARSET);\n this._charsetService.setgCharset(2, DEFAULT_CHARSET);\n this._charsetService.setgCharset(3, DEFAULT_CHARSET);\n // set VT100 mode here\n break;\n case 3:\n /**\n * DECCOLM - 132 column mode.\n * This is only active if 'SetWinLines' (24) is enabled\n * through `options.windowsOptions`.\n */\n if (this._optionsService.rawOptions.windowOptions.setWinLines) {\n this._bufferService.resize(132, this._bufferService.rows);\n this._onRequestReset.fire();\n }\n break;\n case 6:\n this._coreService.decPrivateModes.origin = true;\n this._setCursor(0, 0);\n break;\n case 7:\n this._coreService.decPrivateModes.wraparound = true;\n break;\n case 12:\n // this.cursorBlink = true;\n break;\n case 45:\n this._coreService.decPrivateModes.reverseWraparound = true;\n break;\n case 66:\n this._logService.debug('Serial port requested application keypad.');\n this._coreService.decPrivateModes.applicationKeypad = true;\n this._onRequestSyncScrollBar.fire();\n break;\n case 9: // X10 Mouse\n // no release, no motion, no wheel, no modifiers.\n this._coreMouseService.activeProtocol = 'X10';\n break;\n case 1000: // vt200 mouse\n // no motion.\n this._coreMouseService.activeProtocol = 'VT200';\n break;\n case 1002: // button event mouse\n this._coreMouseService.activeProtocol = 'DRAG';\n break;\n case 1003: // any event mouse\n // any event - sends motion events,\n // even if there is no button held down.\n this._coreMouseService.activeProtocol = 'ANY';\n break;\n case 1004: // send focusin/focusout events\n // focusin: ^[[I\n // focusout: ^[[O\n this._coreService.decPrivateModes.sendFocus = true;\n this._onRequestSendFocus.fire();\n break;\n case 1005: // utf8 ext mode mouse - removed in #2507\n this._logService.debug('DECSET 1005 not supported (see #2507)');\n break;\n case 1006: // sgr ext mode mouse\n this._coreMouseService.activeEncoding = 'SGR';\n break;\n case 1015: // urxvt ext mode mouse - removed in #2507\n this._logService.debug('DECSET 1015 not supported (see #2507)');\n break;\n case 25: // show cursor\n this._coreService.isCursorHidden = false;\n break;\n case 1048: // alt screen cursor\n this.saveCursor();\n break;\n case 1049: // alt screen buffer cursor\n this.saveCursor();\n // FALL-THROUGH\n case 47: // alt screen buffer\n case 1047: // alt screen buffer\n this._bufferService.buffers.activateAltBuffer(this._eraseAttrData());\n this._coreService.isCursorInitialized = true;\n this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1);\n this._onRequestSyncScrollBar.fire();\n break;\n case 2004: // bracketed paste mode (https://cirw.in/blog/bracketed-paste)\n this._coreService.decPrivateModes.bracketedPasteMode = true;\n break;\n }\n }\n return true;\n }\n\n\n /**\n * CSI Pm l Reset Mode (RM).\n * Ps = 2 -> Keyboard Action Mode (AM).\n * Ps = 4 -> Replace Mode (IRM).\n * Ps = 1 2 -> Send/receive (SRM).\n * Ps = 2 0 -> Normal Linefeed (LNM).\n *\n * @vt: #P[Only IRM is supported.] CSI RM \"Reset Mode\" \"CSI Pm l\" \"Set various terminal attributes.\"\n * Supported param values by RM:\n *\n * | Param | Action | Support |\n * | ----- | -------------------------------------- | ------- |\n * | 2 | Keyboard Action Mode (KAM). Always on. | #N |\n * | 4 | Replace Mode (IRM). (default) | #Y |\n * | 12 | Send/receive (SRM). Always off. | #N |\n * | 20 | Normal Linefeed (LNM). Always off. | #N |\n *\n *\n * FIXME: why is LNM commented out?\n */\n public resetMode(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 4:\n this._coreService.modes.insertMode = false;\n break;\n case 20:\n // this._t.convertEol = false;\n break;\n }\n }\n return true;\n }\n\n /**\n * CSI ? Pm l\n * DEC Private Mode Reset (DECRST).\n * Ps = 1 -> Normal Cursor Keys (DECCKM).\n * Ps = 2 -> Designate VT52 mode (DECANM).\n * Ps = 3 -> 80 Column Mode (DECCOLM).\n * Ps = 4 -> Jump (Fast) Scroll (DECSCLM).\n * Ps = 5 -> Normal Video (DECSCNM).\n * Ps = 6 -> Normal Cursor Mode (DECOM).\n * Ps = 7 -> No Wraparound Mode (DECAWM).\n * Ps = 8 -> No Auto-repeat Keys (DECARM).\n * Ps = 9 -> Don't send Mouse X & Y on button press.\n * Ps = 1 0 -> Hide toolbar (rxvt).\n * Ps = 1 2 -> Stop Blinking Cursor (att610).\n * Ps = 1 8 -> Don't print form feed (DECPFF).\n * Ps = 1 9 -> Limit print to scrolling region (DECPEX).\n * Ps = 2 5 -> Hide Cursor (DECTCEM).\n * Ps = 3 0 -> Don't show scrollbar (rxvt).\n * Ps = 3 5 -> Disable font-shifting functions (rxvt).\n * Ps = 4 0 -> Disallow 80 -> 132 Mode.\n * Ps = 4 1 -> No more(1) fix (see curses resource).\n * Ps = 4 2 -> Disable Nation Replacement Character sets (DEC-\n * NRCM).\n * Ps = 4 4 -> Turn Off Margin Bell.\n * Ps = 4 5 -> No Reverse-wraparound Mode.\n * Ps = 4 6 -> Stop Logging. (This is normally disabled by a\n * compile-time option).\n * Ps = 4 7 -> Use Normal Screen Buffer.\n * Ps = 6 6 -> Numeric keypad (DECNKM).\n * Ps = 6 7 -> Backarrow key sends delete (DECBKM).\n * Ps = 1 0 0 0 -> Don't send Mouse X & Y on button press and\n * release. See the section Mouse Tracking.\n * Ps = 1 0 0 1 -> Don't use Hilite Mouse Tracking.\n * Ps = 1 0 0 2 -> Don't use Cell Motion Mouse Tracking.\n * Ps = 1 0 0 3 -> Don't use All Motion Mouse Tracking.\n * Ps = 1 0 0 4 -> Don't send FocusIn/FocusOut events.\n * Ps = 1 0 0 5 -> Disable Extended Mouse Mode.\n * Ps = 1 0 1 0 -> Don't scroll to bottom on tty output\n * (rxvt).\n * Ps = 1 0 1 1 -> Don't scroll to bottom on key press (rxvt).\n * Ps = 1 0 3 4 -> Don't interpret \"meta\" key. (This disables\n * the eightBitInput resource).\n * Ps = 1 0 3 5 -> Disable special modifiers for Alt and Num-\n * Lock keys. (This disables the numLock resource).\n * Ps = 1 0 3 6 -> Don't send ESC when Meta modifies a key.\n * (This disables the metaSendsEscape resource).\n * Ps = 1 0 3 7 -> Send VT220 Remove from the editing-keypad\n * Delete key.\n * Ps = 1 0 3 9 -> Don't send ESC when Alt modifies a key.\n * (This disables the altSendsEscape resource).\n * Ps = 1 0 4 0 -> Do not keep selection when not highlighted.\n * (This disables the keepSelection resource).\n * Ps = 1 0 4 1 -> Use the PRIMARY selection. (This disables\n * the selectToClipboard resource).\n * Ps = 1 0 4 2 -> Disable Urgency window manager hint when\n * Control-G is received. (This disables the bellIsUrgent\n * resource).\n * Ps = 1 0 4 3 -> Disable raising of the window when Control-\n * G is received. (This disables the popOnBell resource).\n * Ps = 1 0 4 7 -> Use Normal Screen Buffer, clearing screen\n * first if in the Alternate Screen. (This may be disabled by\n * the titeInhibit resource).\n * Ps = 1 0 4 8 -> Restore cursor as in DECRC. (This may be\n * disabled by the titeInhibit resource).\n * Ps = 1 0 4 9 -> Use Normal Screen Buffer and restore cursor\n * as in DECRC. (This may be disabled by the titeInhibit\n * resource). This combines the effects of the 1 0 4 7 and 1 0\n * 4 8 modes. Use this with terminfo-based applications rather\n * than the 4 7 mode.\n * Ps = 1 0 5 0 -> Reset terminfo/termcap function-key mode.\n * Ps = 1 0 5 1 -> Reset Sun function-key mode.\n * Ps = 1 0 5 2 -> Reset HP function-key mode.\n * Ps = 1 0 5 3 -> Reset SCO function-key mode.\n * Ps = 1 0 6 0 -> Reset legacy keyboard emulation (X11R6).\n * Ps = 1 0 6 1 -> Reset keyboard emulation to Sun/PC style.\n * Ps = 2 0 0 4 -> Reset bracketed paste mode.\n *\n * @vt: #P[See below for supported modes.] CSI DECRST \"DEC Private Reset Mode\" \"CSI ? Pm l\" \"Reset various terminal attributes.\"\n * Supported param values by DECRST:\n *\n * | param | Action | Support |\n * | ----- | ------------------------------------------------------- | ------- |\n * | 1 | Normal Cursor Keys (DECCKM). | #Y |\n * | 2 | Designate VT52 mode (DECANM). | #N |\n * | 3 | 80 Column Mode (DECCOLM). | #B[Switches to old column width instead of 80.] |\n * | 6 | Normal Cursor Mode (DECOM). | #Y |\n * | 7 | No Wraparound Mode (DECAWM). | #Y |\n * | 8 | No Auto-repeat Keys (DECARM). | #N |\n * | 9 | Don't send Mouse X & Y on button press. | #Y |\n * | 12 | Stop Blinking Cursor. | #Y |\n * | 25 | Hide Cursor (DECTCEM). | #Y |\n * | 45 | No reverse wrap-around. | #Y |\n * | 47 | Use Normal Screen Buffer. | #Y |\n * | 66 | Numeric keypad (DECNKM). | #Y |\n * | 1000 | Don't send Mouse reports. | #Y |\n * | 1002 | Don't use Cell Motion Mouse Tracking. | #Y |\n * | 1003 | Don't use All Motion Mouse Tracking. | #Y |\n * | 1004 | Don't send FocusIn/FocusOut events. | #Y |\n * | 1005 | Disable UTF-8 Mouse Mode. | #N |\n * | 1006 | Disable SGR Mouse Mode. | #Y |\n * | 1015 | Disable urxvt Mouse Mode. | #N |\n * | 1047 | Use Normal Screen Buffer (clearing screen if in alt). | #Y |\n * | 1048 | Restore cursor as in DECRC. | #Y |\n * | 1049 | Use Normal Screen Buffer and restore cursor. | #Y |\n * | 2004 | Reset bracketed paste mode. | #Y |\n *\n *\n * FIXME: DECCOLM is currently broken (already fixed in window options PR)\n */\n public resetModePrivate(params: IParams): boolean {\n for (let i = 0; i < params.length; i++) {\n switch (params.params[i]) {\n case 1:\n this._coreService.decPrivateModes.applicationCursorKeys = false;\n break;\n case 3:\n /**\n * DECCOLM - 80 column mode.\n * This is only active if 'SetWinLines' (24) is enabled\n * through `options.windowsOptions`.\n */\n if (this._optionsService.rawOptions.windowOptions.setWinLines) {\n this._bufferService.resize(80, this._bufferService.rows);\n this._onRequestReset.fire();\n }\n break;\n case 6:\n this._coreService.decPrivateModes.origin = false;\n this._setCursor(0, 0);\n break;\n case 7:\n this._coreService.decPrivateModes.wraparound = false;\n break;\n case 12:\n // this.cursorBlink = false;\n break;\n case 45:\n this._coreService.decPrivateModes.reverseWraparound = false;\n break;\n case 66:\n this._logService.debug('Switching back to normal keypad.');\n this._coreService.decPrivateModes.applicationKeypad = false;\n this._onRequestSyncScrollBar.fire();\n break;\n case 9: // X10 Mouse\n case 1000: // vt200 mouse\n case 1002: // button event mouse\n case 1003: // any event mouse\n this._coreMouseService.activeProtocol = 'NONE';\n break;\n case 1004: // send focusin/focusout events\n this._coreService.decPrivateModes.sendFocus = false;\n break;\n case 1005: // utf8 ext mode mouse - removed in #2507\n this._logService.debug('DECRST 1005 not supported (see #2507)');\n break;\n case 1006: // sgr ext mode mouse\n this._coreMouseService.activeEncoding = 'DEFAULT';\n break;\n case 1015: // urxvt ext mode mouse - removed in #2507\n this._logService.debug('DECRST 1015 not supported (see #2507)');\n break;\n case 25: // hide cursor\n this._coreService.isCursorHidden = true;\n break;\n case 1048: // alt screen cursor\n this.restoreCursor();\n break;\n case 1049: // alt screen buffer cursor\n // FALL-THROUGH\n case 47: // normal screen buffer\n case 1047: // normal screen buffer - clearing it first\n // Ensure the selection manager has the correct buffer\n this._bufferService.buffers.activateNormalBuffer();\n if (params.params[i] === 1049) {\n this.restoreCursor();\n }\n this._coreService.isCursorInitialized = true;\n this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1);\n this._onRequestSyncScrollBar.fire();\n break;\n case 2004: // bracketed paste mode (https://cirw.in/blog/bracketed-paste)\n this._coreService.decPrivateModes.bracketedPasteMode = false;\n break;\n }\n }\n return true;\n }\n\n /**\n * Helper to write color information packed with color mode.\n */\n private _updateAttrColor(color: number, mode: number, c1: number, c2: number, c3: number): number {\n if (mode === 2) {\n color |= Attributes.CM_RGB;\n color &= ~Attributes.RGB_MASK;\n color |= AttributeData.fromColorRGB([c1, c2, c3]);\n } else if (mode === 5) {\n color &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n color |= Attributes.CM_P256 | (c1 & 0xff);\n }\n return color;\n }\n\n /**\n * Helper to extract and apply color params/subparams.\n * Returns advance for params index.\n */\n private _extractColor(params: IParams, pos: number, attr: IAttributeData): number {\n // normalize params\n // meaning: [target, CM, ign, val, val, val]\n // RGB : [ 38/48, 2, ign, r, g, b]\n // P256 : [ 38/48, 5, ign, v, ign, ign]\n const accu = [0, 0, -1, 0, 0, 0];\n\n // alignment placeholder for non color space sequences\n let cSpace = 0;\n\n // return advance we took in params\n let advance = 0;\n\n do {\n accu[advance + cSpace] = params.params[pos + advance];\n if (params.hasSubParams(pos + advance)) {\n const subparams = params.getSubParams(pos + advance)!;\n let i = 0;\n do {\n if (accu[1] === 5) {\n cSpace = 1;\n }\n accu[advance + i + 1 + cSpace] = subparams[i];\n } while (++i < subparams.length && i + advance + 1 + cSpace < accu.length);\n break;\n }\n // exit early if can decide color mode with semicolons\n if ((accu[1] === 5 && advance + cSpace >= 2)\n || (accu[1] === 2 && advance + cSpace >= 5)) {\n break;\n }\n // offset colorSpace slot for semicolon mode\n if (accu[1]) {\n cSpace = 1;\n }\n } while (++advance + pos < params.length && advance + cSpace < accu.length);\n\n // set default values to 0\n for (let i = 2; i < accu.length; ++i) {\n if (accu[i] === -1) {\n accu[i] = 0;\n }\n }\n\n // apply colors\n switch (accu[0]) {\n case 38:\n attr.fg = this._updateAttrColor(attr.fg, accu[1], accu[3], accu[4], accu[5]);\n break;\n case 48:\n attr.bg = this._updateAttrColor(attr.bg, accu[1], accu[3], accu[4], accu[5]);\n break;\n case 58:\n attr.extended = attr.extended.clone();\n attr.extended.underlineColor = this._updateAttrColor(attr.extended.underlineColor, accu[1], accu[3], accu[4], accu[5]);\n }\n\n return advance;\n }\n\n /**\n * SGR 4 subparams:\n * 4:0 - equal to SGR 24 (turn off all underline)\n * 4:1 - equal to SGR 4 (single underline)\n * 4:2 - equal to SGR 21 (double underline)\n * 4:3 - curly underline\n * 4:4 - dotted underline\n * 4:5 - dashed underline\n */\n private _processUnderline(style: number, attr: IAttributeData): void {\n // treat extended attrs as immutable, thus always clone from old one\n // this is needed since the buffer only holds references to it\n attr.extended = attr.extended.clone();\n\n // default to 1 == single underline\n if (!~style || style > 5) {\n style = 1;\n }\n attr.extended.underlineStyle = style;\n attr.fg |= FgFlags.UNDERLINE;\n\n // 0 deactivates underline\n if (style === 0) {\n attr.fg &= ~FgFlags.UNDERLINE;\n }\n\n // update HAS_EXTENDED in BG\n attr.updateExtended();\n }\n\n /**\n * CSI Pm m Character Attributes (SGR).\n *\n * @vt: #P[See below for supported attributes.] CSI SGR \"Select Graphic Rendition\" \"CSI Pm m\" \"Set/Reset various text attributes.\"\n * SGR selects one or more character attributes at the same time. Multiple params (up to 32)\n * are applied in order from left to right. The changed attributes are applied to all new\n * characters received. If you move characters in the viewport by scrolling or any other means,\n * then the attributes move with the characters.\n *\n * Supported param values by SGR:\n *\n * | Param | Meaning | Support |\n * | --------- | -------------------------------------------------------- | ------- |\n * | 0 | Normal (default). Resets any other preceding SGR. | #Y |\n * | 1 | Bold. (also see `options.drawBoldTextInBrightColors`) | #Y |\n * | 2 | Faint, decreased intensity. | #Y |\n * | 3 | Italic. | #Y |\n * | 4 | Underlined (see below for style support). | #Y |\n * | 5 | Slowly blinking. | #N |\n * | 6 | Rapidly blinking. | #N |\n * | 7 | Inverse. Flips foreground and background color. | #Y |\n * | 8 | Invisible (hidden). | #Y |\n * | 9 | Crossed-out characters (strikethrough). | #Y |\n * | 21 | Doubly underlined. | #P[Currently outputs a single underline.] |\n * | 22 | Normal (neither bold nor faint). | #Y |\n * | 23 | No italic. | #Y |\n * | 24 | Not underlined. | #Y |\n * | 25 | Steady (not blinking). | #Y |\n * | 27 | Positive (not inverse). | #Y |\n * | 28 | Visible (not hidden). | #Y |\n * | 29 | Not Crossed-out (strikethrough). | #Y |\n * | 30 | Foreground color: Black. | #Y |\n * | 31 | Foreground color: Red. | #Y |\n * | 32 | Foreground color: Green. | #Y |\n * | 33 | Foreground color: Yellow. | #Y |\n * | 34 | Foreground color: Blue. | #Y |\n * | 35 | Foreground color: Magenta. | #Y |\n * | 36 | Foreground color: Cyan. | #Y |\n * | 37 | Foreground color: White. | #Y |\n * | 38 | Foreground color: Extended color. | #P[Support for RGB and indexed colors, see below.] |\n * | 39 | Foreground color: Default (original). | #Y |\n * | 40 | Background color: Black. | #Y |\n * | 41 | Background color: Red. | #Y |\n * | 42 | Background color: Green. | #Y |\n * | 43 | Background color: Yellow. | #Y |\n * | 44 | Background color: Blue. | #Y |\n * | 45 | Background color: Magenta. | #Y |\n * | 46 | Background color: Cyan. | #Y |\n * | 47 | Background color: White. | #Y |\n * | 48 | Background color: Extended color. | #P[Support for RGB and indexed colors, see below.] |\n * | 49 | Background color: Default (original). | #Y |\n * | 90 - 97 | Bright foreground color (analogous to 30 - 37). | #Y |\n * | 100 - 107 | Bright background color (analogous to 40 - 47). | #Y |\n *\n * Underline supports subparams to denote the style in the form `4 : x`:\n *\n * | x | Meaning | Support |\n * | ------ | ------------------------------------------------------------- | ------- |\n * | 0 | No underline. Same as `SGR 24 m`. | #Y |\n * | 1 | Single underline. Same as `SGR 4 m`. | #Y |\n * | 2 | Double underline. | #P[Currently outputs a single underline.] |\n * | 3 | Curly underline. | #P[Currently outputs a single underline.] |\n * | 4 | Dotted underline. | #P[Currently outputs a single underline.] |\n * | 5 | Dashed underline. | #P[Currently outputs a single underline.] |\n * | other | Single underline. Same as `SGR 4 m`. | #Y |\n *\n * Extended colors are supported for foreground (Ps=38) and background (Ps=48) as follows:\n *\n * | Ps + 1 | Meaning | Support |\n * | ------ | ------------------------------------------------------------- | ------- |\n * | 0 | Implementation defined. | #N |\n * | 1 | Transparent. | #N |\n * | 2 | RGB color as `Ps ; 2 ; R ; G ; B` or `Ps : 2 : : R : G : B`. | #Y |\n * | 3 | CMY color. | #N |\n * | 4 | CMYK color. | #N |\n * | 5 | Indexed (256 colors) as `Ps ; 5 ; INDEX` or `Ps : 5 : INDEX`. | #Y |\n *\n *\n * FIXME: blinking is implemented in attrs, but not working in renderers?\n * FIXME: remove dead branch for p=100\n */\n public charAttributes(params: IParams): boolean {\n // Optimize a single SGR0.\n if (params.length === 1 && params.params[0] === 0) {\n this._curAttrData.fg = DEFAULT_ATTR_DATA.fg;\n this._curAttrData.bg = DEFAULT_ATTR_DATA.bg;\n return true;\n }\n\n const l = params.length;\n let p;\n const attr = this._curAttrData;\n\n for (let i = 0; i < l; i++) {\n p = params.params[i];\n if (p >= 30 && p <= 37) {\n // fg color 8\n attr.fg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.fg |= Attributes.CM_P16 | (p - 30);\n } else if (p >= 40 && p <= 47) {\n // bg color 8\n attr.bg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.bg |= Attributes.CM_P16 | (p - 40);\n } else if (p >= 90 && p <= 97) {\n // fg color 16\n attr.fg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.fg |= Attributes.CM_P16 | (p - 90) | 8;\n } else if (p >= 100 && p <= 107) {\n // bg color 16\n attr.bg &= ~(Attributes.CM_MASK | Attributes.PCOLOR_MASK);\n attr.bg |= Attributes.CM_P16 | (p - 100) | 8;\n } else if (p === 0) {\n // default\n attr.fg = DEFAULT_ATTR_DATA.fg;\n attr.bg = DEFAULT_ATTR_DATA.bg;\n } else if (p === 1) {\n // bold text\n attr.fg |= FgFlags.BOLD;\n } else if (p === 3) {\n // italic text\n attr.bg |= BgFlags.ITALIC;\n } else if (p === 4) {\n // underlined text\n attr.fg |= FgFlags.UNDERLINE;\n this._processUnderline(params.hasSubParams(i) ? params.getSubParams(i)![0] : UnderlineStyle.SINGLE, attr);\n } else if (p === 5) {\n // blink\n attr.fg |= FgFlags.BLINK;\n } else if (p === 7) {\n // inverse and positive\n // test with: echo -e '\\e[31m\\e[42mhello\\e[7mworld\\e[27mhi\\e[m'\n attr.fg |= FgFlags.INVERSE;\n } else if (p === 8) {\n // invisible\n attr.fg |= FgFlags.INVISIBLE;\n } else if (p === 9) {\n // strikethrough\n attr.fg |= FgFlags.STRIKETHROUGH;\n } else if (p === 2) {\n // dimmed text\n attr.bg |= BgFlags.DIM;\n } else if (p === 21) {\n // double underline\n this._processUnderline(UnderlineStyle.DOUBLE, attr);\n } else if (p === 22) {\n // not bold nor faint\n attr.fg &= ~FgFlags.BOLD;\n attr.bg &= ~BgFlags.DIM;\n } else if (p === 23) {\n // not italic\n attr.bg &= ~BgFlags.ITALIC;\n } else if (p === 24) {\n // not underlined\n attr.fg &= ~FgFlags.UNDERLINE;\n } else if (p === 25) {\n // not blink\n attr.fg &= ~FgFlags.BLINK;\n } else if (p === 27) {\n // not inverse\n attr.fg &= ~FgFlags.INVERSE;\n } else if (p === 28) {\n // not invisible\n attr.fg &= ~FgFlags.INVISIBLE;\n } else if (p === 29) {\n // not strikethrough\n attr.fg &= ~FgFlags.STRIKETHROUGH;\n } else if (p === 39) {\n // reset fg\n attr.fg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.fg |= DEFAULT_ATTR_DATA.fg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n } else if (p === 49) {\n // reset bg\n attr.bg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.bg |= DEFAULT_ATTR_DATA.bg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n } else if (p === 38 || p === 48 || p === 58) {\n // fg color 256 and RGB\n i += this._extractColor(params, i, attr);\n } else if (p === 59) {\n attr.extended = attr.extended.clone();\n attr.extended.underlineColor = -1;\n attr.updateExtended();\n } else if (p === 100) { // FIXME: dead branch, p=100 already handled above!\n // reset fg/bg\n attr.fg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.fg |= DEFAULT_ATTR_DATA.fg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n attr.bg &= ~(Attributes.CM_MASK | Attributes.RGB_MASK);\n attr.bg |= DEFAULT_ATTR_DATA.bg & (Attributes.PCOLOR_MASK | Attributes.RGB_MASK);\n } else {\n this._logService.debug('Unknown SGR attribute: %d.', p);\n }\n }\n return true;\n }\n\n /**\n * CSI Ps n Device Status Report (DSR).\n * Ps = 5 -> Status Report. Result (``OK'') is\n * CSI 0 n\n * Ps = 6 -> Report Cursor Position (CPR) [row;column].\n * Result is\n * CSI r ; c R\n * CSI ? Ps n\n * Device Status Report (DSR, DEC-specific).\n * Ps = 6 -> Report Cursor Position (CPR) [row;column] as CSI\n * ? r ; c R (assumes page is zero).\n * Ps = 1 5 -> Report Printer status as CSI ? 1 0 n (ready).\n * or CSI ? 1 1 n (not ready).\n * Ps = 2 5 -> Report UDK status as CSI ? 2 0 n (unlocked)\n * or CSI ? 2 1 n (locked).\n * Ps = 2 6 -> Report Keyboard status as\n * CSI ? 2 7 ; 1 ; 0 ; 0 n (North American).\n * The last two parameters apply to VT400 & up, and denote key-\n * board ready and LK01 respectively.\n * Ps = 5 3 -> Report Locator status as\n * CSI ? 5 3 n Locator available, if compiled-in, or\n * CSI ? 5 0 n No Locator, if not.\n *\n * @vt: #Y CSI DSR \"Device Status Report\" \"CSI Ps n\" \"Request cursor position (CPR) with `Ps` = 6.\"\n */\n public deviceStatus(params: IParams): boolean {\n switch (params.params[0]) {\n case 5:\n // status report\n this._coreService.triggerDataEvent(`${C0.ESC}[0n`);\n break;\n case 6:\n // cursor position\n const y = this._activeBuffer.y + 1;\n const x = this._activeBuffer.x + 1;\n this._coreService.triggerDataEvent(`${C0.ESC}[${y};${x}R`);\n break;\n }\n return true;\n }\n\n // @vt: #P[Only CPR is supported.] CSI DECDSR \"DEC Device Status Report\" \"CSI ? Ps n\" \"Only CPR is supported (same as DSR).\"\n public deviceStatusPrivate(params: IParams): boolean {\n // modern xterm doesnt seem to\n // respond to any of these except ?6, 6, and 5\n switch (params.params[0]) {\n case 6:\n // cursor position\n const y = this._activeBuffer.y + 1;\n const x = this._activeBuffer.x + 1;\n this._coreService.triggerDataEvent(`${C0.ESC}[?${y};${x}R`);\n break;\n case 15:\n // no printer\n // this.handler(C0.ESC + '[?11n');\n break;\n case 25:\n // dont support user defined keys\n // this.handler(C0.ESC + '[?21n');\n break;\n case 26:\n // north american keyboard\n // this.handler(C0.ESC + '[?27;1;0;0n');\n break;\n case 53:\n // no dec locator/mouse\n // this.handler(C0.ESC + '[?50n');\n break;\n }\n return true;\n }\n\n /**\n * CSI ! p Soft terminal reset (DECSTR).\n * http://vt100.net/docs/vt220-rm/table4-10.html\n *\n * @vt: #Y CSI DECSTR \"Soft Terminal Reset\" \"CSI ! p\" \"Reset several terminal attributes to initial state.\"\n * There are two terminal reset sequences - RIS and DECSTR. While RIS performs almost a full terminal bootstrap,\n * DECSTR only resets certain attributes. For most needs DECSTR should be sufficient.\n *\n * The following terminal attributes are reset to default values:\n * - IRM is reset (dafault = false)\n * - scroll margins are reset (default = viewport size)\n * - erase attributes are reset to default\n * - charsets are reset\n * - DECSC data is reset to initial values\n * - DECOM is reset to absolute mode\n *\n *\n * FIXME: there are several more attributes missing (see VT520 manual)\n */\n public softReset(params: IParams): boolean {\n this._coreService.isCursorHidden = false;\n this._onRequestSyncScrollBar.fire();\n this._activeBuffer.scrollTop = 0;\n this._activeBuffer.scrollBottom = this._bufferService.rows - 1;\n this._curAttrData = DEFAULT_ATTR_DATA.clone();\n this._coreService.reset();\n this._charsetService.reset();\n\n // reset DECSC data\n this._activeBuffer.savedX = 0;\n this._activeBuffer.savedY = this._activeBuffer.ybase;\n this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg;\n this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg;\n this._activeBuffer.savedCharset = this._charsetService.charset;\n\n // reset DECOM\n this._coreService.decPrivateModes.origin = false;\n return true;\n }\n\n /**\n * CSI Ps SP q Set cursor style (DECSCUSR, VT520).\n * Ps = 0 -> blinking block.\n * Ps = 1 -> blinking block (default).\n * Ps = 2 -> steady block.\n * Ps = 3 -> blinking underline.\n * Ps = 4 -> steady underline.\n * Ps = 5 -> blinking bar (xterm).\n * Ps = 6 -> steady bar (xterm).\n *\n * @vt: #Y CSI DECSCUSR \"Set Cursor Style\" \"CSI Ps SP q\" \"Set cursor style.\"\n * Supported cursor styles:\n * - empty, 0 or 1: steady block\n * - 2: blink block\n * - 3: steady underline\n * - 4: blink underline\n * - 5: steady bar\n * - 6: blink bar\n */\n public setCursorStyle(params: IParams): boolean {\n const param = params.params[0] || 1;\n switch (param) {\n case 1:\n case 2:\n this._optionsService.options.cursorStyle = 'block';\n break;\n case 3:\n case 4:\n this._optionsService.options.cursorStyle = 'underline';\n break;\n case 5:\n case 6:\n this._optionsService.options.cursorStyle = 'bar';\n break;\n }\n const isBlinking = param % 2 === 1;\n this._optionsService.options.cursorBlink = isBlinking;\n return true;\n }\n\n /**\n * CSI Ps ; Ps r\n * Set Scrolling Region [top;bottom] (default = full size of win-\n * dow) (DECSTBM).\n *\n * @vt: #Y CSI DECSTBM \"Set Top and Bottom Margin\" \"CSI Ps ; Ps r\" \"Set top and bottom margins of the viewport [top;bottom] (default = viewport size).\"\n */\n public setScrollRegion(params: IParams): boolean {\n const top = params.params[0] || 1;\n let bottom: number;\n\n if (params.length < 2 || (bottom = params.params[1]) > this._bufferService.rows || bottom === 0) {\n bottom = this._bufferService.rows;\n }\n\n if (bottom > top) {\n this._activeBuffer.scrollTop = top - 1;\n this._activeBuffer.scrollBottom = bottom - 1;\n this._setCursor(0, 0);\n }\n return true;\n }\n\n /**\n * CSI Ps ; Ps ; Ps t - Various window manipulations and reports (xterm)\n *\n * Note: Only those listed below are supported. All others are left to integrators and\n * need special treatment based on the embedding environment.\n *\n * Ps = 1 4 supported\n * Report xterm text area size in pixels.\n * Result is CSI 4 ; height ; width t\n * Ps = 14 ; 2 not implemented\n * Ps = 16 supported\n * Report xterm character cell size in pixels.\n * Result is CSI 6 ; height ; width t\n * Ps = 18 supported\n * Report the size of the text area in characters.\n * Result is CSI 8 ; height ; width t\n * Ps = 20 supported\n * Report xterm window's icon label.\n * Result is OSC L label ST\n * Ps = 21 supported\n * Report xterm window's title.\n * Result is OSC l label ST\n * Ps = 22 ; 0 -> Save xterm icon and window title on stack. supported\n * Ps = 22 ; 1 -> Save xterm icon title on stack. supported\n * Ps = 22 ; 2 -> Save xterm window title on stack. supported\n * Ps = 23 ; 0 -> Restore xterm icon and window title from stack. supported\n * Ps = 23 ; 1 -> Restore xterm icon title from stack. supported\n * Ps = 23 ; 2 -> Restore xterm window title from stack. supported\n * Ps >= 24 not implemented\n */\n public windowOptions(params: IParams): boolean {\n if (!paramToWindowOption(params.params[0], this._optionsService.rawOptions.windowOptions)) {\n return true;\n }\n const second = (params.length > 1) ? params.params[1] : 0;\n switch (params.params[0]) {\n case 14: // GetWinSizePixels, returns CSI 4 ; height ; width t\n if (second !== 2) {\n this._onRequestWindowsOptionsReport.fire(WindowsOptionsReportType.GET_WIN_SIZE_PIXELS);\n }\n break;\n case 16: // GetCellSizePixels, returns CSI 6 ; height ; width t\n this._onRequestWindowsOptionsReport.fire(WindowsOptionsReportType.GET_CELL_SIZE_PIXELS);\n break;\n case 18: // GetWinSizeChars, returns CSI 8 ; height ; width t\n if (this._bufferService) {\n this._coreService.triggerDataEvent(`${C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);\n }\n break;\n case 22: // PushTitle\n if (second === 0 || second === 2) {\n this._windowTitleStack.push(this._windowTitle);\n if (this._windowTitleStack.length > STACK_LIMIT) {\n this._windowTitleStack.shift();\n }\n }\n if (second === 0 || second === 1) {\n this._iconNameStack.push(this._iconName);\n if (this._iconNameStack.length > STACK_LIMIT) {\n this._iconNameStack.shift();\n }\n }\n break;\n case 23: // PopTitle\n if (second === 0 || second === 2) {\n if (this._windowTitleStack.length) {\n this.setTitle(this._windowTitleStack.pop()!);\n }\n }\n if (second === 0 || second === 1) {\n if (this._iconNameStack.length) {\n this.setIconName(this._iconNameStack.pop()!);\n }\n }\n break;\n }\n return true;\n }\n\n\n /**\n * CSI s\n * ESC 7\n * Save cursor (ANSI.SYS).\n *\n * @vt: #P[TODO...] CSI SCOSC \"Save Cursor\" \"CSI s\" \"Save cursor position, charmap and text attributes.\"\n * @vt: #Y ESC SC \"Save Cursor\" \"ESC 7\" \"Save cursor position, charmap and text attributes.\"\n */\n public saveCursor(params?: IParams): boolean {\n this._activeBuffer.savedX = this._activeBuffer.x;\n this._activeBuffer.savedY = this._activeBuffer.ybase + this._activeBuffer.y;\n this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg;\n this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg;\n this._activeBuffer.savedCharset = this._charsetService.charset;\n return true;\n }\n\n\n /**\n * CSI u\n * ESC 8\n * Restore cursor (ANSI.SYS).\n *\n * @vt: #P[TODO...] CSI SCORC \"Restore Cursor\" \"CSI u\" \"Restore cursor position, charmap and text attributes.\"\n * @vt: #Y ESC RC \"Restore Cursor\" \"ESC 8\" \"Restore cursor position, charmap and text attributes.\"\n */\n public restoreCursor(params?: IParams): boolean {\n this._activeBuffer.x = this._activeBuffer.savedX || 0;\n this._activeBuffer.y = Math.max(this._activeBuffer.savedY - this._activeBuffer.ybase, 0);\n this._curAttrData.fg = this._activeBuffer.savedCurAttrData.fg;\n this._curAttrData.bg = this._activeBuffer.savedCurAttrData.bg;\n this._charsetService.charset = (this as any)._savedCharset;\n if (this._activeBuffer.savedCharset) {\n this._charsetService.charset = this._activeBuffer.savedCharset;\n }\n this._restrictCursor();\n return true;\n }\n\n\n /**\n * OSC 2; ST (set window title)\n * Proxy to set window title.\n *\n * @vt: #P[Icon name is not exposed.] OSC 0 \"Set Windows Title and Icon Name\" \"OSC 0 ; Pt BEL\" \"Set window title and icon name.\"\n * Icon name is not supported. For Window Title see below.\n *\n * @vt: #Y OSC 2 \"Set Windows Title\" \"OSC 2 ; Pt BEL\" \"Set window title.\"\n * xterm.js does not manipulate the title directly, instead exposes changes via the event `Terminal.onTitleChange`.\n */\n public setTitle(data: string): boolean {\n this._windowTitle = data;\n this._onTitleChange.fire(data);\n return true;\n }\n\n /**\n * OSC 1; ST\n * Note: Icon name is not exposed.\n */\n public setIconName(data: string): boolean {\n this._iconName = data;\n return true;\n }\n\n /**\n * OSC 4; ; ST (set ANSI color to )\n *\n * @vt: #Y OSC 4 \"Set ANSI color\" \"OSC 4 ; c ; spec BEL\" \"Change color number `c` to the color specified by `spec`.\"\n * `c` is the color index between 0 and 255. The color format of `spec` is derived from `XParseColor` (see OSC 10 for supported formats).\n * There may be multipe `c ; spec` pairs present in the same instruction.\n * If `spec` contains `?` the terminal returns a sequence with the currently set color.\n */\n public setOrReportIndexedColor(data: string): boolean {\n const event: IColorEvent = [];\n const slots = data.split(';');\n while (slots.length > 1) {\n const idx = slots.shift() as string;\n const spec = slots.shift() as string;\n if (/^\\d+$/.exec(idx)) {\n const index = parseInt(idx);\n if (0 <= index && index < 256) {\n if (spec === '?') {\n event.push({ type: ColorRequestType.REPORT, index });\n } else {\n const color = parseColor(spec);\n if (color) {\n event.push({ type: ColorRequestType.SET, index, color });\n }\n }\n }\n }\n }\n if (event.length) {\n this._onColor.fire(event);\n }\n return true;\n }\n\n // special colors - OSC 10 | 11 | 12\n private _specialColors = [ColorIndex.FOREGROUND, ColorIndex.BACKGROUND, ColorIndex.CURSOR];\n\n /**\n * Apply colors requests for special colors in OSC 10 | 11 | 12.\n * Since these commands are stacking from multiple parameters,\n * we handle them in a loop with an entry offset to `_specialColors`.\n */\n private _setOrReportSpecialColor(data: string, offset: number): boolean {\n const slots = data.split(';');\n for (let i = 0; i < slots.length; ++i, ++offset) {\n if (offset >= this._specialColors.length) break;\n if (slots[i] === '?') {\n this._onColor.fire([{ type: ColorRequestType.REPORT, index: this._specialColors[offset] }]);\n } else {\n const color = parseColor(slots[i]);\n if (color) {\n this._onColor.fire([{ type: ColorRequestType.SET, index: this._specialColors[offset], color }]);\n }\n }\n }\n return true;\n }\n\n /**\n * OSC 10 ; | ST - set or query default foreground color\n *\n * @vt: #Y OSC 10 \"Set or query default foreground color\" \"OSC 10 ; Pt BEL\" \"Set or query default foreground color.\"\n * To set the color, the following color specification formats are supported:\n * - `rgb://` for `, , ` in `h | hh | hhh | hhhh`, where\n * `h` is a single hexadecimal digit (case insignificant). The different widths scale\n * from 4 bit (`h`) to 16 bit (`hhhh`) and get converted to 8 bit (`hh`).\n * - `#RGB` - 4 bits per channel, expanded to `#R0G0B0`\n * - `#RRGGBB` - 8 bits per channel\n * - `#RRRGGGBBB` - 12 bits per channel, truncated to `#RRGGBB`\n * - `#RRRRGGGGBBBB` - 16 bits per channel, truncated to `#RRGGBB`\n *\n * **Note:** X11 named colors are currently unsupported.\n *\n * If `Pt` contains `?` instead of a color specification, the terminal\n * returns a sequence with the current default foreground color\n * (use that sequence to restore the color after changes).\n *\n * **Note:** Other than xterm, xterm.js does not support OSC 12 - 19.\n * Therefore stacking multiple `Pt` separated by `;` only works for the first two entries.\n */\n public setOrReportFgColor(data: string): boolean {\n return this._setOrReportSpecialColor(data, 0);\n }\n\n /**\n * OSC 11 ; | ST - set or query default background color\n *\n * @vt: #Y OSC 11 \"Set or query default background color\" \"OSC 11 ; Pt BEL\" \"Same as OSC 10, but for default background.\"\n */\n public setOrReportBgColor(data: string): boolean {\n return this._setOrReportSpecialColor(data, 1);\n }\n\n /**\n * OSC 12 ; | ST - set or query default cursor color\n *\n * @vt: #Y OSC 12 \"Set or query default cursor color\" \"OSC 12 ; Pt BEL\" \"Same as OSC 10, but for default cursor color.\"\n */\n public setOrReportCursorColor(data: string): boolean {\n return this._setOrReportSpecialColor(data, 2);\n }\n\n /**\n * OSC 104 ; ST - restore ANSI color \n *\n * @vt: #Y OSC 104 \"Reset ANSI color\" \"OSC 104 ; c BEL\" \"Reset color number `c` to themed color.\"\n * `c` is the color index between 0 and 255. This function restores the default color for `c` as\n * specified by the loaded theme. Any number of `c` parameters may be given.\n * If no parameters are given, the entire indexed color table will be reset.\n */\n public restoreIndexedColor(data: string): boolean {\n if (!data) {\n this._onColor.fire([{ type: ColorRequestType.RESTORE }]);\n return true;\n }\n const event: IColorEvent = [];\n const slots = data.split(';');\n for (let i = 0; i < slots.length; ++i) {\n if (/^\\d+$/.exec(slots[i])) {\n const index = parseInt(slots[i]);\n if (0 <= index && index < 256) {\n event.push({ type: ColorRequestType.RESTORE, index });\n }\n }\n }\n if (event.length) {\n this._onColor.fire(event);\n }\n return true;\n }\n\n /**\n * OSC 110 ST - restore default foreground color\n *\n * @vt: #Y OSC 110 \"Restore default foreground color\" \"OSC 110 BEL\" \"Restore default foreground to themed color.\"\n */\n public restoreFgColor(data: string): boolean {\n this._onColor.fire([{ type: ColorRequestType.RESTORE, index: ColorIndex.FOREGROUND }]);\n return true;\n }\n\n /**\n * OSC 111 ST - restore default background color\n *\n * @vt: #Y OSC 111 \"Restore default background color\" \"OSC 111 BEL\" \"Restore default background to themed color.\"\n */\n public restoreBgColor(data: string): boolean {\n this._onColor.fire([{ type: ColorRequestType.RESTORE, index: ColorIndex.BACKGROUND }]);\n return true;\n }\n\n /**\n * OSC 112 ST - restore default cursor color\n *\n * @vt: #Y OSC 112 \"Restore default cursor color\" \"OSC 112 BEL\" \"Restore default cursor to themed color.\"\n */\n public restoreCursorColor(data: string): boolean {\n this._onColor.fire([{ type: ColorRequestType.RESTORE, index: ColorIndex.CURSOR }]);\n return true;\n }\n\n /**\n * ESC E\n * C1.NEL\n * DEC mnemonic: NEL (https://vt100.net/docs/vt510-rm/NEL)\n * Moves cursor to first position on next line.\n *\n * @vt: #Y C1 NEL \"Next Line\" \"\\x85\" \"Move the cursor to the beginning of the next row.\"\n * @vt: #Y ESC NEL \"Next Line\" \"ESC E\" \"Move the cursor to the beginning of the next row.\"\n */\n public nextLine(): boolean {\n this._activeBuffer.x = 0;\n this.index();\n return true;\n }\n\n /**\n * ESC =\n * DEC mnemonic: DECKPAM (https://vt100.net/docs/vt510-rm/DECKPAM.html)\n * Enables the numeric keypad to send application sequences to the host.\n */\n public keypadApplicationMode(): boolean {\n this._logService.debug('Serial port requested application keypad.');\n this._coreService.decPrivateModes.applicationKeypad = true;\n this._onRequestSyncScrollBar.fire();\n return true;\n }\n\n /**\n * ESC >\n * DEC mnemonic: DECKPNM (https://vt100.net/docs/vt510-rm/DECKPNM.html)\n * Enables the keypad to send numeric characters to the host.\n */\n public keypadNumericMode(): boolean {\n this._logService.debug('Switching back to normal keypad.');\n this._coreService.decPrivateModes.applicationKeypad = false;\n this._onRequestSyncScrollBar.fire();\n return true;\n }\n\n /**\n * ESC % @\n * ESC % G\n * Select default character set. UTF-8 is not supported (string are unicode anyways)\n * therefore ESC % G does the same.\n */\n public selectDefaultCharset(): boolean {\n this._charsetService.setgLevel(0);\n this._charsetService.setgCharset(0, DEFAULT_CHARSET); // US (default)\n return true;\n }\n\n /**\n * ESC ( C\n * Designate G0 Character Set, VT100, ISO 2022.\n * ESC ) C\n * Designate G1 Character Set (ISO 2022, VT100).\n * ESC * C\n * Designate G2 Character Set (ISO 2022, VT220).\n * ESC + C\n * Designate G3 Character Set (ISO 2022, VT220).\n * ESC - C\n * Designate G1 Character Set (VT300).\n * ESC . C\n * Designate G2 Character Set (VT300).\n * ESC / C\n * Designate G3 Character Set (VT300). C = A -> ISO Latin-1 Supplemental. - Supported?\n */\n public selectCharset(collectAndFlag: string): boolean {\n if (collectAndFlag.length !== 2) {\n this.selectDefaultCharset();\n return true;\n }\n if (collectAndFlag[0] === '/') {\n return true; // TODO: Is this supported?\n }\n this._charsetService.setgCharset(GLEVEL[collectAndFlag[0]], CHARSETS[collectAndFlag[1]] || DEFAULT_CHARSET);\n return true;\n }\n\n /**\n * ESC D\n * C1.IND\n * DEC mnemonic: IND (https://vt100.net/docs/vt510-rm/IND.html)\n * Moves the cursor down one line in the same column.\n *\n * @vt: #Y C1 IND \"Index\" \"\\x84\" \"Move the cursor one line down scrolling if needed.\"\n * @vt: #Y ESC IND \"Index\" \"ESC D\" \"Move the cursor one line down scrolling if needed.\"\n */\n public index(): boolean {\n this._restrictCursor();\n this._activeBuffer.y++;\n if (this._activeBuffer.y === this._activeBuffer.scrollBottom + 1) {\n this._activeBuffer.y--;\n this._bufferService.scroll(this._eraseAttrData());\n } else if (this._activeBuffer.y >= this._bufferService.rows) {\n this._activeBuffer.y = this._bufferService.rows - 1;\n }\n this._restrictCursor();\n return true;\n }\n\n /**\n * ESC H\n * C1.HTS\n * DEC mnemonic: HTS (https://vt100.net/docs/vt510-rm/HTS.html)\n * Sets a horizontal tab stop at the column position indicated by\n * the value of the active column when the terminal receives an HTS.\n *\n * @vt: #Y C1 HTS \"Horizontal Tabulation Set\" \"\\x88\" \"Places a tab stop at the current cursor position.\"\n * @vt: #Y ESC HTS \"Horizontal Tabulation Set\" \"ESC H\" \"Places a tab stop at the current cursor position.\"\n */\n public tabSet(): boolean {\n this._activeBuffer.tabs[this._activeBuffer.x] = true;\n return true;\n }\n\n /**\n * ESC M\n * C1.RI\n * DEC mnemonic: HTS\n * Moves the cursor up one line in the same column. If the cursor is at the top margin,\n * the page scrolls down.\n *\n * @vt: #Y ESC IR \"Reverse Index\" \"ESC M\" \"Move the cursor one line up scrolling if needed.\"\n */\n public reverseIndex(): boolean {\n this._restrictCursor();\n if (this._activeBuffer.y === this._activeBuffer.scrollTop) {\n // possibly move the code below to term.reverseScroll();\n // test: echo -ne '\\e[1;1H\\e[44m\\eM\\e[0m'\n // blankLine(true) is xterm/linux behavior\n const scrollRegionHeight = this._activeBuffer.scrollBottom - this._activeBuffer.scrollTop;\n this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase + this._activeBuffer.y, scrollRegionHeight, 1);\n this._activeBuffer.lines.set(this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n } else {\n this._activeBuffer.y--;\n this._restrictCursor(); // quickfix to not run out of bounds\n }\n return true;\n }\n\n /**\n * ESC c\n * DEC mnemonic: RIS (https://vt100.net/docs/vt510-rm/RIS.html)\n * Reset to initial state.\n */\n public fullReset(): boolean {\n this._parser.reset();\n this._onRequestReset.fire();\n return true;\n }\n\n public reset(): void {\n this._curAttrData = DEFAULT_ATTR_DATA.clone();\n this._eraseAttrDataInternal = DEFAULT_ATTR_DATA.clone();\n }\n\n /**\n * back_color_erase feature for xterm.\n */\n private _eraseAttrData(): IAttributeData {\n this._eraseAttrDataInternal.bg &= ~(Attributes.CM_MASK | 0xFFFFFF);\n this._eraseAttrDataInternal.bg |= this._curAttrData.bg & ~0xFC000000;\n return this._eraseAttrDataInternal;\n }\n\n /**\n * ESC n\n * ESC o\n * ESC |\n * ESC }\n * ESC ~\n * DEC mnemonic: LS (https://vt100.net/docs/vt510-rm/LS.html)\n * When you use a locking shift, the character set remains in GL or GR until\n * you use another locking shift. (partly supported)\n */\n public setgLevel(level: number): boolean {\n this._charsetService.setgLevel(level);\n return true;\n }\n\n /**\n * ESC # 8\n * DEC mnemonic: DECALN (https://vt100.net/docs/vt510-rm/DECALN.html)\n * This control function fills the complete screen area with\n * a test pattern (E) used for adjusting screen alignment.\n *\n * @vt: #Y ESC DECALN \"Screen Alignment Pattern\" \"ESC # 8\" \"Fill viewport with a test pattern (E).\"\n */\n public screenAlignmentPattern(): boolean {\n // prepare cell data\n const cell = new CellData();\n cell.content = 1 << Content.WIDTH_SHIFT | 'E'.charCodeAt(0);\n cell.fg = this._curAttrData.fg;\n cell.bg = this._curAttrData.bg;\n\n\n this._setCursor(0, 0);\n for (let yOffset = 0; yOffset < this._bufferService.rows; ++yOffset) {\n const row = this._activeBuffer.ybase + this._activeBuffer.y + yOffset;\n const line = this._activeBuffer.lines.get(row);\n if (line) {\n line.fill(cell);\n line.isWrapped = false;\n }\n }\n this._dirtyRowService.markAllDirty();\n this._setCursor(0, 0);\n return true;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\n\n/**\n * A base class that can be extended to provide convenience methods for managing the lifecycle of an\n * object and its components.\n */\nexport abstract class Disposable implements IDisposable {\n protected _disposables: IDisposable[] = [];\n protected _isDisposed: boolean = false;\n\n constructor() {\n }\n\n /**\n * Disposes the object, triggering the `dispose` method on all registered IDisposables.\n */\n public dispose(): void {\n this._isDisposed = true;\n for (const d of this._disposables) {\n d.dispose();\n }\n this._disposables.length = 0;\n }\n\n /**\n * Registers a disposable object.\n * @param d The disposable to register.\n * @returns The disposable.\n */\n public register(d: T): T {\n this._disposables.push(d);\n return d;\n }\n\n /**\n * Unregisters a disposable object if it has been registered, if not do\n * nothing.\n * @param d The disposable to unregister.\n */\n public unregister(d: T): void {\n const index = this._disposables.indexOf(d);\n if (index !== -1) {\n this._disposables.splice(index, 1);\n }\n }\n}\n\n/**\n * Dispose of all disposables in an array and set its length to 0.\n */\nexport function disposeArray(disposables: IDisposable[]): void {\n for (const d of disposables) {\n d.dispose();\n }\n disposables.length = 0;\n}\n\n/**\n * Creates a disposable that will dispose of an array of disposables when disposed.\n */\nexport function getDisposeArrayDisposable(array: IDisposable[]): IDisposable {\n return { dispose: () => disposeArray(array) };\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\ninterface INavigator {\n userAgent: string;\n language: string;\n platform: string;\n}\n\n// We're declaring a navigator global here as we expect it in all runtimes (node and browser), but\n// we want this module to live in common.\ndeclare const navigator: INavigator;\n\nconst isNode = (typeof navigator === 'undefined') ? true : false;\nconst userAgent = (isNode) ? 'node' : navigator.userAgent;\nconst platform = (isNode) ? 'node' : navigator.platform;\n\nexport const isFirefox = userAgent.includes('Firefox');\nexport const isLegacyEdge = userAgent.includes('Edge');\nexport const isSafari = /^((?!chrome|android).)*safari/i.test(userAgent);\n\n// Find the users platform. We use this to interpret the meta key\n// and ISO third level shifts.\n// http://stackoverflow.com/q/19877924/577598\nexport const isMac = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'].includes(platform);\nexport const isIpad = platform === 'iPad';\nexport const isIphone = platform === 'iPhone';\nexport const isWindows = ['Windows', 'Win16', 'Win32', 'WinCE'].includes(platform);\nexport const isLinux = platform.indexOf('Linux') >= 0;\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport type TypedArray = Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array;\n\n\n/**\n * polyfill for TypedArray.fill\n * This is needed to support .fill in all safari versions and IE 11.\n */\nexport function fill(array: T, value: number, start?: number, end?: number): T {\n // all modern engines that support .fill\n if (array.fill) {\n return array.fill(value, start, end) as T;\n }\n return fillFallback(array, value, start, end);\n}\n\nexport function fillFallback(array: T, value: number, start: number = 0, end: number = array.length): T {\n // safari and IE 11\n // since IE 11 does not support Array.prototype.fill either\n // we cannot use the suggested polyfill from MDN\n // instead we simply fall back to looping\n if (start >= array.length) {\n return array;\n }\n start = (array.length + start) % array.length;\n if (end >= array.length) {\n end = array.length;\n } else {\n end = (array.length + end) % array.length;\n }\n for (let i = start; i < end; ++i) {\n array[i] = value;\n }\n return array;\n}\n\n/**\n * Concat two typed arrays `a` and `b`.\n * Returns a new typed array.\n */\nexport function concat(a: T, b: T): T {\n const result = new (a.constructor as any)(a.length + b.length);\n result.set(a);\n result.set(b, a.length);\n return result;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CHAR_DATA_CODE_INDEX, NULL_CELL_CODE, WHITESPACE_CELL_CODE } from 'common/buffer/Constants';\nimport { IBufferService } from 'common/services/Services';\n\nexport function updateWindowsModeWrappedState(bufferService: IBufferService): void {\n // Winpty does not support wraparound mode which means that lines will never\n // be marked as wrapped. This causes issues for things like copying a line\n // retaining the wrapped new line characters or if consumers are listening\n // in on the data stream.\n //\n // The workaround for this is to listen to every incoming line feed and mark\n // the line as wrapped if the last character in the previous line is not a\n // space. This is certainly not without its problems, but generally on\n // Windows when text reaches the end of the terminal it's likely going to be\n // wrapped.\n const line = bufferService.buffer.lines.get(bufferService.buffer.ybase + bufferService.buffer.y - 1);\n const lastChar = line?.get(bufferService.cols - 1);\n\n const nextLine = bufferService.buffer.lines.get(bufferService.buffer.ybase + bufferService.buffer.y);\n if (nextLine && lastChar) {\n nextLine.isWrapped = (lastChar[CHAR_DATA_CODE_INDEX] !== NULL_CELL_CODE && lastChar[CHAR_DATA_CODE_INDEX] !== WHITESPACE_CELL_CODE);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IAttributeData, IColorRGB, IExtendedAttrs } from 'common/Types';\nimport { Attributes, FgFlags, BgFlags, UnderlineStyle } from 'common/buffer/Constants';\n\nexport class AttributeData implements IAttributeData {\n public static toColorRGB(value: number): IColorRGB {\n return [\n value >>> Attributes.RED_SHIFT & 255,\n value >>> Attributes.GREEN_SHIFT & 255,\n value & 255\n ];\n }\n\n public static fromColorRGB(value: IColorRGB): number {\n return (value[0] & 255) << Attributes.RED_SHIFT | (value[1] & 255) << Attributes.GREEN_SHIFT | value[2] & 255;\n }\n\n public clone(): IAttributeData {\n const newObj = new AttributeData();\n newObj.fg = this.fg;\n newObj.bg = this.bg;\n newObj.extended = this.extended.clone();\n return newObj;\n }\n\n // data\n public fg = 0;\n public bg = 0;\n public extended = new ExtendedAttrs();\n\n // flags\n public isInverse(): number { return this.fg & FgFlags.INVERSE; }\n public isBold(): number { return this.fg & FgFlags.BOLD; }\n public isUnderline(): number { return this.fg & FgFlags.UNDERLINE; }\n public isBlink(): number { return this.fg & FgFlags.BLINK; }\n public isInvisible(): number { return this.fg & FgFlags.INVISIBLE; }\n public isItalic(): number { return this.bg & BgFlags.ITALIC; }\n public isDim(): number { return this.bg & BgFlags.DIM; }\n public isStrikethrough(): number { return this.fg & FgFlags.STRIKETHROUGH; }\n\n // color modes\n public getFgColorMode(): number { return this.fg & Attributes.CM_MASK; }\n public getBgColorMode(): number { return this.bg & Attributes.CM_MASK; }\n public isFgRGB(): boolean { return (this.fg & Attributes.CM_MASK) === Attributes.CM_RGB; }\n public isBgRGB(): boolean { return (this.bg & Attributes.CM_MASK) === Attributes.CM_RGB; }\n public isFgPalette(): boolean { return (this.fg & Attributes.CM_MASK) === Attributes.CM_P16 || (this.fg & Attributes.CM_MASK) === Attributes.CM_P256; }\n public isBgPalette(): boolean { return (this.bg & Attributes.CM_MASK) === Attributes.CM_P16 || (this.bg & Attributes.CM_MASK) === Attributes.CM_P256; }\n public isFgDefault(): boolean { return (this.fg & Attributes.CM_MASK) === 0; }\n public isBgDefault(): boolean { return (this.bg & Attributes.CM_MASK) === 0; }\n public isAttributeDefault(): boolean { return this.fg === 0 && this.bg === 0; }\n\n // colors\n public getFgColor(): number {\n switch (this.fg & Attributes.CM_MASK) {\n case Attributes.CM_P16:\n case Attributes.CM_P256: return this.fg & Attributes.PCOLOR_MASK;\n case Attributes.CM_RGB: return this.fg & Attributes.RGB_MASK;\n default: return -1; // CM_DEFAULT defaults to -1\n }\n }\n public getBgColor(): number {\n switch (this.bg & Attributes.CM_MASK) {\n case Attributes.CM_P16:\n case Attributes.CM_P256: return this.bg & Attributes.PCOLOR_MASK;\n case Attributes.CM_RGB: return this.bg & Attributes.RGB_MASK;\n default: return -1; // CM_DEFAULT defaults to -1\n }\n }\n\n // extended attrs\n public hasExtendedAttrs(): number {\n return this.bg & BgFlags.HAS_EXTENDED;\n }\n public updateExtended(): void {\n if (this.extended.isEmpty()) {\n this.bg &= ~BgFlags.HAS_EXTENDED;\n } else {\n this.bg |= BgFlags.HAS_EXTENDED;\n }\n }\n public getUnderlineColor(): number {\n if ((this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor) {\n switch (this.extended.underlineColor & Attributes.CM_MASK) {\n case Attributes.CM_P16:\n case Attributes.CM_P256: return this.extended.underlineColor & Attributes.PCOLOR_MASK;\n case Attributes.CM_RGB: return this.extended.underlineColor & Attributes.RGB_MASK;\n default: return this.getFgColor();\n }\n }\n return this.getFgColor();\n }\n public getUnderlineColorMode(): number {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? this.extended.underlineColor & Attributes.CM_MASK\n : this.getFgColorMode();\n }\n public isUnderlineColorRGB(): boolean {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? (this.extended.underlineColor & Attributes.CM_MASK) === Attributes.CM_RGB\n : this.isFgRGB();\n }\n public isUnderlineColorPalette(): boolean {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? (this.extended.underlineColor & Attributes.CM_MASK) === Attributes.CM_P16\n || (this.extended.underlineColor & Attributes.CM_MASK) === Attributes.CM_P256\n : this.isFgPalette();\n }\n public isUnderlineColorDefault(): boolean {\n return (this.bg & BgFlags.HAS_EXTENDED) && ~this.extended.underlineColor\n ? (this.extended.underlineColor & Attributes.CM_MASK) === 0\n : this.isFgDefault();\n }\n public getUnderlineStyle(): UnderlineStyle {\n return this.fg & FgFlags.UNDERLINE\n ? (this.bg & BgFlags.HAS_EXTENDED ? this.extended.underlineStyle : UnderlineStyle.SINGLE)\n : UnderlineStyle.NONE;\n }\n}\n\n\n/**\n * Extended attributes for a cell.\n * Holds information about different underline styles and color.\n */\nexport class ExtendedAttrs implements IExtendedAttrs {\n constructor(\n // underline style, NONE is empty\n public underlineStyle: UnderlineStyle = UnderlineStyle.NONE,\n // underline color, -1 is empty (same as FG)\n public underlineColor: number = -1\n ) {}\n\n public clone(): IExtendedAttrs {\n return new ExtendedAttrs(this.underlineStyle, this.underlineColor);\n }\n\n /**\n * Convenient method to indicate whether the object holds no additional information,\n * that needs to be persistant in the buffer.\n */\n public isEmpty(): boolean {\n return this.underlineStyle === UnderlineStyle.NONE;\n }\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CircularList, IInsertEvent } from 'common/CircularList';\nimport { IBuffer, BufferIndex, IBufferStringIterator, IBufferStringIteratorResult } from 'common/buffer/Types';\nimport { IBufferLine, ICellData, IAttributeData, ICharset } from 'common/Types';\nimport { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';\nimport { CellData } from 'common/buffer/CellData';\nimport { NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_WIDTH, WHITESPACE_CELL_CODE, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_CHAR_INDEX } from 'common/buffer/Constants';\nimport { reflowLargerApplyNewLayout, reflowLargerCreateNewLayout, reflowLargerGetLinesToRemove, reflowSmallerGetNewLineLengths, getWrappedLineTrimmedLength } from 'common/buffer/BufferReflow';\nimport { Marker } from 'common/buffer/Marker';\nimport { IOptionsService, IBufferService } from 'common/services/Services';\nimport { DEFAULT_CHARSET } from 'common/data/Charsets';\nimport { ExtendedAttrs } from 'common/buffer/AttributeData';\n\nexport const MAX_BUFFER_SIZE = 4294967295; // 2^32 - 1\n\n/**\n * This class represents a terminal buffer (an internal state of the terminal), where the\n * following information is stored (in high-level):\n * - text content of this particular buffer\n * - cursor position\n * - scroll position\n */\nexport class Buffer implements IBuffer {\n public lines: CircularList;\n public ydisp: number = 0;\n public ybase: number = 0;\n public y: number = 0;\n public x: number = 0;\n public scrollBottom: number;\n public scrollTop: number;\n // TODO: Type me\n public tabs: any;\n public savedY: number = 0;\n public savedX: number = 0;\n public savedCurAttrData = DEFAULT_ATTR_DATA.clone();\n public savedCharset: ICharset | undefined = DEFAULT_CHARSET;\n public markers: Marker[] = [];\n private _nullCell: ICellData = CellData.fromCharData([0, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE]);\n private _whitespaceCell: ICellData = CellData.fromCharData([0, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_WIDTH, WHITESPACE_CELL_CODE]);\n private _cols: number;\n private _rows: number;\n private _isClearing: boolean = false;\n\n constructor(\n private _hasScrollback: boolean,\n private _optionsService: IOptionsService,\n private _bufferService: IBufferService\n ) {\n this._cols = this._bufferService.cols;\n this._rows = this._bufferService.rows;\n this.lines = new CircularList(this._getCorrectBufferLength(this._rows));\n this.scrollTop = 0;\n this.scrollBottom = this._rows - 1;\n this.setupTabStops();\n }\n\n public getNullCell(attr?: IAttributeData): ICellData {\n if (attr) {\n this._nullCell.fg = attr.fg;\n this._nullCell.bg = attr.bg;\n this._nullCell.extended = attr.extended;\n } else {\n this._nullCell.fg = 0;\n this._nullCell.bg = 0;\n this._nullCell.extended = new ExtendedAttrs();\n }\n return this._nullCell;\n }\n\n public getWhitespaceCell(attr?: IAttributeData): ICellData {\n if (attr) {\n this._whitespaceCell.fg = attr.fg;\n this._whitespaceCell.bg = attr.bg;\n this._whitespaceCell.extended = attr.extended;\n } else {\n this._whitespaceCell.fg = 0;\n this._whitespaceCell.bg = 0;\n this._whitespaceCell.extended = new ExtendedAttrs();\n }\n return this._whitespaceCell;\n }\n\n public getBlankLine(attr: IAttributeData, isWrapped?: boolean): IBufferLine {\n return new BufferLine(this._bufferService.cols, this.getNullCell(attr), isWrapped);\n }\n\n public get hasScrollback(): boolean {\n return this._hasScrollback && this.lines.maxLength > this._rows;\n }\n\n public get isCursorInViewport(): boolean {\n const absoluteY = this.ybase + this.y;\n const relativeY = absoluteY - this.ydisp;\n return (relativeY >= 0 && relativeY < this._rows);\n }\n\n /**\n * Gets the correct buffer length based on the rows provided, the terminal's\n * scrollback and whether this buffer is flagged to have scrollback or not.\n * @param rows The terminal rows to use in the calculation.\n */\n private _getCorrectBufferLength(rows: number): number {\n if (!this._hasScrollback) {\n return rows;\n }\n\n const correctBufferLength = rows + this._optionsService.rawOptions.scrollback;\n\n return correctBufferLength > MAX_BUFFER_SIZE ? MAX_BUFFER_SIZE : correctBufferLength;\n }\n\n /**\n * Fills the buffer's viewport with blank lines.\n */\n public fillViewportRows(fillAttr?: IAttributeData): void {\n if (this.lines.length === 0) {\n if (fillAttr === undefined) {\n fillAttr = DEFAULT_ATTR_DATA;\n }\n let i = this._rows;\n while (i--) {\n this.lines.push(this.getBlankLine(fillAttr));\n }\n }\n }\n\n /**\n * Clears the buffer to it's initial state, discarding all previous data.\n */\n public clear(): void {\n this.ydisp = 0;\n this.ybase = 0;\n this.y = 0;\n this.x = 0;\n this.lines = new CircularList(this._getCorrectBufferLength(this._rows));\n this.scrollTop = 0;\n this.scrollBottom = this._rows - 1;\n this.setupTabStops();\n }\n\n /**\n * Resizes the buffer, adjusting its data accordingly.\n * @param newCols The new number of columns.\n * @param newRows The new number of rows.\n */\n public resize(newCols: number, newRows: number): void {\n // store reference to null cell with default attrs\n const nullCell = this.getNullCell(DEFAULT_ATTR_DATA);\n\n // Increase max length if needed before adjustments to allow space to fill\n // as required.\n const newMaxLength = this._getCorrectBufferLength(newRows);\n if (newMaxLength > this.lines.maxLength) {\n this.lines.maxLength = newMaxLength;\n }\n\n // The following adjustments should only happen if the buffer has been\n // initialized/filled.\n if (this.lines.length > 0) {\n // Deal with columns increasing (reducing needs to happen after reflow)\n if (this._cols < newCols) {\n for (let i = 0; i < this.lines.length; i++) {\n this.lines.get(i)!.resize(newCols, nullCell);\n }\n }\n\n // Resize rows in both directions as needed\n let addToY = 0;\n if (this._rows < newRows) {\n for (let y = this._rows; y < newRows; y++) {\n if (this.lines.length < newRows + this.ybase) {\n if (this._optionsService.rawOptions.windowsMode) {\n // Just add the new missing rows on Windows as conpty reprints the screen with it's\n // view of the world. Once a line enters scrollback for conpty it remains there\n this.lines.push(new BufferLine(newCols, nullCell));\n } else {\n if (this.ybase > 0 && this.lines.length <= this.ybase + this.y + addToY + 1) {\n // There is room above the buffer and there are no empty elements below the line,\n // scroll up\n this.ybase--;\n addToY++;\n if (this.ydisp > 0) {\n // Viewport is at the top of the buffer, must increase downwards\n this.ydisp--;\n }\n } else {\n // Add a blank line if there is no buffer left at the top to scroll to, or if there\n // are blank lines after the cursor\n this.lines.push(new BufferLine(newCols, nullCell));\n }\n }\n }\n }\n } else { // (this._rows >= newRows)\n for (let y = this._rows; y > newRows; y--) {\n if (this.lines.length > newRows + this.ybase) {\n if (this.lines.length > this.ybase + this.y + 1) {\n // The line is a blank line below the cursor, remove it\n this.lines.pop();\n } else {\n // The line is the cursor, scroll down\n this.ybase++;\n this.ydisp++;\n }\n }\n }\n }\n\n // Reduce max length if needed after adjustments, this is done after as it\n // would otherwise cut data from the bottom of the buffer.\n if (newMaxLength < this.lines.maxLength) {\n // Trim from the top of the buffer and adjust ybase and ydisp.\n const amountToTrim = this.lines.length - newMaxLength;\n if (amountToTrim > 0) {\n this.lines.trimStart(amountToTrim);\n this.ybase = Math.max(this.ybase - amountToTrim, 0);\n this.ydisp = Math.max(this.ydisp - amountToTrim, 0);\n this.savedY = Math.max(this.savedY - amountToTrim, 0);\n }\n this.lines.maxLength = newMaxLength;\n }\n\n // Make sure that the cursor stays on screen\n this.x = Math.min(this.x, newCols - 1);\n this.y = Math.min(this.y, newRows - 1);\n if (addToY) {\n this.y += addToY;\n }\n this.savedX = Math.min(this.savedX, newCols - 1);\n\n this.scrollTop = 0;\n }\n\n this.scrollBottom = newRows - 1;\n\n if (this._isReflowEnabled) {\n this._reflow(newCols, newRows);\n\n // Trim the end of the line off if cols shrunk\n if (this._cols > newCols) {\n for (let i = 0; i < this.lines.length; i++) {\n this.lines.get(i)!.resize(newCols, nullCell);\n }\n }\n }\n\n this._cols = newCols;\n this._rows = newRows;\n }\n\n private get _isReflowEnabled(): boolean {\n return this._hasScrollback && !this._optionsService.rawOptions.windowsMode;\n }\n\n private _reflow(newCols: number, newRows: number): void {\n if (this._cols === newCols) {\n return;\n }\n\n // Iterate through rows, ignore the last one as it cannot be wrapped\n if (newCols > this._cols) {\n this._reflowLarger(newCols, newRows);\n } else {\n this._reflowSmaller(newCols, newRows);\n }\n }\n\n private _reflowLarger(newCols: number, newRows: number): void {\n const toRemove: number[] = reflowLargerGetLinesToRemove(this.lines, this._cols, newCols, this.ybase + this.y, this.getNullCell(DEFAULT_ATTR_DATA));\n if (toRemove.length > 0) {\n const newLayoutResult = reflowLargerCreateNewLayout(this.lines, toRemove);\n reflowLargerApplyNewLayout(this.lines, newLayoutResult.layout);\n this._reflowLargerAdjustViewport(newCols, newRows, newLayoutResult.countRemoved);\n }\n }\n\n private _reflowLargerAdjustViewport(newCols: number, newRows: number, countRemoved: number): void {\n const nullCell = this.getNullCell(DEFAULT_ATTR_DATA);\n // Adjust viewport based on number of items removed\n let viewportAdjustments = countRemoved;\n while (viewportAdjustments-- > 0) {\n if (this.ybase === 0) {\n if (this.y > 0) {\n this.y--;\n }\n if (this.lines.length < newRows) {\n // Add an extra row at the bottom of the viewport\n this.lines.push(new BufferLine(newCols, nullCell));\n }\n } else {\n if (this.ydisp === this.ybase) {\n this.ydisp--;\n }\n this.ybase--;\n }\n }\n this.savedY = Math.max(this.savedY - countRemoved, 0);\n }\n\n private _reflowSmaller(newCols: number, newRows: number): void {\n const nullCell = this.getNullCell(DEFAULT_ATTR_DATA);\n // Gather all BufferLines that need to be inserted into the Buffer here so that they can be\n // batched up and only committed once\n const toInsert = [];\n let countToInsert = 0;\n // Go backwards as many lines may be trimmed and this will avoid considering them\n for (let y = this.lines.length - 1; y >= 0; y--) {\n // Check whether this line is a problem\n let nextLine = this.lines.get(y) as BufferLine;\n if (!nextLine || !nextLine.isWrapped && nextLine.getTrimmedLength() <= newCols) {\n continue;\n }\n\n // Gather wrapped lines and adjust y to be the starting line\n const wrappedLines: BufferLine[] = [nextLine];\n while (nextLine.isWrapped && y > 0) {\n nextLine = this.lines.get(--y) as BufferLine;\n wrappedLines.unshift(nextLine);\n }\n\n // If these lines contain the cursor don't touch them, the program will handle fixing up\n // wrapped lines with the cursor\n const absoluteY = this.ybase + this.y;\n if (absoluteY >= y && absoluteY < y + wrappedLines.length) {\n continue;\n }\n\n const lastLineLength = wrappedLines[wrappedLines.length - 1].getTrimmedLength();\n const destLineLengths = reflowSmallerGetNewLineLengths(wrappedLines, this._cols, newCols);\n const linesToAdd = destLineLengths.length - wrappedLines.length;\n let trimmedLines: number;\n if (this.ybase === 0 && this.y !== this.lines.length - 1) {\n // If the top section of the buffer is not yet filled\n trimmedLines = Math.max(0, this.y - this.lines.maxLength + linesToAdd);\n } else {\n trimmedLines = Math.max(0, this.lines.length - this.lines.maxLength + linesToAdd);\n }\n\n // Add the new lines\n const newLines: BufferLine[] = [];\n for (let i = 0; i < linesToAdd; i++) {\n const newLine = this.getBlankLine(DEFAULT_ATTR_DATA, true) as BufferLine;\n newLines.push(newLine);\n }\n if (newLines.length > 0) {\n toInsert.push({\n // countToInsert here gets the actual index, taking into account other inserted items.\n // using this we can iterate through the list forwards\n start: y + wrappedLines.length + countToInsert,\n newLines\n });\n countToInsert += newLines.length;\n }\n wrappedLines.push(...newLines);\n\n // Copy buffer data to new locations, this needs to happen backwards to do in-place\n let destLineIndex = destLineLengths.length - 1; // Math.floor(cellsNeeded / newCols);\n let destCol = destLineLengths[destLineIndex]; // cellsNeeded % newCols;\n if (destCol === 0) {\n destLineIndex--;\n destCol = destLineLengths[destLineIndex];\n }\n let srcLineIndex = wrappedLines.length - linesToAdd - 1;\n let srcCol = lastLineLength;\n while (srcLineIndex >= 0) {\n const cellsToCopy = Math.min(srcCol, destCol);\n if (wrappedLines[destLineIndex] === undefined) {\n // Sanity check that the line exists, this has been known to fail for an unknown reason\n // which would stop the reflow from happening if an exception would throw.\n break;\n }\n wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[srcLineIndex], srcCol - cellsToCopy, destCol - cellsToCopy, cellsToCopy, true);\n destCol -= cellsToCopy;\n if (destCol === 0) {\n destLineIndex--;\n destCol = destLineLengths[destLineIndex];\n }\n srcCol -= cellsToCopy;\n if (srcCol === 0) {\n srcLineIndex--;\n const wrappedLinesIndex = Math.max(srcLineIndex, 0);\n srcCol = getWrappedLineTrimmedLength(wrappedLines, wrappedLinesIndex, this._cols);\n }\n }\n\n // Null out the end of the line ends if a wide character wrapped to the following line\n for (let i = 0; i < wrappedLines.length; i++) {\n if (destLineLengths[i] < newCols) {\n wrappedLines[i].setCell(destLineLengths[i], nullCell);\n }\n }\n\n // Adjust viewport as needed\n let viewportAdjustments = linesToAdd - trimmedLines;\n while (viewportAdjustments-- > 0) {\n if (this.ybase === 0) {\n if (this.y < newRows - 1) {\n this.y++;\n this.lines.pop();\n } else {\n this.ybase++;\n this.ydisp++;\n }\n } else {\n // Ensure ybase does not exceed its maximum value\n if (this.ybase < Math.min(this.lines.maxLength, this.lines.length + countToInsert) - newRows) {\n if (this.ybase === this.ydisp) {\n this.ydisp++;\n }\n this.ybase++;\n }\n }\n }\n this.savedY = Math.min(this.savedY + linesToAdd, this.ybase + newRows - 1);\n }\n\n // Rearrange lines in the buffer if there are any insertions, this is done at the end rather\n // than earlier so that it's a single O(n) pass through the buffer, instead of O(n^2) from many\n // costly calls to CircularList.splice.\n if (toInsert.length > 0) {\n // Record buffer insert events and then play them back backwards so that the indexes are\n // correct\n const insertEvents: IInsertEvent[] = [];\n\n // Record original lines so they don't get overridden when we rearrange the list\n const originalLines: BufferLine[] = [];\n for (let i = 0; i < this.lines.length; i++) {\n originalLines.push(this.lines.get(i) as BufferLine);\n }\n const originalLinesLength = this.lines.length;\n\n let originalLineIndex = originalLinesLength - 1;\n let nextToInsertIndex = 0;\n let nextToInsert = toInsert[nextToInsertIndex];\n this.lines.length = Math.min(this.lines.maxLength, this.lines.length + countToInsert);\n let countInsertedSoFar = 0;\n for (let i = Math.min(this.lines.maxLength - 1, originalLinesLength + countToInsert - 1); i >= 0; i--) {\n if (nextToInsert && nextToInsert.start > originalLineIndex + countInsertedSoFar) {\n // Insert extra lines here, adjusting i as needed\n for (let nextI = nextToInsert.newLines.length - 1; nextI >= 0; nextI--) {\n this.lines.set(i--, nextToInsert.newLines[nextI]);\n }\n i++;\n\n // Create insert events for later\n insertEvents.push({\n index: originalLineIndex + 1,\n amount: nextToInsert.newLines.length\n });\n\n countInsertedSoFar += nextToInsert.newLines.length;\n nextToInsert = toInsert[++nextToInsertIndex];\n } else {\n this.lines.set(i, originalLines[originalLineIndex--]);\n }\n }\n\n // Update markers\n let insertCountEmitted = 0;\n for (let i = insertEvents.length - 1; i >= 0; i--) {\n insertEvents[i].index += insertCountEmitted;\n this.lines.onInsertEmitter.fire(insertEvents[i]);\n insertCountEmitted += insertEvents[i].amount;\n }\n const amountToTrim = Math.max(0, originalLinesLength + countToInsert - this.lines.maxLength);\n if (amountToTrim > 0) {\n this.lines.onTrimEmitter.fire(amountToTrim);\n }\n }\n }\n\n // private _reflowSmallerGetLinesNeeded()\n\n /**\n * Translates a string index back to a BufferIndex.\n * To get the correct buffer position the string must start at `startCol` 0\n * (default in translateBufferLineToString).\n * The method also works on wrapped line strings given rows were not trimmed.\n * The method operates on the CharData string length, there are no\n * additional content or boundary checks. Therefore the string and the buffer\n * should not be altered in between.\n * TODO: respect trim flag after fixing #1685\n * @param lineIndex line index the string was retrieved from\n * @param stringIndex index within the string\n * @param startCol column offset the string was retrieved from\n */\n public stringIndexToBufferIndex(lineIndex: number, stringIndex: number, trimRight: boolean = false): BufferIndex {\n while (stringIndex) {\n const line = this.lines.get(lineIndex);\n if (!line) {\n return [-1, -1];\n }\n const length = (trimRight) ? line.getTrimmedLength() : line.length;\n for (let i = 0; i < length; ++i) {\n if (line.get(i)[CHAR_DATA_WIDTH_INDEX]) {\n // empty cells report a string length of 0, but get replaced\n // with a whitespace in translateToString, thus replace with 1\n stringIndex -= line.get(i)[CHAR_DATA_CHAR_INDEX].length || 1;\n }\n if (stringIndex < 0) {\n return [lineIndex, i];\n }\n }\n lineIndex++;\n }\n return [lineIndex, 0];\n }\n\n /**\n * Translates a buffer line to a string, with optional start and end columns.\n * Wide characters will count as two columns in the resulting string. This\n * function is useful for getting the actual text underneath the raw selection\n * position.\n * @param line The line being translated.\n * @param trimRight Whether to trim whitespace to the right.\n * @param startCol The column to start at.\n * @param endCol The column to end at.\n */\n public translateBufferLineToString(lineIndex: number, trimRight: boolean, startCol: number = 0, endCol?: number): string {\n const line = this.lines.get(lineIndex);\n if (!line) {\n return '';\n }\n return line.translateToString(trimRight, startCol, endCol);\n }\n\n public getWrappedRangeForLine(y: number): { first: number, last: number } {\n let first = y;\n let last = y;\n // Scan upwards for wrapped lines\n while (first > 0 && this.lines.get(first)!.isWrapped) {\n first--;\n }\n // Scan downwards for wrapped lines\n while (last + 1 < this.lines.length && this.lines.get(last + 1)!.isWrapped) {\n last++;\n }\n return { first, last };\n }\n\n /**\n * Setup the tab stops.\n * @param i The index to start setting up tab stops from.\n */\n public setupTabStops(i?: number): void {\n if (i !== null && i !== undefined) {\n if (!this.tabs[i]) {\n i = this.prevStop(i);\n }\n } else {\n this.tabs = {};\n i = 0;\n }\n\n for (; i < this._cols; i += this._optionsService.rawOptions.tabStopWidth) {\n this.tabs[i] = true;\n }\n }\n\n /**\n * Move the cursor to the previous tab stop from the given position (default is current).\n * @param x The position to move the cursor to the previous tab stop.\n */\n public prevStop(x?: number): number {\n if (x === null || x === undefined) {\n x = this.x;\n }\n while (!this.tabs[--x] && x > 0);\n return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;\n }\n\n /**\n * Move the cursor one tab stop forward from the given position (default is current).\n * @param x The position to move the cursor one tab stop forward.\n */\n public nextStop(x?: number): number {\n if (x === null || x === undefined) {\n x = this.x;\n }\n while (!this.tabs[++x] && x < this._cols);\n return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;\n }\n\n public clearMarkers(y?: number): void {\n this._isClearing = true;\n if (y !== undefined) {\n for (let i = 0; i < this.markers.length; i++) {\n if (this.markers[i].line === y) {\n this.markers[i].dispose();\n this.markers.splice(i--, 1);\n }\n }\n } else {\n for (const marker of this.markers) {\n marker.dispose();\n }\n this.markers = [];\n }\n this._isClearing = false;\n }\n\n public addMarker(y: number): Marker {\n const marker = new Marker(y);\n this.markers.push(marker);\n marker.register(this.lines.onTrim(amount => {\n marker.line -= amount;\n // The marker should be disposed when the line is trimmed from the buffer\n if (marker.line < 0) {\n marker.dispose();\n }\n }));\n marker.register(this.lines.onInsert(event => {\n if (marker.line >= event.index) {\n marker.line += event.amount;\n }\n }));\n marker.register(this.lines.onDelete(event => {\n // Delete the marker if it's within the range\n if (marker.line >= event.index && marker.line < event.index + event.amount) {\n marker.dispose();\n }\n\n // Shift the marker if it's after the deleted range\n if (marker.line > event.index) {\n marker.line -= event.amount;\n }\n }));\n marker.register(marker.onDispose(() => this._removeMarker(marker)));\n return marker;\n }\n\n private _removeMarker(marker: Marker): void {\n if (!this._isClearing) {\n this.markers.splice(this.markers.indexOf(marker), 1);\n }\n }\n\n public iterator(trimRight: boolean, startIndex?: number, endIndex?: number, startOverscan?: number, endOverscan?: number): IBufferStringIterator {\n return new BufferStringIterator(this, trimRight, startIndex, endIndex, startOverscan, endOverscan);\n }\n}\n\n/**\n * Iterator to get unwrapped content strings from the buffer.\n * The iterator returns at least the string data between the borders\n * `startIndex` and `endIndex` (exclusive) and will expand the lines\n * by `startOverscan` to the top and by `endOverscan` to the bottom,\n * if no new line was found in between.\n * It will never read/return string data beyond `startIndex - startOverscan`\n * or `endIndex + endOverscan`. Therefore the first and last line might be truncated.\n * It is possible to always get the full string for the first and last line as well\n * by setting the overscan values to the actual buffer length. This not recommended\n * since it might return the whole buffer within a single string in a worst case scenario.\n */\nexport class BufferStringIterator implements IBufferStringIterator {\n private _current: number;\n\n constructor (\n private _buffer: IBuffer,\n private _trimRight: boolean,\n private _startIndex: number = 0,\n private _endIndex: number = _buffer.lines.length,\n private _startOverscan: number = 0,\n private _endOverscan: number = 0\n ) {\n if (this._startIndex < 0) {\n this._startIndex = 0;\n }\n if (this._endIndex > this._buffer.lines.length) {\n this._endIndex = this._buffer.lines.length;\n }\n this._current = this._startIndex;\n }\n\n public hasNext(): boolean {\n return this._current < this._endIndex;\n }\n\n public next(): IBufferStringIteratorResult {\n const range = this._buffer.getWrappedRangeForLine(this._current);\n // limit search window to overscan value at both borders\n if (range.first < this._startIndex - this._startOverscan) {\n range.first = this._startIndex - this._startOverscan;\n }\n if (range.last > this._endIndex + this._endOverscan) {\n range.last = this._endIndex + this._endOverscan;\n }\n // limit to current buffer length\n range.first = Math.max(range.first, 0);\n range.last = Math.min(range.last, this._buffer.lines.length);\n let content = '';\n for (let i = range.first; i <= range.last; ++i) {\n content += this._buffer.translateBufferLineToString(i, this._trimRight);\n }\n this._current = range.last + 1;\n return { range, content };\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CharData, IBufferLine, ICellData, IAttributeData, IExtendedAttrs } from 'common/Types';\nimport { stringFromCodePoint } from 'common/input/TextDecoder';\nimport { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_ATTR_INDEX, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE, WHITESPACE_CELL_CHAR, Content, BgFlags } from 'common/buffer/Constants';\nimport { CellData } from 'common/buffer/CellData';\nimport { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData';\n\n/**\n * buffer memory layout:\n *\n * | uint32_t | uint32_t | uint32_t |\n * | `content` | `FG` | `BG` |\n * | wcwidth(2) comb(1) codepoint(21) | flags(8) R(8) G(8) B(8) | flags(8) R(8) G(8) B(8) |\n */\n\n\n/** typed array slots taken by one cell */\nconst CELL_SIZE = 3;\n\n/**\n * Cell member indices.\n *\n * Direct access:\n * `content = data[column * CELL_SIZE + Cell.CONTENT];`\n * `fg = data[column * CELL_SIZE + Cell.FG];`\n * `bg = data[column * CELL_SIZE + Cell.BG];`\n */\nconst enum Cell {\n CONTENT = 0,\n FG = 1, // currently simply holds all known attrs\n BG = 2 // currently unused\n}\n\nexport const DEFAULT_ATTR_DATA = Object.freeze(new AttributeData());\n\n/**\n * Typed array based bufferline implementation.\n *\n * There are 2 ways to insert data into the cell buffer:\n * - `setCellFromCodepoint` + `addCodepointToCell`\n * Use these for data that is already UTF32.\n * Used during normal input in `InputHandler` for faster buffer access.\n * - `setCell`\n * This method takes a CellData object and stores the data in the buffer.\n * Use `CellData.fromCharData` to create the CellData object (e.g. from JS string).\n *\n * To retrieve data from the buffer use either one of the primitive methods\n * (if only one particular value is needed) or `loadCell`. For `loadCell` in a loop\n * memory allocs / GC pressure can be greatly reduced by reusing the CellData object.\n */\nexport class BufferLine implements IBufferLine {\n protected _data: Uint32Array;\n protected _combined: {[index: number]: string} = {};\n protected _extendedAttrs: {[index: number]: ExtendedAttrs} = {};\n public length: number;\n\n constructor(cols: number, fillCellData?: ICellData, public isWrapped: boolean = false) {\n this._data = new Uint32Array(cols * CELL_SIZE);\n const cell = fillCellData || CellData.fromCharData([0, NULL_CELL_CHAR, NULL_CELL_WIDTH, NULL_CELL_CODE]);\n for (let i = 0; i < cols; ++i) {\n this.setCell(i, cell);\n }\n this.length = cols;\n }\n\n /**\n * Get cell data CharData.\n * @deprecated\n */\n public get(index: number): CharData {\n const content = this._data[index * CELL_SIZE + Cell.CONTENT];\n const cp = content & Content.CODEPOINT_MASK;\n return [\n this._data[index * CELL_SIZE + Cell.FG],\n (content & Content.IS_COMBINED_MASK)\n ? this._combined[index]\n : (cp) ? stringFromCodePoint(cp) : '',\n content >> Content.WIDTH_SHIFT,\n (content & Content.IS_COMBINED_MASK)\n ? this._combined[index].charCodeAt(this._combined[index].length - 1)\n : cp\n ];\n }\n\n /**\n * Set cell data from CharData.\n * @deprecated\n */\n public set(index: number, value: CharData): void {\n this._data[index * CELL_SIZE + Cell.FG] = value[CHAR_DATA_ATTR_INDEX];\n if (value[CHAR_DATA_CHAR_INDEX].length > 1) {\n this._combined[index] = value[1];\n this._data[index * CELL_SIZE + Cell.CONTENT] = index | Content.IS_COMBINED_MASK | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n } else {\n this._data[index * CELL_SIZE + Cell.CONTENT] = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n }\n\n /**\n * primitive getters\n * use these when only one value is needed, otherwise use `loadCell`\n */\n public getWidth(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] >> Content.WIDTH_SHIFT;\n }\n\n /** Test whether content has width. */\n public hasWidth(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] & Content.WIDTH_MASK;\n }\n\n /** Get FG cell component. */\n public getFg(index: number): number {\n return this._data[index * CELL_SIZE + Cell.FG];\n }\n\n /** Get BG cell component. */\n public getBg(index: number): number {\n return this._data[index * CELL_SIZE + Cell.BG];\n }\n\n /**\n * Test whether contains any chars.\n * Basically an empty has no content, but other cells might differ in FG/BG\n * from real empty cells.\n * */\n public hasContent(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] & Content.HAS_CONTENT_MASK;\n }\n\n /**\n * Get codepoint of the cell.\n * To be in line with `code` in CharData this either returns\n * a single UTF32 codepoint or the last codepoint of a combined string.\n */\n public getCodePoint(index: number): number {\n const content = this._data[index * CELL_SIZE + Cell.CONTENT];\n if (content & Content.IS_COMBINED_MASK) {\n return this._combined[index].charCodeAt(this._combined[index].length - 1);\n }\n return content & Content.CODEPOINT_MASK;\n }\n\n /** Test whether the cell contains a combined string. */\n public isCombined(index: number): number {\n return this._data[index * CELL_SIZE + Cell.CONTENT] & Content.IS_COMBINED_MASK;\n }\n\n /** Returns the string content of the cell. */\n public getString(index: number): string {\n const content = this._data[index * CELL_SIZE + Cell.CONTENT];\n if (content & Content.IS_COMBINED_MASK) {\n return this._combined[index];\n }\n if (content & Content.CODEPOINT_MASK) {\n return stringFromCodePoint(content & Content.CODEPOINT_MASK);\n }\n // return empty string for empty cells\n return '';\n }\n\n /**\n * Load data at `index` into `cell`. This is used to access cells in a way that's more friendly\n * to GC as it significantly reduced the amount of new objects/references needed.\n */\n public loadCell(index: number, cell: ICellData): ICellData {\n const startIndex = index * CELL_SIZE;\n cell.content = this._data[startIndex + Cell.CONTENT];\n cell.fg = this._data[startIndex + Cell.FG];\n cell.bg = this._data[startIndex + Cell.BG];\n if (cell.content & Content.IS_COMBINED_MASK) {\n cell.combinedData = this._combined[index];\n }\n if (cell.bg & BgFlags.HAS_EXTENDED) {\n cell.extended = this._extendedAttrs[index];\n }\n return cell;\n }\n\n /**\n * Set data at `index` to `cell`.\n */\n public setCell(index: number, cell: ICellData): void {\n if (cell.content & Content.IS_COMBINED_MASK) {\n this._combined[index] = cell.combinedData;\n }\n if (cell.bg & BgFlags.HAS_EXTENDED) {\n this._extendedAttrs[index] = cell.extended;\n }\n this._data[index * CELL_SIZE + Cell.CONTENT] = cell.content;\n this._data[index * CELL_SIZE + Cell.FG] = cell.fg;\n this._data[index * CELL_SIZE + Cell.BG] = cell.bg;\n }\n\n /**\n * Set cell data from input handler.\n * Since the input handler see the incoming chars as UTF32 codepoints,\n * it gets an optimized access method.\n */\n public setCellFromCodePoint(index: number, codePoint: number, width: number, fg: number, bg: number, eAttrs: IExtendedAttrs): void {\n if (bg & BgFlags.HAS_EXTENDED) {\n this._extendedAttrs[index] = eAttrs;\n }\n this._data[index * CELL_SIZE + Cell.CONTENT] = codePoint | (width << Content.WIDTH_SHIFT);\n this._data[index * CELL_SIZE + Cell.FG] = fg;\n this._data[index * CELL_SIZE + Cell.BG] = bg;\n }\n\n /**\n * Add a codepoint to a cell from input handler.\n * During input stage combining chars with a width of 0 follow and stack\n * onto a leading char. Since we already set the attrs\n * by the previous `setDataFromCodePoint` call, we can omit it here.\n */\n public addCodepointToCell(index: number, codePoint: number): void {\n let content = this._data[index * CELL_SIZE + Cell.CONTENT];\n if (content & Content.IS_COMBINED_MASK) {\n // we already have a combined string, simply add\n this._combined[index] += stringFromCodePoint(codePoint);\n } else {\n if (content & Content.CODEPOINT_MASK) {\n // normal case for combining chars:\n // - move current leading char + new one into combined string\n // - set combined flag\n this._combined[index] = stringFromCodePoint(content & Content.CODEPOINT_MASK) + stringFromCodePoint(codePoint);\n content &= ~Content.CODEPOINT_MASK; // set codepoint in buffer to 0\n content |= Content.IS_COMBINED_MASK;\n } else {\n // should not happen - we actually have no data in the cell yet\n // simply set the data in the cell buffer with a width of 1\n content = codePoint | (1 << Content.WIDTH_SHIFT);\n }\n this._data[index * CELL_SIZE + Cell.CONTENT] = content;\n }\n }\n\n public insertCells(pos: number, n: number, fillCellData: ICellData, eraseAttr?: IAttributeData): void {\n pos %= this.length;\n\n // handle fullwidth at pos: reset cell one to the left if pos is second cell of a wide char\n if (pos && this.getWidth(pos - 1) === 2) {\n this.setCellFromCodePoint(pos - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n\n if (n < this.length - pos) {\n const cell = new CellData();\n for (let i = this.length - pos - n - 1; i >= 0; --i) {\n this.setCell(pos + n + i, this.loadCell(pos + i, cell));\n }\n for (let i = 0; i < n; ++i) {\n this.setCell(pos + i, fillCellData);\n }\n } else {\n for (let i = pos; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n }\n\n // handle fullwidth at line end: reset last cell if it is first cell of a wide char\n if (this.getWidth(this.length - 1) === 2) {\n this.setCellFromCodePoint(this.length - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n }\n\n public deleteCells(pos: number, n: number, fillCellData: ICellData, eraseAttr?: IAttributeData): void {\n pos %= this.length;\n if (n < this.length - pos) {\n const cell = new CellData();\n for (let i = 0; i < this.length - pos - n; ++i) {\n this.setCell(pos + i, this.loadCell(pos + n + i, cell));\n }\n for (let i = this.length - n; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n } else {\n for (let i = pos; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n }\n\n // handle fullwidth at pos:\n // - reset pos-1 if wide char\n // - reset pos if width==0 (previous second cell of a wide char)\n if (pos && this.getWidth(pos - 1) === 2) {\n this.setCellFromCodePoint(pos - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n if (this.getWidth(pos) === 0 && !this.hasContent(pos)) {\n this.setCellFromCodePoint(pos, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n }\n\n public replaceCells(start: number, end: number, fillCellData: ICellData, eraseAttr?: IAttributeData): void {\n // handle fullwidth at start: reset cell one to the left if start is second cell of a wide char\n if (start && this.getWidth(start - 1) === 2) {\n this.setCellFromCodePoint(start - 1, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n // handle fullwidth at last cell + 1: reset to empty cell if it is second part of a wide char\n if (end < this.length && this.getWidth(end - 1) === 2) {\n this.setCellFromCodePoint(end, 0, 1, eraseAttr?.fg || 0, eraseAttr?.bg || 0, eraseAttr?.extended || new ExtendedAttrs());\n }\n\n while (start < end && start < this.length) {\n this.setCell(start++, fillCellData);\n }\n }\n\n public resize(cols: number, fillCellData: ICellData): void {\n if (cols === this.length) {\n return;\n }\n if (cols > this.length) {\n const data = new Uint32Array(cols * CELL_SIZE);\n if (this.length) {\n if (cols * CELL_SIZE < this._data.length) {\n data.set(this._data.subarray(0, cols * CELL_SIZE));\n } else {\n data.set(this._data);\n }\n }\n this._data = data;\n for (let i = this.length; i < cols; ++i) {\n this.setCell(i, fillCellData);\n }\n } else {\n if (cols) {\n const data = new Uint32Array(cols * CELL_SIZE);\n data.set(this._data.subarray(0, cols * CELL_SIZE));\n this._data = data;\n // Remove any cut off combined data, FIXME: repeat this for extended attrs\n const keys = Object.keys(this._combined);\n for (let i = 0; i < keys.length; i++) {\n const key = parseInt(keys[i], 10);\n if (key >= cols) {\n delete this._combined[key];\n }\n }\n } else {\n this._data = new Uint32Array(0);\n this._combined = {};\n }\n }\n this.length = cols;\n }\n\n /** fill a line with fillCharData */\n public fill(fillCellData: ICellData): void {\n this._combined = {};\n this._extendedAttrs = {};\n for (let i = 0; i < this.length; ++i) {\n this.setCell(i, fillCellData);\n }\n }\n\n /** alter to a full copy of line */\n public copyFrom(line: BufferLine): void {\n if (this.length !== line.length) {\n this._data = new Uint32Array(line._data);\n } else {\n // use high speed copy if lengths are equal\n this._data.set(line._data);\n }\n this.length = line.length;\n this._combined = {};\n for (const el in line._combined) {\n this._combined[el] = line._combined[el];\n }\n this._extendedAttrs = {};\n for (const el in line._extendedAttrs) {\n this._extendedAttrs[el] = line._extendedAttrs[el];\n }\n this.isWrapped = line.isWrapped;\n }\n\n /** create a new clone */\n public clone(): IBufferLine {\n const newLine = new BufferLine(0);\n newLine._data = new Uint32Array(this._data);\n newLine.length = this.length;\n for (const el in this._combined) {\n newLine._combined[el] = this._combined[el];\n }\n for (const el in this._extendedAttrs) {\n newLine._extendedAttrs[el] = this._extendedAttrs[el];\n }\n newLine.isWrapped = this.isWrapped;\n return newLine;\n }\n\n public getTrimmedLength(): number {\n for (let i = this.length - 1; i >= 0; --i) {\n if ((this._data[i * CELL_SIZE + Cell.CONTENT] & Content.HAS_CONTENT_MASK)) {\n return i + (this._data[i * CELL_SIZE + Cell.CONTENT] >> Content.WIDTH_SHIFT);\n }\n }\n return 0;\n }\n\n public copyCellsFrom(src: BufferLine, srcCol: number, destCol: number, length: number, applyInReverse: boolean): void {\n const srcData = src._data;\n if (applyInReverse) {\n for (let cell = length - 1; cell >= 0; cell--) {\n for (let i = 0; i < CELL_SIZE; i++) {\n this._data[(destCol + cell) * CELL_SIZE + i] = srcData[(srcCol + cell) * CELL_SIZE + i];\n }\n }\n } else {\n for (let cell = 0; cell < length; cell++) {\n for (let i = 0; i < CELL_SIZE; i++) {\n this._data[(destCol + cell) * CELL_SIZE + i] = srcData[(srcCol + cell) * CELL_SIZE + i];\n }\n }\n }\n\n // Move any combined data over as needed, FIXME: repeat for extended attrs\n const srcCombinedKeys = Object.keys(src._combined);\n for (let i = 0; i < srcCombinedKeys.length; i++) {\n const key = parseInt(srcCombinedKeys[i], 10);\n if (key >= srcCol) {\n this._combined[key - srcCol + destCol] = src._combined[key];\n }\n }\n }\n\n public translateToString(trimRight: boolean = false, startCol: number = 0, endCol: number = this.length): string {\n if (trimRight) {\n endCol = Math.min(endCol, this.getTrimmedLength());\n }\n let result = '';\n while (startCol < endCol) {\n const content = this._data[startCol * CELL_SIZE + Cell.CONTENT];\n const cp = content & Content.CODEPOINT_MASK;\n result += (content & Content.IS_COMBINED_MASK) ? this._combined[startCol] : (cp) ? stringFromCodePoint(cp) : WHITESPACE_CELL_CHAR;\n startCol += (content >> Content.WIDTH_SHIFT) || 1; // always advance by 1\n }\n return result;\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferRange } from 'xterm';\n\nexport function getRangeLength(range: IBufferRange, bufferCols: number): number {\n if (range.start.y > range.end.y) {\n throw new Error(`Buffer range end (${range.end.x}, ${range.end.y}) cannot be before start (${range.start.x}, ${range.start.y})`);\n }\n return bufferCols * (range.end.y - range.start.y) + (range.end.x - range.start.x + 1);\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { BufferLine } from 'common/buffer/BufferLine';\nimport { CircularList } from 'common/CircularList';\nimport { IBufferLine, ICellData } from 'common/Types';\n\nexport interface INewLayoutResult {\n layout: number[];\n countRemoved: number;\n}\n\n/**\n * Evaluates and returns indexes to be removed after a reflow larger occurs. Lines will be removed\n * when a wrapped line unwraps.\n * @param lines The buffer lines.\n * @param newCols The columns after resize.\n */\nexport function reflowLargerGetLinesToRemove(lines: CircularList, oldCols: number, newCols: number, bufferAbsoluteY: number, nullCell: ICellData): number[] {\n // Gather all BufferLines that need to be removed from the Buffer here so that they can be\n // batched up and only committed once\n const toRemove: number[] = [];\n\n for (let y = 0; y < lines.length - 1; y++) {\n // Check if this row is wrapped\n let i = y;\n let nextLine = lines.get(++i) as BufferLine;\n if (!nextLine.isWrapped) {\n continue;\n }\n\n // Check how many lines it's wrapped for\n const wrappedLines: BufferLine[] = [lines.get(y) as BufferLine];\n while (i < lines.length && nextLine.isWrapped) {\n wrappedLines.push(nextLine);\n nextLine = lines.get(++i) as BufferLine;\n }\n\n // If these lines contain the cursor don't touch them, the program will handle fixing up wrapped\n // lines with the cursor\n if (bufferAbsoluteY >= y && bufferAbsoluteY < i) {\n y += wrappedLines.length - 1;\n continue;\n }\n\n // Copy buffer data to new locations\n let destLineIndex = 0;\n let destCol = getWrappedLineTrimmedLength(wrappedLines, destLineIndex, oldCols);\n let srcLineIndex = 1;\n let srcCol = 0;\n while (srcLineIndex < wrappedLines.length) {\n const srcTrimmedTineLength = getWrappedLineTrimmedLength(wrappedLines, srcLineIndex, oldCols);\n const srcRemainingCells = srcTrimmedTineLength - srcCol;\n const destRemainingCells = newCols - destCol;\n const cellsToCopy = Math.min(srcRemainingCells, destRemainingCells);\n\n wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[srcLineIndex], srcCol, destCol, cellsToCopy, false);\n\n destCol += cellsToCopy;\n if (destCol === newCols) {\n destLineIndex++;\n destCol = 0;\n }\n srcCol += cellsToCopy;\n if (srcCol === srcTrimmedTineLength) {\n srcLineIndex++;\n srcCol = 0;\n }\n\n // Make sure the last cell isn't wide, if it is copy it to the current dest\n if (destCol === 0 && destLineIndex !== 0) {\n if (wrappedLines[destLineIndex - 1].getWidth(newCols - 1) === 2) {\n wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[destLineIndex - 1], newCols - 1, destCol++, 1, false);\n // Null out the end of the last row\n wrappedLines[destLineIndex - 1].setCell(newCols - 1, nullCell);\n }\n }\n }\n\n // Clear out remaining cells or fragments could remain;\n wrappedLines[destLineIndex].replaceCells(destCol, newCols, nullCell);\n\n // Work backwards and remove any rows at the end that only contain null cells\n let countToRemove = 0;\n for (let i = wrappedLines.length - 1; i > 0; i--) {\n if (i > destLineIndex || wrappedLines[i].getTrimmedLength() === 0) {\n countToRemove++;\n } else {\n break;\n }\n }\n\n if (countToRemove > 0) {\n toRemove.push(y + wrappedLines.length - countToRemove); // index\n toRemove.push(countToRemove);\n }\n\n y += wrappedLines.length - 1;\n }\n return toRemove;\n}\n\n/**\n * Creates and return the new layout for lines given an array of indexes to be removed.\n * @param lines The buffer lines.\n * @param toRemove The indexes to remove.\n */\nexport function reflowLargerCreateNewLayout(lines: CircularList, toRemove: number[]): INewLayoutResult {\n const layout: number[] = [];\n // First iterate through the list and get the actual indexes to use for rows\n let nextToRemoveIndex = 0;\n let nextToRemoveStart = toRemove[nextToRemoveIndex];\n let countRemovedSoFar = 0;\n for (let i = 0; i < lines.length; i++) {\n if (nextToRemoveStart === i) {\n const countToRemove = toRemove[++nextToRemoveIndex];\n\n // Tell markers that there was a deletion\n lines.onDeleteEmitter.fire({\n index: i - countRemovedSoFar,\n amount: countToRemove\n });\n\n i += countToRemove - 1;\n countRemovedSoFar += countToRemove;\n nextToRemoveStart = toRemove[++nextToRemoveIndex];\n } else {\n layout.push(i);\n }\n }\n return {\n layout,\n countRemoved: countRemovedSoFar\n };\n}\n\n/**\n * Applies a new layout to the buffer. This essentially does the same as many splice calls but it's\n * done all at once in a single iteration through the list since splice is very expensive.\n * @param lines The buffer lines.\n * @param newLayout The new layout to apply.\n */\nexport function reflowLargerApplyNewLayout(lines: CircularList, newLayout: number[]): void {\n // Record original lines so they don't get overridden when we rearrange the list\n const newLayoutLines: BufferLine[] = [];\n for (let i = 0; i < newLayout.length; i++) {\n newLayoutLines.push(lines.get(newLayout[i]) as BufferLine);\n }\n\n // Rearrange the list\n for (let i = 0; i < newLayoutLines.length; i++) {\n lines.set(i, newLayoutLines[i]);\n }\n lines.length = newLayout.length;\n}\n\n/**\n * Gets the new line lengths for a given wrapped line. The purpose of this function it to pre-\n * compute the wrapping points since wide characters may need to be wrapped onto the following line.\n * This function will return an array of numbers of where each line wraps to, the resulting array\n * will only contain the values `newCols` (when the line does not end with a wide character) and\n * `newCols - 1` (when the line does end with a wide character), except for the last value which\n * will contain the remaining items to fill the line.\n *\n * Calling this with a `newCols` value of `1` will lock up.\n *\n * @param wrappedLines The wrapped lines to evaluate.\n * @param oldCols The columns before resize.\n * @param newCols The columns after resize.\n */\nexport function reflowSmallerGetNewLineLengths(wrappedLines: BufferLine[], oldCols: number, newCols: number): number[] {\n const newLineLengths: number[] = [];\n const cellsNeeded = wrappedLines.map((l, i) => getWrappedLineTrimmedLength(wrappedLines, i, oldCols)).reduce((p, c) => p + c);\n\n // Use srcCol and srcLine to find the new wrapping point, use that to get the cellsAvailable and\n // linesNeeded\n let srcCol = 0;\n let srcLine = 0;\n let cellsAvailable = 0;\n while (cellsAvailable < cellsNeeded) {\n if (cellsNeeded - cellsAvailable < newCols) {\n // Add the final line and exit the loop\n newLineLengths.push(cellsNeeded - cellsAvailable);\n break;\n }\n srcCol += newCols;\n const oldTrimmedLength = getWrappedLineTrimmedLength(wrappedLines, srcLine, oldCols);\n if (srcCol > oldTrimmedLength) {\n srcCol -= oldTrimmedLength;\n srcLine++;\n }\n const endsWithWide = wrappedLines[srcLine].getWidth(srcCol - 1) === 2;\n if (endsWithWide) {\n srcCol--;\n }\n const lineLength = endsWithWide ? newCols - 1 : newCols;\n newLineLengths.push(lineLength);\n cellsAvailable += lineLength;\n }\n\n return newLineLengths;\n}\n\nexport function getWrappedLineTrimmedLength(lines: BufferLine[], i: number, cols: number): number {\n // If this is the last row in the wrapped line, get the actual trimmed length\n if (i === lines.length - 1) {\n return lines[i].getTrimmedLength();\n }\n // Detect whether the following line starts with a wide character and the end of the current line\n // is null, if so then we can be pretty sure the null character should be excluded from the line\n // length]\n const endsInNull = !(lines[i].hasContent(cols - 1)) && lines[i].getWidth(cols - 1) === 1;\n const followingLineStartsWithWide = lines[i + 1].getWidth(0) === 2;\n if (endsInNull && followingLineStartsWithWide) {\n return cols - 1;\n }\n return cols;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBuffer, IBufferSet } from 'common/buffer/Types';\nimport { IAttributeData } from 'common/Types';\nimport { Buffer } from 'common/buffer/Buffer';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IOptionsService, IBufferService } from 'common/services/Services';\nimport { Disposable } from 'common/Lifecycle';\n\n/**\n * The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and\n * provides also utilities for working with them.\n */\nexport class BufferSet extends Disposable implements IBufferSet {\n private _normal!: Buffer;\n private _alt!: Buffer;\n private _activeBuffer!: Buffer;\n\n private _onBufferActivate = this.register(new EventEmitter<{activeBuffer: IBuffer, inactiveBuffer: IBuffer}>());\n public get onBufferActivate(): IEvent<{activeBuffer: IBuffer, inactiveBuffer: IBuffer}> { return this._onBufferActivate.event; }\n\n /**\n * Create a new BufferSet for the given terminal.\n * @param _terminal - The terminal the BufferSet will belong to\n */\n constructor(\n private readonly _optionsService: IOptionsService,\n private readonly _bufferService: IBufferService\n ) {\n super();\n this.reset();\n }\n\n public reset(): void {\n this._normal = new Buffer(true, this._optionsService, this._bufferService);\n this._normal.fillViewportRows();\n\n // The alt buffer should never have scrollback.\n // See http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer\n this._alt = new Buffer(false, this._optionsService, this._bufferService);\n this._activeBuffer = this._normal;\n this._onBufferActivate.fire({\n activeBuffer: this._normal,\n inactiveBuffer: this._alt\n });\n\n this.setupTabStops();\n }\n\n /**\n * Returns the alt Buffer of the BufferSet\n */\n public get alt(): Buffer {\n return this._alt;\n }\n\n /**\n * Returns the normal Buffer of the BufferSet\n */\n public get active(): Buffer {\n return this._activeBuffer;\n }\n\n /**\n * Returns the currently active Buffer of the BufferSet\n */\n public get normal(): Buffer {\n return this._normal;\n }\n\n /**\n * Sets the normal Buffer of the BufferSet as its currently active Buffer\n */\n public activateNormalBuffer(): void {\n if (this._activeBuffer === this._normal) {\n return;\n }\n this._normal.x = this._alt.x;\n this._normal.y = this._alt.y;\n // The alt buffer should always be cleared when we switch to the normal\n // buffer. This frees up memory since the alt buffer should always be new\n // when activated.\n this._alt.clear();\n this._activeBuffer = this._normal;\n this._onBufferActivate.fire({\n activeBuffer: this._normal,\n inactiveBuffer: this._alt\n });\n }\n\n /**\n * Sets the alt Buffer of the BufferSet as its currently active Buffer\n */\n public activateAltBuffer(fillAttr?: IAttributeData): void {\n if (this._activeBuffer === this._alt) {\n return;\n }\n // Since the alt buffer is always cleared when the normal buffer is\n // activated, we want to fill it when switching to it.\n this._alt.fillViewportRows(fillAttr);\n this._alt.x = this._normal.x;\n this._alt.y = this._normal.y;\n this._activeBuffer = this._alt;\n this._onBufferActivate.fire({\n activeBuffer: this._alt,\n inactiveBuffer: this._normal\n });\n }\n\n /**\n * Resizes both normal and alt buffers, adjusting their data accordingly.\n * @param newCols The new number of columns.\n * @param newRows The new number of rows.\n */\n public resize(newCols: number, newRows: number): void {\n this._normal.resize(newCols, newRows);\n this._alt.resize(newCols, newRows);\n }\n\n /**\n * Setup the tab stops.\n * @param i The index to start setting up tab stops from.\n */\n public setupTabStops(i?: number): void {\n this._normal.setupTabStops(i);\n this._alt.setupTabStops(i);\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CharData, ICellData, IExtendedAttrs } from 'common/Types';\nimport { stringFromCodePoint } from 'common/input/TextDecoder';\nimport { CHAR_DATA_CHAR_INDEX, CHAR_DATA_WIDTH_INDEX, CHAR_DATA_ATTR_INDEX, Content } from 'common/buffer/Constants';\nimport { AttributeData, ExtendedAttrs } from 'common/buffer/AttributeData';\n\n/**\n * CellData - represents a single Cell in the terminal buffer.\n */\nexport class CellData extends AttributeData implements ICellData {\n /** Helper to create CellData from CharData. */\n public static fromCharData(value: CharData): CellData {\n const obj = new CellData();\n obj.setFromCharData(value);\n return obj;\n }\n /** Primitives from terminal buffer. */\n public content = 0;\n public fg = 0;\n public bg = 0;\n public extended: IExtendedAttrs = new ExtendedAttrs();\n public combinedData = '';\n /** Whether cell contains a combined string. */\n public isCombined(): number {\n return this.content & Content.IS_COMBINED_MASK;\n }\n /** Width of the cell. */\n public getWidth(): number {\n return this.content >> Content.WIDTH_SHIFT;\n }\n /** JS string of the content. */\n public getChars(): string {\n if (this.content & Content.IS_COMBINED_MASK) {\n return this.combinedData;\n }\n if (this.content & Content.CODEPOINT_MASK) {\n return stringFromCodePoint(this.content & Content.CODEPOINT_MASK);\n }\n return '';\n }\n /**\n * Codepoint of cell\n * Note this returns the UTF32 codepoint of single chars,\n * if content is a combined string it returns the codepoint\n * of the last char in string to be in line with code in CharData.\n * */\n public getCode(): number {\n return (this.isCombined())\n ? this.combinedData.charCodeAt(this.combinedData.length - 1)\n : this.content & Content.CODEPOINT_MASK;\n }\n /** Set data from CharData */\n public setFromCharData(value: CharData): void {\n this.fg = value[CHAR_DATA_ATTR_INDEX];\n this.bg = 0;\n let combined = false;\n // surrogates and combined strings need special treatment\n if (value[CHAR_DATA_CHAR_INDEX].length > 2) {\n combined = true;\n }\n else if (value[CHAR_DATA_CHAR_INDEX].length === 2) {\n const code = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0);\n // if the 2-char string is a surrogate create single codepoint\n // everything else is combined\n if (0xD800 <= code && code <= 0xDBFF) {\n const second = value[CHAR_DATA_CHAR_INDEX].charCodeAt(1);\n if (0xDC00 <= second && second <= 0xDFFF) {\n this.content = ((code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n else {\n combined = true;\n }\n }\n else {\n combined = true;\n }\n }\n else {\n this.content = value[CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n if (combined) {\n this.combinedData = value[CHAR_DATA_CHAR_INDEX];\n this.content = Content.IS_COMBINED_MASK | (value[CHAR_DATA_WIDTH_INDEX] << Content.WIDTH_SHIFT);\n }\n }\n /** Get data as CharData. */\n public getAsCharData(): CharData {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nexport const DEFAULT_COLOR = 256;\nexport const DEFAULT_ATTR = (0 << 18) | (DEFAULT_COLOR << 9) | (256 << 0);\n\nexport const CHAR_DATA_ATTR_INDEX = 0;\nexport const CHAR_DATA_CHAR_INDEX = 1;\nexport const CHAR_DATA_WIDTH_INDEX = 2;\nexport const CHAR_DATA_CODE_INDEX = 3;\n\n/**\n * Null cell - a real empty cell (containing nothing).\n * Note that code should always be 0 for a null cell as\n * several test condition of the buffer line rely on this.\n */\nexport const NULL_CELL_CHAR = '';\nexport const NULL_CELL_WIDTH = 1;\nexport const NULL_CELL_CODE = 0;\n\n/**\n * Whitespace cell.\n * This is meant as a replacement for empty cells when needed\n * during rendering lines to preserve correct aligment.\n */\nexport const WHITESPACE_CELL_CHAR = ' ';\nexport const WHITESPACE_CELL_WIDTH = 1;\nexport const WHITESPACE_CELL_CODE = 32;\n\n/**\n * Bitmasks for accessing data in `content`.\n */\nexport const enum Content {\n /**\n * bit 1..21 codepoint, max allowed in UTF32 is 0x10FFFF (21 bits taken)\n * read: `codepoint = content & Content.codepointMask;`\n * write: `content |= codepoint & Content.codepointMask;`\n * shortcut if precondition `codepoint <= 0x10FFFF` is met:\n * `content |= codepoint;`\n */\n CODEPOINT_MASK = 0x1FFFFF,\n\n /**\n * bit 22 flag indication whether a cell contains combined content\n * read: `isCombined = content & Content.isCombined;`\n * set: `content |= Content.isCombined;`\n * clear: `content &= ~Content.isCombined;`\n */\n IS_COMBINED_MASK = 0x200000, // 1 << 21\n\n /**\n * bit 1..22 mask to check whether a cell contains any string data\n * we need to check for codepoint and isCombined bits to see\n * whether a cell contains anything\n * read: `isEmpty = !(content & Content.hasContent)`\n */\n HAS_CONTENT_MASK = 0x3FFFFF,\n\n /**\n * bit 23..24 wcwidth value of cell, takes 2 bits (ranges from 0..2)\n * read: `width = (content & Content.widthMask) >> Content.widthShift;`\n * `hasWidth = content & Content.widthMask;`\n * as long as wcwidth is highest value in `content`:\n * `width = content >> Content.widthShift;`\n * write: `content |= (width << Content.widthShift) & Content.widthMask;`\n * shortcut if precondition `0 <= width <= 3` is met:\n * `content |= width << Content.widthShift;`\n */\n WIDTH_MASK = 0xC00000, // 3 << 22\n WIDTH_SHIFT = 22\n}\n\nexport const enum Attributes {\n /**\n * bit 1..8 blue in RGB, color in P256 and P16\n */\n BLUE_MASK = 0xFF,\n BLUE_SHIFT = 0,\n PCOLOR_MASK = 0xFF,\n PCOLOR_SHIFT = 0,\n\n /**\n * bit 9..16 green in RGB\n */\n GREEN_MASK = 0xFF00,\n GREEN_SHIFT = 8,\n\n /**\n * bit 17..24 red in RGB\n */\n RED_MASK = 0xFF0000,\n RED_SHIFT = 16,\n\n /**\n * bit 25..26 color mode: DEFAULT (0) | P16 (1) | P256 (2) | RGB (3)\n */\n CM_MASK = 0x3000000,\n CM_DEFAULT = 0,\n CM_P16 = 0x1000000,\n CM_P256 = 0x2000000,\n CM_RGB = 0x3000000,\n\n /**\n * bit 1..24 RGB room\n */\n RGB_MASK = 0xFFFFFF\n}\n\nexport const enum FgFlags {\n /**\n * bit 27..32\n */\n INVERSE = 0x4000000,\n BOLD = 0x8000000,\n UNDERLINE = 0x10000000,\n BLINK = 0x20000000,\n INVISIBLE = 0x40000000,\n STRIKETHROUGH = 0x80000000,\n}\n\nexport const enum BgFlags {\n /**\n * bit 27..32 (upper 3 unused)\n */\n ITALIC = 0x4000000,\n DIM = 0x8000000,\n HAS_EXTENDED = 0x10000000\n}\n\nexport const enum UnderlineStyle {\n NONE = 0,\n SINGLE = 1,\n DOUBLE = 2,\n CURLY = 3,\n DOTTED = 4,\n DASHED = 5\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { IMarker } from 'common/Types';\n\nexport class Marker extends Disposable implements IMarker {\n private static _nextId = 1;\n\n private _id: number = Marker._nextId++;\n public isDisposed: boolean = false;\n\n public get id(): number { return this._id; }\n\n private _onDispose = new EventEmitter();\n public get onDispose(): IEvent { return this._onDispose.event; }\n\n constructor(\n public line: number\n ) {\n super();\n }\n\n public dispose(): void {\n if (this.isDisposed) {\n return;\n }\n this.isDisposed = true;\n this.line = -1;\n // Emit before super.dispose such that dispose listeners get a change to react\n this._onDispose.fire();\n super.dispose();\n }\n}\n", "/**\n * Copyright (c) 2016 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharset } from 'common/Types';\n\n/**\n * The character sets supported by the terminal. These enable several languages\n * to be represented within the terminal with only 8-bit encoding. See ISO 2022\n * for a discussion on character sets. Only VT100 character sets are supported.\n */\nexport const CHARSETS: { [key: string]: ICharset | undefined } = {};\n\n/**\n * The default character set, US.\n */\nexport const DEFAULT_CHARSET: ICharset | undefined = CHARSETS['B'];\n\n/**\n * DEC Special Character and Line Drawing Set.\n * Reference: http://vt100.net/docs/vt102-ug/table5-13.html\n * A lot of curses apps use this if they see TERM=xterm.\n * testing: echo -e '\\e(0a\\e(B'\n * The xterm output sometimes seems to conflict with the\n * reference above. xterm seems in line with the reference\n * when running vttest however.\n * The table below now uses xterm's output from vttest.\n */\nCHARSETS['0'] = {\n '`': '\\u25c6', // '\u25C6'\n 'a': '\\u2592', // '\u2592'\n 'b': '\\u2409', // '\u2409' (HT)\n 'c': '\\u240c', // '\u240C' (FF)\n 'd': '\\u240d', // '\u240D' (CR)\n 'e': '\\u240a', // '\u240A' (LF)\n 'f': '\\u00b0', // '\u00B0'\n 'g': '\\u00b1', // '\u00B1'\n 'h': '\\u2424', // '\u2424' (NL)\n 'i': '\\u240b', // '\u240B' (VT)\n 'j': '\\u2518', // '\u2518'\n 'k': '\\u2510', // '\u2510'\n 'l': '\\u250c', // '\u250C'\n 'm': '\\u2514', // '\u2514'\n 'n': '\\u253c', // '\u253C'\n 'o': '\\u23ba', // '\u23BA'\n 'p': '\\u23bb', // '\u23BB'\n 'q': '\\u2500', // '\u2500'\n 'r': '\\u23bc', // '\u23BC'\n 's': '\\u23bd', // '\u23BD'\n 't': '\\u251c', // '\u251C'\n 'u': '\\u2524', // '\u2524'\n 'v': '\\u2534', // '\u2534'\n 'w': '\\u252c', // '\u252C'\n 'x': '\\u2502', // '\u2502'\n 'y': '\\u2264', // '\u2264'\n 'z': '\\u2265', // '\u2265'\n '{': '\\u03c0', // '\u03C0'\n '|': '\\u2260', // '\u2260'\n '}': '\\u00a3', // '\u00A3'\n '~': '\\u00b7' // '\u00B7'\n};\n\n/**\n * British character set\n * ESC (A\n * Reference: http://vt100.net/docs/vt220-rm/table2-5.html\n */\nCHARSETS['A'] = {\n '#': '\u00A3'\n};\n\n/**\n * United States character set\n * ESC (B\n */\nCHARSETS['B'] = undefined;\n\n/**\n * Dutch character set\n * ESC (4\n * Reference: http://vt100.net/docs/vt220-rm/table2-6.html\n */\nCHARSETS['4'] = {\n '#': '\u00A3',\n '@': '\u00BE',\n '[': 'ij',\n '\\\\': '\u00BD',\n ']': '|',\n '{': '\u00A8',\n '|': 'f',\n '}': '\u00BC',\n '~': '\u00B4'\n};\n\n/**\n * Finnish character set\n * ESC (C or ESC (5\n * Reference: http://vt100.net/docs/vt220-rm/table2-7.html\n */\nCHARSETS['C'] =\nCHARSETS['5'] = {\n '[': '\u00C4',\n '\\\\': '\u00D6',\n ']': '\u00C5',\n '^': '\u00DC',\n '`': '\u00E9',\n '{': '\u00E4',\n '|': '\u00F6',\n '}': '\u00E5',\n '~': '\u00FC'\n};\n\n/**\n * French character set\n * ESC (R\n * Reference: http://vt100.net/docs/vt220-rm/table2-8.html\n */\nCHARSETS['R'] = {\n '#': '\u00A3',\n '@': '\u00E0',\n '[': '\u00B0',\n '\\\\': '\u00E7',\n ']': '\u00A7',\n '{': '\u00E9',\n '|': '\u00F9',\n '}': '\u00E8',\n '~': '\u00A8'\n};\n\n/**\n * French Canadian character set\n * ESC (Q\n * Reference: http://vt100.net/docs/vt220-rm/table2-9.html\n */\nCHARSETS['Q'] = {\n '@': '\u00E0',\n '[': '\u00E2',\n '\\\\': '\u00E7',\n ']': '\u00EA',\n '^': '\u00EE',\n '`': '\u00F4',\n '{': '\u00E9',\n '|': '\u00F9',\n '}': '\u00E8',\n '~': '\u00FB'\n};\n\n/**\n * German character set\n * ESC (K\n * Reference: http://vt100.net/docs/vt220-rm/table2-10.html\n */\nCHARSETS['K'] = {\n '@': '\u00A7',\n '[': '\u00C4',\n '\\\\': '\u00D6',\n ']': '\u00DC',\n '{': '\u00E4',\n '|': '\u00F6',\n '}': '\u00FC',\n '~': '\u00DF'\n};\n\n/**\n * Italian character set\n * ESC (Y\n * Reference: http://vt100.net/docs/vt220-rm/table2-11.html\n */\nCHARSETS['Y'] = {\n '#': '\u00A3',\n '@': '\u00A7',\n '[': '\u00B0',\n '\\\\': '\u00E7',\n ']': '\u00E9',\n '`': '\u00F9',\n '{': '\u00E0',\n '|': '\u00F2',\n '}': '\u00E8',\n '~': '\u00EC'\n};\n\n/**\n * Norwegian/Danish character set\n * ESC (E or ESC (6\n * Reference: http://vt100.net/docs/vt220-rm/table2-12.html\n */\nCHARSETS['E'] =\nCHARSETS['6'] = {\n '@': '\u00C4',\n '[': '\u00C6',\n '\\\\': '\u00D8',\n ']': '\u00C5',\n '^': '\u00DC',\n '`': '\u00E4',\n '{': '\u00E6',\n '|': '\u00F8',\n '}': '\u00E5',\n '~': '\u00FC'\n};\n\n/**\n * Spanish character set\n * ESC (Z\n * Reference: http://vt100.net/docs/vt220-rm/table2-13.html\n */\nCHARSETS['Z'] = {\n '#': '\u00A3',\n '@': '\u00A7',\n '[': '\u00A1',\n '\\\\': '\u00D1',\n ']': '\u00BF',\n '{': '\u00B0',\n '|': '\u00F1',\n '}': '\u00E7'\n};\n\n/**\n * Swedish character set\n * ESC (H or ESC (7\n * Reference: http://vt100.net/docs/vt220-rm/table2-14.html\n */\nCHARSETS['H'] =\nCHARSETS['7'] = {\n '@': '\u00C9',\n '[': '\u00C4',\n '\\\\': '\u00D6',\n ']': '\u00C5',\n '^': '\u00DC',\n '`': '\u00E9',\n '{': '\u00E4',\n '|': '\u00F6',\n '}': '\u00E5',\n '~': '\u00FC'\n};\n\n/**\n * Swiss character set\n * ESC (=\n * Reference: http://vt100.net/docs/vt220-rm/table2-15.html\n */\nCHARSETS['='] = {\n '#': '\u00F9',\n '@': '\u00E0',\n '[': '\u00E9',\n '\\\\': '\u00E7',\n ']': '\u00EA',\n '^': '\u00EE',\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '_': '\u00E8',\n '`': '\u00F4',\n '{': '\u00E4',\n '|': '\u00F6',\n '}': '\u00FC',\n '~': '\u00FB'\n};\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * C0 control codes\n * See = https://en.wikipedia.org/wiki/C0_and_C1_control_codes\n */\nexport namespace C0 {\n /** Null (Caret = ^@, C = \\0) */\n export const NUL = '\\x00';\n /** Start of Heading (Caret = ^A) */\n export const SOH = '\\x01';\n /** Start of Text (Caret = ^B) */\n export const STX = '\\x02';\n /** End of Text (Caret = ^C) */\n export const ETX = '\\x03';\n /** End of Transmission (Caret = ^D) */\n export const EOT = '\\x04';\n /** Enquiry (Caret = ^E) */\n export const ENQ = '\\x05';\n /** Acknowledge (Caret = ^F) */\n export const ACK = '\\x06';\n /** Bell (Caret = ^G, C = \\a) */\n export const BEL = '\\x07';\n /** Backspace (Caret = ^H, C = \\b) */\n export const BS = '\\x08';\n /** Character Tabulation, Horizontal Tabulation (Caret = ^I, C = \\t) */\n export const HT = '\\x09';\n /** Line Feed (Caret = ^J, C = \\n) */\n export const LF = '\\x0a';\n /** Line Tabulation, Vertical Tabulation (Caret = ^K, C = \\v) */\n export const VT = '\\x0b';\n /** Form Feed (Caret = ^L, C = \\f) */\n export const FF = '\\x0c';\n /** Carriage Return (Caret = ^M, C = \\r) */\n export const CR = '\\x0d';\n /** Shift Out (Caret = ^N) */\n export const SO = '\\x0e';\n /** Shift In (Caret = ^O) */\n export const SI = '\\x0f';\n /** Data Link Escape (Caret = ^P) */\n export const DLE = '\\x10';\n /** Device Control One (XON) (Caret = ^Q) */\n export const DC1 = '\\x11';\n /** Device Control Two (Caret = ^R) */\n export const DC2 = '\\x12';\n /** Device Control Three (XOFF) (Caret = ^S) */\n export const DC3 = '\\x13';\n /** Device Control Four (Caret = ^T) */\n export const DC4 = '\\x14';\n /** Negative Acknowledge (Caret = ^U) */\n export const NAK = '\\x15';\n /** Synchronous Idle (Caret = ^V) */\n export const SYN = '\\x16';\n /** End of Transmission Block (Caret = ^W) */\n export const ETB = '\\x17';\n /** Cancel (Caret = ^X) */\n export const CAN = '\\x18';\n /** End of Medium (Caret = ^Y) */\n export const EM = '\\x19';\n /** Substitute (Caret = ^Z) */\n export const SUB = '\\x1a';\n /** Escape (Caret = ^[, C = \\e) */\n export const ESC = '\\x1b';\n /** File Separator (Caret = ^\\) */\n export const FS = '\\x1c';\n /** Group Separator (Caret = ^]) */\n export const GS = '\\x1d';\n /** Record Separator (Caret = ^^) */\n export const RS = '\\x1e';\n /** Unit Separator (Caret = ^_) */\n export const US = '\\x1f';\n /** Space */\n export const SP = '\\x20';\n /** Delete (Caret = ^?) */\n export const DEL = '\\x7f';\n}\n\n/**\n * C1 control codes\n * See = https://en.wikipedia.org/wiki/C0_and_C1_control_codes\n */\nexport namespace C1 {\n /** padding character */\n export const PAD = '\\x80';\n /** High Octet Preset */\n export const HOP = '\\x81';\n /** Break Permitted Here */\n export const BPH = '\\x82';\n /** No Break Here */\n export const NBH = '\\x83';\n /** Index */\n export const IND = '\\x84';\n /** Next Line */\n export const NEL = '\\x85';\n /** Start of Selected Area */\n export const SSA = '\\x86';\n /** End of Selected Area */\n export const ESA = '\\x87';\n /** Horizontal Tabulation Set */\n export const HTS = '\\x88';\n /** Horizontal Tabulation With Justification */\n export const HTJ = '\\x89';\n /** Vertical Tabulation Set */\n export const VTS = '\\x8a';\n /** Partial Line Down */\n export const PLD = '\\x8b';\n /** Partial Line Up */\n export const PLU = '\\x8c';\n /** Reverse Index */\n export const RI = '\\x8d';\n /** Single-Shift 2 */\n export const SS2 = '\\x8e';\n /** Single-Shift 3 */\n export const SS3 = '\\x8f';\n /** Device Control String */\n export const DCS = '\\x90';\n /** Private Use 1 */\n export const PU1 = '\\x91';\n /** Private Use 2 */\n export const PU2 = '\\x92';\n /** Set Transmit State */\n export const STS = '\\x93';\n /** Destructive backspace, intended to eliminate ambiguity about meaning of BS. */\n export const CCH = '\\x94';\n /** Message Waiting */\n export const MW = '\\x95';\n /** Start of Protected Area */\n export const SPA = '\\x96';\n /** End of Protected Area */\n export const EPA = '\\x97';\n /** Start of String */\n export const SOS = '\\x98';\n /** Single Graphic Character Introducer */\n export const SGCI = '\\x99';\n /** Single Character Introducer */\n export const SCI = '\\x9a';\n /** Control Sequence Introducer */\n export const CSI = '\\x9b';\n /** String Terminator */\n export const ST = '\\x9c';\n /** Operating System Command */\n export const OSC = '\\x9d';\n /** Privacy Message */\n export const PM = '\\x9e';\n /** Application Program Command */\n export const APC = '\\x9f';\n}\n", "/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n */\n\nimport { IKeyboardEvent, IKeyboardResult, KeyboardResultType } from 'common/Types';\nimport { C0 } from 'common/data/EscapeSequences';\n\n// reg + shift key mappings for digits and special chars\nconst KEYCODE_KEY_MAPPINGS: { [key: number]: [string, string]} = {\n // digits 0-9\n 48: ['0', ')'],\n 49: ['1', '!'],\n 50: ['2', '@'],\n 51: ['3', '#'],\n 52: ['4', '$'],\n 53: ['5', '%'],\n 54: ['6', '^'],\n 55: ['7', '&'],\n 56: ['8', '*'],\n 57: ['9', '('],\n\n // special chars\n 186: [';', ':'],\n 187: ['=', '+'],\n 188: [',', '<'],\n 189: ['-', '_'],\n 190: ['.', '>'],\n 191: ['/', '?'],\n 192: ['`', '~'],\n 219: ['[', '{'],\n 220: ['\\\\', '|'],\n 221: [']', '}'],\n 222: ['\\'', '\"']\n};\n\nexport function evaluateKeyboardEvent(\n ev: IKeyboardEvent,\n applicationCursorMode: boolean,\n isMac: boolean,\n macOptionIsMeta: boolean\n): IKeyboardResult {\n const result: IKeyboardResult = {\n type: KeyboardResultType.SEND_KEY,\n // Whether to cancel event propagation (NOTE: this may not be needed since the event is\n // canceled at the end of keyDown\n cancel: false,\n // The new key even to emit\n key: undefined\n };\n const modifiers = (ev.shiftKey ? 1 : 0) | (ev.altKey ? 2 : 0) | (ev.ctrlKey ? 4 : 0) | (ev.metaKey ? 8 : 0);\n switch (ev.keyCode) {\n case 0:\n if (ev.key === 'UIKeyInputUpArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OA';\n } else {\n result.key = C0.ESC + '[A';\n }\n }\n else if (ev.key === 'UIKeyInputLeftArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OD';\n } else {\n result.key = C0.ESC + '[D';\n }\n }\n else if (ev.key === 'UIKeyInputRightArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OC';\n } else {\n result.key = C0.ESC + '[C';\n }\n }\n else if (ev.key === 'UIKeyInputDownArrow') {\n if (applicationCursorMode) {\n result.key = C0.ESC + 'OB';\n } else {\n result.key = C0.ESC + '[B';\n }\n }\n break;\n case 8:\n // backspace\n if (ev.shiftKey) {\n result.key = C0.BS; // ^H\n break;\n } else if (ev.altKey) {\n result.key = C0.ESC + C0.DEL; // \\e ^?\n break;\n }\n result.key = C0.DEL; // ^?\n break;\n case 9:\n // tab\n if (ev.shiftKey) {\n result.key = C0.ESC + '[Z';\n break;\n }\n result.key = C0.HT;\n result.cancel = true;\n break;\n case 13:\n // return/enter\n result.key = ev.altKey ? C0.ESC + C0.CR : C0.CR;\n result.cancel = true;\n break;\n case 27:\n // escape\n result.key = C0.ESC;\n if (ev.altKey) {\n result.key = C0.ESC + C0.ESC;\n }\n result.cancel = true;\n break;\n case 37:\n // left-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'D';\n // HACK: Make Alt + left-arrow behave like Ctrl + left-arrow: move one word backwards\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (result.key === C0.ESC + '[1;3D') {\n result.key = C0.ESC + (isMac ? 'b' : '[1;5D');\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OD';\n } else {\n result.key = C0.ESC + '[D';\n }\n break;\n case 39:\n // right-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'C';\n // HACK: Make Alt + right-arrow behave like Ctrl + right-arrow: move one word forward\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (result.key === C0.ESC + '[1;3C') {\n result.key = C0.ESC + (isMac ? 'f' : '[1;5C');\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OC';\n } else {\n result.key = C0.ESC + '[C';\n }\n break;\n case 38:\n // up-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'A';\n // HACK: Make Alt + up-arrow behave like Ctrl + up-arrow\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (!isMac && result.key === C0.ESC + '[1;3A') {\n result.key = C0.ESC + '[1;5A';\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OA';\n } else {\n result.key = C0.ESC + '[A';\n }\n break;\n case 40:\n // down-arrow\n if (ev.metaKey) {\n break;\n }\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'B';\n // HACK: Make Alt + down-arrow behave like Ctrl + down-arrow\n // http://unix.stackexchange.com/a/108106\n // macOS uses different escape sequences than linux\n if (!isMac && result.key === C0.ESC + '[1;3B') {\n result.key = C0.ESC + '[1;5B';\n }\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OB';\n } else {\n result.key = C0.ESC + '[B';\n }\n break;\n case 45:\n // insert\n if (!ev.shiftKey && !ev.ctrlKey) {\n // or + are used to\n // copy-paste on some systems.\n result.key = C0.ESC + '[2~';\n }\n break;\n case 46:\n // delete\n if (modifiers) {\n result.key = C0.ESC + '[3;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[3~';\n }\n break;\n case 36:\n // home\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'H';\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OH';\n } else {\n result.key = C0.ESC + '[H';\n }\n break;\n case 35:\n // end\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'F';\n } else if (applicationCursorMode) {\n result.key = C0.ESC + 'OF';\n } else {\n result.key = C0.ESC + '[F';\n }\n break;\n case 33:\n // page up\n if (ev.shiftKey) {\n result.type = KeyboardResultType.PAGE_UP;\n } else {\n result.key = C0.ESC + '[5~';\n }\n break;\n case 34:\n // page down\n if (ev.shiftKey) {\n result.type = KeyboardResultType.PAGE_DOWN;\n } else {\n result.key = C0.ESC + '[6~';\n }\n break;\n case 112:\n // F1-F12\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'P';\n } else {\n result.key = C0.ESC + 'OP';\n }\n break;\n case 113:\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'Q';\n } else {\n result.key = C0.ESC + 'OQ';\n }\n break;\n case 114:\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'R';\n } else {\n result.key = C0.ESC + 'OR';\n }\n break;\n case 115:\n if (modifiers) {\n result.key = C0.ESC + '[1;' + (modifiers + 1) + 'S';\n } else {\n result.key = C0.ESC + 'OS';\n }\n break;\n case 116:\n if (modifiers) {\n result.key = C0.ESC + '[15;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[15~';\n }\n break;\n case 117:\n if (modifiers) {\n result.key = C0.ESC + '[17;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[17~';\n }\n break;\n case 118:\n if (modifiers) {\n result.key = C0.ESC + '[18;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[18~';\n }\n break;\n case 119:\n if (modifiers) {\n result.key = C0.ESC + '[19;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[19~';\n }\n break;\n case 120:\n if (modifiers) {\n result.key = C0.ESC + '[20;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[20~';\n }\n break;\n case 121:\n if (modifiers) {\n result.key = C0.ESC + '[21;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[21~';\n }\n break;\n case 122:\n if (modifiers) {\n result.key = C0.ESC + '[23;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[23~';\n }\n break;\n case 123:\n if (modifiers) {\n result.key = C0.ESC + '[24;' + (modifiers + 1) + '~';\n } else {\n result.key = C0.ESC + '[24~';\n }\n break;\n default:\n // a-z and space\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n result.key = String.fromCharCode(ev.keyCode - 64);\n } else if (ev.keyCode === 32) {\n result.key = C0.NUL;\n } else if (ev.keyCode >= 51 && ev.keyCode <= 55) {\n // escape, file sep, group sep, record sep, unit sep\n result.key = String.fromCharCode(ev.keyCode - 51 + 27);\n } else if (ev.keyCode === 56) {\n result.key = C0.DEL;\n } else if (ev.keyCode === 219) {\n result.key = C0.ESC;\n } else if (ev.keyCode === 220) {\n result.key = C0.FS;\n } else if (ev.keyCode === 221) {\n result.key = C0.GS;\n }\n } else if ((!isMac || macOptionIsMeta) && ev.altKey && !ev.metaKey) {\n // On macOS this is a third level shift when !macOptionIsMeta. Use instead.\n const keyMapping = KEYCODE_KEY_MAPPINGS[ev.keyCode];\n const key = keyMapping?.[!ev.shiftKey ? 0 : 1];\n if (key) {\n result.key = C0.ESC + key;\n } else if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n const keyCode = ev.ctrlKey ? ev.keyCode - 64 : ev.keyCode + 32;\n result.key = C0.ESC + String.fromCharCode(keyCode);\n }\n } else if (isMac && !ev.altKey && !ev.ctrlKey && !ev.shiftKey && ev.metaKey) {\n if (ev.keyCode === 65) { // cmd + a\n result.type = KeyboardResultType.SELECT_ALL;\n }\n } else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48 && ev.key.length === 1) {\n // Include only keys that that result in a _single_ character; don't include num lock, volume up, etc.\n result.key = ev.key;\n } else if (ev.key && ev.ctrlKey) {\n if (ev.key === '_') { // ^_\n result.key = C0.US;\n }\n }\n break;\n }\n\n return result;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * Polyfill - Convert UTF32 codepoint into JS string.\n * Note: The built-in String.fromCodePoint happens to be much slower\n * due to additional sanity checks. We can avoid them since\n * we always operate on legal UTF32 (granted by the input decoders)\n * and use this faster version instead.\n */\nexport function stringFromCodePoint(codePoint: number): string {\n if (codePoint > 0xFFFF) {\n codePoint -= 0x10000;\n return String.fromCharCode((codePoint >> 10) + 0xD800) + String.fromCharCode((codePoint % 0x400) + 0xDC00);\n }\n return String.fromCharCode(codePoint);\n}\n\n/**\n * Convert UTF32 char codes into JS string.\n * Basically the same as `stringFromCodePoint` but for multiple codepoints\n * in a loop (which is a lot faster).\n */\nexport function utf32ToString(data: Uint32Array, start: number = 0, end: number = data.length): string {\n let result = '';\n for (let i = start; i < end; ++i) {\n let codepoint = data[i];\n if (codepoint > 0xFFFF) {\n // JS strings are encoded as UTF16, thus a non BMP codepoint gets converted into a surrogate pair\n // conversion rules:\n // - subtract 0x10000 from code point, leaving a 20 bit number\n // - add high 10 bits to 0xD800 --> first surrogate\n // - add low 10 bits to 0xDC00 --> second surrogate\n codepoint -= 0x10000;\n result += String.fromCharCode((codepoint >> 10) + 0xD800) + String.fromCharCode((codepoint % 0x400) + 0xDC00);\n } else {\n result += String.fromCharCode(codepoint);\n }\n }\n return result;\n}\n\n/**\n * StringToUtf32 - decodes UTF16 sequences into UTF32 codepoints.\n * To keep the decoder in line with JS strings it handles single surrogates as UCS2.\n */\nexport class StringToUtf32 {\n private _interim: number = 0;\n\n /**\n * Clears interim and resets decoder to clean state.\n */\n public clear(): void {\n this._interim = 0;\n }\n\n /**\n * Decode JS string to UTF32 codepoints.\n * The methods assumes stream input and will store partly transmitted\n * surrogate pairs and decode them with the next data chunk.\n * Note: The method does no bound checks for target, therefore make sure\n * the provided input data does not exceed the size of `target`.\n * Returns the number of written codepoints in `target`.\n */\n public decode(input: string, target: Uint32Array): number {\n const length = input.length;\n\n if (!length) {\n return 0;\n }\n\n let size = 0;\n let startPos = 0;\n\n // handle leftover surrogate high\n if (this._interim) {\n const second = input.charCodeAt(startPos++);\n if (0xDC00 <= second && second <= 0xDFFF) {\n target[size++] = (this._interim - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n // illegal codepoint (USC2 handling)\n target[size++] = this._interim;\n target[size++] = second;\n }\n this._interim = 0;\n }\n\n for (let i = startPos; i < length; ++i) {\n const code = input.charCodeAt(i);\n // surrogate pair first\n if (0xD800 <= code && code <= 0xDBFF) {\n if (++i >= length) {\n this._interim = code;\n return size;\n }\n const second = input.charCodeAt(i);\n if (0xDC00 <= second && second <= 0xDFFF) {\n target[size++] = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n // illegal codepoint (USC2 handling)\n target[size++] = code;\n target[size++] = second;\n }\n continue;\n }\n if (code === 0xFEFF) {\n // BOM\n continue;\n }\n target[size++] = code;\n }\n return size;\n }\n}\n\n/**\n * Utf8Decoder - decodes UTF8 byte sequences into UTF32 codepoints.\n */\nexport class Utf8ToUtf32 {\n public interim: Uint8Array = new Uint8Array(3);\n\n /**\n * Clears interim bytes and resets decoder to clean state.\n */\n public clear(): void {\n this.interim.fill(0);\n }\n\n /**\n * Decodes UTF8 byte sequences in `input` to UTF32 codepoints in `target`.\n * The methods assumes stream input and will store partly transmitted bytes\n * and decode them with the next data chunk.\n * Note: The method does no bound checks for target, therefore make sure\n * the provided data chunk does not exceed the size of `target`.\n * Returns the number of written codepoints in `target`.\n */\n public decode(input: Uint8Array, target: Uint32Array): number {\n const length = input.length;\n\n if (!length) {\n return 0;\n }\n\n let size = 0;\n let byte1: number;\n let byte2: number;\n let byte3: number;\n let byte4: number;\n let codepoint = 0;\n let startPos = 0;\n\n // handle leftover bytes\n if (this.interim[0]) {\n let discardInterim = false;\n let cp = this.interim[0];\n cp &= ((((cp & 0xE0) === 0xC0)) ? 0x1F : (((cp & 0xF0) === 0xE0)) ? 0x0F : 0x07);\n let pos = 0;\n let tmp: number;\n while ((tmp = this.interim[++pos] & 0x3F) && pos < 4) {\n cp <<= 6;\n cp |= tmp;\n }\n // missing bytes - read ahead from input\n const type = (((this.interim[0] & 0xE0) === 0xC0)) ? 2 : (((this.interim[0] & 0xF0) === 0xE0)) ? 3 : 4;\n const missing = type - pos;\n while (startPos < missing) {\n if (startPos >= length) {\n return 0;\n }\n tmp = input[startPos++];\n if ((tmp & 0xC0) !== 0x80) {\n // wrong continuation, discard interim bytes completely\n startPos--;\n discardInterim = true;\n break;\n } else {\n // need to save so we can continue short inputs in next call\n this.interim[pos++] = tmp;\n cp <<= 6;\n cp |= tmp & 0x3F;\n }\n }\n if (!discardInterim) {\n // final test is type dependent\n if (type === 2) {\n if (cp < 0x80) {\n // wrong starter byte\n startPos--;\n } else {\n target[size++] = cp;\n }\n } else if (type === 3) {\n if (cp < 0x0800 || (cp >= 0xD800 && cp <= 0xDFFF) || cp === 0xFEFF) {\n // illegal codepoint or BOM\n } else {\n target[size++] = cp;\n }\n } else {\n if (cp < 0x010000 || cp > 0x10FFFF) {\n // illegal codepoint\n } else {\n target[size++] = cp;\n }\n }\n }\n this.interim.fill(0);\n }\n\n // loop through input\n const fourStop = length - 4;\n let i = startPos;\n while (i < length) {\n /**\n * ASCII shortcut with loop unrolled to 4 consecutive ASCII chars.\n * This is a compromise between speed gain for ASCII\n * and penalty for non ASCII:\n * For best ASCII performance the char should be stored directly into target,\n * but even a single attempt to write to target and compare afterwards\n * penalizes non ASCII really bad (-50%), thus we load the char into byteX first,\n * which reduces ASCII performance by ~15%.\n * This trial for ASCII reduces non ASCII performance by ~10% which seems acceptible\n * compared to the gains.\n * Note that this optimization only takes place for 4 consecutive ASCII chars,\n * for any shorter it bails out. Worst case - all 4 bytes being read but\n * thrown away due to the last being a non ASCII char (-10% performance).\n */\n while (i < fourStop\n && !((byte1 = input[i]) & 0x80)\n && !((byte2 = input[i + 1]) & 0x80)\n && !((byte3 = input[i + 2]) & 0x80)\n && !((byte4 = input[i + 3]) & 0x80))\n {\n target[size++] = byte1;\n target[size++] = byte2;\n target[size++] = byte3;\n target[size++] = byte4;\n i += 4;\n }\n\n // reread byte1\n byte1 = input[i++];\n\n // 1 byte\n if (byte1 < 0x80) {\n target[size++] = byte1;\n\n // 2 bytes\n } else if ((byte1 & 0xE0) === 0xC0) {\n if (i >= length) {\n this.interim[0] = byte1;\n return size;\n }\n byte2 = input[i++];\n if ((byte2 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n codepoint = (byte1 & 0x1F) << 6 | (byte2 & 0x3F);\n if (codepoint < 0x80) {\n // wrong starter byte\n i--;\n continue;\n }\n target[size++] = codepoint;\n\n // 3 bytes\n } else if ((byte1 & 0xF0) === 0xE0) {\n if (i >= length) {\n this.interim[0] = byte1;\n return size;\n }\n byte2 = input[i++];\n if ((byte2 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n if (i >= length) {\n this.interim[0] = byte1;\n this.interim[1] = byte2;\n return size;\n }\n byte3 = input[i++];\n if ((byte3 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n codepoint = (byte1 & 0x0F) << 12 | (byte2 & 0x3F) << 6 | (byte3 & 0x3F);\n if (codepoint < 0x0800 || (codepoint >= 0xD800 && codepoint <= 0xDFFF) || codepoint === 0xFEFF) {\n // illegal codepoint or BOM, no i-- here\n continue;\n }\n target[size++] = codepoint;\n\n // 4 bytes\n } else if ((byte1 & 0xF8) === 0xF0) {\n if (i >= length) {\n this.interim[0] = byte1;\n return size;\n }\n byte2 = input[i++];\n if ((byte2 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n if (i >= length) {\n this.interim[0] = byte1;\n this.interim[1] = byte2;\n return size;\n }\n byte3 = input[i++];\n if ((byte3 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n if (i >= length) {\n this.interim[0] = byte1;\n this.interim[1] = byte2;\n this.interim[2] = byte3;\n return size;\n }\n byte4 = input[i++];\n if ((byte4 & 0xC0) !== 0x80) {\n // wrong continuation\n i--;\n continue;\n }\n codepoint = (byte1 & 0x07) << 18 | (byte2 & 0x3F) << 12 | (byte3 & 0x3F) << 6 | (byte4 & 0x3F);\n if (codepoint < 0x010000 || codepoint > 0x10FFFF) {\n // illegal codepoint, no i-- here\n continue;\n }\n target[size++] = codepoint;\n } else {\n // illegal byte, just skip\n }\n }\n return size;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IUnicodeVersionProvider } from 'common/services/Services';\nimport { fill } from 'common/TypedArrayUtils';\n\ntype CharWidth = 0 | 1 | 2;\n\nconst BMP_COMBINING = [\n [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489],\n [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2],\n [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603],\n [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670],\n [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED],\n [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A],\n [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902],\n [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D],\n [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981],\n [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD],\n [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC],\n [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD],\n [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D],\n [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0],\n [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC],\n [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD],\n [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D],\n [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6],\n [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E],\n [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC],\n [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35],\n [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E],\n [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97],\n [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030],\n [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039],\n [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F],\n [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753],\n [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD],\n [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD],\n [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922],\n [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B],\n [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34],\n [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42],\n [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF],\n [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063],\n [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F],\n [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B],\n [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F],\n [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]\n];\nconst HIGH_COMBINING = [\n [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F],\n [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169],\n [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n [0xE0100, 0xE01EF]\n];\n\n// BMP lookup table, lazy initialized during first addon loading\nlet table: Uint8Array;\n\nfunction bisearch(ucs: number, data: number[][]): boolean {\n let min = 0;\n let max = data.length - 1;\n let mid;\n if (ucs < data[0][0] || ucs > data[max][1]) {\n return false;\n }\n while (max >= min) {\n mid = (min + max) >> 1;\n if (ucs > data[mid][1]) {\n min = mid + 1;\n } else if (ucs < data[mid][0]) {\n max = mid - 1;\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport class UnicodeV6 implements IUnicodeVersionProvider {\n public readonly version = '6';\n\n constructor() {\n // init lookup table once\n if (!table) {\n table = new Uint8Array(65536);\n fill(table, 1);\n table[0] = 0;\n // control chars\n fill(table, 0, 1, 32);\n fill(table, 0, 0x7f, 0xa0);\n\n // apply wide char rules first\n // wide chars\n fill(table, 2, 0x1100, 0x1160);\n table[0x2329] = 2;\n table[0x232a] = 2;\n fill(table, 2, 0x2e80, 0xa4d0);\n table[0x303f] = 1; // wrongly in last line\n\n fill(table, 2, 0xac00, 0xd7a4);\n fill(table, 2, 0xf900, 0xfb00);\n fill(table, 2, 0xfe10, 0xfe1a);\n fill(table, 2, 0xfe30, 0xfe70);\n fill(table, 2, 0xff00, 0xff61);\n fill(table, 2, 0xffe0, 0xffe7);\n\n // apply combining last to ensure we overwrite\n // wrongly wide set chars:\n // the original algo evals combining first and falls\n // through to wide check so we simply do here the opposite\n // combining 0\n for (let r = 0; r < BMP_COMBINING.length; ++r) {\n fill(table, 0, BMP_COMBINING[r][0], BMP_COMBINING[r][1] + 1);\n }\n }\n }\n\n public wcwidth(num: number): CharWidth {\n if (num < 32) return 0;\n if (num < 127) return 1;\n if (num < 65536) return table[num] as CharWidth;\n if (bisearch(num, HIGH_COMBINING)) return 0;\n if ((num >= 0x20000 && num <= 0x2fffd) || (num >= 0x30000 && num <= 0x3fffd)) return 2;\n return 1;\n }\n}\n", "\n/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\ndeclare const setTimeout: (handler: () => void, timeout?: number) => void;\n\n/**\n * Safety watermark to avoid memory exhaustion and browser engine crash on fast data input.\n * Enable flow control to avoid this limit and make sure that your backend correctly\n * propagates this to the underlying pty. (see docs for further instructions)\n * Since this limit is meant as a safety parachute to prevent browser crashs,\n * it is set to a very high number. Typically xterm.js gets unresponsive with\n * a 100 times lower number (>500 kB).\n */\nconst DISCARD_WATERMARK = 50000000; // ~50 MB\n\n/**\n * The max number of ms to spend on writes before allowing the renderer to\n * catch up with a 0ms setTimeout. A value of < 33 to keep us close to\n * 30fps, and a value of < 16 to try to run at 60fps. Of course, the real FPS\n * depends on the time it takes for the renderer to draw the frame.\n */\nconst WRITE_TIMEOUT_MS = 12;\n\n/**\n * Threshold of max held chunks in the write buffer, that were already processed.\n * This is a tradeoff between extensive write buffer shifts (bad runtime) and high\n * memory consumption by data thats not used anymore.\n */\nconst WRITE_BUFFER_LENGTH_THRESHOLD = 50;\n\n// queueMicrotask polyfill for nodejs < v11\nconst qmt: (cb: () => void) => void = (typeof queueMicrotask === 'undefined')\n ? (cb: () => void) => { Promise.resolve().then(cb); }\n : queueMicrotask;\n\n\nexport class WriteBuffer {\n private _writeBuffer: (string | Uint8Array)[] = [];\n private _callbacks: ((() => void) | undefined)[] = [];\n private _pendingData = 0;\n private _bufferOffset = 0;\n private _isSyncWriting = false;\n private _syncCalls = 0;\n\n constructor(private _action: (data: string | Uint8Array, promiseResult?: boolean) => void | Promise) { }\n\n /**\n * @deprecated Unreliable, to be removed soon.\n */\n public writeSync(data: string | Uint8Array, maxSubsequentCalls?: number): void {\n // stop writeSync recursions with maxSubsequentCalls argument\n // This is dangerous to use as it will lose the current data chunk\n // and return immediately.\n if (maxSubsequentCalls !== undefined && this._syncCalls > maxSubsequentCalls) {\n // comment next line if a whole loop block should only contain x `writeSync` calls\n // (total flat vs. deep nested limit)\n this._syncCalls = 0;\n return;\n }\n // append chunk to buffer\n this._pendingData += data.length;\n this._writeBuffer.push(data);\n this._callbacks.push(undefined);\n\n // increase recursion counter\n this._syncCalls++;\n // exit early if another writeSync loop is active\n if (this._isSyncWriting) {\n return;\n }\n this._isSyncWriting = true;\n\n // force sync processing on pending data chunks to avoid in-band data scrambling\n // does the same as innerWrite but without event loop\n // we have to do it here as single loop steps to not corrupt loop subject\n // by another writeSync call triggered from _action\n let chunk: string | Uint8Array | undefined;\n while (chunk = this._writeBuffer.shift()) {\n this._action(chunk);\n const cb = this._callbacks.shift();\n if (cb) cb();\n }\n // reset to avoid reprocessing of chunks with scheduled innerWrite call\n // stopping scheduled innerWrite by offset > length condition\n this._pendingData = 0;\n this._bufferOffset = 0x7FFFFFFF;\n\n // allow another writeSync to loop\n this._isSyncWriting = false;\n this._syncCalls = 0;\n }\n\n public write(data: string | Uint8Array, callback?: () => void): void {\n if (this._pendingData > DISCARD_WATERMARK) {\n throw new Error('write data discarded, use flow control to avoid losing data');\n }\n\n // schedule chunk processing for next event loop run\n if (!this._writeBuffer.length) {\n this._bufferOffset = 0;\n setTimeout(() => this._innerWrite());\n }\n\n this._pendingData += data.length;\n this._writeBuffer.push(data);\n this._callbacks.push(callback);\n }\n\n /**\n * Inner write call, that enters the sliced chunk processing by timing.\n *\n * `lastTime` indicates, when the last _innerWrite call had started.\n * It is used to aggregate async handler execution under a timeout constraint\n * effectively lowering the redrawing needs, schematically:\n *\n * macroTask _innerWrite:\n * if (Date.now() - (lastTime | 0) < WRITE_TIMEOUT_MS):\n * schedule microTask _innerWrite(lastTime)\n * else:\n * schedule macroTask _innerWrite(0)\n *\n * overall execution order on task queues:\n *\n * macrotasks: [...] --> _innerWrite(0) --> [...] --> screenUpdate --> [...]\n * m t: |\n * i a: [...]\n * c s: |\n * r k: while < timeout:\n * o s: _innerWrite(timeout)\n *\n * `promiseResult` depicts the promise resolve value of an async handler.\n * This value gets carried forward through all saved stack states of the\n * paused parser for proper continuation.\n *\n * Note, for pure sync code `lastTime` and `promiseResult` have no meaning.\n */\n protected _innerWrite(lastTime: number = 0, promiseResult: boolean = true): void {\n const startTime = lastTime || Date.now();\n while (this._writeBuffer.length > this._bufferOffset) {\n const data = this._writeBuffer[this._bufferOffset];\n const result = this._action(data, promiseResult);\n if (result) {\n /**\n * If we get a promise as return value, we re-schedule the continuation\n * as thenable on the promise and exit right away.\n *\n * The exit here means, that we block input processing at the current active chunk,\n * the exact execution position within the chunk is preserved by the saved\n * stack content in InputHandler and EscapeSequenceParser.\n *\n * Resuming happens automatically from that saved stack state.\n * Also the resolved promise value is passed along the callstack to\n * `EscapeSequenceParser.parse` to correctly resume the stopped handler loop.\n *\n * Exceptions on async handlers will be logged to console async, but do not interrupt\n * the input processing (continues with next handler at the current input position).\n */\n\n /**\n * If a promise takes long to resolve, we should schedule continuation behind setTimeout.\n * This might already be too late, if our .then enters really late (executor + prev thens took very long).\n * This cannot be solved here for the handler itself (it is the handlers responsibility to slice hard work),\n * but we can at least schedule a screen update as we gain control.\n */\n const continuation: (r: boolean) => void = (r: boolean) => Date.now() - startTime >= WRITE_TIMEOUT_MS\n ? setTimeout(() => this._innerWrite(0, r))\n : this._innerWrite(startTime, r);\n\n /**\n * Optimization considerations:\n * The continuation above favors FPS over throughput by eval'ing `startTime` on resolve.\n * This might schedule too many screen updates with bad throughput drops (in case a slow\n * resolving handler sliced its work properly behind setTimeout calls). We cannot spot\n * this condition here, also the renderer has no way to spot nonsense updates either.\n * FIXME: A proper fix for this would track the FPS at the renderer entry level separately.\n *\n * If favoring of FPS shows bad throughtput impact, use the following instead. It favors\n * throughput by eval'ing `startTime` upfront pulling at least one more chunk into the\n * current microtask queue (executed before setTimeout).\n */\n // const continuation: (r: boolean) => void = Date.now() - startTime >= WRITE_TIMEOUT_MS\n // ? r => setTimeout(() => this._innerWrite(0, r))\n // : r => this._innerWrite(startTime, r);\n\n // Handle exceptions synchronously to current band position, idea:\n // 1. spawn a single microtask which we allow to throw hard\n // 2. spawn a promise immediately resolving to `true`\n // (executed on the same queue, thus properly aligned before continuation happens)\n result.catch(err => {\n qmt(() => {throw err;});\n return Promise.resolve(false);\n }).then(continuation);\n return;\n }\n\n const cb = this._callbacks[this._bufferOffset];\n if (cb) cb();\n this._bufferOffset++;\n this._pendingData -= data.length;\n\n if (Date.now() - startTime >= WRITE_TIMEOUT_MS) {\n break;\n }\n }\n if (this._writeBuffer.length > this._bufferOffset) {\n // Allow renderer to catch up before processing the next batch\n // trim already processed chunks if we are above threshold\n if (this._bufferOffset > WRITE_BUFFER_LENGTH_THRESHOLD) {\n this._writeBuffer = this._writeBuffer.slice(this._bufferOffset);\n this._callbacks = this._callbacks.slice(this._bufferOffset);\n this._bufferOffset = 0;\n }\n setTimeout(() => this._innerWrite());\n } else {\n this._writeBuffer.length = 0;\n this._callbacks.length = 0;\n this._pendingData = 0;\n this._bufferOffset = 0;\n }\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n\n// 'rgb:' rule - matching: r/g/b | rr/gg/bb | rrr/ggg/bbb | rrrr/gggg/bbbb (hex digits)\nconst RGB_REX = /^([\\da-f]{1})\\/([\\da-f]{1})\\/([\\da-f]{1})$|^([\\da-f]{2})\\/([\\da-f]{2})\\/([\\da-f]{2})$|^([\\da-f]{3})\\/([\\da-f]{3})\\/([\\da-f]{3})$|^([\\da-f]{4})\\/([\\da-f]{4})\\/([\\da-f]{4})$/;\n// '#...' rule - matching any hex digits\nconst HASH_REX = /^[\\da-f]+$/;\n\n/**\n * Parse color spec to RGB values (8 bit per channel).\n * See `man xparsecolor` for details about certain format specifications.\n *\n * Supported formats:\n * - rgb:// with , , in h | hh | hhh | hhhh\n * - #RGB, #RRGGBB, #RRRGGGBBB, #RRRRGGGGBBBB\n *\n * All other formats like rgbi: or device-independent string specifications\n * with float numbering are not supported.\n */\nexport function parseColor(data: string): [number, number, number] | undefined {\n if (!data) return;\n // also handle uppercases\n let low = data.toLowerCase();\n if (low.indexOf('rgb:') === 0) {\n // 'rgb:' specifier\n low = low.slice(4);\n const m = RGB_REX.exec(low);\n if (m) {\n const base = m[1] ? 15 : m[4] ? 255 : m[7] ? 4095 : 65535;\n return [\n Math.round(parseInt(m[1] || m[4] || m[7] || m[10], 16) / base * 255),\n Math.round(parseInt(m[2] || m[5] || m[8] || m[11], 16) / base * 255),\n Math.round(parseInt(m[3] || m[6] || m[9] || m[12], 16) / base * 255)\n ];\n }\n } else if (low.indexOf('#') === 0) {\n // '#' specifier\n low = low.slice(1);\n if (HASH_REX.exec(low) && [3, 6, 9, 12].includes(low.length)) {\n const adv = low.length / 3;\n const result: [number, number, number] = [0, 0, 0];\n for (let i = 0; i < 3; ++i) {\n const c = parseInt(low.slice(adv * i, adv * i + adv), 16);\n result[i] = adv === 1 ? c << 4 : adv === 2 ? c : adv === 3 ? c >> 4 : c >> 8;\n }\n return result;\n }\n }\n\n // Named colors are currently not supported due to the large addition to the xterm.js bundle size\n // they would add. In order to support named colors, we would need some way of optionally loading\n // additional payloads so startup/download time is not bloated (see #3530).\n}\n\n// pad hex output to requested bit width\nfunction pad(n: number, bits: number): string {\n const s = n.toString(16);\n const s2 = s.length < 2 ? '0' + s : s;\n switch (bits) {\n case 4:\n return s[0];\n case 8:\n return s2;\n case 12:\n return (s2 + s2).slice(0, 3);\n default:\n return s2 + s2;\n }\n}\n\n/**\n * Convert a given color to rgb:../../.. string of `bits` depth.\n */\nexport function toRgbString(color: [number, number, number], bits: number = 16): string {\n const [r, g, b] = color;\n return `rgb:${pad(r, bits)}/${pad(g, bits)}/${pad(b, bits)}`;\n}\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\n/**\n * Internal states of EscapeSequenceParser.\n */\nexport const enum ParserState {\n GROUND = 0,\n ESCAPE = 1,\n ESCAPE_INTERMEDIATE = 2,\n CSI_ENTRY = 3,\n CSI_PARAM = 4,\n CSI_INTERMEDIATE = 5,\n CSI_IGNORE = 6,\n SOS_PM_APC_STRING = 7,\n OSC_STRING = 8,\n DCS_ENTRY = 9,\n DCS_PARAM = 10,\n DCS_IGNORE = 11,\n DCS_INTERMEDIATE = 12,\n DCS_PASSTHROUGH = 13\n}\n\n/**\n* Internal actions of EscapeSequenceParser.\n*/\nexport const enum ParserAction {\n IGNORE = 0,\n ERROR = 1,\n PRINT = 2,\n EXECUTE = 3,\n OSC_START = 4,\n OSC_PUT = 5,\n OSC_END = 6,\n CSI_DISPATCH = 7,\n PARAM = 8,\n COLLECT = 9,\n ESC_DISPATCH = 10,\n CLEAR = 11,\n DCS_HOOK = 12,\n DCS_PUT = 13,\n DCS_UNHOOK = 14\n}\n\n/**\n * Internal states of OscParser.\n */\nexport const enum OscState {\n START = 0,\n ID = 1,\n PAYLOAD = 2,\n ABORT = 3\n}\n\n// payload limit for OSC and DCS\nexport const PAYLOAD_LIMIT = 10000000;\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IDisposable } from 'common/Types';\nimport { IDcsHandler, IParams, IHandlerCollection, IDcsParser, DcsFallbackHandlerType, ISubParserStackState } from 'common/parser/Types';\nimport { utf32ToString } from 'common/input/TextDecoder';\nimport { Params } from 'common/parser/Params';\nimport { PAYLOAD_LIMIT } from 'common/parser/Constants';\n\nconst EMPTY_HANDLERS: IDcsHandler[] = [];\n\nexport class DcsParser implements IDcsParser {\n private _handlers: IHandlerCollection = Object.create(null);\n private _active: IDcsHandler[] = EMPTY_HANDLERS;\n private _ident: number = 0;\n private _handlerFb: DcsFallbackHandlerType = () => { };\n private _stack: ISubParserStackState = {\n paused: false,\n loopPosition: 0,\n fallThrough: false\n };\n\n public dispose(): void {\n this._handlers = Object.create(null);\n this._handlerFb = () => { };\n this._active = EMPTY_HANDLERS;\n }\n\n public registerHandler(ident: number, handler: IDcsHandler): IDisposable {\n if (this._handlers[ident] === undefined) {\n this._handlers[ident] = [];\n }\n const handlerList = this._handlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n\n public clearHandler(ident: number): void {\n if (this._handlers[ident]) delete this._handlers[ident];\n }\n\n public setHandlerFallback(handler: DcsFallbackHandlerType): void {\n this._handlerFb = handler;\n }\n\n public reset(): void {\n // force cleanup leftover handlers\n if (this._active.length) {\n for (let j = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; j >= 0; --j) {\n this._active[j].unhook(false);\n }\n }\n this._stack.paused = false;\n this._active = EMPTY_HANDLERS;\n this._ident = 0;\n }\n\n public hook(ident: number, params: IParams): void {\n // always reset leftover handlers\n this.reset();\n this._ident = ident;\n this._active = this._handlers[ident] || EMPTY_HANDLERS;\n if (!this._active.length) {\n this._handlerFb(this._ident, 'HOOK', params);\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].hook(params);\n }\n }\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n if (!this._active.length) {\n this._handlerFb(this._ident, 'PUT', utf32ToString(data, start, end));\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].put(data, start, end);\n }\n }\n }\n\n public unhook(success: boolean, promiseResult: boolean = true): void | Promise {\n if (!this._active.length) {\n this._handlerFb(this._ident, 'UNHOOK', success);\n } else {\n let handlerResult: boolean | Promise = false;\n let j = this._active.length - 1;\n let fallThrough = false;\n if (this._stack.paused) {\n j = this._stack.loopPosition - 1;\n handlerResult = promiseResult;\n fallThrough = this._stack.fallThrough;\n this._stack.paused = false;\n }\n if (!fallThrough && handlerResult === false) {\n for (; j >= 0; j--) {\n handlerResult = this._active[j].unhook(success);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = false;\n return handlerResult;\n }\n }\n j--;\n }\n // cleanup left over handlers (fallThrough for async)\n for (; j >= 0; j--) {\n handlerResult = this._active[j].unhook(false);\n if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = true;\n return handlerResult;\n }\n }\n }\n this._active = EMPTY_HANDLERS;\n this._ident = 0;\n }\n}\n\n// predefine empty params as [0] (ZDM)\nconst EMPTY_PARAMS = new Params();\nEMPTY_PARAMS.addParam(0);\n\n/**\n * Convenient class to create a DCS handler from a single callback function.\n * Note: The payload is currently limited to 50 MB (hardcoded).\n */\nexport class DcsHandler implements IDcsHandler {\n private _data = '';\n private _params: IParams = EMPTY_PARAMS;\n private _hitLimit: boolean = false;\n\n constructor(private _handler: (data: string, params: IParams) => boolean | Promise) { }\n\n public hook(params: IParams): void {\n // since we need to preserve params until `unhook`, we have to clone it\n // (only borrowed from parser and spans multiple parser states)\n // perf optimization:\n // clone only, if we have non empty params, otherwise stick with default\n this._params = (params.length > 1 || params.params[0]) ? params.clone() : EMPTY_PARAMS;\n this._data = '';\n this._hitLimit = false;\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n if (this._hitLimit) {\n return;\n }\n this._data += utf32ToString(data, start, end);\n if (this._data.length > PAYLOAD_LIMIT) {\n this._data = '';\n this._hitLimit = true;\n }\n }\n\n public unhook(success: boolean): boolean | Promise {\n let ret: boolean | Promise = false;\n if (this._hitLimit) {\n ret = false;\n } else if (success) {\n ret = this._handler(this._data, this._params);\n if (ret instanceof Promise) {\n // need to hold data and params until `ret` got resolved\n // dont care for errors, data will be freed anyway on next start\n return ret.then(res => {\n this._params = EMPTY_PARAMS;\n this._data = '';\n this._hitLimit = false;\n return res;\n });\n }\n }\n this._params = EMPTY_PARAMS;\n this._data = '';\n this._hitLimit = false;\n return ret;\n }\n}\n", "/**\n * Copyright (c) 2018 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IParsingState, IDcsHandler, IEscapeSequenceParser, IParams, IOscHandler, IHandlerCollection, CsiHandlerType, OscFallbackHandlerType, IOscParser, EscHandlerType, IDcsParser, DcsFallbackHandlerType, IFunctionIdentifier, ExecuteFallbackHandlerType, CsiFallbackHandlerType, EscFallbackHandlerType, PrintHandlerType, PrintFallbackHandlerType, ExecuteHandlerType, IParserStackState, ParserStackType, ResumableHandlersType } from 'common/parser/Types';\nimport { ParserState, ParserAction } from 'common/parser/Constants';\nimport { Disposable } from 'common/Lifecycle';\nimport { IDisposable } from 'common/Types';\nimport { fill } from 'common/TypedArrayUtils';\nimport { Params } from 'common/parser/Params';\nimport { OscParser } from 'common/parser/OscParser';\nimport { DcsParser } from 'common/parser/DcsParser';\n\n/**\n * Table values are generated like this:\n * index: currentState << TableValue.INDEX_STATE_SHIFT | charCode\n * value: action << TableValue.TRANSITION_ACTION_SHIFT | nextState\n */\nconst enum TableAccess {\n TRANSITION_ACTION_SHIFT = 4,\n TRANSITION_STATE_MASK = 15,\n INDEX_STATE_SHIFT = 8\n}\n\n/**\n * Transition table for EscapeSequenceParser.\n */\nexport class TransitionTable {\n public table: Uint8Array;\n\n constructor(length: number) {\n this.table = new Uint8Array(length);\n }\n\n /**\n * Set default transition.\n * @param action default action\n * @param next default next state\n */\n public setDefault(action: ParserAction, next: ParserState): void {\n fill(this.table, action << TableAccess.TRANSITION_ACTION_SHIFT | next);\n }\n\n /**\n * Add a transition to the transition table.\n * @param code input character code\n * @param state current parser state\n * @param action parser action to be done\n * @param next next parser state\n */\n public add(code: number, state: ParserState, action: ParserAction, next: ParserState): void {\n this.table[state << TableAccess.INDEX_STATE_SHIFT | code] = action << TableAccess.TRANSITION_ACTION_SHIFT | next;\n }\n\n /**\n * Add transitions for multiple input character codes.\n * @param codes input character code array\n * @param state current parser state\n * @param action parser action to be done\n * @param next next parser state\n */\n public addMany(codes: number[], state: ParserState, action: ParserAction, next: ParserState): void {\n for (let i = 0; i < codes.length; i++) {\n this.table[state << TableAccess.INDEX_STATE_SHIFT | codes[i]] = action << TableAccess.TRANSITION_ACTION_SHIFT | next;\n }\n }\n}\n\n\n// Pseudo-character placeholder for printable non-ascii characters (unicode).\nconst NON_ASCII_PRINTABLE = 0xA0;\n\n\n/**\n * VT500 compatible transition table.\n * Taken from https://vt100.net/emu/dec_ansi_parser.\n */\nexport const VT500_TRANSITION_TABLE = (function (): TransitionTable {\n const table: TransitionTable = new TransitionTable(4095);\n\n // range macro for byte\n const BYTE_VALUES = 256;\n const blueprint = Array.apply(null, Array(BYTE_VALUES)).map((unused: any, i: number) => i);\n const r = (start: number, end: number): number[] => blueprint.slice(start, end);\n\n // Default definitions.\n const PRINTABLES = r(0x20, 0x7f); // 0x20 (SP) included, 0x7F (DEL) excluded\n const EXECUTABLES = r(0x00, 0x18);\n EXECUTABLES.push(0x19);\n EXECUTABLES.push.apply(EXECUTABLES, r(0x1c, 0x20));\n\n const states: number[] = r(ParserState.GROUND, ParserState.DCS_PASSTHROUGH + 1);\n let state: any;\n\n // set default transition\n table.setDefault(ParserAction.ERROR, ParserState.GROUND);\n // printables\n table.addMany(PRINTABLES, ParserState.GROUND, ParserAction.PRINT, ParserState.GROUND);\n // global anywhere rules\n for (state in states) {\n table.addMany([0x18, 0x1a, 0x99, 0x9a], state, ParserAction.EXECUTE, ParserState.GROUND);\n table.addMany(r(0x80, 0x90), state, ParserAction.EXECUTE, ParserState.GROUND);\n table.addMany(r(0x90, 0x98), state, ParserAction.EXECUTE, ParserState.GROUND);\n table.add(0x9c, state, ParserAction.IGNORE, ParserState.GROUND); // ST as terminator\n table.add(0x1b, state, ParserAction.CLEAR, ParserState.ESCAPE); // ESC\n table.add(0x9d, state, ParserAction.OSC_START, ParserState.OSC_STRING); // OSC\n table.addMany([0x98, 0x9e, 0x9f], state, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.add(0x9b, state, ParserAction.CLEAR, ParserState.CSI_ENTRY); // CSI\n table.add(0x90, state, ParserAction.CLEAR, ParserState.DCS_ENTRY); // DCS\n }\n // rules for executables and 7f\n table.addMany(EXECUTABLES, ParserState.GROUND, ParserAction.EXECUTE, ParserState.GROUND);\n table.addMany(EXECUTABLES, ParserState.ESCAPE, ParserAction.EXECUTE, ParserState.ESCAPE);\n table.add(0x7f, ParserState.ESCAPE, ParserAction.IGNORE, ParserState.ESCAPE);\n table.addMany(EXECUTABLES, ParserState.OSC_STRING, ParserAction.IGNORE, ParserState.OSC_STRING);\n table.addMany(EXECUTABLES, ParserState.CSI_ENTRY, ParserAction.EXECUTE, ParserState.CSI_ENTRY);\n table.add(0x7f, ParserState.CSI_ENTRY, ParserAction.IGNORE, ParserState.CSI_ENTRY);\n table.addMany(EXECUTABLES, ParserState.CSI_PARAM, ParserAction.EXECUTE, ParserState.CSI_PARAM);\n table.add(0x7f, ParserState.CSI_PARAM, ParserAction.IGNORE, ParserState.CSI_PARAM);\n table.addMany(EXECUTABLES, ParserState.CSI_IGNORE, ParserAction.EXECUTE, ParserState.CSI_IGNORE);\n table.addMany(EXECUTABLES, ParserState.CSI_INTERMEDIATE, ParserAction.EXECUTE, ParserState.CSI_INTERMEDIATE);\n table.add(0x7f, ParserState.CSI_INTERMEDIATE, ParserAction.IGNORE, ParserState.CSI_INTERMEDIATE);\n table.addMany(EXECUTABLES, ParserState.ESCAPE_INTERMEDIATE, ParserAction.EXECUTE, ParserState.ESCAPE_INTERMEDIATE);\n table.add(0x7f, ParserState.ESCAPE_INTERMEDIATE, ParserAction.IGNORE, ParserState.ESCAPE_INTERMEDIATE);\n // osc\n table.add(0x5d, ParserState.ESCAPE, ParserAction.OSC_START, ParserState.OSC_STRING);\n table.addMany(PRINTABLES, ParserState.OSC_STRING, ParserAction.OSC_PUT, ParserState.OSC_STRING);\n table.add(0x7f, ParserState.OSC_STRING, ParserAction.OSC_PUT, ParserState.OSC_STRING);\n table.addMany([0x9c, 0x1b, 0x18, 0x1a, 0x07], ParserState.OSC_STRING, ParserAction.OSC_END, ParserState.GROUND);\n table.addMany(r(0x1c, 0x20), ParserState.OSC_STRING, ParserAction.IGNORE, ParserState.OSC_STRING);\n // sos/pm/apc does nothing\n table.addMany([0x58, 0x5e, 0x5f], ParserState.ESCAPE, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.addMany(PRINTABLES, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.addMany(EXECUTABLES, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n table.add(0x9c, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.GROUND);\n table.add(0x7f, ParserState.SOS_PM_APC_STRING, ParserAction.IGNORE, ParserState.SOS_PM_APC_STRING);\n // csi entries\n table.add(0x5b, ParserState.ESCAPE, ParserAction.CLEAR, ParserState.CSI_ENTRY);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_ENTRY, ParserAction.CSI_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x30, 0x3c), ParserState.CSI_ENTRY, ParserAction.PARAM, ParserState.CSI_PARAM);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.CSI_ENTRY, ParserAction.COLLECT, ParserState.CSI_PARAM);\n table.addMany(r(0x30, 0x3c), ParserState.CSI_PARAM, ParserAction.PARAM, ParserState.CSI_PARAM);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_PARAM, ParserAction.CSI_DISPATCH, ParserState.GROUND);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.CSI_PARAM, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.addMany(r(0x20, 0x40), ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.add(0x7f, ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.GROUND);\n table.addMany(r(0x20, 0x30), ParserState.CSI_ENTRY, ParserAction.COLLECT, ParserState.CSI_INTERMEDIATE);\n table.addMany(r(0x20, 0x30), ParserState.CSI_INTERMEDIATE, ParserAction.COLLECT, ParserState.CSI_INTERMEDIATE);\n table.addMany(r(0x30, 0x40), ParserState.CSI_INTERMEDIATE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.addMany(r(0x40, 0x7f), ParserState.CSI_INTERMEDIATE, ParserAction.CSI_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x20, 0x30), ParserState.CSI_PARAM, ParserAction.COLLECT, ParserState.CSI_INTERMEDIATE);\n // esc_intermediate\n table.addMany(r(0x20, 0x30), ParserState.ESCAPE, ParserAction.COLLECT, ParserState.ESCAPE_INTERMEDIATE);\n table.addMany(r(0x20, 0x30), ParserState.ESCAPE_INTERMEDIATE, ParserAction.COLLECT, ParserState.ESCAPE_INTERMEDIATE);\n table.addMany(r(0x30, 0x7f), ParserState.ESCAPE_INTERMEDIATE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x30, 0x50), ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x51, 0x58), ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany([0x59, 0x5a, 0x5c], ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n table.addMany(r(0x60, 0x7f), ParserState.ESCAPE, ParserAction.ESC_DISPATCH, ParserState.GROUND);\n // dcs entry\n table.add(0x50, ParserState.ESCAPE, ParserAction.CLEAR, ParserState.DCS_ENTRY);\n table.addMany(EXECUTABLES, ParserState.DCS_ENTRY, ParserAction.IGNORE, ParserState.DCS_ENTRY);\n table.add(0x7f, ParserState.DCS_ENTRY, ParserAction.IGNORE, ParserState.DCS_ENTRY);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_ENTRY, ParserAction.IGNORE, ParserState.DCS_ENTRY);\n table.addMany(r(0x20, 0x30), ParserState.DCS_ENTRY, ParserAction.COLLECT, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x30, 0x3c), ParserState.DCS_ENTRY, ParserAction.PARAM, ParserState.DCS_PARAM);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.DCS_ENTRY, ParserAction.COLLECT, ParserState.DCS_PARAM);\n table.addMany(EXECUTABLES, ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x20, 0x80), ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(EXECUTABLES, ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_PARAM);\n table.add(0x7f, ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_PARAM);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_PARAM);\n table.addMany(r(0x30, 0x3c), ParserState.DCS_PARAM, ParserAction.PARAM, ParserState.DCS_PARAM);\n table.addMany([0x3c, 0x3d, 0x3e, 0x3f], ParserState.DCS_PARAM, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x20, 0x30), ParserState.DCS_PARAM, ParserAction.COLLECT, ParserState.DCS_INTERMEDIATE);\n table.addMany(EXECUTABLES, ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_INTERMEDIATE);\n table.add(0x7f, ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x1c, 0x20), ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x20, 0x30), ParserState.DCS_INTERMEDIATE, ParserAction.COLLECT, ParserState.DCS_INTERMEDIATE);\n table.addMany(r(0x30, 0x40), ParserState.DCS_INTERMEDIATE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.addMany(r(0x40, 0x7f), ParserState.DCS_INTERMEDIATE, ParserAction.DCS_HOOK, ParserState.DCS_PASSTHROUGH);\n table.addMany(r(0x40, 0x7f), ParserState.DCS_PARAM, ParserAction.DCS_HOOK, ParserState.DCS_PASSTHROUGH);\n table.addMany(r(0x40, 0x7f), ParserState.DCS_ENTRY, ParserAction.DCS_HOOK, ParserState.DCS_PASSTHROUGH);\n table.addMany(EXECUTABLES, ParserState.DCS_PASSTHROUGH, ParserAction.DCS_PUT, ParserState.DCS_PASSTHROUGH);\n table.addMany(PRINTABLES, ParserState.DCS_PASSTHROUGH, ParserAction.DCS_PUT, ParserState.DCS_PASSTHROUGH);\n table.add(0x7f, ParserState.DCS_PASSTHROUGH, ParserAction.IGNORE, ParserState.DCS_PASSTHROUGH);\n table.addMany([0x1b, 0x9c, 0x18, 0x1a], ParserState.DCS_PASSTHROUGH, ParserAction.DCS_UNHOOK, ParserState.GROUND);\n // special handling of unicode chars\n table.add(NON_ASCII_PRINTABLE, ParserState.GROUND, ParserAction.PRINT, ParserState.GROUND);\n table.add(NON_ASCII_PRINTABLE, ParserState.OSC_STRING, ParserAction.OSC_PUT, ParserState.OSC_STRING);\n table.add(NON_ASCII_PRINTABLE, ParserState.CSI_IGNORE, ParserAction.IGNORE, ParserState.CSI_IGNORE);\n table.add(NON_ASCII_PRINTABLE, ParserState.DCS_IGNORE, ParserAction.IGNORE, ParserState.DCS_IGNORE);\n table.add(NON_ASCII_PRINTABLE, ParserState.DCS_PASSTHROUGH, ParserAction.DCS_PUT, ParserState.DCS_PASSTHROUGH);\n return table;\n})();\n\n\n/**\n * EscapeSequenceParser.\n * This class implements the ANSI/DEC compatible parser described by\n * Paul Williams (https://vt100.net/emu/dec_ansi_parser).\n *\n * To implement custom ANSI compliant escape sequences it is not needed to\n * alter this parser, instead consider registering a custom handler.\n * For non ANSI compliant sequences change the transition table with\n * the optional `transitions` constructor argument and\n * reimplement the `parse` method.\n *\n * This parser is currently hardcoded to operate in ZDM (Zero Default Mode)\n * as suggested by the original parser, thus empty parameters are set to 0.\n * This this is not in line with the latest ECMA-48 specification\n * (ZDM was part of the early specs and got completely removed later on).\n *\n * Other than the original parser from vt100.net this parser supports\n * sub parameters in digital parameters separated by colons. Empty sub parameters\n * are set to -1 (no ZDM for sub parameters).\n *\n * About prefix and intermediate bytes:\n * This parser follows the assumptions of the vt100.net parser with these restrictions:\n * - only one prefix byte is allowed as first parameter byte, byte range 0x3c .. 0x3f\n * - max. two intermediates are respected, byte range 0x20 .. 0x2f\n * Note that this is not in line with ECMA-48 which does not limit either of those.\n * Furthermore ECMA-48 allows the prefix byte range at any param byte position. Currently\n * there are no known sequences that follow the broader definition of the specification.\n *\n * TODO: implement error recovery hook via error handler return values\n */\nexport class EscapeSequenceParser extends Disposable implements IEscapeSequenceParser {\n public initialState: number;\n public currentState: number;\n public precedingCodepoint: number;\n\n // buffers over several parse calls\n protected _params: Params;\n protected _collect: number;\n\n // handler lookup containers\n protected _printHandler: PrintHandlerType;\n protected _executeHandlers: { [flag: number]: ExecuteHandlerType };\n protected _csiHandlers: IHandlerCollection;\n protected _escHandlers: IHandlerCollection;\n protected _oscParser: IOscParser;\n protected _dcsParser: IDcsParser;\n protected _errorHandler: (state: IParsingState) => IParsingState;\n\n // fallback handlers\n protected _printHandlerFb: PrintFallbackHandlerType;\n protected _executeHandlerFb: ExecuteFallbackHandlerType;\n protected _csiHandlerFb: CsiFallbackHandlerType;\n protected _escHandlerFb: EscFallbackHandlerType;\n protected _errorHandlerFb: (state: IParsingState) => IParsingState;\n\n // parser stack save for async handler support\n protected _parseStack: IParserStackState = {\n state: ParserStackType.NONE,\n handlers: [],\n handlerPos: 0,\n transition: 0,\n chunkPos: 0\n };\n\n constructor(\n protected readonly _transitions: TransitionTable = VT500_TRANSITION_TABLE\n ) {\n super();\n\n this.initialState = ParserState.GROUND;\n this.currentState = this.initialState;\n this._params = new Params(); // defaults to 32 storable params/subparams\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n\n // set default fallback handlers and handler lookup containers\n this._printHandlerFb = (data, start, end): void => { };\n this._executeHandlerFb = (code: number): void => { };\n this._csiHandlerFb = (ident: number, params: IParams): void => { };\n this._escHandlerFb = (ident: number): void => { };\n this._errorHandlerFb = (state: IParsingState): IParsingState => state;\n this._printHandler = this._printHandlerFb;\n this._executeHandlers = Object.create(null);\n this._csiHandlers = Object.create(null);\n this._escHandlers = Object.create(null);\n this._oscParser = new OscParser();\n this._dcsParser = new DcsParser();\n this._errorHandler = this._errorHandlerFb;\n\n // swallow 7bit ST (ESC+\\)\n this.registerEscHandler({ final: '\\\\' }, () => true);\n }\n\n protected _identifier(id: IFunctionIdentifier, finalRange: number[] = [0x40, 0x7e]): number {\n let res = 0;\n if (id.prefix) {\n if (id.prefix.length > 1) {\n throw new Error('only one byte as prefix supported');\n }\n res = id.prefix.charCodeAt(0);\n if (res && 0x3c > res || res > 0x3f) {\n throw new Error('prefix must be in range 0x3c .. 0x3f');\n }\n }\n if (id.intermediates) {\n if (id.intermediates.length > 2) {\n throw new Error('only two bytes as intermediates are supported');\n }\n for (let i = 0; i < id.intermediates.length; ++i) {\n const intermediate = id.intermediates.charCodeAt(i);\n if (0x20 > intermediate || intermediate > 0x2f) {\n throw new Error('intermediate must be in range 0x20 .. 0x2f');\n }\n res <<= 8;\n res |= intermediate;\n }\n }\n if (id.final.length !== 1) {\n throw new Error('final must be a single byte');\n }\n const finalCode = id.final.charCodeAt(0);\n if (finalRange[0] > finalCode || finalCode > finalRange[1]) {\n throw new Error(`final must be in range ${finalRange[0]} .. ${finalRange[1]}`);\n }\n res <<= 8;\n res |= finalCode;\n\n return res;\n }\n\n public identToString(ident: number): string {\n const res: string[] = [];\n while (ident) {\n res.push(String.fromCharCode(ident & 0xFF));\n ident >>= 8;\n }\n return res.reverse().join('');\n }\n\n public dispose(): void {\n this._csiHandlers = Object.create(null);\n this._executeHandlers = Object.create(null);\n this._escHandlers = Object.create(null);\n this._oscParser.dispose();\n this._dcsParser.dispose();\n }\n\n public setPrintHandler(handler: PrintHandlerType): void {\n this._printHandler = handler;\n }\n public clearPrintHandler(): void {\n this._printHandler = this._printHandlerFb;\n }\n\n public registerEscHandler(id: IFunctionIdentifier, handler: EscHandlerType): IDisposable {\n const ident = this._identifier(id, [0x30, 0x7e]);\n if (this._escHandlers[ident] === undefined) {\n this._escHandlers[ident] = [];\n }\n const handlerList = this._escHandlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n public clearEscHandler(id: IFunctionIdentifier): void {\n if (this._escHandlers[this._identifier(id, [0x30, 0x7e])]) delete this._escHandlers[this._identifier(id, [0x30, 0x7e])];\n }\n public setEscHandlerFallback(handler: EscFallbackHandlerType): void {\n this._escHandlerFb = handler;\n }\n\n public setExecuteHandler(flag: string, handler: ExecuteHandlerType): void {\n this._executeHandlers[flag.charCodeAt(0)] = handler;\n }\n public clearExecuteHandler(flag: string): void {\n if (this._executeHandlers[flag.charCodeAt(0)]) delete this._executeHandlers[flag.charCodeAt(0)];\n }\n public setExecuteHandlerFallback(handler: ExecuteFallbackHandlerType): void {\n this._executeHandlerFb = handler;\n }\n\n public registerCsiHandler(id: IFunctionIdentifier, handler: CsiHandlerType): IDisposable {\n const ident = this._identifier(id);\n if (this._csiHandlers[ident] === undefined) {\n this._csiHandlers[ident] = [];\n }\n const handlerList = this._csiHandlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n public clearCsiHandler(id: IFunctionIdentifier): void {\n if (this._csiHandlers[this._identifier(id)]) delete this._csiHandlers[this._identifier(id)];\n }\n public setCsiHandlerFallback(callback: (ident: number, params: IParams) => void): void {\n this._csiHandlerFb = callback;\n }\n\n public registerDcsHandler(id: IFunctionIdentifier, handler: IDcsHandler): IDisposable {\n return this._dcsParser.registerHandler(this._identifier(id), handler);\n }\n public clearDcsHandler(id: IFunctionIdentifier): void {\n this._dcsParser.clearHandler(this._identifier(id));\n }\n public setDcsHandlerFallback(handler: DcsFallbackHandlerType): void {\n this._dcsParser.setHandlerFallback(handler);\n }\n\n public registerOscHandler(ident: number, handler: IOscHandler): IDisposable {\n return this._oscParser.registerHandler(ident, handler);\n }\n public clearOscHandler(ident: number): void {\n this._oscParser.clearHandler(ident);\n }\n public setOscHandlerFallback(handler: OscFallbackHandlerType): void {\n this._oscParser.setHandlerFallback(handler);\n }\n\n public setErrorHandler(callback: (state: IParsingState) => IParsingState): void {\n this._errorHandler = callback;\n }\n public clearErrorHandler(): void {\n this._errorHandler = this._errorHandlerFb;\n }\n\n /**\n * Reset parser to initial values.\n *\n * This can also be used to lift the improper continuation error condition\n * when dealing with async handlers. Use this only as a last resort to silence\n * that error when the terminal has no pending data to be processed. Note that\n * the interrupted async handler might continue its work in the future messing\n * up the terminal state even further.\n */\n public reset(): void {\n this.currentState = this.initialState;\n this._oscParser.reset();\n this._dcsParser.reset();\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n // abort pending continuation from async handler\n // Here the RESET type indicates, that the next parse call will\n // ignore any saved stack, instead continues sync with next codepoint from GROUND\n if (this._parseStack.state !== ParserStackType.NONE) {\n this._parseStack.state = ParserStackType.RESET;\n this._parseStack.handlers = []; // also release handlers ref\n }\n }\n\n /**\n * Async parse support.\n */\n protected _preserveStack(\n state: ParserStackType,\n handlers: ResumableHandlersType,\n handlerPos: number,\n transition: number,\n chunkPos: number\n ): void {\n this._parseStack.state = state;\n this._parseStack.handlers = handlers;\n this._parseStack.handlerPos = handlerPos;\n this._parseStack.transition = transition;\n this._parseStack.chunkPos = chunkPos;\n }\n\n /**\n * Parse UTF32 codepoints in `data` up to `length`.\n *\n * Note: For several actions with high data load the parsing is optimized\n * by using local read ahead loops with hardcoded conditions to\n * avoid costly table lookups. Make sure that any change of table values\n * will be reflected in the loop conditions as well and vice versa.\n * Affected states/actions:\n * - GROUND:PRINT\n * - CSI_PARAM:PARAM\n * - DCS_PARAM:PARAM\n * - OSC_STRING:OSC_PUT\n * - DCS_PASSTHROUGH:DCS_PUT\n *\n * Note on asynchronous handler support:\n * Any handler returning a promise will be treated as asynchronous.\n * To keep the in-band blocking working for async handlers, `parse` pauses execution,\n * creates a stack save and returns the promise to the caller.\n * For proper continuation of the paused state it is important\n * to await the promise resolving. On resolve the parse must be repeated\n * with the same chunk of data and the resolved value in `promiseResult`\n * until no promise is returned.\n *\n * Important: With only sync handlers defined, parsing is completely synchronous as well.\n * As soon as an async handler is involved, synchronous parsing is not possible anymore.\n *\n * Boilerplate for proper parsing of multiple chunks with async handlers:\n *\n * ```typescript\n * async function parseMultipleChunks(chunks: Uint32Array[]): Promise {\n * for (const chunk of chunks) {\n * let result: void | Promise;\n * let prev: boolean | undefined;\n * while (result = parser.parse(chunk, chunk.length, prev)) {\n * prev = await result;\n * }\n * }\n * // finished parsing all chunks...\n * }\n * ```\n */\n public parse(data: Uint32Array, length: number, promiseResult?: boolean): void | Promise {\n let code = 0;\n let transition = 0;\n let start = 0;\n let handlerResult: void | boolean | Promise;\n\n // resume from async handler\n if (this._parseStack.state) {\n // allow sync parser reset even in continuation mode\n // Note: can be used to recover parser from improper continuation error below\n if (this._parseStack.state === ParserStackType.RESET) {\n this._parseStack.state = ParserStackType.NONE;\n start = this._parseStack.chunkPos + 1; // continue with next codepoint in GROUND\n } else {\n if (promiseResult === undefined || this._parseStack.state === ParserStackType.FAIL) {\n /**\n * Reject further parsing on improper continuation after pausing.\n * This is a really bad condition with screwed up execution order and prolly messed up\n * terminal state, therefore we exit hard with an exception and reject any further parsing.\n *\n * Note: With `Terminal.write` usage this exception should never occur, as the top level\n * calls are guaranteed to handle async conditions properly. If you ever encounter this\n * exception in your terminal integration it indicates, that you injected data chunks to\n * `InputHandler.parse` or `EscapeSequenceParser.parse` synchronously without waiting for\n * continuation of a running async handler.\n *\n * It is possible to get rid of this error by calling `reset`. But dont rely on that,\n * as the pending async handler still might mess up the terminal later. Instead fix the faulty\n * async handling, so this error will not be thrown anymore.\n */\n this._parseStack.state = ParserStackType.FAIL;\n throw new Error('improper continuation due to previous async handler, giving up parsing');\n }\n\n // we have to resume the old handler loop if:\n // - return value of the promise was `false`\n // - handlers are not exhausted yet\n const handlers = this._parseStack.handlers;\n let handlerPos = this._parseStack.handlerPos - 1;\n switch (this._parseStack.state) {\n case ParserStackType.CSI:\n if (promiseResult === false && handlerPos > -1) {\n for (; handlerPos >= 0; handlerPos--) {\n handlerResult = (handlers as CsiHandlerType[])[handlerPos](this._params);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._parseStack.handlerPos = handlerPos;\n return handlerResult;\n }\n }\n }\n this._parseStack.handlers = [];\n break;\n case ParserStackType.ESC:\n if (promiseResult === false && handlerPos > -1) {\n for (; handlerPos >= 0; handlerPos--) {\n handlerResult = (handlers as EscHandlerType[])[handlerPos]();\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._parseStack.handlerPos = handlerPos;\n return handlerResult;\n }\n }\n }\n this._parseStack.handlers = [];\n break;\n case ParserStackType.DCS:\n code = data[this._parseStack.chunkPos];\n handlerResult = this._dcsParser.unhook(code !== 0x18 && code !== 0x1a, promiseResult);\n if (handlerResult) {\n return handlerResult;\n }\n if (code === 0x1b) this._parseStack.transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n break;\n case ParserStackType.OSC:\n code = data[this._parseStack.chunkPos];\n handlerResult = this._oscParser.end(code !== 0x18 && code !== 0x1a, promiseResult);\n if (handlerResult) {\n return handlerResult;\n }\n if (code === 0x1b) this._parseStack.transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n break;\n }\n // cleanup before continuing with the main sync loop\n this._parseStack.state = ParserStackType.NONE;\n start = this._parseStack.chunkPos + 1;\n this.precedingCodepoint = 0;\n this.currentState = this._parseStack.transition & TableAccess.TRANSITION_STATE_MASK;\n }\n }\n\n // continue with main sync loop\n\n // process input string\n for (let i = start; i < length; ++i) {\n code = data[i];\n\n // normal transition & action lookup\n transition = this._transitions.table[this.currentState << TableAccess.INDEX_STATE_SHIFT | (code < 0xa0 ? code : NON_ASCII_PRINTABLE)];\n switch (transition >> TableAccess.TRANSITION_ACTION_SHIFT) {\n case ParserAction.PRINT:\n // read ahead with loop unrolling\n // Note: 0x20 (SP) is included, 0x7F (DEL) is excluded\n for (let j = i + 1; ; ++j) {\n if (j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n if (++j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n if (++j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n if (++j >= length || (code = data[j]) < 0x20 || (code > 0x7e && code < NON_ASCII_PRINTABLE)) {\n this._printHandler(data, i, j);\n i = j - 1;\n break;\n }\n }\n break;\n case ParserAction.EXECUTE:\n if (this._executeHandlers[code]) this._executeHandlers[code]();\n else this._executeHandlerFb(code);\n this.precedingCodepoint = 0;\n break;\n case ParserAction.IGNORE:\n break;\n case ParserAction.ERROR:\n const inject: IParsingState = this._errorHandler(\n {\n position: i,\n code,\n currentState: this.currentState,\n collect: this._collect,\n params: this._params,\n abort: false\n });\n if (inject.abort) return;\n // inject values: currently not implemented\n break;\n case ParserAction.CSI_DISPATCH:\n // Trigger CSI Handler\n const handlers = this._csiHandlers[this._collect << 8 | code];\n let j = handlers ? handlers.length - 1 : -1;\n for (; j >= 0; j--) {\n // true means success and to stop bubbling\n // a promise indicates an async handler that needs to finish before progressing\n handlerResult = handlers[j](this._params);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._preserveStack(ParserStackType.CSI, handlers, j, transition, i);\n return handlerResult;\n }\n }\n if (j < 0) {\n this._csiHandlerFb(this._collect << 8 | code, this._params);\n }\n this.precedingCodepoint = 0;\n break;\n case ParserAction.PARAM:\n // inner loop: digits (0x30 - 0x39) and ; (0x3b) and : (0x3a)\n do {\n switch (code) {\n case 0x3b:\n this._params.addParam(0); // ZDM\n break;\n case 0x3a:\n this._params.addSubParam(-1);\n break;\n default: // 0x30 - 0x39\n this._params.addDigit(code - 48);\n }\n } while (++i < length && (code = data[i]) > 0x2f && code < 0x3c);\n i--;\n break;\n case ParserAction.COLLECT:\n this._collect <<= 8;\n this._collect |= code;\n break;\n case ParserAction.ESC_DISPATCH:\n const handlersEsc = this._escHandlers[this._collect << 8 | code];\n let jj = handlersEsc ? handlersEsc.length - 1 : -1;\n for (; jj >= 0; jj--) {\n // true means success and to stop bubbling\n // a promise indicates an async handler that needs to finish before progressing\n handlerResult = handlersEsc[jj]();\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._preserveStack(ParserStackType.ESC, handlersEsc, jj, transition, i);\n return handlerResult;\n }\n }\n if (jj < 0) {\n this._escHandlerFb(this._collect << 8 | code);\n }\n this.precedingCodepoint = 0;\n break;\n case ParserAction.CLEAR:\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n break;\n case ParserAction.DCS_HOOK:\n this._dcsParser.hook(this._collect << 8 | code, this._params);\n break;\n case ParserAction.DCS_PUT:\n // inner loop - exit DCS_PUT: 0x18, 0x1a, 0x1b, 0x7f, 0x80 - 0x9f\n // unhook triggered by: 0x1b, 0x9c (success) and 0x18, 0x1a (abort)\n for (let j = i + 1; ; ++j) {\n if (j >= length || (code = data[j]) === 0x18 || code === 0x1a || code === 0x1b || (code > 0x7f && code < NON_ASCII_PRINTABLE)) {\n this._dcsParser.put(data, i, j);\n i = j - 1;\n break;\n }\n }\n break;\n case ParserAction.DCS_UNHOOK:\n handlerResult = this._dcsParser.unhook(code !== 0x18 && code !== 0x1a);\n if (handlerResult) {\n this._preserveStack(ParserStackType.DCS, [], 0, transition, i);\n return handlerResult;\n }\n if (code === 0x1b) transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n break;\n case ParserAction.OSC_START:\n this._oscParser.start();\n break;\n case ParserAction.OSC_PUT:\n // inner loop: 0x20 (SP) included, 0x7F (DEL) included\n for (let j = i + 1; ; j++) {\n if (j >= length || (code = data[j]) < 0x20 || (code > 0x7f && code < NON_ASCII_PRINTABLE)) {\n this._oscParser.put(data, i, j);\n i = j - 1;\n break;\n }\n }\n break;\n case ParserAction.OSC_END:\n handlerResult = this._oscParser.end(code !== 0x18 && code !== 0x1a);\n if (handlerResult) {\n this._preserveStack(ParserStackType.OSC, [], 0, transition, i);\n return handlerResult;\n }\n if (code === 0x1b) transition |= ParserState.ESCAPE;\n this._params.reset();\n this._params.addParam(0); // ZDM\n this._collect = 0;\n this.precedingCodepoint = 0;\n break;\n }\n this.currentState = transition & TableAccess.TRANSITION_STATE_MASK;\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOscHandler, IHandlerCollection, OscFallbackHandlerType, IOscParser, ISubParserStackState } from 'common/parser/Types';\nimport { OscState, PAYLOAD_LIMIT } from 'common/parser/Constants';\nimport { utf32ToString } from 'common/input/TextDecoder';\nimport { IDisposable } from 'common/Types';\n\nconst EMPTY_HANDLERS: IOscHandler[] = [];\n\nexport class OscParser implements IOscParser {\n private _state = OscState.START;\n private _active = EMPTY_HANDLERS;\n private _id = -1;\n private _handlers: IHandlerCollection = Object.create(null);\n private _handlerFb: OscFallbackHandlerType = () => { };\n private _stack: ISubParserStackState = {\n paused: false,\n loopPosition: 0,\n fallThrough: false\n };\n\n public registerHandler(ident: number, handler: IOscHandler): IDisposable {\n if (this._handlers[ident] === undefined) {\n this._handlers[ident] = [];\n }\n const handlerList = this._handlers[ident];\n handlerList.push(handler);\n return {\n dispose: () => {\n const handlerIndex = handlerList.indexOf(handler);\n if (handlerIndex !== -1) {\n handlerList.splice(handlerIndex, 1);\n }\n }\n };\n }\n public clearHandler(ident: number): void {\n if (this._handlers[ident]) delete this._handlers[ident];\n }\n public setHandlerFallback(handler: OscFallbackHandlerType): void {\n this._handlerFb = handler;\n }\n\n public dispose(): void {\n this._handlers = Object.create(null);\n this._handlerFb = () => { };\n this._active = EMPTY_HANDLERS;\n }\n\n public reset(): void {\n // force cleanup handlers if payload was already sent\n if (this._state === OscState.PAYLOAD) {\n for (let j = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; j >= 0; --j) {\n this._active[j].end(false);\n }\n }\n this._stack.paused = false;\n this._active = EMPTY_HANDLERS;\n this._id = -1;\n this._state = OscState.START;\n }\n\n private _start(): void {\n this._active = this._handlers[this._id] || EMPTY_HANDLERS;\n if (!this._active.length) {\n this._handlerFb(this._id, 'START');\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].start();\n }\n }\n }\n\n private _put(data: Uint32Array, start: number, end: number): void {\n if (!this._active.length) {\n this._handlerFb(this._id, 'PUT', utf32ToString(data, start, end));\n } else {\n for (let j = this._active.length - 1; j >= 0; j--) {\n this._active[j].put(data, start, end);\n }\n }\n }\n\n public start(): void {\n // always reset leftover handlers\n this.reset();\n this._state = OscState.ID;\n }\n\n /**\n * Put data to current OSC command.\n * Expects the identifier of the OSC command in the form\n * OSC id ; payload ST/BEL\n * Payload chunks are not further processed and get\n * directly passed to the handlers.\n */\n public put(data: Uint32Array, start: number, end: number): void {\n if (this._state === OscState.ABORT) {\n return;\n }\n if (this._state === OscState.ID) {\n while (start < end) {\n const code = data[start++];\n if (code === 0x3b) {\n this._state = OscState.PAYLOAD;\n this._start();\n break;\n }\n if (code < 0x30 || 0x39 < code) {\n this._state = OscState.ABORT;\n return;\n }\n if (this._id === -1) {\n this._id = 0;\n }\n this._id = this._id * 10 + code - 48;\n }\n }\n if (this._state === OscState.PAYLOAD && end - start > 0) {\n this._put(data, start, end);\n }\n }\n\n /**\n * Indicates end of an OSC command.\n * Whether the OSC got aborted or finished normally\n * is indicated by `success`.\n */\n public end(success: boolean, promiseResult: boolean = true): void | Promise {\n if (this._state === OscState.START) {\n return;\n }\n // do nothing if command was faulty\n if (this._state !== OscState.ABORT) {\n // if we are still in ID state and get an early end\n // means that the command has no payload thus we still have\n // to announce START and send END right after\n if (this._state === OscState.ID) {\n this._start();\n }\n\n if (!this._active.length) {\n this._handlerFb(this._id, 'END', success);\n } else {\n let handlerResult: boolean | Promise = false;\n let j = this._active.length - 1;\n let fallThrough = false;\n if (this._stack.paused) {\n j = this._stack.loopPosition - 1;\n handlerResult = promiseResult;\n fallThrough = this._stack.fallThrough;\n this._stack.paused = false;\n }\n if (!fallThrough && handlerResult === false) {\n for (; j >= 0; j--) {\n handlerResult = this._active[j].end(success);\n if (handlerResult === true) {\n break;\n } else if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = false;\n return handlerResult;\n }\n }\n j--;\n }\n // cleanup left over handlers\n // we always have to call .end for proper cleanup,\n // here we use `success` to indicate whether a handler should execute\n for (; j >= 0; j--) {\n handlerResult = this._active[j].end(false);\n if (handlerResult instanceof Promise) {\n this._stack.paused = true;\n this._stack.loopPosition = j;\n this._stack.fallThrough = true;\n return handlerResult;\n }\n }\n }\n\n }\n this._active = EMPTY_HANDLERS;\n this._id = -1;\n this._state = OscState.START;\n }\n}\n\n/**\n * Convenient class to allow attaching string based handler functions\n * as OSC handlers.\n */\nexport class OscHandler implements IOscHandler {\n private _data = '';\n private _hitLimit: boolean = false;\n\n constructor(private _handler: (data: string) => boolean | Promise) { }\n\n public start(): void {\n this._data = '';\n this._hitLimit = false;\n }\n\n public put(data: Uint32Array, start: number, end: number): void {\n if (this._hitLimit) {\n return;\n }\n this._data += utf32ToString(data, start, end);\n if (this._data.length > PAYLOAD_LIMIT) {\n this._data = '';\n this._hitLimit = true;\n }\n }\n\n public end(success: boolean): boolean | Promise {\n let ret: boolean | Promise = false;\n if (this._hitLimit) {\n ret = false;\n } else if (success) {\n ret = this._handler(this._data);\n if (ret instanceof Promise) {\n // need to hold data until `ret` got resolved\n // dont care for errors, data will be freed anyway on next start\n return ret.then(res => {\n this._data = '';\n this._hitLimit = false;\n return res;\n });\n }\n }\n this._data = '';\n this._hitLimit = false;\n return ret;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IParams, ParamsArray } from 'common/parser/Types';\n\n// max value supported for a single param/subparam (clamped to positive int32 range)\nconst MAX_VALUE = 0x7FFFFFFF;\n// max allowed subparams for a single sequence (hardcoded limitation)\nconst MAX_SUBPARAMS = 256;\n\n/**\n * Params storage class.\n * This type is used by the parser to accumulate sequence parameters and sub parameters\n * and transmit them to the input handler actions.\n *\n * NOTES:\n * - params object for action handlers is borrowed, use `.toArray` or `.clone` to get a copy\n * - never read beyond `params.length - 1` (likely to contain arbitrary data)\n * - `.getSubParams` returns a borrowed typed array, use `.getSubParamsAll` for cloned sub params\n * - hardcoded limitations:\n * - max. value for a single (sub) param is 2^31 - 1 (greater values are clamped to that)\n * - max. 256 sub params possible\n * - negative values are not allowed beside -1 (placeholder for default value)\n *\n * About ZDM (Zero Default Mode):\n * ZDM is not orchestrated by this class. If the parser is in ZDM,\n * it should add 0 for empty params, otherwise -1. This does not apply\n * to subparams, empty subparams should always be added with -1.\n */\nexport class Params implements IParams {\n // params store and length\n public params: Int32Array;\n public length: number;\n\n // sub params store and length\n protected _subParams: Int32Array;\n protected _subParamsLength: number;\n\n // sub params offsets from param: param idx --> [start, end] offset\n private _subParamsIdx: Uint16Array;\n private _rejectDigits: boolean;\n private _rejectSubDigits: boolean;\n private _digitIsSub: boolean;\n\n /**\n * Create a `Params` type from JS array representation.\n */\n public static fromArray(values: ParamsArray): Params {\n const params = new Params();\n if (!values.length) {\n return params;\n }\n // skip leading sub params\n for (let i = (Array.isArray(values[0])) ? 1 : 0; i < values.length; ++i) {\n const value = values[i];\n if (Array.isArray(value)) {\n for (let k = 0; k < value.length; ++k) {\n params.addSubParam(value[k]);\n }\n } else {\n params.addParam(value);\n }\n }\n return params;\n }\n\n /**\n * @param maxLength max length of storable parameters\n * @param maxSubParamsLength max length of storable sub parameters\n */\n constructor(public maxLength: number = 32, public maxSubParamsLength: number = 32) {\n if (maxSubParamsLength > MAX_SUBPARAMS) {\n throw new Error('maxSubParamsLength must not be greater than 256');\n }\n this.params = new Int32Array(maxLength);\n this.length = 0;\n this._subParams = new Int32Array(maxSubParamsLength);\n this._subParamsLength = 0;\n this._subParamsIdx = new Uint16Array(maxLength);\n this._rejectDigits = false;\n this._rejectSubDigits = false;\n this._digitIsSub = false;\n }\n\n /**\n * Clone object.\n */\n public clone(): Params {\n const newParams = new Params(this.maxLength, this.maxSubParamsLength);\n newParams.params.set(this.params);\n newParams.length = this.length;\n newParams._subParams.set(this._subParams);\n newParams._subParamsLength = this._subParamsLength;\n newParams._subParamsIdx.set(this._subParamsIdx);\n newParams._rejectDigits = this._rejectDigits;\n newParams._rejectSubDigits = this._rejectSubDigits;\n newParams._digitIsSub = this._digitIsSub;\n return newParams;\n }\n\n /**\n * Get a JS array representation of the current parameters and sub parameters.\n * The array is structured as follows:\n * sequence: \"1;2:3:4;5::6\"\n * array : [1, 2, [3, 4], 5, [-1, 6]]\n */\n public toArray(): ParamsArray {\n const res: ParamsArray = [];\n for (let i = 0; i < this.length; ++i) {\n res.push(this.params[i]);\n const start = this._subParamsIdx[i] >> 8;\n const end = this._subParamsIdx[i] & 0xFF;\n if (end - start > 0) {\n res.push(Array.prototype.slice.call(this._subParams, start, end));\n }\n }\n return res;\n }\n\n /**\n * Reset to initial empty state.\n */\n public reset(): void {\n this.length = 0;\n this._subParamsLength = 0;\n this._rejectDigits = false;\n this._rejectSubDigits = false;\n this._digitIsSub = false;\n }\n\n /**\n * Add a parameter value.\n * `Params` only stores up to `maxLength` parameters, any later\n * parameter will be ignored.\n * Note: VT devices only stored up to 16 values, xterm seems to\n * store up to 30.\n */\n public addParam(value: number): void {\n this._digitIsSub = false;\n if (this.length >= this.maxLength) {\n this._rejectDigits = true;\n return;\n }\n if (value < -1) {\n throw new Error('values lesser than -1 are not allowed');\n }\n this._subParamsIdx[this.length] = this._subParamsLength << 8 | this._subParamsLength;\n this.params[this.length++] = value > MAX_VALUE ? MAX_VALUE : value;\n }\n\n /**\n * Add a sub parameter value.\n * The sub parameter is automatically associated with the last parameter value.\n * Thus it is not possible to add a subparameter without any parameter added yet.\n * `Params` only stores up to `subParamsLength` sub parameters, any later\n * sub parameter will be ignored.\n */\n public addSubParam(value: number): void {\n this._digitIsSub = true;\n if (!this.length) {\n return;\n }\n if (this._rejectDigits || this._subParamsLength >= this.maxSubParamsLength) {\n this._rejectSubDigits = true;\n return;\n }\n if (value < -1) {\n throw new Error('values lesser than -1 are not allowed');\n }\n this._subParams[this._subParamsLength++] = value > MAX_VALUE ? MAX_VALUE : value;\n this._subParamsIdx[this.length - 1]++;\n }\n\n /**\n * Whether parameter at index `idx` has sub parameters.\n */\n public hasSubParams(idx: number): boolean {\n return ((this._subParamsIdx[idx] & 0xFF) - (this._subParamsIdx[idx] >> 8) > 0);\n }\n\n /**\n * Return sub parameters for parameter at index `idx`.\n * Note: The values are borrowed, thus you need to copy\n * the values if you need to hold them in nonlocal scope.\n */\n public getSubParams(idx: number): Int32Array | null {\n const start = this._subParamsIdx[idx] >> 8;\n const end = this._subParamsIdx[idx] & 0xFF;\n if (end - start > 0) {\n return this._subParams.subarray(start, end);\n }\n return null;\n }\n\n /**\n * Return all sub parameters as {idx: subparams} mapping.\n * Note: The values are not borrowed.\n */\n public getSubParamsAll(): {[idx: number]: Int32Array} {\n const result: {[idx: number]: Int32Array} = {};\n for (let i = 0; i < this.length; ++i) {\n const start = this._subParamsIdx[i] >> 8;\n const end = this._subParamsIdx[i] & 0xFF;\n if (end - start > 0) {\n result[i] = this._subParams.slice(start, end);\n }\n }\n return result;\n }\n\n /**\n * Add a single digit value to current parameter.\n * This is used by the parser to account digits on a char by char basis.\n */\n public addDigit(value: number): void {\n let length;\n if (this._rejectDigits\n || !(length = this._digitIsSub ? this._subParamsLength : this.length)\n || (this._digitIsSub && this._rejectSubDigits)\n ) {\n return;\n }\n\n const store = this._digitIsSub ? this._subParams : this.params;\n const cur = store[length - 1];\n store[length - 1] = ~cur ? Math.min(cur * 10 + value, MAX_VALUE) : value;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ITerminalAddon, IDisposable, Terminal } from 'xterm';\n\nexport interface ILoadedAddon {\n instance: ITerminalAddon;\n dispose: () => void;\n isDisposed: boolean;\n}\n\nexport class AddonManager implements IDisposable {\n protected _addons: ILoadedAddon[] = [];\n\n constructor() {\n }\n\n public dispose(): void {\n for (let i = this._addons.length - 1; i >= 0; i--) {\n this._addons[i].instance.dispose();\n }\n }\n\n public loadAddon(terminal: Terminal, instance: ITerminalAddon): void {\n const loadedAddon: ILoadedAddon = {\n instance,\n dispose: instance.dispose,\n isDisposed: false\n };\n this._addons.push(loadedAddon);\n instance.dispose = () => this._wrappedAddonDispose(loadedAddon);\n instance.activate(terminal as any);\n }\n\n private _wrappedAddonDispose(loadedAddon: ILoadedAddon): void {\n if (loadedAddon.isDisposed) {\n // Do nothing if already disposed\n return;\n }\n let index = -1;\n for (let i = 0; i < this._addons.length; i++) {\n if (this._addons[i] === loadedAddon) {\n index = i;\n break;\n }\n }\n if (index === -1) {\n throw new Error('Could not dispose an addon that has not been loaded');\n }\n loadedAddon.isDisposed = true;\n loadedAddon.dispose.apply(loadedAddon.instance);\n this._addons.splice(index, 1);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBuffer as IBufferApi, IBufferLine as IBufferLineApi, IBufferCell as IBufferCellApi } from 'xterm';\nimport { IBuffer } from 'common/buffer/Types';\nimport { BufferLineApiView } from 'common/public/BufferLineApiView';\nimport { CellData } from 'common/buffer/CellData';\n\nexport class BufferApiView implements IBufferApi {\n constructor(\n private _buffer: IBuffer,\n public readonly type: 'normal' | 'alternate'\n ) { }\n\n public init(buffer: IBuffer): BufferApiView {\n this._buffer = buffer;\n return this;\n }\n\n public get cursorY(): number { return this._buffer.y; }\n public get cursorX(): number { return this._buffer.x; }\n public get viewportY(): number { return this._buffer.ydisp; }\n public get baseY(): number { return this._buffer.ybase; }\n public get length(): number { return this._buffer.lines.length; }\n public getLine(y: number): IBufferLineApi | undefined {\n const line = this._buffer.lines.get(y);\n if (!line) {\n return undefined;\n }\n return new BufferLineApiView(line);\n }\n public getNullCell(): IBufferCellApi { return new CellData(); }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { CellData } from 'common/buffer/CellData';\nimport { IBufferLine, ICellData } from 'common/Types';\nimport { IBufferCell as IBufferCellApi, IBufferLine as IBufferLineApi } from 'xterm';\n\nexport class BufferLineApiView implements IBufferLineApi {\n constructor(private _line: IBufferLine) { }\n\n public get isWrapped(): boolean { return this._line.isWrapped; }\n public get length(): number { return this._line.length; }\n public getCell(x: number, cell?: IBufferCellApi): IBufferCellApi | undefined {\n if (x < 0 || x >= this._line.length) {\n return undefined;\n }\n\n if (cell) {\n this._line.loadCell(x, cell as ICellData);\n return cell;\n }\n return this._line.loadCell(x, new CellData());\n }\n public translateToString(trimRight?: boolean, startColumn?: number, endColumn?: number): string {\n return this._line.translateToString(trimRight, startColumn, endColumn);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBuffer as IBufferApi, IBufferNamespace as IBufferNamespaceApi } from 'xterm';\nimport { BufferApiView } from 'common/public/BufferApiView';\nimport { IEvent, EventEmitter } from 'common/EventEmitter';\nimport { ICoreTerminal } from 'common/Types';\n\nexport class BufferNamespaceApi implements IBufferNamespaceApi {\n private _normal: BufferApiView;\n private _alternate: BufferApiView;\n private _onBufferChange = new EventEmitter();\n public get onBufferChange(): IEvent { return this._onBufferChange.event; }\n\n constructor(private _core: ICoreTerminal) {\n this._normal = new BufferApiView(this._core.buffers.normal, 'normal');\n this._alternate = new BufferApiView(this._core.buffers.alt, 'alternate');\n this._core.buffers.onBufferActivate(() => this._onBufferChange.fire(this.active));\n }\n public get active(): IBufferApi {\n if (this._core.buffers.active === this._core.buffers.normal) { return this.normal; }\n if (this._core.buffers.active === this._core.buffers.alt) { return this.alternate; }\n throw new Error('Active buffer is neither normal nor alternate');\n }\n public get normal(): IBufferApi {\n return this._normal.init(this._core.buffers.normal);\n }\n public get alternate(): IBufferApi {\n return this._alternate.init(this._core.buffers.alt);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IParams } from 'common/parser/Types';\nimport { IDisposable, IFunctionIdentifier, IParser } from 'xterm';\nimport { ICoreTerminal } from 'common/Types';\n\nexport class ParserApi implements IParser {\n constructor(private _core: ICoreTerminal) { }\n\n public registerCsiHandler(id: IFunctionIdentifier, callback: (params: (number | number[])[]) => boolean | Promise): IDisposable {\n return this._core.registerCsiHandler(id, (params: IParams) => callback(params.toArray()));\n }\n public addCsiHandler(id: IFunctionIdentifier, callback: (params: (number | number[])[]) => boolean | Promise): IDisposable {\n return this.registerCsiHandler(id, callback);\n }\n public registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: (number | number[])[]) => boolean | Promise): IDisposable {\n return this._core.registerDcsHandler(id, (data: string, params: IParams) => callback(data, params.toArray()));\n }\n public addDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: (number | number[])[]) => boolean | Promise): IDisposable {\n return this.registerDcsHandler(id, callback);\n }\n public registerEscHandler(id: IFunctionIdentifier, handler: () => boolean | Promise): IDisposable {\n return this._core.registerEscHandler(id, handler);\n }\n public addEscHandler(id: IFunctionIdentifier, handler: () => boolean | Promise): IDisposable {\n return this.registerEscHandler(id, handler);\n }\n public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this._core.registerOscHandler(ident, callback);\n }\n public addOscHandler(ident: number, callback: (data: string) => boolean | Promise): IDisposable {\n return this.registerOscHandler(ident, callback);\n }\n}\n", "/**\n * Copyright (c) 2021 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICoreTerminal } from 'common/Types';\nimport { IUnicodeHandling, IUnicodeVersionProvider } from 'xterm';\n\nexport class UnicodeApi implements IUnicodeHandling {\n constructor(private _core: ICoreTerminal) { }\n\n public register(provider: IUnicodeVersionProvider): void {\n this._core.unicodeService.register(provider);\n }\n\n public get versions(): string[] {\n return this._core.unicodeService.versions;\n }\n\n public get activeVersion(): string {\n return this._core.unicodeService.activeVersion;\n }\n\n public set activeVersion(version: string) {\n this._core.unicodeService.activeVersion = version;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferService, IOptionsService } from 'common/services/Services';\nimport { BufferSet } from 'common/buffer/BufferSet';\nimport { IBufferSet, IBuffer } from 'common/buffer/Types';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { Disposable } from 'common/Lifecycle';\nimport { IAttributeData, IBufferLine, ScrollSource } from 'common/Types';\n\nexport const MINIMUM_COLS = 2; // Less than 2 can mess with wide chars\nexport const MINIMUM_ROWS = 1;\n\nexport class BufferService extends Disposable implements IBufferService {\n public serviceBrand: any;\n\n public cols: number;\n public rows: number;\n public buffers: IBufferSet;\n /** Whether the user is scrolling (locks the scroll position) */\n public isUserScrolling: boolean = false;\n\n private _onResize = new EventEmitter<{ cols: number, rows: number }>();\n public get onResize(): IEvent<{ cols: number, rows: number }> { return this._onResize.event; }\n private _onScroll = new EventEmitter();\n public get onScroll(): IEvent { return this._onScroll.event; }\n\n public get buffer(): IBuffer { return this.buffers.active; }\n\n /** An IBufferline to clone/copy from for new blank lines */\n private _cachedBlankLine: IBufferLine | undefined;\n\n constructor(\n @IOptionsService private _optionsService: IOptionsService\n ) {\n super();\n this.cols = Math.max(_optionsService.rawOptions.cols || 0, MINIMUM_COLS);\n this.rows = Math.max(_optionsService.rawOptions.rows || 0, MINIMUM_ROWS);\n this.buffers = new BufferSet(_optionsService, this);\n }\n\n public dispose(): void {\n super.dispose();\n this.buffers.dispose();\n }\n\n public resize(cols: number, rows: number): void {\n this.cols = cols;\n this.rows = rows;\n this.buffers.resize(cols, rows);\n this.buffers.setupTabStops(this.cols);\n this._onResize.fire({ cols, rows });\n }\n\n public reset(): void {\n this.buffers.reset();\n this.isUserScrolling = false;\n }\n\n /**\n * Scroll the terminal down 1 row, creating a blank line.\n * @param isWrapped Whether the new line is wrapped from the previous line.\n */\n public scroll(eraseAttr: IAttributeData, isWrapped: boolean = false): void {\n const buffer = this.buffer;\n\n let newLine: IBufferLine | undefined;\n newLine = this._cachedBlankLine;\n if (!newLine || newLine.length !== this.cols || newLine.getFg(0) !== eraseAttr.fg || newLine.getBg(0) !== eraseAttr.bg) {\n newLine = buffer.getBlankLine(eraseAttr, isWrapped);\n this._cachedBlankLine = newLine;\n }\n newLine.isWrapped = isWrapped;\n\n const topRow = buffer.ybase + buffer.scrollTop;\n const bottomRow = buffer.ybase + buffer.scrollBottom;\n\n if (buffer.scrollTop === 0) {\n // Determine whether the buffer is going to be trimmed after insertion.\n const willBufferBeTrimmed = buffer.lines.isFull;\n\n // Insert the line using the fastest method\n if (bottomRow === buffer.lines.length - 1) {\n if (willBufferBeTrimmed) {\n buffer.lines.recycle().copyFrom(newLine);\n } else {\n buffer.lines.push(newLine.clone());\n }\n } else {\n buffer.lines.splice(bottomRow + 1, 0, newLine.clone());\n }\n\n // Only adjust ybase and ydisp when the buffer is not trimmed\n if (!willBufferBeTrimmed) {\n buffer.ybase++;\n // Only scroll the ydisp with ybase if the user has not scrolled up\n if (!this.isUserScrolling) {\n buffer.ydisp++;\n }\n } else {\n // When the buffer is full and the user has scrolled up, keep the text\n // stable unless ydisp is right at the top\n if (this.isUserScrolling) {\n buffer.ydisp = Math.max(buffer.ydisp - 1, 0);\n }\n }\n } else {\n // scrollTop is non-zero which means no line will be going to the\n // scrollback, instead we can just shift them in-place.\n const scrollRegionHeight = bottomRow - topRow + 1 /* as it's zero-based */;\n buffer.lines.shiftElements(topRow + 1, scrollRegionHeight - 1, -1);\n buffer.lines.set(bottomRow, newLine.clone());\n }\n\n // Move the viewport to the bottom of the buffer unless the user is\n // scrolling.\n if (!this.isUserScrolling) {\n buffer.ydisp = buffer.ybase;\n }\n\n this._onScroll.fire(buffer.ydisp);\n }\n\n /**\n * Scroll the display of the terminal\n * @param disp The number of lines to scroll down (negative scroll up).\n * @param suppressScrollEvent Don't emit the scroll event as scrollLines. This is used\n * to avoid unwanted events being handled by the viewport when the event was triggered from the\n * viewport originally.\n */\n public scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void {\n const buffer = this.buffer;\n if (disp < 0) {\n if (buffer.ydisp === 0) {\n return;\n }\n this.isUserScrolling = true;\n } else if (disp + buffer.ydisp >= buffer.ybase) {\n this.isUserScrolling = false;\n }\n\n const oldYdisp = buffer.ydisp;\n buffer.ydisp = Math.max(Math.min(buffer.ydisp + disp, buffer.ybase), 0);\n\n // No change occurred, don't trigger scroll/refresh\n if (oldYdisp === buffer.ydisp) {\n return;\n }\n\n if (!suppressScrollEvent) {\n this._onScroll.fire(buffer.ydisp);\n }\n }\n\n /**\n * Scroll the display of the terminal by a number of pages.\n * @param pageCount The number of pages to scroll (negative scrolls up).\n */\n public scrollPages(pageCount: number): void {\n this.scrollLines(pageCount * (this.rows - 1));\n }\n\n /**\n * Scrolls the display of the terminal to the top.\n */\n public scrollToTop(): void {\n this.scrollLines(-this.buffer.ydisp);\n }\n\n /**\n * Scrolls the display of the terminal to the bottom.\n */\n public scrollToBottom(): void {\n this.scrollLines(this.buffer.ybase - this.buffer.ydisp);\n }\n\n public scrollToLine(line: number): void {\n const scrollAmount = line - this.buffer.ydisp;\n if (scrollAmount !== 0) {\n this.scrollLines(scrollAmount);\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICharsetService } from 'common/services/Services';\nimport { ICharset } from 'common/Types';\n\nexport class CharsetService implements ICharsetService {\n public serviceBrand: any;\n\n public charset: ICharset | undefined;\n public glevel: number = 0;\n\n private _charsets: (ICharset | undefined)[] = [];\n\n public reset(): void {\n this.charset = undefined;\n this._charsets = [];\n this.glevel = 0;\n }\n\n public setgLevel(g: number): void {\n this.glevel = g;\n this.charset = this._charsets[g];\n }\n\n public setgCharset(g: number, charset: ICharset | undefined): void {\n this._charsets[g] = charset;\n if (this.glevel === g) {\n this.charset = charset;\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IBufferService, ICoreService, ICoreMouseService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { ICoreMouseProtocol, ICoreMouseEvent, CoreMouseEncoding, CoreMouseEventType, CoreMouseButton, CoreMouseAction } from 'common/Types';\n\n/**\n * Supported default protocols.\n */\nconst DEFAULT_PROTOCOLS: {[key: string]: ICoreMouseProtocol} = {\n /**\n * NONE\n * Events: none\n * Modifiers: none\n */\n NONE: {\n events: CoreMouseEventType.NONE,\n restrict: () => false\n },\n /**\n * X10\n * Events: mousedown\n * Modifiers: none\n */\n X10: {\n events: CoreMouseEventType.DOWN,\n restrict: (e: ICoreMouseEvent) => {\n // no wheel, no move, no up\n if (e.button === CoreMouseButton.WHEEL || e.action !== CoreMouseAction.DOWN) {\n return false;\n }\n // no modifiers\n e.ctrl = false;\n e.alt = false;\n e.shift = false;\n return true;\n }\n },\n /**\n * VT200\n * Events: mousedown / mouseup / wheel\n * Modifiers: all\n */\n VT200: {\n events: CoreMouseEventType.DOWN | CoreMouseEventType.UP | CoreMouseEventType.WHEEL,\n restrict: (e: ICoreMouseEvent) => {\n // no move\n if (e.action === CoreMouseAction.MOVE) {\n return false;\n }\n return true;\n }\n },\n /**\n * DRAG\n * Events: mousedown / mouseup / wheel / mousedrag\n * Modifiers: all\n */\n DRAG: {\n events: CoreMouseEventType.DOWN | CoreMouseEventType.UP | CoreMouseEventType.WHEEL | CoreMouseEventType.DRAG,\n restrict: (e: ICoreMouseEvent) => {\n // no move without button\n if (e.action === CoreMouseAction.MOVE && e.button === CoreMouseButton.NONE) {\n return false;\n }\n return true;\n }\n },\n /**\n * ANY\n * Events: all mouse related events\n * Modifiers: all\n */\n ANY: {\n events:\n CoreMouseEventType.DOWN | CoreMouseEventType.UP | CoreMouseEventType.WHEEL\n | CoreMouseEventType.DRAG | CoreMouseEventType.MOVE,\n restrict: (e: ICoreMouseEvent) => true\n }\n};\n\nconst enum Modifiers {\n SHIFT = 4,\n ALT = 8,\n CTRL = 16\n}\n\n// helper for default encoders to generate the event code.\nfunction eventCode(e: ICoreMouseEvent, isSGR: boolean): number {\n let code = (e.ctrl ? Modifiers.CTRL : 0) | (e.shift ? Modifiers.SHIFT : 0) | (e.alt ? Modifiers.ALT : 0);\n if (e.button === CoreMouseButton.WHEEL) {\n code |= 64;\n code |= e.action;\n } else {\n code |= e.button & 3;\n if (e.button & 4) {\n code |= 64;\n }\n if (e.button & 8) {\n code |= 128;\n }\n if (e.action === CoreMouseAction.MOVE) {\n code |= CoreMouseAction.MOVE;\n } else if (e.action === CoreMouseAction.UP && !isSGR) {\n // special case - only SGR can report button on release\n // all others have to go with NONE\n code |= CoreMouseButton.NONE;\n }\n }\n return code;\n}\n\nconst S = String.fromCharCode;\n\n/**\n * Supported default encodings.\n */\nconst DEFAULT_ENCODINGS: {[key: string]: CoreMouseEncoding} = {\n /**\n * DEFAULT - CSI M Pb Px Py\n * Single byte encoding for coords and event code.\n * Can encode values up to 223 (1-based).\n */\n DEFAULT: (e: ICoreMouseEvent) => {\n const params = [eventCode(e, false) + 32, e.col + 32, e.row + 32];\n // supress mouse report if we exceed addressible range\n // Note this is handled differently by emulators\n // - xterm: sends 0;0 coords instead\n // - vte, konsole: no report\n if (params[0] > 255 || params[1] > 255 || params[2] > 255) {\n return '';\n }\n return `\\x1b[M${S(params[0])}${S(params[1])}${S(params[2])}`;\n },\n /**\n * SGR - CSI < Pb ; Px ; Py M|m\n * No encoding limitation.\n * Can report button on release and works with a well formed sequence.\n */\n SGR: (e: ICoreMouseEvent) => {\n const final = (e.action === CoreMouseAction.UP && e.button !== CoreMouseButton.WHEEL) ? 'm' : 'M';\n return `\\x1b[<${eventCode(e, true)};${e.col};${e.row}${final}`;\n }\n};\n\n/**\n * CoreMouseService\n *\n * Provides mouse tracking reports with different protocols and encodings.\n * - protocols: NONE (default), X10, VT200, DRAG, ANY\n * - encodings: DEFAULT, SGR (UTF8, URXVT removed in #2507)\n *\n * Custom protocols/encodings can be added by `addProtocol` / `addEncoding`.\n * To activate a protocol/encoding, set `activeProtocol` / `activeEncoding`.\n * Switching a protocol will send a notification event `onProtocolChange`\n * with a list of needed events to track.\n *\n * The service handles the mouse tracking state and decides whether to send\n * a tracking report to the backend based on protocol and encoding limitations.\n * To send a mouse event call `triggerMouseEvent`.\n */\nexport class CoreMouseService implements ICoreMouseService {\n private _protocols: {[name: string]: ICoreMouseProtocol} = {};\n private _encodings: {[name: string]: CoreMouseEncoding} = {};\n private _activeProtocol: string = '';\n private _activeEncoding: string = '';\n private _onProtocolChange = new EventEmitter();\n private _lastEvent: ICoreMouseEvent | null = null;\n\n constructor(\n @IBufferService private readonly _bufferService: IBufferService,\n @ICoreService private readonly _coreService: ICoreService\n ) {\n // register default protocols and encodings\n for (const name of Object.keys(DEFAULT_PROTOCOLS)) this.addProtocol(name, DEFAULT_PROTOCOLS[name]);\n for (const name of Object.keys(DEFAULT_ENCODINGS)) this.addEncoding(name, DEFAULT_ENCODINGS[name]);\n // call reset to set defaults\n this.reset();\n }\n\n public addProtocol(name: string, protocol: ICoreMouseProtocol): void {\n this._protocols[name] = protocol;\n }\n\n public addEncoding(name: string, encoding: CoreMouseEncoding): void {\n this._encodings[name] = encoding;\n }\n\n public get activeProtocol(): string {\n return this._activeProtocol;\n }\n\n public get areMouseEventsActive(): boolean {\n return this._protocols[this._activeProtocol].events !== 0;\n }\n\n public set activeProtocol(name: string) {\n if (!this._protocols[name]) {\n throw new Error(`unknown protocol \"${name}\"`);\n }\n this._activeProtocol = name;\n this._onProtocolChange.fire(this._protocols[name].events);\n }\n\n public get activeEncoding(): string {\n return this._activeEncoding;\n }\n\n public set activeEncoding(name: string) {\n if (!this._encodings[name]) {\n throw new Error(`unknown encoding \"${name}\"`);\n }\n this._activeEncoding = name;\n }\n\n public reset(): void {\n this.activeProtocol = 'NONE';\n this.activeEncoding = 'DEFAULT';\n this._lastEvent = null;\n }\n\n /**\n * Event to announce changes in mouse tracking.\n */\n public get onProtocolChange(): IEvent {\n return this._onProtocolChange.event;\n }\n\n /**\n * Triggers a mouse event to be sent.\n *\n * Returns true if the event passed all protocol restrictions and a report\n * was sent, otherwise false. The return value may be used to decide whether\n * the default event action in the bowser component should be omitted.\n *\n * Note: The method will change values of the given event object\n * to fullfill protocol and encoding restrictions.\n */\n public triggerMouseEvent(e: ICoreMouseEvent): boolean {\n // range check for col/row\n if (e.col < 0 || e.col >= this._bufferService.cols\n || e.row < 0 || e.row >= this._bufferService.rows) {\n return false;\n }\n\n // filter nonsense combinations of button + action\n if (e.button === CoreMouseButton.WHEEL && e.action === CoreMouseAction.MOVE) {\n return false;\n }\n if (e.button === CoreMouseButton.NONE && e.action !== CoreMouseAction.MOVE) {\n return false;\n }\n if (e.button !== CoreMouseButton.WHEEL && (e.action === CoreMouseAction.LEFT || e.action === CoreMouseAction.RIGHT)) {\n return false;\n }\n\n // report 1-based coords\n e.col++;\n e.row++;\n\n // debounce move at grid level\n if (e.action === CoreMouseAction.MOVE && this._lastEvent && this._compareEvents(this._lastEvent, e)) {\n return false;\n }\n\n // apply protocol restrictions\n if (!this._protocols[this._activeProtocol].restrict(e)) {\n return false;\n }\n\n // encode report and send\n const report = this._encodings[this._activeEncoding](e);\n if (report) {\n // always send DEFAULT as binary data\n if (this._activeEncoding === 'DEFAULT') {\n this._coreService.triggerBinaryEvent(report);\n } else {\n this._coreService.triggerDataEvent(report, true);\n }\n }\n\n this._lastEvent = e;\n\n return true;\n }\n\n public explainEvents(events: CoreMouseEventType): {[event: string]: boolean} {\n return {\n down: !!(events & CoreMouseEventType.DOWN),\n up: !!(events & CoreMouseEventType.UP),\n drag: !!(events & CoreMouseEventType.DRAG),\n move: !!(events & CoreMouseEventType.MOVE),\n wheel: !!(events & CoreMouseEventType.WHEEL)\n };\n }\n\n private _compareEvents(e1: ICoreMouseEvent, e2: ICoreMouseEvent): boolean {\n if (e1.col !== e2.col) return false;\n if (e1.row !== e2.row) return false;\n if (e1.button !== e2.button) return false;\n if (e1.action !== e2.action) return false;\n if (e1.ctrl !== e2.ctrl) return false;\n if (e1.alt !== e2.alt) return false;\n if (e1.shift !== e2.shift) return false;\n return true;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ICoreService, ILogService, IOptionsService, IBufferService } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { IDecPrivateModes, IModes } from 'common/Types';\nimport { clone } from 'common/Clone';\nimport { Disposable } from 'common/Lifecycle';\n\nconst DEFAULT_MODES: IModes = Object.freeze({\n insertMode: false\n});\n\nconst DEFAULT_DEC_PRIVATE_MODES: IDecPrivateModes = Object.freeze({\n applicationCursorKeys: false,\n applicationKeypad: false,\n bracketedPasteMode: false,\n origin: false,\n reverseWraparound: false,\n sendFocus: false,\n wraparound: true // defaults: xterm - true, vt100 - false\n});\n\nexport class CoreService extends Disposable implements ICoreService {\n public serviceBrand: any;\n\n public isCursorInitialized: boolean = false;\n public isCursorHidden: boolean = false;\n public modes: IModes;\n public decPrivateModes: IDecPrivateModes;\n\n // Circular dependency, this must be unset or memory will leak after Terminal.dispose\n private _scrollToBottom: (() => void) | undefined;\n\n private _onData = this.register(new EventEmitter());\n public get onData(): IEvent { return this._onData.event; }\n private _onUserInput = this.register(new EventEmitter());\n public get onUserInput(): IEvent { return this._onUserInput.event; }\n private _onBinary = this.register(new EventEmitter());\n public get onBinary(): IEvent { return this._onBinary.event; }\n\n constructor(\n // TODO: Move this into a service\n scrollToBottom: () => void,\n @IBufferService private readonly _bufferService: IBufferService,\n @ILogService private readonly _logService: ILogService,\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n super();\n this._scrollToBottom = scrollToBottom;\n this.register({ dispose: () => this._scrollToBottom = undefined });\n this.modes = clone(DEFAULT_MODES);\n this.decPrivateModes = clone(DEFAULT_DEC_PRIVATE_MODES);\n }\n\n public reset(): void {\n this.modes = clone(DEFAULT_MODES);\n this.decPrivateModes = clone(DEFAULT_DEC_PRIVATE_MODES);\n }\n\n public triggerDataEvent(data: string, wasUserInput: boolean = false): void {\n // Prevents all events to pty process if stdin is disabled\n if (this._optionsService.rawOptions.disableStdin) {\n return;\n }\n\n // Input is being sent to the terminal, the terminal should focus the prompt.\n const buffer = this._bufferService.buffer;\n if (buffer.ybase !== buffer.ydisp) {\n this._scrollToBottom!();\n }\n\n // Fire onUserInput so listeners can react as well (eg. clear selection)\n if (wasUserInput) {\n this._onUserInput.fire();\n }\n\n // Fire onData API\n this._logService.debug(`sending data \"${data}\"`, () => data.split('').map(e => e.charCodeAt(0)));\n this._onData.fire(data);\n }\n\n public triggerBinaryEvent(data: string): void {\n if (this._optionsService.rawOptions.disableStdin) {\n return;\n }\n this._logService.debug(`sending binary \"${data}\"`, () => data.split('').map(e => e.charCodeAt(0)));\n this._onBinary.fire(data);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IBufferService, IDirtyRowService } from 'common/services/Services';\n\nexport class DirtyRowService implements IDirtyRowService {\n public serviceBrand: any;\n\n private _start!: number;\n private _end!: number;\n\n public get start(): number { return this._start; }\n public get end(): number { return this._end; }\n\n constructor(\n @IBufferService private readonly _bufferService: IBufferService\n ) {\n this.clearRange();\n }\n\n public clearRange(): void {\n this._start = this._bufferService.buffer.y;\n this._end = this._bufferService.buffer.y;\n }\n\n public markDirty(y: number): void {\n if (y < this._start) {\n this._start = y;\n } else if (y > this._end) {\n this._end = y;\n }\n }\n\n public markRangeDirty(y1: number, y2: number): void {\n if (y1 > y2) {\n const temp = y1;\n y1 = y2;\n y2 = temp;\n }\n if (y1 < this._start) {\n this._start = y1;\n }\n if (y2 > this._end) {\n this._end = y2;\n }\n }\n\n public markAllDirty(): void {\n this.markRangeDirty(0, this._bufferService.rows - 1);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * This was heavily inspired from microsoft/vscode's dependency injection system (MIT).\n */\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IInstantiationService, IServiceIdentifier } from 'common/services/Services';\nimport { getServiceDependencies } from 'common/services/ServiceRegistry';\n\nexport class ServiceCollection {\n\n private _entries = new Map, any>();\n\n constructor(...entries: [IServiceIdentifier, any][]) {\n for (const [id, service] of entries) {\n this.set(id, service);\n }\n }\n\n public set(id: IServiceIdentifier, instance: T): T {\n const result = this._entries.get(id);\n this._entries.set(id, instance);\n return result;\n }\n\n public forEach(callback: (id: IServiceIdentifier, instance: any) => any): void {\n this._entries.forEach((value, key) => callback(key, value));\n }\n\n public has(id: IServiceIdentifier): boolean {\n return this._entries.has(id);\n }\n\n public get(id: IServiceIdentifier): T | undefined {\n return this._entries.get(id);\n }\n}\n\nexport class InstantiationService implements IInstantiationService {\n public serviceBrand: undefined;\n\n private readonly _services: ServiceCollection = new ServiceCollection();\n\n constructor() {\n this._services.set(IInstantiationService, this);\n }\n\n public setService(id: IServiceIdentifier, instance: T): void {\n this._services.set(id, instance);\n }\n\n public getService(id: IServiceIdentifier): T | undefined {\n return this._services.get(id);\n }\n\n public createInstance(ctor: any, ...args: any[]): T {\n const serviceDependencies = getServiceDependencies(ctor).sort((a, b) => a.index - b.index);\n\n const serviceArgs: any[] = [];\n for (const dependency of serviceDependencies) {\n const service = this._services.get(dependency.id);\n if (!service) {\n throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`);\n }\n serviceArgs.push(service);\n }\n\n const firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length;\n\n // check for argument mismatches, adjust static args if needed\n if (args.length !== firstServiceArgPos) {\n throw new Error(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);\n }\n\n // now create the instance\n return new ctor(...[...args, ...serviceArgs]);\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { ILogService, IOptionsService, LogLevelEnum } from 'common/services/Services';\n\ntype LogType = (message?: any, ...optionalParams: any[]) => void;\n\ninterface IConsole {\n log: LogType;\n error: LogType;\n info: LogType;\n trace: LogType;\n warn: LogType;\n}\n\n// console is available on both node.js and browser contexts but the common\n// module doesn't depend on them so we need to explicitly declare it.\ndeclare const console: IConsole;\n\nconst optionsKeyToLogLevel: { [key: string]: LogLevelEnum } = {\n debug: LogLevelEnum.DEBUG,\n info: LogLevelEnum.INFO,\n warn: LogLevelEnum.WARN,\n error: LogLevelEnum.ERROR,\n off: LogLevelEnum.OFF\n};\n\nconst LOG_PREFIX = 'xterm.js: ';\n\nexport class LogService implements ILogService {\n public serviceBrand: any;\n\n public logLevel: LogLevelEnum = LogLevelEnum.OFF;\n\n constructor(\n @IOptionsService private readonly _optionsService: IOptionsService\n ) {\n this._updateLogLevel();\n this._optionsService.onOptionChange(key => {\n if (key === 'logLevel') {\n this._updateLogLevel();\n }\n });\n }\n\n private _updateLogLevel(): void {\n this.logLevel = optionsKeyToLogLevel[this._optionsService.rawOptions.logLevel];\n }\n\n private _evalLazyOptionalParams(optionalParams: any[]): void {\n for (let i = 0; i < optionalParams.length; i++) {\n if (typeof optionalParams[i] === 'function') {\n optionalParams[i] = optionalParams[i]();\n }\n }\n }\n\n private _log(type: LogType, message: string, optionalParams: any[]): void {\n this._evalLazyOptionalParams(optionalParams);\n type.call(console, LOG_PREFIX + message, ...optionalParams);\n }\n\n public debug(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.DEBUG) {\n this._log(console.log, message, optionalParams);\n }\n }\n\n public info(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.INFO) {\n this._log(console.info, message, optionalParams);\n }\n }\n\n public warn(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.WARN) {\n this._log(console.warn, message, optionalParams);\n }\n }\n\n public error(message: string, ...optionalParams: any[]): void {\n if (this.logLevel <= LogLevelEnum.ERROR) {\n this._log(console.error, message, optionalParams);\n }\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IOptionsService, ITerminalOptions, FontWeight } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { isMac } from 'common/Platform';\n\n// Source: https://freesound.org/people/altemark/sounds/45759/\n// This sound is released under the Creative Commons Attribution 3.0 Unported\n// (CC BY 3.0) license. It was created by 'altemark'. No modifications have been\n// made, apart from the conversion to base64.\nexport const DEFAULT_BELL_SOUND = 'data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq';\n\nexport const DEFAULT_OPTIONS: Readonly = {\n cols: 80,\n rows: 24,\n cursorBlink: false,\n cursorStyle: 'block',\n cursorWidth: 1,\n customGlyphs: true,\n bellSound: DEFAULT_BELL_SOUND,\n bellStyle: 'none',\n drawBoldTextInBrightColors: true,\n fastScrollModifier: 'alt',\n fastScrollSensitivity: 5,\n fontFamily: 'courier-new, courier, monospace',\n fontSize: 15,\n fontWeight: 'normal',\n fontWeightBold: 'bold',\n lineHeight: 1.0,\n linkTooltipHoverDuration: 500,\n letterSpacing: 0,\n logLevel: 'info',\n scrollback: 1000,\n scrollSensitivity: 1,\n screenReaderMode: false,\n macOptionIsMeta: false,\n macOptionClickForcesSelection: false,\n minimumContrastRatio: 1,\n disableStdin: false,\n allowProposedApi: true,\n allowTransparency: false,\n tabStopWidth: 8,\n theme: {},\n rightClickSelectsWord: isMac,\n rendererType: 'canvas',\n windowOptions: {},\n windowsMode: false,\n wordSeparator: ' ()[]{}\\',\"`',\n altClickMovesCursor: true,\n convertEol: false,\n termName: 'xterm',\n cancelEvents: false\n};\n\nconst FONT_WEIGHT_OPTIONS: Extract[] = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\n\nexport class OptionsService implements IOptionsService {\n public serviceBrand: any;\n\n public readonly rawOptions: ITerminalOptions;\n public options: ITerminalOptions;\n\n private _onOptionChange = new EventEmitter();\n public get onOptionChange(): IEvent { return this._onOptionChange.event; }\n\n constructor(options: Partial) {\n // set the default value of each option\n const defaultOptions = { ...DEFAULT_OPTIONS };\n for (const key in options) {\n if (key in defaultOptions) {\n try {\n const newValue = options[key];\n defaultOptions[key] = this._sanitizeAndValidateOption(key, newValue);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n // set up getters and setters for each option\n this.rawOptions = defaultOptions;\n this.options = { ... defaultOptions };\n this._setupOptions();\n }\n\n private _setupOptions(): void {\n const getter = (propName: string): any => {\n if (!(propName in DEFAULT_OPTIONS)) {\n throw new Error(`No option with key \"${propName}\"`);\n }\n return this.rawOptions[propName];\n };\n\n const setter = (propName: string, value: any): void => {\n if (!(propName in DEFAULT_OPTIONS)) {\n throw new Error(`No option with key \"${propName}\"`);\n }\n\n value = this._sanitizeAndValidateOption(propName, value);\n // Don't fire an option change event if they didn't change\n if (this.rawOptions[propName] !== value) {\n this.rawOptions[propName] = value;\n this._onOptionChange.fire(propName);\n }\n };\n\n for (const propName in this.rawOptions) {\n const desc = {\n get: getter.bind(this, propName),\n set: setter.bind(this, propName)\n };\n Object.defineProperty(this.options, propName, desc);\n }\n }\n\n public setOption(key: string, value: any): void {\n this.options[key] = value;\n }\n\n private _sanitizeAndValidateOption(key: string, value: any): any {\n switch (key) {\n case 'bellStyle':\n case 'cursorStyle':\n case 'rendererType':\n case 'wordSeparator':\n if (!value) {\n value = DEFAULT_OPTIONS[key];\n }\n break;\n case 'fontWeight':\n case 'fontWeightBold':\n if (typeof value === 'number' && 1 <= value && value <= 1000) {\n // already valid numeric value\n break;\n }\n value = FONT_WEIGHT_OPTIONS.includes(value) ? value : DEFAULT_OPTIONS[key];\n break;\n case 'cursorWidth':\n value = Math.floor(value);\n // Fall through for bounds check\n case 'lineHeight':\n case 'tabStopWidth':\n if (value < 1) {\n throw new Error(`${key} cannot be less than 1, value: ${value}`);\n }\n break;\n case 'minimumContrastRatio':\n value = Math.max(1, Math.min(21, Math.round(value * 10) / 10));\n break;\n case 'scrollback':\n value = Math.min(value, 4294967295);\n if (value < 0) {\n throw new Error(`${key} cannot be less than 0, value: ${value}`);\n }\n break;\n case 'fastScrollSensitivity':\n case 'scrollSensitivity':\n if (value <= 0) {\n throw new Error(`${key} cannot be less than or equal to 0, value: ${value}`);\n }\n case 'rows':\n case 'cols':\n if (!value && value !== 0) {\n throw new Error(`${key} must be numeric, value: ${value}`);\n }\n break;\n }\n return value;\n }\n\n public getOption(key: string): any {\n return this.options[key];\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * This was heavily inspired from microsoft/vscode's dependency injection system (MIT).\n */\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IServiceIdentifier } from 'common/services/Services';\n\nconst DI_TARGET = 'di$target';\nconst DI_DEPENDENCIES = 'di$dependencies';\n\nexport const serviceRegistry: Map> = new Map();\n\nexport function getServiceDependencies(ctor: any): { id: IServiceIdentifier, index: number, optional: boolean }[] {\n return ctor[DI_DEPENDENCIES] || [];\n}\n\nexport function createDecorator(id: string): IServiceIdentifier {\n if (serviceRegistry.has(id)) {\n return serviceRegistry.get(id)!;\n }\n\n const decorator: any = function (target: Function, key: string, index: number): any {\n if (arguments.length !== 3) {\n throw new Error('@IServiceName-decorator can only be used to decorate a parameter');\n }\n\n storeServiceDependency(decorator, target, index);\n };\n\n decorator.toString = () => id;\n\n serviceRegistry.set(id, decorator);\n return decorator;\n}\n\nfunction storeServiceDependency(id: Function, target: Function, index: number): void {\n if ((target as any)[DI_TARGET] === target) {\n (target as any)[DI_DEPENDENCIES].push({ id, index });\n } else {\n (target as any)[DI_DEPENDENCIES] = [{ id, index }];\n (target as any)[DI_TARGET] = target;\n }\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { IEvent } from 'common/EventEmitter';\nimport { IBuffer, IBufferSet } from 'common/buffer/Types';\nimport { IDecPrivateModes, ICoreMouseEvent, CoreMouseEncoding, ICoreMouseProtocol, CoreMouseEventType, ICharset, IWindowOptions, IModes, IAttributeData, ScrollSource } from 'common/Types';\nimport { createDecorator } from 'common/services/ServiceRegistry';\n\nexport const IBufferService = createDecorator('BufferService');\nexport interface IBufferService {\n serviceBrand: undefined;\n\n readonly cols: number;\n readonly rows: number;\n readonly buffer: IBuffer;\n readonly buffers: IBufferSet;\n isUserScrolling: boolean;\n onResize: IEvent<{ cols: number, rows: number }>;\n onScroll: IEvent;\n scroll(eraseAttr: IAttributeData, isWrapped?: boolean): void;\n scrollToBottom(): void;\n scrollToTop(): void;\n scrollToLine(line: number): void;\n scrollLines(disp: number, suppressScrollEvent?: boolean, source?: ScrollSource): void;\n scrollPages(pageCount: number): void;\n resize(cols: number, rows: number): void;\n reset(): void;\n}\n\nexport const ICoreMouseService = createDecorator('CoreMouseService');\nexport interface ICoreMouseService {\n activeProtocol: string;\n activeEncoding: string;\n areMouseEventsActive: boolean;\n addProtocol(name: string, protocol: ICoreMouseProtocol): void;\n addEncoding(name: string, encoding: CoreMouseEncoding): void;\n reset(): void;\n\n /**\n * Triggers a mouse event to be sent.\n *\n * Returns true if the event passed all protocol restrictions and a report\n * was sent, otherwise false. The return value may be used to decide whether\n * the default event action in the bowser component should be omitted.\n *\n * Note: The method will change values of the given event object\n * to fullfill protocol and encoding restrictions.\n */\n triggerMouseEvent(event: ICoreMouseEvent): boolean;\n\n /**\n * Event to announce changes in mouse tracking.\n */\n onProtocolChange: IEvent;\n\n /**\n * Human readable version of mouse events.\n */\n explainEvents(events: CoreMouseEventType): { [event: string]: boolean };\n}\n\nexport const ICoreService = createDecorator('CoreService');\nexport interface ICoreService {\n serviceBrand: undefined;\n\n /**\n * Initially the cursor will not be visible until the first time the terminal\n * is focused.\n */\n isCursorInitialized: boolean;\n isCursorHidden: boolean;\n\n readonly modes: IModes;\n readonly decPrivateModes: IDecPrivateModes;\n\n readonly onData: IEvent;\n readonly onUserInput: IEvent;\n readonly onBinary: IEvent;\n\n reset(): void;\n\n /**\n * Triggers the onData event in the public API.\n * @param data The data that is being emitted.\n * @param wasFromUser Whether the data originated from the user (as opposed to\n * resulting from parsing incoming data). When true this will also:\n * - Scroll to the bottom of the buffer.s\n * - Fire the `onUserInput` event (so selection can be cleared).\n */\n triggerDataEvent(data: string, wasUserInput?: boolean): void;\n\n /**\n * Triggers the onBinary event in the public API.\n * @param data The data that is being emitted.\n */\n triggerBinaryEvent(data: string): void;\n}\n\nexport const ICharsetService = createDecorator('CharsetService');\nexport interface ICharsetService {\n serviceBrand: undefined;\n\n charset: ICharset | undefined;\n readonly glevel: number;\n\n reset(): void;\n\n /**\n * Set the G level of the terminal.\n * @param g\n */\n setgLevel(g: number): void;\n\n /**\n * Set the charset for the given G level of the terminal.\n * @param g\n * @param charset\n */\n setgCharset(g: number, charset: ICharset | undefined): void;\n}\n\nexport const IDirtyRowService = createDecorator('DirtyRowService');\nexport interface IDirtyRowService {\n serviceBrand: undefined;\n\n readonly start: number;\n readonly end: number;\n\n clearRange(): void;\n markDirty(y: number): void;\n markRangeDirty(y1: number, y2: number): void;\n markAllDirty(): void;\n}\n\nexport interface IServiceIdentifier {\n (...args: any[]): void;\n type: T;\n}\n\nexport interface IBrandedService {\n serviceBrand: undefined;\n}\n\ntype GetLeadingNonServiceArgs =\n Args extends [...IBrandedService[]] ? []\n : Args extends [infer A1, ...IBrandedService[]] ? [A1]\n : Args extends [infer A1, infer A2, ...IBrandedService[]] ? [A1, A2]\n : Args extends [infer A1, infer A2, infer A3, ...IBrandedService[]] ? [A1, A2, A3]\n : Args extends [infer A1, infer A2, infer A3, infer A4, ...IBrandedService[]] ? [A1, A2, A3, A4]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, ...IBrandedService[]] ? [A1, A2, A3, A4, A5]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6, A7]\n : Args extends [infer A1, infer A2, infer A3, infer A4, infer A5, infer A6, infer A7, infer A8, ...IBrandedService[]] ? [A1, A2, A3, A4, A5, A6, A7, A8]\n : never;\n\nexport const IInstantiationService = createDecorator('InstantiationService');\nexport interface IInstantiationService {\n serviceBrand: undefined;\n\n setService(id: IServiceIdentifier, instance: T): void;\n getService(id: IServiceIdentifier): T | undefined;\n createInstance any, R extends InstanceType>(t: Ctor, ...args: GetLeadingNonServiceArgs>): R;\n}\n\nexport enum LogLevelEnum {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n OFF = 4\n}\n\nexport const ILogService = createDecorator('LogService');\nexport interface ILogService {\n serviceBrand: undefined;\n\n logLevel: LogLevelEnum;\n\n debug(message: any, ...optionalParams: any[]): void;\n info(message: any, ...optionalParams: any[]): void;\n warn(message: any, ...optionalParams: any[]): void;\n error(message: any, ...optionalParams: any[]): void;\n}\n\nexport const IOptionsService = createDecorator('OptionsService');\nexport interface IOptionsService {\n serviceBrand: undefined;\n\n /**\n * Read only access to the raw options object, this is an internal-only fast path for accessing\n * single options without any validation as we trust TypeScript to enforce correct usage\n * internally.\n */\n readonly rawOptions: Readonly;\n readonly options: ITerminalOptions;\n\n readonly onOptionChange: IEvent;\n\n setOption(key: string, value: T): void;\n getOption(key: string): T | undefined;\n}\n\nexport type FontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | number;\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'off';\n\nexport type RendererType = 'dom' | 'canvas';\n\nexport interface ITerminalOptions {\n allowProposedApi: boolean;\n allowTransparency: boolean;\n altClickMovesCursor: boolean;\n bellSound: string;\n bellStyle: 'none' | 'sound' /* | 'visual' | 'both' */;\n cols: number;\n convertEol: boolean;\n cursorBlink: boolean;\n cursorStyle: 'block' | 'underline' | 'bar';\n cursorWidth: number;\n customGlyphs: boolean;\n disableStdin: boolean;\n drawBoldTextInBrightColors: boolean;\n fastScrollModifier: 'alt' | 'ctrl' | 'shift' | undefined;\n fastScrollSensitivity: number;\n fontSize: number;\n fontFamily: string;\n fontWeight: FontWeight;\n fontWeightBold: FontWeight;\n letterSpacing: number;\n lineHeight: number;\n linkTooltipHoverDuration: number;\n logLevel: LogLevel;\n macOptionIsMeta: boolean;\n macOptionClickForcesSelection: boolean;\n minimumContrastRatio: number;\n rendererType: RendererType;\n rightClickSelectsWord: boolean;\n rows: number;\n screenReaderMode: boolean;\n scrollback: number;\n scrollSensitivity: number;\n tabStopWidth: number;\n theme: ITheme;\n windowsMode: boolean;\n windowOptions: IWindowOptions;\n wordSeparator: string;\n\n [key: string]: any;\n cancelEvents: boolean;\n termName: string;\n}\n\nexport interface ITheme {\n foreground?: string;\n background?: string;\n cursor?: string;\n cursorAccent?: string;\n selection?: string;\n black?: string;\n red?: string;\n green?: string;\n yellow?: string;\n blue?: string;\n magenta?: string;\n cyan?: string;\n white?: string;\n brightBlack?: string;\n brightRed?: string;\n brightGreen?: string;\n brightYellow?: string;\n brightBlue?: string;\n brightMagenta?: string;\n brightCyan?: string;\n brightWhite?: string;\n}\n\nexport const IUnicodeService = createDecorator('UnicodeService');\nexport interface IUnicodeService {\n serviceBrand: undefined;\n /** Register an Unicode version provider. */\n register(provider: IUnicodeVersionProvider): void;\n /** Registered Unicode versions. */\n readonly versions: string[];\n /** Currently active version. */\n activeVersion: string;\n /** Event triggered, when activate version changed. */\n readonly onChange: IEvent;\n\n /**\n * Unicode version dependent\n */\n wcwidth(codepoint: number): number;\n getStringCellWidth(s: string): number;\n}\n\nexport interface IUnicodeVersionProvider {\n readonly version: string;\n wcwidth(ucs: number): 0 | 1 | 2;\n}\n", "/**\n * Copyright (c) 2019 The xterm.js authors. All rights reserved.\n * @license MIT\n */\nimport { IUnicodeService, IUnicodeVersionProvider } from 'common/services/Services';\nimport { EventEmitter, IEvent } from 'common/EventEmitter';\nimport { UnicodeV6 } from 'common/input/UnicodeV6';\n\n\nexport class UnicodeService implements IUnicodeService {\n public serviceBrand: any;\n\n private _providers: {[key: string]: IUnicodeVersionProvider} = Object.create(null);\n private _active: string = '';\n private _activeProvider: IUnicodeVersionProvider;\n private _onChange = new EventEmitter();\n public get onChange(): IEvent { return this._onChange.event; }\n\n constructor() {\n const defaultProvider = new UnicodeV6();\n this.register(defaultProvider);\n this._active = defaultProvider.version;\n this._activeProvider = defaultProvider;\n }\n\n public get versions(): string[] {\n return Object.keys(this._providers);\n }\n\n public get activeVersion(): string {\n return this._active;\n }\n\n public set activeVersion(version: string) {\n if (!this._providers[version]) {\n throw new Error(`unknown Unicode version \"${version}\"`);\n }\n this._active = version;\n this._activeProvider = this._providers[version];\n this._onChange.fire(version);\n }\n\n public register(provider: IUnicodeVersionProvider): void {\n this._providers[provider.version] = provider;\n }\n\n /**\n * Unicode version dependent interface.\n */\n public wcwidth(num: number): number {\n return this._activeProvider.wcwidth(num);\n }\n\n public getStringCellWidth(s: string): number {\n let result = 0;\n const length = s.length;\n for (let i = 0; i < length; ++i) {\n let code = s.charCodeAt(i);\n // surrogate pair first\n if (0xD800 <= code && code <= 0xDBFF) {\n if (++i >= length) {\n // this should not happen with strings retrieved from\n // Buffer.translateToString as it converts from UTF-32\n // and therefore always should contain the second part\n // for any other string we still have to handle it somehow:\n // simply treat the lonely surrogate first as a single char (UCS-2 behavior)\n return result + this.wcwidth(code);\n }\n const second = s.charCodeAt(i);\n // convert surrogate pair to high codepoint only for valid second part (UTF-16)\n // otherwise treat them independently (UCS-2 behavior)\n if (0xDC00 <= second && second <= 0xDFFF) {\n code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n } else {\n result += this.wcwidth(second);\n }\n }\n result += this.wcwidth(code);\n }\n return result;\n }\n}\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4389);\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var nonspace = /\\S/g;\n var repeat = String.prototype.repeat || function (n) { return Array(n + 1).join(this); };\n function continueComment(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), mode, inserts = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head\n if (!/\\bcomment\\b/.test(cm.getTokenTypeAt(pos))) return CodeMirror.Pass;\n var modeHere = cm.getModeAt(pos)\n if (!mode) mode = modeHere;\n else if (mode != modeHere) return CodeMirror.Pass;\n\n var insert = null, line, found;\n var blockStart = mode.blockCommentStart, lineCmt = mode.lineComment;\n if (blockStart && mode.blockCommentContinue) {\n line = cm.getLine(pos.line);\n var end = line.lastIndexOf(mode.blockCommentEnd, pos.ch - mode.blockCommentEnd.length);\n // 1. if this block comment ended\n // 2. if this is actually inside a line comment\n if (end != -1 && end == pos.ch - mode.blockCommentEnd.length ||\n lineCmt && (found = line.lastIndexOf(lineCmt, pos.ch - 1)) > -1 &&\n /\\bcomment\\b/.test(cm.getTokenTypeAt({line: pos.line, ch: found + 1}))) {\n // ...then don't continue it\n } else if (pos.ch >= blockStart.length &&\n (found = line.lastIndexOf(blockStart, pos.ch - blockStart.length)) > -1 &&\n found > end) {\n // reuse the existing leading spaces/tabs/mixed\n // or build the correct indent using CM's tab/indent options\n if (nonspaceAfter(0, line) >= found) {\n insert = line.slice(0, found);\n } else {\n var tabSize = cm.options.tabSize, numTabs;\n found = CodeMirror.countColumn(line, found, tabSize);\n insert = !cm.options.indentWithTabs ? repeat.call(\" \", found) :\n repeat.call(\"\\t\", (numTabs = Math.floor(found / tabSize))) +\n repeat.call(\" \", found - tabSize * numTabs);\n }\n } else if ((found = line.indexOf(mode.blockCommentContinue)) > -1 &&\n found <= pos.ch &&\n found <= nonspaceAfter(0, line)) {\n insert = line.slice(0, found);\n }\n if (insert != null) insert += mode.blockCommentContinue\n }\n if (insert == null && lineCmt && continueLineCommentEnabled(cm)) {\n if (line == null) line = cm.getLine(pos.line);\n found = line.indexOf(lineCmt);\n // cursor at pos 0, line comment also at pos 0 => shift it down, don't continue\n if (!pos.ch && !found) insert = \"\";\n // continue only if the line starts with an optional space + line comment\n else if (found > -1 && nonspaceAfter(0, line) >= found) {\n // don't continue if there's only space(s) after cursor or the end of the line\n insert = nonspaceAfter(pos.ch, line) > -1;\n // but always continue if the next line starts with a line comment too\n if (!insert) {\n var next = cm.getLine(pos.line + 1) || '',\n nextFound = next.indexOf(lineCmt);\n insert = nextFound > -1 && nonspaceAfter(0, next) >= nextFound || null;\n }\n if (insert) {\n insert = line.slice(0, found) + lineCmt +\n line.slice(found + lineCmt.length).match(/^\\s*/)[0];\n }\n }\n }\n if (insert == null) return CodeMirror.Pass;\n inserts[i] = \"\\n\" + insert;\n }\n\n cm.operation(function() {\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(inserts[i], ranges[i].from(), ranges[i].to(), \"+insert\");\n });\n }\n\n function nonspaceAfter(ch, str) {\n nonspace.lastIndex = ch;\n var m = nonspace.exec(str);\n return m ? m.index : -1;\n }\n\n function continueLineCommentEnabled(cm) {\n var opt = cm.getOption(\"continueComments\");\n if (opt && typeof opt == \"object\")\n return opt.continueLineComment !== false;\n return true;\n }\n\n CodeMirror.defineOption(\"continueComments\", null, function(cm, val, prev) {\n if (prev && prev != CodeMirror.Init)\n cm.removeKeyMap(\"continueComment\");\n if (val) {\n var key = \"Enter\";\n if (typeof val == \"string\")\n key = val;\n else if (typeof val == \"object\" && val.key)\n key = val.key;\n var map = {name: \"continueComment\"};\n map[key] = continueComment;\n cm.addKeyMap(map);\n }\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// A rough approximation of Sublime Text's keybindings\n// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/edit/matchbrackets\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/edit/matchbrackets\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\", type, startPos = start.ch;\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n if (state == \"start\") {\n if (cat != \"o\") { state = \"in\"; type = cat; }\n else startPos = pos + dir\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n if (type == \"W\" && cat == \"w\" && dir > 0) { // From uppercase to lowercase\n if (pos == startPos + 1) { type = \"w\"; continue; }\n else pos--;\n }\n break;\n }\n }\n }\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function(range) {\n if (cm.display.shift || cm.doc.extend || range.empty())\n return findPosSubword(cm.doc, range.head, dir);\n else\n return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };\n cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };\n\n cmds.scrollLineUp = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine)\n cm.execCommand(\"goLineUp\");\n }\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n cmds.scrollLineDown = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\")+1;\n if (cm.getCursor().line <= visibleTopLine)\n cm.execCommand(\"goLineDown\");\n }\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function(cm) {\n var ranges = cm.listSelections(), lineRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n for (var line = from.line; line <= to.line; ++line)\n if (!(to.line > from.line && line == to.line && to.ch == 0))\n lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)});\n }\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function(cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {scroll: false});\n };\n\n cmds.selectLine = function(cm) {\n var ranges = cm.listSelections(), extended = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)});\n }\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n cm.operation(function() {\n var len = cm.listSelections().length, newSelection = [], last = -1;\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({head: at, anchor: at});\n last = head.line + 1;\n }\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };\n\n cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };\n\n function wordAt(cm, pos) {\n var start = pos.ch, end = start, line = cm.getLine(pos.line);\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)};\n }\n\n cmds.selectNextOccurrence = function(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return\n cm.addSelection(cur.from(), cur.to());\n }\n if (fullWord)\n cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function(cm) {\n var prevAnchor = cm.getCursor(\"anchor\"), prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections()\n .filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n }\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(), newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(\n range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(\n range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ?\n range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ?\n range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {anchor: newAnchor, head: newHead};\n newRanges.push(range);\n newRanges.push(newRange);\n }\n cm.setSelections(newRanges);\n }\n cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1); };\n cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++)\n if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&\n CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true\n return false\n }\n\n var mirror = \"(){}[]\";\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(), newRanges = []\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&\n CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({anchor: startPos, head: closing.pos});\n break;\n }\n }\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function(cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n cmds.selectBetweenBrackets = function(cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined\n }\n\n cmds.goToBracket = function(cm) {\n cm.extendSelectionsBy(function(range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from().line - 1, to = range.to().line;\n newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)});\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine())\n cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n else\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i], from = range.to().line + 1, to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine())\n cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n else\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function(cm) {\n cm.toggleComment({ indent: true });\n }\n\n cmds.joinLines = function(cm) {\n var ranges = cm.listSelections(), joined = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from();\n var start = from.line, end = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end)\n end = ranges[++i].to().line;\n joined.push({start: start, end: end, anchor: !range.empty() && from});\n }\n cm.operation(function() {\n var offset = 0, ranges = [];\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head;\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n ranges.push({anchor: anchor || head, head: head});\n }\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function(cm) {\n cm.operation(function() {\n var rangeCount = cm.listSelections().length;\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty())\n cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n else\n cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n cm.scrollIntoView();\n });\n };\n\n\n function sortLines(cm, caseSensitive, direction) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), toSort = [], selected;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line, to = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to)\n to = ranges[++i].to().line;\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n if (toSort.length) selected = true;\n else toSort.push(cm.firstLine(), cm.lastLine());\n\n cm.operation(function() {\n var ranges = [];\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i], to = toSort[i + 1];\n var start = Pos(from, 0), end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive)\n lines.sort(function(a, b) { return a < b ? -direction : a == b ? 0 : direction; });\n else\n lines.sort(function(a, b) {\n var au = a.toUpperCase(), bu = b.toUpperCase();\n if (au != bu) { a = au; b = bu; }\n return a < b ? -direction : a == b ? 0 : direction;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});\n }\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function(cm) { sortLines(cm, true, 1); };\n cmds.reverseSortLines = function(cm) { sortLines(cm, true, -1); };\n cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false, 1); };\n cmds.reverseSortLinesInsensitive = function(cm) { sortLines(cm, false, -1); };\n\n cmds.nextBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found)\n marks.pop();\n else\n return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function(cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n for (var k = 0; k < marks.length; k++)\n if (marks[k] == found[j])\n marks.splice(k--, 1);\n break;\n }\n }\n if (j == found.length)\n marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false}));\n }\n };\n\n cmds.clearBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks, ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found)\n marks.splice(i--, 0);\n else\n ranges.push({anchor: found.from, head: found.to});\n }\n if (ranges.length)\n cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function() {\n var ranges = cm.listSelections(), indices = [], replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) { indices.push(i); replacements.push(\"\"); }\n else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n cm.replaceSelections(replacements, \"around\", \"case\");\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function(cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n\n cm.operation(function() {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n\n // Delete by one character by default\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line,\n CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n\n // Smart delete only if we found a valid prevIndent location\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function(cm) {\n cm.operation(function() {\n var ranges = cm.listSelections();\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });\n };\n cmds.downcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });\n };\n\n cmds.setSublimeMark = function(cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n cmds.selectToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n cmds.deleteToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n var from = cm.getCursor(), to = found;\n if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; }\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n cmds.swapWithSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n cmds.sublimeYank = function(cm) {\n if (cm.state.sublimeKilled != null)\n cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function(cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n return {from: from, to: to, query: cm.getRange(from, to), word: word};\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)\n : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious())\n cm.setSelection(cur.from(), cur.to());\n else if (target.word)\n cm.setSelection(target.from, target.to);\n }\n };\n cmds.findUnder = function(cm) { findAndGoTo(cm, true); };\n cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };\n cmds.findAllUnder = function(cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n while (cur.findNext()) {\n matches.push({anchor: cur.from(), head: cur.to()});\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch)\n primaryIndex++;\n }\n cm.setSelections(matches, primaryIndex);\n };\n\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Shift-F5\": \"reverseSortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Shift-F9\": \"reverseSortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n});\n", "export const codePointsToString = (code: number[]): string =>\n code.reduce((code, ord) => code + String.fromCharCode(ord), '');\n\nexport default codePointsToString;\n", "export const stringToCodePoints = (code: string): number[] =>\n code.split('').map((c: string): number => c.charCodeAt(0));\n\nexport default stringToCodePoints;\n", "import { Decoder } from '../Decoders';\nimport codePointsToString from '../codePointsToString';\nimport stringToCodePoints from '../stringToCodePoints';\n\nexport class Default implements Decoder {\n public name(): string {\n return 'default';\n }\n\n protected codePointsToString(code: number[]): string {\n return codePointsToString(code);\n }\n\n protected stringToCodePoints(code: string): number[] {\n return stringToCodePoints(code);\n }\n\n public matches(code: number[]): boolean {\n return this.matchesAsString(this.codePointsToString(code));\n }\n\n public matchesAsString(code: string): boolean {\n return true;\n }\n\n public decode(code: number[]): number[] {\n return this.decodeAsString(this.codePointsToString(code));\n }\n\n public decodeAsString(code: string): number[] {\n return this.stringToCodePoints(code);\n }\n}\n\nexport default Default;\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Base64 extends Default implements Decoder {\n public name(): string {\n return 'base64';\n }\n\n public matchesAsString(code: string): boolean {\n // base64 input is at least 4 chars\n if (code.length < 4) {\n return false;\n }\n\n try {\n atob(code);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public decodeAsString(code: string): number[] {\n return Array.from(atob(code)).map((c: string): number => c.charCodeAt(0));\n }\n}\nexport default Base64;\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Hexdump extends Default implements Decoder {\n public name(): string {\n return 'hexdump';\n }\n\n public matchesAsString(code: string): boolean {\n // TODO: could use the length to check that it's actually valid...\n return /^([0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) *\\n)+[0-9a-f]{7}\\n?$/.test(\n code\n );\n }\n\n public decodeAsString(code: string): number[] {\n return code\n .trim()\n .replace(/\\n[0-9a-f]{7}\\n?$/, '')\n .replace(/(?<=^|\\n)[0-9a-f]{7}(( ([0-9a-f]{4})){1,8}) */g, '$1')\n .replace(/\\s+/g, '')\n .replace(/(..)(..)/g, '$2$1')\n .replace(/00$/, '')\n .match(/../g)\n .map((c: string): number => parseInt(c, 16));\n }\n}\n\nexport default Hexdump;\n", "export type Runner = (code: number[], input: string, args: string) => Worker;\n\nexport class Lang {\n constructor(\n private id: string,\n private name: string,\n private runner: Runner,\n private url: string = null,\n private args: string[] | null = null,\n private highlighterRef: string = id\n ) {}\n\n getId(): string {\n return this.id;\n }\n\n getName(): string {\n return this.name;\n }\n\n getURL(): string {\n return this.url;\n }\n\n getArgs(): string[] | null {\n return this.args;\n }\n\n getHighlighterRef(): string {\n return this.highlighterRef;\n }\n\n run(code: number[], args: string, input: string): Worker {\n return this.runner(code, input, args);\n }\n}\n\nexport default Lang;\n", "import Lang, { Runner } from './Lang';\n\nexport class Langs {\n private data: { [key: string]: Lang } = {};\n\n public register(...langs: Lang[]): void {\n langs.forEach((lang: Lang): void => {\n this.data[lang.getId()] = lang;\n });\n }\n\n public get(lang: string): Lang {\n return this.data[lang];\n }\n\n public all(): string[] {\n return Object.keys(this.data);\n }\n\n public run(\n langId: string,\n code: number[],\n args: string,\n input: string\n ): Worker {\n return this.data[langId].run(code, args, input);\n }\n}\n\nexport const defaultRunner =\n (workerURL): Runner =>\n (code: number[], input: string, args: string) => {\n const worker = new Worker(workerURL);\n\n worker.postMessage({\n type: 'run',\n code,\n args,\n input,\n });\n\n return worker;\n };\n\nexport const langs = new Langs();\n\nexport default langs;\n", "import { Lang } from '../../Lang';\nimport { defaultRunner } from '../../Langs';\nimport 'codemirror/mode/javascript/javascript';\n\nexport class JavaScript extends Lang {\n constructor() {\n super(\n 'javascript-browser',\n 'JavaScript (Browser)',\n defaultRunner('dist/js/langs/javascript-browser/worker.js'),\n 'https://www.ecma-international.org/publications-and-standards/standards/ecma-262/',\n null,\n 'javascript'\n );\n }\n}\n\nexport default JavaScript;\n", "import { Lang } from '../../Lang';\nimport { defaultRunner } from '../../Langs';\nimport 'codemirror/mode/perl/perl';\n\nexport class Perl extends Lang {\n constructor() {\n super(\n 'webperl-5.28.1',\n 'Perl 5.28.1 (webperl)',\n defaultRunner('dist/js/langs/webperl-5.28.1/worker.js'),\n 'https://www.perl.org/',\n ['-M5.10.0', '-F', '-l', '-p'],\n 'perl'\n );\n }\n}\n\nexport default Perl;\n", "import { Editor, EditorConfiguration, fromTextArea } from 'codemirror';\nimport { Melba, MelbaConstructorOptions, MelbaType } from 'melba-toast';\nimport { Renderers, createDevice } from './Renderers';\nimport CodeInput from './Inputs/Code';\nimport CodeRenderer from './Renderers/Code';\nimport IFrame from './Renderers/IFrame';\nimport IO from './IO';\nimport Image from './Renderers/Image';\nimport Inputs from './Inputs';\nimport PBMImage from './Renderers/PBMImage';\nimport TTY from './Renderers/TTY';\nimport codePointsToString from './codePointsToString';\nimport { decoders } from './Decoders';\nimport { langs } from './Langs';\nimport replaceBinaryBytes from './replaceBinaryBytes';\n\nimport 'codemirror/addon/comment/comment';\nimport 'codemirror/addon/comment/continuecomment';\nimport 'codemirror/addon/display/placeholder';\nimport 'codemirror/addon/edit/closebrackets';\nimport 'codemirror/addon/edit/matchbrackets';\nimport 'codemirror/keymap/sublime';\n\nexport type IHashData = {\n lang: string;\n header?: string;\n code: string;\n footer?: string;\n args?: string;\n input?: string;\n type?: 'tty' | 'resource';\n mime?: string;\n};\n\nexport class UI {\n private addArg: HTMLHeadingElement;\n private args: CodeMirror.Editor;\n private argsWrapper: HTMLDivElement;\n private bytesCount: HTMLSpanElement;\n private bytesPlural: HTMLSpanElement;\n private code: Inputs;\n private codeFooter: Inputs;\n private codeHeader: Inputs;\n private copyLinkButton: HTMLButtonElement;\n private encoded: HTMLSpanElement;\n private expanders: NodeListOf;\n private format: HTMLSpanElement;\n private io: IO;\n private langSelector: HTMLSelectElement;\n private markdownButton: HTMLButtonElement;\n private mimeType: string = 'text/plain';\n private mimeTypeInput: HTMLInputElement;\n private runButton: HTMLButtonElement;\n private stderr: Renderers;\n private stdin: CodeMirror.Editor;\n private stdout: Renderers;\n private stopButton: HTMLButtonElement;\n\n constructor() {\n this.langSelector = document.querySelector(\n 'select[name=\"lang\"]'\n ) as HTMLSelectElement;\n\n this.addRegisteredLangs();\n\n const stdoutContainer = document.querySelector(\n 'div.stdout'\n ) as HTMLDivElement;\n\n this.codeHeader = new Inputs(\n new CodeInput(document.querySelector('div.header') as HTMLDivElement, {\n autoCloseBrackets: true,\n matchBrackets: true,\n placeholder: 'Header...',\n })\n );\n this.codeHeader.activate(CodeInput);\n\n this.code = new Inputs(\n new CodeInput(document.querySelector('div.code') as HTMLDivElement, {\n autoCloseBrackets: true,\n autofocus: true,\n matchBrackets: true,\n placeholder: 'Code...',\n })\n );\n this.code.activate(CodeInput);\n this.code.setType(this.langSelector.value);\n\n this.langSelector.addEventListener('change', () =>\n this.code.setType(this.langSelector.value)\n );\n\n this.codeFooter = new Inputs(\n new CodeInput(document.querySelector('div.footer') as HTMLDivElement, {\n autoCloseBrackets: true,\n autofocus: true,\n matchBrackets: true,\n placeholder: 'Footer...',\n })\n );\n this.codeFooter.activate(CodeInput);\n\n this.stdout = createDevice(\n new CodeRenderer(stdoutContainer),\n new PBMImage(stdoutContainer),\n new Image(stdoutContainer),\n new IFrame(stdoutContainer),\n new TTY(stdoutContainer)\n );\n this.stdout.activate('text/plain');\n\n this.stderr = createDevice(\n new TTY(document.querySelector('div.stderr') as HTMLDivElement, {\n rows: 8,\n theme: {\n foreground: '#f92672',\n },\n })\n );\n this.stderr.activate('text/plain');\n this.stdin = UI.createEditor(\n document.querySelector('textarea[name=\"input\"]') as HTMLTextAreaElement\n );\n this.args = UI.createEditor(\n document.querySelector('textarea[name=\"args\"]') as HTMLTextAreaElement\n );\n\n this.io = new IO(\n this.langSelector,\n this.stdin,\n this.stdout,\n this.stderr,\n this.args\n );\n\n this.expanders = document.querySelectorAll(\n 'button[name=\"expand\"]'\n ) as NodeListOf;\n this.argsWrapper = document.querySelector(\n '.args-wrapper'\n ) as HTMLDivElement;\n this.addArg = document.querySelector(\n '.args-wrapper .actions'\n ) as HTMLHeadingElement;\n this.runButton = document.querySelector(\n 'button[name=\"run\"]'\n ) as HTMLButtonElement;\n this.stopButton = document.querySelector(\n 'button[name=\"stop\"]'\n ) as HTMLButtonElement;\n this.bytesCount = document.querySelector(\n '.bytes .byte-count'\n ) as HTMLSpanElement;\n this.bytesPlural = document.querySelector(\n '.bytes .plural'\n ) as HTMLSpanElement;\n this.encoded = document.querySelector('.encoded') as HTMLSpanElement;\n this.format = document.querySelector('.format') as HTMLSpanElement;\n this.copyLinkButton = document.querySelector(\n 'button[name=\"copy\"]'\n ) as HTMLButtonElement;\n this.markdownButton = document.querySelector(\n 'button[name=\"markdown\"]'\n ) as HTMLButtonElement;\n this.mimeTypeInput = document.querySelector('.stdout-header input');\n this.connectExpanders();\n\n // bind events\n this.code.on('change', () => this.codeOnChange());\n\n this.runButton.addEventListener('click', () => this.runCode());\n this.langSelector.addEventListener('change', () => this.populateArgs());\n this.copyLinkButton.addEventListener('click', () => {\n const link = this.buildLink();\n\n if (location.href !== link) {\n history.pushState(this.buildHashData(), document.title, link);\n }\n\n navigator.clipboard.writeText(link);\n\n UI.copied(this.copyLinkButton);\n });\n this.markdownButton.addEventListener('click', () => {\n navigator.clipboard.writeText(this.buildMarkdown());\n\n UI.copied(this.markdownButton);\n });\n this.mimeTypeInput.addEventListener('change', () =>\n this.setMimeType(this.mimeTypeInput.value || 'text/plain', false)\n );\n this.mimeTypeInput.addEventListener('keypress', ({ key }) => {\n if (key === 'Enter' && this.mimeType !== this.mimeTypeInput.value) {\n this.setMimeType(this.mimeTypeInput.value || 'text/plain', false);\n }\n });\n\n addEventListener('keydown', (event) => {\n if (event.key === 's' && (event.ctrlKey || event.metaKey)) {\n const link = this.buildLink();\n\n history.pushState(this.buildHashData(), document.title, link);\n navigator.clipboard.writeText(link);\n\n this.toast('Saved!', 'success', {\n hide: 2,\n });\n\n event.preventDefault();\n }\n });\n\n addEventListener('hashchange', () => {\n this.parseHashData(location.hash);\n\n if (this.code.read().length) {\n this.runCode();\n }\n });\n addEventListener('resize', () => this.resize());\n\n // onload\n this.parseHashData(location.hash);\n try {\n this.populateArgs();\n } catch (e) {\n this.toast(e.message, 'error');\n }\n this.codeOnChange();\n\n if (this.code.read().length) {\n this.runCode();\n }\n\n this.resize();\n\n document\n .querySelector('button.fullscreen-toggle')\n .addEventListener('click', () => this.enterFullscreen());\n\n document.addEventListener('fullscreenchange', () => this.exitFullscreen());\n }\n\n private addRegisteredLangs(): void {\n langs.all().forEach((langKey) => {\n const lang = langs.get(langKey),\n option = document.createElement('option');\n\n option.setAttribute('value', lang.getId());\n option.append(document.createTextNode(lang.getName()));\n\n this.langSelector.append(option);\n });\n }\n\n private setLang(lang: string): void {\n const availableLangs = langs.all();\n\n if (!availableLangs.includes(lang)) {\n throw new TypeError(`Unknown lang: ${lang}.`);\n }\n\n this.langSelector.value = lang;\n\n this.setCodeHighlight();\n }\n\n private getLangId(): string {\n return this.langSelector.value;\n }\n\n private setCodeHighlight(): void {\n const lang = langs.get(this.getLangId());\n\n [this.codeHeader, this.code, this.codeFooter].forEach((inputs) => {\n const decoder = decoders.decoderAsString(inputs.readAsString(null));\n\n if (decoder.name() !== 'default') {\n inputs.setType(null);\n\n return;\n }\n\n inputs.setType(lang.getHighlighterRef());\n });\n }\n\n public static createEditor(\n element: HTMLTextAreaElement,\n options: EditorConfiguration = {}\n ): Editor {\n return fromTextArea(element, {\n mode: null,\n theme: 'monokai',\n viewportMargin: Infinity,\n ...options,\n extraKeys: {\n 'Ctrl-D': 'duplicateLine',\n 'Ctrl-/': 'toggleComment',\n 'Shift-Tab': false,\n Tab: false,\n // @ts-ignore\n ...(options.extraKeys || {}),\n },\n });\n }\n\n private resize(): void {\n this.stdout.resize();\n this.stderr.resize();\n }\n\n private codeOnChange(): void {\n const code = this.code.read();\n\n this.encoded.setAttribute('hidden', '');\n\n this.setCodeHighlight();\n\n const decoder = decoders.decoder(code);\n\n if (decoder.name() !== 'default') {\n this.encoded.removeAttribute('hidden');\n\n this.format.innerText = decoder.name();\n }\n\n const decodedCode = decoder.decode(code);\n\n this.showBytes(decodedCode.length);\n }\n\n private runCode(): void {\n const started = Date.now(),\n stopHandler = () => {\n worker.terminate();\n\n this.stderr.write(`Aborted execution after ${Date.now() - started}ms`);\n\n this.runButton.removeAttribute('disabled');\n this.stopButton.setAttribute('disabled', '');\n\n this.stopButton.removeEventListener('click', stopHandler);\n };\n\n this.stdout.reset();\n this.stderr.reset();\n\n this.runButton.setAttribute('disabled', '');\n this.stopButton.removeAttribute('disabled');\n\n const worker = langs.run(\n this.getLangId(),\n [].concat(\n [\n this.codeHeader.read(),\n this.code.read(),\n this.codeFooter.read(),\n ].flatMap((code) => decoders.decode(code))\n ),\n this.io.getArgs(),\n this.io.getStdin()\n );\n\n this.stopButton.addEventListener('click', stopHandler);\n\n worker.onmessage = ({ data }) => {\n const { type, output, error } = data;\n\n if (output) {\n this.stdout.write(output);\n }\n\n if (error) {\n this.stderr.write(error ?? '');\n }\n\n if (type === 'done') {\n this.stderr.write(\n `Completed execution after ${Date.now() - started}ms`\n );\n\n this.runButton.removeAttribute('disabled');\n this.stopButton.setAttribute('disabled', '');\n\n this.stopButton.removeEventListener('click', stopHandler);\n\n // Make sure the process is stopped\n worker.terminate();\n }\n };\n\n worker.onerror = (e) => {\n this.toast(`Worker error: ${e.message}`, 'error');\n\n this.runButton.removeAttribute('disabled');\n this.stopButton.setAttribute('disabled', '');\n };\n }\n\n private populateArgs(): void {\n while (this.addArg.firstElementChild) {\n this.addArg.firstElementChild.remove();\n }\n\n const lang = langs.get(this.getLangId());\n\n if (!lang) {\n throw new TypeError('Unregistered lang: ' + this.getLangId());\n }\n\n const args = lang.getArgs();\n\n if (args !== null) {\n this.argsWrapper.removeAttribute('hidden');\n\n args.forEach((arg) => {\n const argButton = document.createElement('button');\n\n argButton.append(document.createTextNode(arg));\n\n argButton.addEventListener('click', () => {\n const currentValue = this.io.getArgs() ?? '',\n match = new RegExp('(\\\\n|^)' + arg + '(\\\\n|$)');\n\n if (match.test(currentValue)) {\n return;\n }\n\n this.io.setArgs((currentValue + '\\n' + arg).trim());\n });\n\n this.addArg.append(argButton);\n });\n } else {\n this.argsWrapper.setAttribute('hidden', '');\n }\n\n this.io.argsRefresh();\n }\n\n private static expand(expander: HTMLButtonElement): void {\n const collapser = expander.nextElementSibling as HTMLButtonElement,\n target = document.querySelector(expander.dataset.target);\n\n if (!target) {\n console.debug('No collapser or target for expander: ', expander);\n\n return;\n }\n\n expander.setAttribute('hidden', '');\n target.removeAttribute('hidden');\n collapser.removeAttribute('hidden');\n collapser.focus();\n }\n\n private static collapse(expander: HTMLButtonElement): void {\n const collapser = expander.nextElementSibling,\n target = document.querySelector(expander.dataset.target);\n\n if (!target) {\n console.debug('No collapser or target for expander: ', expander);\n\n return;\n }\n\n expander.removeAttribute('hidden');\n target.setAttribute('hidden', '');\n collapser.setAttribute('hidden', '');\n expander.focus();\n }\n\n private connectExpanders(): void {\n this.expanders.forEach((expander) => {\n const collapser = expander.nextElementSibling;\n\n if (!collapser || !collapser.matches('button[name=\"collapse\"]')) {\n console.debug('No collapser or target for expander: ', expander);\n\n return;\n }\n\n expander.addEventListener('click', () => UI.expand(expander));\n collapser.addEventListener('click', () => UI.collapse(expander));\n });\n }\n\n private setMimeType(mimeType: string, setInput: boolean = true): void {\n this.mimeType = mimeType;\n\n if (setInput) {\n this.mimeTypeInput.value = mimeType;\n }\n\n this.stdout.activate(mimeType);\n this.stdout.resize();\n }\n\n private static copied(button: HTMLButtonElement | HTMLInputElement): void {\n button.setAttribute('disabled', '');\n button.style.width = button.offsetWidth + 'px';\n button.classList.toggle('copied');\n\n setTimeout(() => {\n button.removeAttribute('disabled');\n button.style.width = null;\n button.classList.toggle('copied');\n }, 1000);\n }\n\n private parseHashData(hash): void {\n if (!hash || hash.length < 2) {\n return;\n }\n\n let data;\n\n try {\n const jsonData = atob(hash.slice(1));\n\n data = JSON.parse(jsonData);\n } catch (e) {\n if (e instanceof DOMException) {\n this.toast('Unable to decode URL data. Aborting.', 'error');\n\n return;\n }\n\n if (e instanceof SyntaxError) {\n this.toast('Unable to decode JSON data. Aborting.', 'error');\n\n return;\n }\n\n throw e;\n }\n\n const [headerExpander] = Array.from(this.expanders).filter((expander) =>\n expander.parentElement.matches('.code-header')\n ),\n [footerExpander] = Array.from(this.expanders).filter((expander) =>\n expander.parentElement.matches('.code-footer')\n );\n\n if (data.header) {\n UI.expand(headerExpander);\n }\n\n if (data.footer) {\n UI.expand(footerExpander);\n }\n\n this.setLang(data.lang ?? this.getLangId());\n this.codeHeader.write(decodeURIComponent(escape(data.header ?? '')));\n this.code.write(decodeURIComponent(escape(data.code ?? '')));\n this.codeFooter.write(decodeURIComponent(escape(data.footer ?? '')));\n this.io.setArgs(data.args ?? '');\n this.io.setStdin(decodeURIComponent(escape(data.input ?? '')));\n\n if (data.mime) {\n this.setMimeType(data.mime);\n }\n }\n\n private buildHashData() {\n const data: IHashData = {\n lang: this.getLangId(),\n code: this.code.readAsString(null),\n },\n header = this.codeHeader.readAsString(null),\n footer = this.codeFooter.readAsString(null),\n args = this.io.getArgs(),\n input = this.io.getStdin(),\n mime = this.mimeType;\n\n Object.entries({\n header,\n footer,\n args,\n input,\n }).forEach(([key, value]) => {\n if (value) {\n data[key] = value;\n }\n });\n\n if (mime !== 'text/plain') {\n data.mime = mime;\n }\n\n return btoa(JSON.stringify(data));\n }\n\n private buildLink(): string {\n const hash = this.buildHashData();\n\n return (\n location.protocol + '//' + location.host + location.pathname + '#' + hash\n );\n }\n\n private buildMarkdown(): string {\n const args = this.io.getArgs().trim().split(/\\n/).join(' '),\n lang = langs.get(this.getLangId()),\n key = Math.random().toString(36).slice(2, 10),\n rawCode = decoders.decode(this.code.read()),\n code = replaceBinaryBytes(codePointsToString(rawCode)),\n bytes = code.length;\n\n return `# [${lang.getName()}]${\n args ? ` + \\`${args}\\`` : ''\n }, ${bytes} byte${bytes === 1 ? '' : 's'}\n\n\n\n
${code.replace(/[&<>]/g, (char) =>\n      char === '<'\n        ? '<'\n        : char === '>'\n        ? '>'\n        : char === '&'\n        ? '&'\n        : char\n    )}
\n\n[Try it online!][TIO-${key}]\n\n[${lang.getName()}]: ${lang.getURL()}\n[TIO-${key}]: ${this.buildLink()}`;\n }\n\n private showBytes(byteCount: number): void {\n this.bytesCount.innerText = byteCount.toString();\n\n if (byteCount === 1) {\n this.bytesPlural.setAttribute('hidden', '');\n\n return;\n }\n\n this.bytesPlural.removeAttribute('hidden');\n }\n\n private enterFullscreen(): void {\n document.body.requestFullscreen().then(() => {\n document.body.classList.add('fullscreen');\n this.resize();\n });\n }\n\n private exitFullscreen(): void {\n document.body.classList.remove('fullscreen');\n this.resize();\n }\n\n public toast(\n content: string,\n type: MelbaType,\n options: Omit = {}\n ): Melba {\n if (!options.events) {\n options.events = {};\n }\n\n if (!options.events.click) {\n options.events.click = [];\n }\n\n options.events.click.push((toast) => toast.hide());\n\n return new Melba({\n ...options,\n content,\n type,\n });\n }\n}\n\nexport default UI;\n", "export interface Renderer {\n activate(mimeType: string): void;\n deactivate(): void;\n isActive(): boolean;\n matches(mimeType: string): boolean;\n reset(): void;\n resize(): void;\n write(char: number | string): void;\n}\n\nexport class Renderers {\n private buffer: string = '';\n private registered: Renderer[] = [];\n\n public constructor(...renderers: Renderer[]) {\n this.register(...renderers);\n }\n\n public activate(mimeType: string): void {\n this.registered.reduce((value, renderer): boolean => {\n // Activate the first Renderer that matches\n if (renderer.matches(mimeType) && !value) {\n if (!renderer.isActive()) {\n renderer.activate(mimeType);\n renderer.reset();\n renderer.write(this.buffer);\n }\n\n return true;\n }\n\n renderer.deactivate();\n renderer.reset();\n\n return value;\n }, false);\n\n this.resize();\n }\n\n public register(...renderers: Renderer[]): void {\n this.registered.push(...renderers);\n }\n\n public reset(): void {\n this.buffer = '';\n this.registered.forEach((renderer) => renderer.reset());\n }\n\n public resize(): void {\n this.registered.forEach((renderer) => {\n if (renderer.isActive()) {\n renderer.resize();\n }\n });\n }\n\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n this.registered\n .filter((renderer) => renderer.isActive())\n .forEach((renderer) => renderer.write(char));\n }\n}\n\nexport default Renderers;\n\nexport const createDevice = (...renderers: Renderer[]): Renderers =>\n new Renderers(...renderers);\n", "import {\n Editor,\n EditorConfiguration,\n KeyMap,\n fromTextArea,\n EditorEventMap,\n} from 'codemirror';\nimport Abstract from './Abstract';\nimport { Input } from '../Inputs';\nimport replaceBinaryBytes from '../replaceBinaryBytes';\n\nexport class Code extends Abstract implements Input {\n private editor: Editor;\n\n public constructor(parent: HTMLElement, options: EditorConfiguration = {}) {\n super();\n\n const element = this.createElement('div'),\n textarea = document.createElement('textarea') as HTMLTextAreaElement;\n\n parent.append(element);\n element.append(textarea);\n\n this.editor = fromTextArea(textarea, {\n mode: null,\n theme: 'monokai',\n viewportMargin: Infinity,\n ...options,\n extraKeys: {\n 'Ctrl-D': 'duplicateLine',\n 'Ctrl-/': 'toggleComment',\n 'Shift-Tab': false,\n Tab: false,\n ...(Object.keys(options.extraKeys || {}).length\n ? (options.extraKeys as KeyMap)\n : {}),\n },\n });\n\n this.editor.on('change', () => {\n if (this.inputs === null) {\n return;\n }\n\n // Could be smarter about this...\n this.inputs.setBuffer(\n this.editor\n .getValue()\n .split('')\n .map((char) => char.charCodeAt(0))\n );\n });\n }\n\n public matches(data: string): boolean {\n return /^[\\t\\n -~]*$/.test(data);\n }\n\n public on(eventName: string, handler: (...args: any[]) => void): void {\n this.editor.on(eventName as keyof EditorEventMap, (...args: any[]) =>\n handler(...args)\n );\n }\n\n public readAsString(binaryReplacementChar: string | null = '.'): string {\n const code = unescape(encodeURIComponent(this.editor.getValue()));\n\n if (binaryReplacementChar === null) {\n return code;\n }\n\n return replaceBinaryBytes(code, binaryReplacementChar);\n }\n\n public reset(): void {\n this.editor.setValue('');\n }\n\n public setOption(\n key: keyof EditorConfiguration,\n value: EditorConfiguration[keyof EditorConfiguration]\n ): void {\n this.editor.setOption(key, value);\n }\n\n public setType(type: string | null): void {\n if (this.editor.getOption('mode') !== type) {\n this.editor.setOption('mode', type);\n }\n }\n\n public write(data: string | number[]): void {\n if (Array.isArray(data)) {\n // String.fromCharCode(...data) causes an error with really long input!\n data = data.map((c) => String.fromCharCode(c)).join('');\n }\n\n this.editor.setValue(data);\n }\n}\n\nexport default Code;\n", "import { Input, Inputs } from '../Inputs';\n\nexport abstract class Abstract implements Input {\n protected active: boolean = false;\n private container: HTMLElement;\n protected inputs: Inputs | null = null;\n\n public activate(inputs: Inputs): void {\n this.container.removeAttribute('hidden');\n this.active = true;\n this.inputs = inputs;\n\n this.resize();\n }\n\n protected createElement(tag: string = 'div'): HTMLElement {\n this.container = document.createElement(tag);\n\n this.container.setAttribute('hidden', '');\n\n return this.container;\n }\n\n public deactivate(): void {\n this.container.setAttribute('hidden', '');\n this.active = false;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n\n abstract matches(data: string): boolean;\n\n abstract on(eventName: string, handler: (...args: any[]) => void): void;\n\n public read(): number[] {\n return this.readAsString(null)\n .split('')\n .map((c) => c.charCodeAt(0));\n }\n\n abstract readAsString(replaceBinaryBytes: string | null): string;\n\n abstract setType(type: string | null): void;\n\n abstract write(data: string | number[]): void;\n\n abstract reset(): void;\n\n public resize(): void {}\n}\n\nexport default Abstract;\n", "// Don't replace newlines\nexport const replaceBinaryBytes = (code: string, replacement: string = '.') =>\n code.replace(/[^\\x09\\x0a\\x20-\\x7e]/g, replacement);\n\nexport default replaceBinaryBytes;\n", "import { Renderer } from '../Renderers';\n\nexport abstract class Abstract implements Renderer {\n protected active: boolean = false;\n protected container: HTMLElement;\n protected mimeType: string = 'text/plain';\n\n public activate(mimeType: string): void {\n this.container.removeAttribute('hidden');\n this.active = true;\n this.mimeType = mimeType;\n\n this.resize();\n }\n\n protected createElement(tag: 'div', hidden?: boolean): HTMLDivElement;\n protected createElement(tag: 'iframe', hidden?: boolean): HTMLIFrameElement;\n protected createElement(\n tag: string = 'div',\n hidden: boolean = true\n ): HTMLElement {\n const element = document.createElement(tag);\n\n if (hidden) {\n element.setAttribute('hidden', '');\n }\n\n return element;\n }\n\n public deactivate(): void {\n this.container.setAttribute('hidden', '');\n this.active = false;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n\n public matches(mimeType: string): boolean {\n return true;\n }\n\n abstract write(char: number): void;\n abstract write(data: string): void;\n\n abstract reset(): void;\n\n public resize(): void {}\n}\n\nexport default Abstract;\n", "import { Editor, EditorConfiguration } from 'codemirror';\nimport Abstract from './Abstract';\nimport { Renderer } from '../Renderers';\nimport UI from '../UI';\n\nimport 'codemirror/mode/javascript/javascript';\nimport 'codemirror/mode/perl/perl';\n\nexport class Code extends Abstract implements Renderer {\n private editor: Editor;\n\n constructor(parent: HTMLElement, options: EditorConfiguration = {}) {\n super();\n\n const textarea = document.createElement('textarea');\n\n this.container = this.createElement('div');\n\n this.container.append(textarea);\n parent.append(this.container);\n\n this.editor = UI.createEditor(textarea, {\n ...options,\n readOnly: true,\n });\n\n parent.append(this.container);\n }\n\n activate(mimeType: string) {\n super.activate(mimeType);\n\n this.editor.setOption('mode', mimeType);\n }\n\n deactivate() {\n super.deactivate();\n }\n\n matches(mimeType: string): boolean {\n return [\n 'application/ecmascript',\n 'application/javascript',\n 'application/json',\n 'application/x-perl',\n 'text/ecmascript',\n 'text/javascript',\n 'text/json',\n 'text/x-perl',\n ].includes(mimeType);\n }\n\n reset(): void {\n this.editor.setValue('');\n }\n\n write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.editor.setValue(this.editor.getValue() + char);\n }\n}\n\nexport default Code;\n", "import Abstract from './Abstract';\nimport { Renderer } from '../Renderers';\n\nexport class IFrame extends Abstract implements Renderer {\n protected buffer: string = '';\n protected container: HTMLIFrameElement;\n protected mimeType: string = 'text/html';\n\n public constructor(parent: HTMLElement) {\n super();\n\n this.container = this.createElement('iframe');\n\n parent.append(this.container);\n\n this.update();\n }\n\n public activate(mimeType: string) {\n super.activate(mimeType);\n\n this.update();\n }\n\n public matches(mimeType: string): boolean {\n return ['text/html'].includes(mimeType);\n }\n\n public reset(): void {\n this.buffer = '';\n this.update();\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n this.update();\n }\n\n private update(): void {\n // We need to destroy and recreate the IFrame so that we don't clobber the back button.\n const container = this.createElement(\n 'iframe',\n this.container.hasAttribute('hidden')\n );\n\n container.src = `data:${this.mimeType};base64,${btoa(this.buffer)}`;\n\n this.container.replaceWith(container);\n\n this.container = container;\n }\n}\n\nexport default IFrame;\n", "import { Editor } from 'codemirror';\nimport Renderers from './Renderers';\n\nexport class IO {\n constructor(\n private languageSelector: HTMLSelectElement,\n private stdin: Editor,\n private stdout: Renderers,\n private stderr: Renderers,\n private args: Editor\n ) {}\n public static getRaw(field: Editor): string {\n return field.getValue();\n }\n\n public getArgs(): string {\n return this.args.getValue();\n }\n\n public setArgs(value: string): void {\n this.args.setValue(value);\n }\n\n public argsRefresh(): void {\n this.args.refresh();\n }\n\n public getStdin(): string {\n return this.stdin.getValue();\n }\n\n public setStdin(value: string): void {\n this.stdin.setValue(value);\n }\n}\n\nexport default IO;\n", "import IFrame from './IFrame';\n\n/**\n * Uses the following icons:\n * https://iconmonstr.com/magnifier-7-svg/\n * https://iconmonstr.com/magnifier-8-svg/\n */\nexport class Image extends IFrame {\n private imageBuffer: string = '';\n private imageMimeType: string = 'image/png';\n\n public activate(mimeType: string) {\n super.activate('text/html');\n\n this.imageMimeType = mimeType;\n }\n\n // TODO: this whole renderer should be a separate package with the contents parsed into a minified file\n private css(): string {\n return `\nhtml, body {\n margin: 0;\n padding: 0;\n}\n\nbody > img {\n --z: 1;\n image-rendering: pixelated;\n transform: scale(var(--z));\n transform-origin: 0 0;\n}\n\n.checked {\n background-image: linear-gradient(to right, rgba(192, 192, 192, 0.75), rgba(192, 192, 192, 0.75)),\n linear-gradient(to right, black 50%, white 50%),\n linear-gradient(to bottom, black 50%, white 50%);\n background-blend-mode: normal, difference, normal;\n background-size: 2em 2em;\n}\n\n.controls {\n background: rgba(255, 255, 255, .2);\n border: solid rgba(255, 255, 255, .6);\n border-radius: .3em 0 0 .3em;\n border-width: 1px 0 1px 1px;\n padding: .2em .2em .5em;\n position: fixed;\n right: 0;\n top: 1em;\n}\n\n.controls button {\n appearance: none;\n background: transparent;\n border: 0;\n cursor: pointer;\n}\n\n.controls button.toggle:after {\n content: '\\\\27f5';\n}\n\n.controls.left {\n border-radius: 0 .3em .3em 0;\n border-width: 1px 1px 1px 0;\n left: 0;\n right: auto;\n}\n\n.controls.left header {\n text-align: right;\n}\n\n.controls.left button.toggle:after {\n content: '\\\\27f6';\n}\n`\n .replace(/\\s*,\\s*/g, ',')\n .replace(/\\s*>\\s*/g, '>')\n .replace(/\\s*;\\s*}\\s*/g, '}')\n .replace(/\\s*{\\s*/g, '{')\n .replace(/\\s*:\\s*/g, ':')\n .replace(/\\s*;\\s*/g, ';');\n }\n\n private data(): string {\n return `\n\n\n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n\n`;\n }\n\n // TODO: this whole renderer should be a separate package with the contents parsed into a minified file\n private js(): string {\n // return `\n // const image = document.querySelector('img'),\n // controls = document.querySelector('.controls');\n //\n // document.addEventListener('click', (event) => {\n // const target = event.target,\n // currentZoom = getComputedStyle(image).getPropertyValue('--z');\n //\n // if (target.matches('.zoom-in,.zoom-in *')) {\n // image.style.setProperty('--z', currentZoom * 2);\n // }\n //\n // if (target.matches('.zoom-out,.zoom-out *')) {\n // image.style.setProperty('--z', currentZoom / 2);\n // }\n //\n // if (target.matches('.toggle,.toggle *')) {\n // controls.classList.toggle('left');\n // }\n //\n // if (target.matches('button.checked')) {\n // image.classList.toggle('checked');\n // }\n // });\n // `;\n return `var e=document.querySelector(\"img\"),t=document.querySelector(\".controls\");document.addEventListener(\"click\",(function(o){var c=o.target,l=getComputedStyle(e).getPropertyValue(\"--z\");c.matches(\".zoom-in,.zoom-in *\")&&e.style.setProperty(\"--z\",2*l),c.matches(\".zoom-out,.zoom-out *\")&&e.style.setProperty(\"--z\",l/2),c.matches(\".toggle,.toggle *\")&&t.classList.toggle(\"left\"),c.matches(\"button.checked\")&&e.classList.toggle(\"checked\")}))`;\n }\n\n public matches(mimeType: string): boolean {\n // Using data from: https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support\n // and: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n return [\n 'image/apng',\n 'image/avif',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/png',\n 'image/svg+xml',\n 'image/vnd.microsoft.icon',\n 'image/webp',\n ].includes(mimeType);\n }\n\n public reset(): void {\n super.reset();\n\n this.imageBuffer = '';\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.imageBuffer += char;\n this.buffer = '';\n\n super.write(this.data());\n }\n}\n\nexport default Image;\n", "export interface Input {\n activate(device: Inputs): void;\n deactivate(): void;\n isActive(): boolean;\n matches(data: string): boolean;\n on(eventName: string, handler: (...args: any[]) => void): void;\n read(): number[];\n readAsString(replaceBinaryBytes: string | null): string;\n reset(): void;\n resize(): void;\n setType(type: string | null): void;\n write(data: string | number[]): void;\n}\n\nexport type InputConstructor = new (\n parent: HTMLElement,\n ...args: any[]\n) => Input;\n\nexport class Inputs {\n private buffer: number[] = [];\n private registered: Input[] = [];\n private type: string;\n\n public constructor(...inputs: Input[]) {\n this.register(...inputs);\n }\n\n private active(): Input {\n const [input] = this.registered.filter((input) => input.isActive());\n\n return input;\n }\n\n public activate(toActivate: InputConstructor | Input): void {\n this.registered.reduce((value, input): boolean => {\n // Activate the required input\n if (\n !value &&\n ((typeof toActivate === 'function' && input instanceof toActivate) ||\n input === toActivate)\n ) {\n if (!input.isActive()) {\n input.activate(this);\n input.reset();\n input.write(this.buffer);\n }\n\n return true;\n }\n\n input.deactivate();\n input.reset();\n\n return value;\n }, false);\n\n this.resize();\n }\n\n public on(eventName: string, handler: (event: Event) => void): void {\n this.registered.forEach((input) => input.on(eventName, handler));\n }\n\n public read(): number[] {\n return this.active().read();\n }\n\n public readAsString(replaceBinaryBytes: string | null = '.'): string {\n return this.active().readAsString(replaceBinaryBytes);\n }\n\n public register(...inputs: Input[]): void {\n this.registered.push(...inputs);\n }\n\n public reset(): void {\n this.buffer.splice(0);\n this.registered.forEach((input) => input.reset());\n }\n\n public resize(): void {\n this.registered.forEach((input) => {\n if (input.isActive()) {\n input.resize();\n }\n });\n }\n\n public setBuffer(buffer: number[]): void {\n this.buffer.push(...buffer);\n }\n\n public setType(type: string | null): void {\n this.type = type;\n\n this.registered.forEach((input) => input.setType(type));\n }\n\n public write(char: number | number[] | string): void {\n const writeBuffer = [];\n\n if (typeof char === 'number') {\n writeBuffer.push(char);\n }\n\n if (Array.isArray(char)) {\n char.forEach((char) => writeBuffer.push(char));\n }\n\n if (typeof char === 'string') {\n char.split('').forEach((char) => writeBuffer.push(char.charCodeAt(0)));\n }\n\n this.registered.filter((input) => {\n if (input.isActive()) {\n input.write(writeBuffer);\n }\n });\n\n writeBuffer.forEach((char) => this.buffer.push(char));\n }\n}\n\nexport default Inputs;\n", "export class InvalidFormat extends TypeError {}\n\nexport default InvalidFormat;\n", "import Image from './Image';\nimport InvalidFormat from './Error/InvalidFormat';\nimport { Renderer } from '../Renderers';\n\nexport type PBMHeader =\n | [string, number, number, number] // P1: type, width, height, offset\n | [string, number, number, number, number]; // P3: type, width, height, maxValue, offset\n\n/**\n * @see https://en.wikipedia.org/wiki/Netpbm\n */\nexport class PBMImage extends Image implements Renderer {\n ppmBuffer: string = '';\n superTimeout: number | null = null;\n\n public activate(mimeType: string) {\n super.activate('image/png');\n }\n\n public matches(mimeType: string): boolean {\n return [\n 'image/x-portable-bitmap',\n 'image/x-portable-graymap',\n 'image/x-portable-pixmap',\n 'image/x-portable-anymap',\n ].includes(mimeType);\n }\n\n public reset() {\n super.reset();\n\n this.ppmBuffer = '';\n }\n\n public write(char: string | number): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.ppmBuffer += char;\n\n if (this.ppmBuffer.length < 10) {\n return;\n }\n\n // Wait for data to stop streaming\n if (this.superTimeout) {\n clearTimeout(this.superTimeout);\n }\n\n this.superTimeout = setTimeout(() => {\n try {\n super.reset();\n\n super.write(this.convertToPNG());\n } catch (e) {\n console.error(e);\n }\n }, 50);\n }\n\n private convertToPNG(): string {\n if (!/^P[1-7]/.test(this.ppmBuffer)) {\n throw new InvalidFormat();\n }\n\n const header = this.extractPBMHeader();\n\n if (!header) {\n throw new InvalidFormat();\n }\n\n const [format] = header;\n\n if (!format) {\n throw new InvalidFormat();\n }\n\n if (format === 'P1') {\n const [, width, height, offset] = header;\n\n return this.parseP1(width, height, offset);\n }\n\n if (format === 'P2') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset);\n }\n\n if (format === 'P3') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset);\n }\n\n if (format === 'P4') {\n const [, width, height, offset] = header;\n\n return this.parseP4(width, height, offset);\n }\n\n if (format === 'P5') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP2(width, height, maxValue, offset, true);\n }\n\n if (format === 'P6') {\n const [, width, height, maxValue, offset] = header;\n\n return this.parseP3(width, height, maxValue, offset, true);\n }\n\n throw new InvalidFormat('Currently unsupported.');\n }\n\n private createCanvas(\n width: number,\n height: number\n ): [HTMLCanvasElement, CanvasRenderingContext2D, ImageData] {\n const canvas = document.createElement('canvas'),\n context = canvas.getContext('2d'),\n imageData = new ImageData(width, height);\n\n canvas.width = width;\n canvas.height = height;\n\n return [canvas, context, imageData];\n }\n\n private canvasToRawPNG(canvas: HTMLCanvasElement): string {\n // Convert back to raw data from a data: URI\n return atob(\n canvas.toDataURL('image/png').replace(/^data:image\\/png;base64,/, '')\n );\n }\n\n private parseP1(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.asciiDataGenerator(offset, false);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP2(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = Math.floor((data.next().value / maxValue) * 255);\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP3(\n width: number,\n height: number,\n maxValue: number,\n offset: number,\n binary: boolean = false\n ): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = binary\n ? this.binaryDataGenerator(offset)\n : this.asciiDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = Math.floor(\n ((data.next().value || 0) / maxValue) * 255\n );\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private parseP4(width: number, height: number, offset: number): string {\n const [canvas, context, imageData] = this.createCanvas(width, height),\n data = this.binaryBitDataGenerator(offset);\n\n for (let index = 0; index < width * height * 4; ) {\n const value = data.next().value === 1 ? 0 : 255;\n\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = value;\n imageData.data[index++] = 255;\n }\n\n context.putImageData(imageData, 0, 0, 0, 0, width, height);\n\n return this.canvasToRawPNG(canvas);\n }\n\n private extractPBMHeader(): PBMHeader | null {\n const type = this.ppmBuffer.slice(0, 2),\n withoutMaxValue =\n /^(P[14])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/,\n withMaxValue =\n /^(P[2356])\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s+(?:#[^\\n]*\\s*)*(\\d+)\\s*(?:#[^\\n]*\\s*)*/;\n\n if (type === 'P1' || type === 'P4') {\n const match = this.ppmBuffer.match(withoutMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n match[0].length, // offset\n ];\n }\n\n if (type === 'P2' || type === 'P3' || type === 'P5' || type === 'P6') {\n const match = this.ppmBuffer.match(withMaxValue);\n\n if (!match) {\n throw new InvalidFormat();\n }\n\n return [\n match[1], // format\n parseInt(match[2], 10), // width\n parseInt(match[3], 10), // height\n parseInt(match[4], 10), // max value\n match[0].length, // offset\n ];\n }\n }\n\n private *asciiDataGenerator(\n offset: number,\n separator: boolean = true\n ): Generator {\n let block = '';\n\n for (\n let currentPosition = offset, comment = false;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n if (/#/.test(currentChar)) {\n if (block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n comment = true;\n }\n\n if (/\\n/.test(currentChar) && comment) {\n comment = false;\n }\n\n if (comment) {\n continue;\n }\n\n if (/\\s/.test(currentChar) && block.length > 0) {\n yield parseInt(block, 10);\n\n block = '';\n }\n\n if (/\\d/.test(currentChar)) {\n block += currentChar;\n }\n\n if (separator === false && block) {\n yield parseInt(block, 10);\n\n block = '';\n }\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition];\n\n yield currentChar.charCodeAt(0);\n }\n\n yield parseInt(block, 10);\n }\n\n private *binaryBitDataGenerator(offset: number): Generator {\n let block = '';\n\n for (\n let currentPosition = offset;\n currentPosition < this.ppmBuffer.length;\n currentPosition++\n ) {\n const currentChar = this.ppmBuffer[currentPosition],\n bitMask = ('0000000' + currentChar.charCodeAt(0).toString(2)).slice(-8);\n\n for (let rowPosition = 0; rowPosition < 8; rowPosition++) {\n yield parseInt(bitMask[rowPosition], 10);\n }\n }\n\n yield parseInt(block, 10);\n }\n}\n\nexport default PBMImage;\n", "import { ITerminalOptions, Terminal } from 'xterm';\nimport Abstract from './Abstract';\nimport { FitAddon } from 'xterm-addon-fit/src/FitAddon';\nimport { Renderer } from '../Renderers';\n\nexport class TTY extends Abstract implements Renderer {\n private buffer: string = '';\n private escapeInput: string = '';\n private fit: FitAddon;\n private maxX: number = 0;\n private maxY: number = 0;\n private options: ITerminalOptions;\n private terminal: Terminal;\n private x: number = 0;\n private y: number = 0;\n\n constructor(parent: HTMLElement, options: ITerminalOptions = {}) {\n super();\n\n this.container = this.createElement('div');\n this.container.classList.add('tty');\n\n parent.append(this.container);\n\n this.fit = new FitAddon();\n\n this.terminal = TTY.createTerminal(options);\n this.terminal.loadAddon(this.fit);\n this.terminal.open(this.container);\n\n this.options = options;\n }\n\n private static cleanText(text: string): string {\n // patch for xterm.js - this allows VT and FF but patches \\n, vs. convertEol option\n return text.replace(/(? parseInt(value || '1', 10))\n : [parseInt(value, 10), 1];\n break;\n }\n\n if (x >= cols) {\n x = cols;\n }\n\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n\n return [x, y, maxX, maxY];\n }\n\n switch (input) {\n case '\\n':\n y++;\n x = 0;\n break;\n\n case '\\f':\n case '\\r':\n case '\\v':\n y++;\n break;\n\n case '\\t':\n x += x % 8 || 8;\n break;\n\n // backspace\n case '\\x08':\n x--;\n break;\n\n default:\n x++;\n }\n\n if (x >= cols) {\n y++;\n x = 0;\n }\n\n maxX = Math.max(x, maxX);\n maxY = Math.max(y, maxY);\n\n return [x, y, maxX, maxY];\n }\n\n private reprocessBufferForSize(): number[] {\n let maxX = 0,\n maxY = 0,\n x = 0,\n y = 0,\n escapeInput = '';\n\n const results = this.buffer.match(/\\x1b\\[(.*?)([\\x40-\\x7e])|(.)/g);\n\n if (!results) {\n return [1, 1];\n }\n\n results.forEach((input) => {\n [input, escapeInput] = this.processInputForEscape(input, escapeInput);\n\n if (input) {\n [x, y, maxX, maxY] = this.processInputForSize(x, y, maxX, maxY, input);\n }\n });\n\n return [maxX + 1, maxY + 1];\n }\n\n public reset(): void {\n this.buffer = '';\n this.escapeInput = '';\n this.maxX = 0;\n this.maxY = 0;\n this.x = 0;\n this.y = 0;\n\n this.terminal.reset();\n }\n\n public resize(): void {\n if (\n this.container.hasAttribute('hidden') ||\n (this.options.cols && this.options.rows)\n ) {\n return;\n }\n\n const [, visibleLines] = this.reprocessBufferForSize(),\n dimensions = this.fit.proposeDimensions();\n\n this.terminal.resize(\n this.options.cols ?? dimensions?.cols ?? this.terminal.cols,\n this.options.rows ?? visibleLines\n );\n }\n\n public write(char: number): void;\n public write(data: string): void;\n public write(char: number | string): void {\n if (typeof char === 'number') {\n char = String.fromCharCode(char);\n }\n\n this.buffer += char;\n\n this.handleInputForSize(char);\n\n const rows = this.maxY + 1;\n\n if (rows !== this.terminal.rows) {\n this.terminal.resize(this.terminal.cols, rows);\n }\n\n this.terminal.write(TTY.cleanText(char));\n }\n}\n\nexport default TTY;\n", "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport { Terminal, ITerminalAddon } from 'xterm';\n\ninterface ITerminalDimensions {\n /**\n * The number of rows in the terminal.\n */\n rows: number;\n\n /**\n * The number of columns in the terminal.\n */\n cols: number;\n}\n\nconst MINIMUM_COLS = 2;\nconst MINIMUM_ROWS = 1;\n\nexport class FitAddon implements ITerminalAddon {\n private _terminal: Terminal | undefined;\n\n constructor() {}\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n }\n\n public dispose(): void {}\n\n public fit(): void {\n const dims = this.proposeDimensions();\n if (!dims || !this._terminal) {\n return;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n // Force a full render\n if (this._terminal.rows !== dims.rows || this._terminal.cols !== dims.cols) {\n core._renderService.clear();\n this._terminal.resize(dims.cols, dims.rows);\n }\n }\n\n public proposeDimensions(): ITerminalDimensions | undefined {\n if (!this._terminal) {\n return undefined;\n }\n\n if (!this._terminal.element || !this._terminal.element.parentElement) {\n return undefined;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n if (core._renderService.dimensions.actualCellWidth === 0 || core._renderService.dimensions.actualCellHeight === 0) {\n return undefined;\n }\n\n const parentElementStyle = window.getComputedStyle(this._terminal.element.parentElement);\n const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'));\n const parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')));\n const elementStyle = window.getComputedStyle(this._terminal.element);\n const elementPadding = {\n top: parseInt(elementStyle.getPropertyValue('padding-top')),\n bottom: parseInt(elementStyle.getPropertyValue('padding-bottom')),\n right: parseInt(elementStyle.getPropertyValue('padding-right')),\n left: parseInt(elementStyle.getPropertyValue('padding-left'))\n };\n const elementPaddingVer = elementPadding.top + elementPadding.bottom;\n const elementPaddingHor = elementPadding.right + elementPadding.left;\n const availableHeight = parentElementHeight - elementPaddingVer;\n const availableWidth = parentElementWidth - elementPaddingHor - core.viewport.scrollBarWidth;\n const geometry = {\n cols: Math.max(MINIMUM_COLS, Math.floor(availableWidth / core._renderService.dimensions.actualCellWidth)),\n rows: Math.max(MINIMUM_ROWS, Math.floor(availableHeight / core._renderService.dimensions.actualCellHeight))\n };\n return geometry;\n }\n}\n", "export interface Decoder {\n name(): string;\n matches(code: number[]): boolean;\n matchesAsString(code: string): boolean;\n decode(code: number[]): number[];\n decodeAsString(code: string): number[];\n}\n\nexport class Decoders {\n private registered: Decoder[] = [];\n\n public register(...decoders: Decoder[]): void {\n this.registered.push(...decoders);\n }\n\n public decode(code: number[]): number[] {\n return this.decoder(code).decode(code);\n }\n\n public decodeAsString(code: string): number[] {\n return this.decoderAsString(code).decodeAsString(code);\n }\n\n public decoder(code: number[]): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matches(code)\n );\n\n return decoder;\n }\n\n public decoderAsString(code: string): Decoder {\n const [decoder] = this.registered.filter((decoder): boolean =>\n decoder.matchesAsString(code)\n );\n\n return decoder;\n }\n}\n\nexport default Decoders;\n\nexport const decoders = new Decoders();\n", "import { Decoder } from '../Decoders';\nimport Default from './Default';\n\nexport class Xxd extends Default implements Decoder {\n public name(): string {\n return 'xxd';\n }\n\n public matchesAsString(code: string): boolean {\n return /^([\\da-f]{7,8}: (((.{2}){1,2} ){1,8}) .+(\\n|$))+$/.test(code);\n }\n\n public decodeAsString(code: string): number[] {\n return code\n .trim()\n .replace(/(?<=^|\\n)[\\da-f]{7,8}: (((.{2}){1,2} ){1,8}).+/g, '$1')\n .replace(/\\s+/g, '')\n .match(/../g)\n .map((c: string): number => parseInt(c, 16));\n }\n}\nexport default Xxd;\n", "import Base64 from './Decoders/Base64';\nimport Default from './Decoders/Default';\nimport Hexdump from './Decoders/Hexdump';\nimport JavaScript from './langs/javascript-browser/JavaScript';\nimport Perl from './langs/webperl-5.28.1/Perl';\nimport UI from './UI';\nimport Xxd from './Decoders/Xxd';\nimport { decoders } from './Decoders';\nimport { langs } from './Langs';\n\ndecoders.register(new Xxd(), new Hexdump(), new Base64(), new Default());\nlangs.register(new JavaScript(), new Perl());\n\nconst ui = new UI();\n"], + "mappings": "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AA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAG7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAG7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EACzD,SAAK,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,CAAA,EAC7B,S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AS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAC7C,CAAC,KAAQ,IAAA,EAAS,CAAC,KAAQ,IAAA,EAAS,CAAC,MAAQ,KAAA,EAC7C,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAC7C,CAAC,MAAQ,KAAA,EAAS,CAAC,MAAQ,KAAA,EAA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", "names": [] } diff --git a/js/Renderers/TTY.ts b/js/Renderers/TTY.ts index 945546b..164877d 100644 --- a/js/Renderers/TTY.ts +++ b/js/Renderers/TTY.ts @@ -4,9 +4,15 @@ import { FitAddon } from 'xterm-addon-fit/src/FitAddon'; import { Renderer } from '../Renderers'; export class TTY extends Abstract implements Renderer { + private buffer: string = ''; + private escapeInput: string = ''; private fit: FitAddon; + private maxX: number = 0; + private maxY: number = 0; private options: ITerminalOptions; private terminal: Terminal; + private x: number = 0; + private y: number = 0; constructor(parent: HTMLElement, options: ITerminalOptions = {}) { super(); @@ -25,43 +31,9 @@ export class TTY extends Abstract implements Renderer { this.options = options; } - public matches(): boolean { - return true; - } - - public write(char: number): void; - public write(data: string): void; - public write(char: number | string): void { - if (typeof char === 'number') { - char = String.fromCharCode(char); - } - - this.terminal.write(TTY.cleanText(char)); - } - - public reset(): void { - this.terminal.reset(); - } - - public resize(): void { - // TODO: Yeah... Not sure what's going on here, but this isn't good... - requestAnimationFrame(() => { - requestAnimationFrame(() => { - if (this.container.hasAttribute('hidden')) { - return; - } - - this.fit.activate(this.terminal); - this.fit.fit(); // TODO: add in a limit for secondary elements like stderr - - if (this.options.rows || this.options.cols) { - this.terminal.resize( - this.options.cols || this.terminal.cols, - this.options.rows || this.terminal.rows - ); - } - }); - }); + private static cleanText(text: string): string { + // patch for xterm.js - this allows VT and FF but patches \n, vs. convertEol option + return text.replace(/(? parseInt(value || '1', 10)) + : [parseInt(value, 10), 1]; + break; + } + + if (x >= cols) { + x = cols; + } + + maxX = Math.max(x, maxX); + maxY = Math.max(y, maxY); + + return [x, y, maxX, maxY]; + } + + switch (input) { + case '\n': + y++; + x = 0; + break; + + case '\f': + case '\r': + case '\v': + y++; + break; + + case '\t': + x += x % 8 || 8; + break; + + // backspace + case '\x08': + x--; + break; + + default: + x++; + } + + if (x >= cols) { + y++; + x = 0; + } + + maxX = Math.max(x, maxX); + maxY = Math.max(y, maxY); + + return [x, y, maxX, maxY]; + } + + private reprocessBufferForSize(): number[] { + let maxX = 0, + maxY = 0, + x = 0, + y = 0, + escapeInput = ''; + + const results = this.buffer.match(/\x1b\[(.*?)([\x40-\x7e])|(.)/g); + + if (!results) { + return [1, 1]; + } + + results.forEach((input) => { + [input, escapeInput] = this.processInputForEscape(input, escapeInput); + + if (input) { + [x, y, maxX, maxY] = this.processInputForSize(x, y, maxX, maxY, input); + } + }); + + return [maxX + 1, maxY + 1]; + } + + public reset(): void { + this.buffer = ''; + this.escapeInput = ''; + this.maxX = 0; + this.maxY = 0; + this.x = 0; + this.y = 0; + + this.terminal.reset(); + } + + public resize(): void { + if ( + this.container.hasAttribute('hidden') || + (this.options.cols && this.options.rows) + ) { + return; + } + + const [, visibleLines] = this.reprocessBufferForSize(), + dimensions = this.fit.proposeDimensions(); + + this.terminal.resize( + this.options.cols ?? dimensions?.cols ?? this.terminal.cols, + this.options.rows ?? visibleLines + ); + } + + public write(char: number): void; + public write(data: string): void; + public write(char: number | string): void { + if (typeof char === 'number') { + char = String.fromCharCode(char); + } + + this.buffer += char; + + this.handleInputForSize(char); + + const rows = this.maxY + 1; + + if (rows !== this.terminal.rows) { + this.terminal.resize(this.terminal.cols, rows); + } + + this.terminal.write(TTY.cleanText(char)); } } diff --git a/package.json b/package.json index c7bb21b..4ce9dd0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "code-sandbox", - "version": "0.1.4", + "version": "0.1.5", "description": "Code Sandbox - run code online via WASM", "scripts": { "build": "npm run build:esbuild",